Skip to content

Commit ed2d839

Browse files
committed
DB: fix twice call fetch row mutator for fetchAll()
1 parent 3fbb2be commit ed2d839

File tree

3 files changed

+19
-20
lines changed

3 files changed

+19
-20
lines changed

docs/db.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -738,11 +738,11 @@ table($rowsFetchAll);
738738
----------------------------------------------------------------------------------------------------------------------
739739
| nick | inserted_datetime | height_cm | height_inch | date |
740740
|====================================================================================================================|
741-
| (string) 'Bob' | (Date) 2020-01-01 09:00:00 | (integer) 178 | (double) 70.07874015748 | (string) '2020-01-01' |
742-
| (string) 'Brandon' | (Date) 2020-01-02 12:05:00 | (integer) 180 | (double) 70.866141732283 | (string) '2020-01-02' |
741+
| (string) 'Bob' | (Date) 2020-01-01 09:00:00 | (integer) 178 | (double) 70.157480314961 | (string) '2020-01-01' |
742+
| (string) 'Brandon' | (Date) 2020-01-02 12:05:00 | (integer) 180 | (double) 71.023622047244 | (string) '2020-01-02' |
743743
| (string) 'Steve' | (Date) 2020-01-02 12:05:00 | (integer) 168 | (double) 66.141732283465 | (string) '2020-01-02' |
744-
| (string) 'Monica' | (Date) 2020-01-03 13:10:00 | (integer) 175 | (double) 68.897637795276 | (string) '2020-01-03' |
745-
| (string) 'Ingrid' | (Date) 2020-01-04 14:15:00 | (integer) 168 | (double) 66.141732283465 | (string) '2020-01-04' |
744+
| (string) 'Monica' | (Date) 2020-01-03 13:10:00 | (integer) 175 | (double) 69.173228346457 | (string) '2020-01-03' |
745+
| (string) 'Ingrid' | (Date) 2020-01-04 14:15:00 | (integer) 168 | (double) 66.220472440945 | (string) '2020-01-04' |
746746
----------------------------------------------------------------------------------------------------------------------
747747
*/
748748

src/Db/Result.php

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -192,10 +192,6 @@ public function fetchAll(int|NULL $offset = NULL, int|NULL $limit = NULL): array
192192
}
193193
$limit--;
194194

195-
if ($this->rowFetchMutator !== NULL) {
196-
call_user_func($this->rowFetchMutator, $row);
197-
}
198-
199195
$data[] = $row;
200196

201197
$row = $this->fetch();

tests/Integration/FetchMutatorTest.php

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -59,22 +59,23 @@ public function testFetchAllRowMutator(): void
5959
->query('SELECT id, name FROM test ORDER BY id')
6060
->setRowFetchMutator(static function (Db\Row $row): void {
6161
$row->new_column = $row->id . '-' . $row->name;
62+
$row->repeat = ($row->repeat ?? 0) + 1;
6263
});
6364

6465
$rows = $result->fetchAll();
6566

66-
Tester\Assert::same(['id' => 1, 'name' => 'name3', 'new_column' => '1-name3'], $rows[0]->toArray());
67-
Tester\Assert::same(['id' => 2, 'name' => 'name2', 'new_column' => '2-name2'], $rows[1]->toArray());
68-
Tester\Assert::same(['id' => 3, 'name' => 'name1', 'new_column' => '3-name1'], $rows[2]->toArray());
67+
Tester\Assert::same(['id' => 1, 'name' => 'name3', 'new_column' => '1-name3', 'repeat' => 1], $rows[0]->toArray());
68+
Tester\Assert::same(['id' => 2, 'name' => 'name2', 'new_column' => '2-name2', 'repeat' => 1], $rows[1]->toArray());
69+
Tester\Assert::same(['id' => 3, 'name' => 'name1', 'new_column' => '3-name1', 'repeat' => 1], $rows[2]->toArray());
6970

7071
$rows = $result->fetchAll(1);
7172

