FIX: Don’t drop first row on repeated iteration

Fixes https://github.com/silverstripe/silverstripe-framework/issues/9097

Related: https://github.com/silverstripe/silverstripe-framework/issues/9098

Co-authored-by: Guy Marriott <guy@scopey.co.nz>
This commit is contained in:
Sam Minnee 2019-06-28 14:41:59 +12:00
parent 3d6920c121
commit 75f4a35f71

View File

@ -58,8 +58,10 @@ class PostgreSQLQuery extends Query
public function seek($row)
{
pg_result_seek($this->handle, $row);
return $this->nextRecord();
// Specifying the zero-th record here will reset the pointer
$result = pg_fetch_array($this->handle, $row, PGSQL_NUM);
return $this->parseResult($result);
}
public function numRecords()
@ -73,6 +75,18 @@ class PostgreSQLQuery extends Query
// Correct non-string types
if ($row) {
return $this->parseResult($row);
}
return false;
}
/**
* @param array $row
* @return array
*/
protected function parseResult(array $row)
{
$record = [];
foreach ($row as $i => $v) {
@ -92,7 +106,4 @@ class PostgreSQLQuery extends Query
return $record;
}
return false;
}
}