72-
Tester\Assert::same(['id' => 2, 'name' => 'name2', 'new_column' => '2-name2'], $rows[0]->toArray());
73-
Tester\Assert::same(['id' => 3, 'name' => 'name1', 'new_column' => '3-name1'], $rows[1]->toArray());
73+
Tester\Assert::same(['id' => 2, 'name' => 'name2', 'new_column' => '2-name2', 'repeat' => 1], $rows[0]->toArray());
74+
Tester\Assert::same(['id' => 3, 'name' => 'name1', 'new_column' => '3-name1', 'repeat' => 1], $rows[1]->toArray());
7475

7576
$rows = $result->fetchAll(1, 1);
7677

77-
Tester\Assert::same(['id' => 2, 'name' => 'name2', 'new_column' => '2-name2'], $rows[0]->toArray());
78+
Tester\Assert::same(['id' => 2, 'name' => 'name2', 'new_column' => '2-name2', 'repeat' => 1], $rows[0]->toArray());
7879

7980
$result->free();
8081
}
@@ -234,12 +235,13 @@ public function testFetchAssocRowMutator(): void
234235
$rows1 = $result1
235236
->setRowFetchMutator(static function (Db\Row $row): void {
236237
$row->new_column = $row->id . '-' . $row->name;
238+
$row->repeat = ($row->repeat ?? 0) + 1;
237239
})
238240
->fetchAssoc('type');
239241

240-
Tester\Assert::same(['id' => 1, 'type' => 3, 'name' => 'name3', 'new_column' => '1-name3'], $rows1[3]->toArray());
241-
Tester\Assert::same(['id' => 2, 'type' => 2, 'name' => 'name2', 'new_column' => '2-name2'], $rows1[2]->toArray());
242-
Tester\Assert::same(['id' => 3, 'type' => 1, 'name' => 'name1', 'new_column' => '3-name1'], $rows1[1]->toArray());
242+
Tester\Assert::same(['id' => 1, 'type' => 3, 'name' => 'name3', 'new_column' => '1-name3', 'repeat' => 1], $rows1[3]->toArray());
243+
Tester\Assert::same(['id' => 2, 'type' => 2, 'name' => 'name2', 'new_column' => '2-name2', 'repeat' => 1], $rows1[2]->toArray());
244+
Tester\Assert::same(['id' => 3, 'type' => 1, 'name' => 'name1', 'new_column' => '3-name1', 'repeat' => 1], $rows1[1]->toArray());
243245

244246
$result1->free();
245247

@@ -250,12 +252,13 @@ public function testFetchAssocRowMutator(): void
250252
$rows2 = $result2
251253
->setRowFetchMutator(static function (Db\Row $row): void {
252254
$row->new_column = $row->id . '-' . $row->name;
255+
$row->repeat = ($row->repeat ?? 0) + 1;
253256
})
254257
->fetchAssoc('type=[]');
255258

256-
Tester\Assert::same(['id' => 1, 'type' => 3, 'name' => 'name3', 'new_column' => '1-name3'], $rows2[3]);
257-
Tester\Assert::same(['id' => 2, 'type' => 2, 'name' => 'name2', 'new_column' => '2-name2'], $rows2[2]);
258-
Tester\Assert::same(['id' => 3, 'type' => 1, 'name' => 'name1', 'new_column' => '3-name1'], $rows2[1]);
259+
Tester\Assert::same(['id' => 1, 'type' => 3, 'name' => 'name3', 'new_column' => '1-name3', 'repeat' => 1], $rows2[3]);
260+
Tester\Assert::same(['id' => 2, 'type' => 2, 'name' => 'name2', 'new_column' => '2-name2', 'repeat' => 1], $rows2[2]);
261+
Tester\Assert::same(['id' => 3, 'type' => 1, 'name' => 'name1', 'new_column' => '3-name1', 'repeat' => 1], $rows2[1]);
259262

260263
$result2->free();
261264
}

0 commit comments

Comments
 (0)