diff --git a/src/Extractor/PgSQLResultWriter.php b/src/Extractor/PgSQLResultWriter.php index 331637a..f9b0220 100644 --- a/src/Extractor/PgSQLResultWriter.php +++ b/src/Extractor/PgSQLResultWriter.php @@ -11,6 +11,7 @@ use Keboola\DbExtractor\Configuration\PgsqlExportConfig; use Keboola\DbExtractor\Exception\InvalidArgumentException; use Keboola\DbExtractorConfig\Configuration\ValueObject\ExportConfig; +use Psr\Log\LoggerInterface; class PgSQLResultWriter extends DefaultResultWriter { @@ -28,6 +29,20 @@ public function writeToCsv(QueryResult $result, ExportConfig $exportConfig, stri protected function writeRow(array $row, CsvWriter $csvWriter): void { + // Skip and log if an unexpected non-array value is propagated as a row + if (!is_array($row)) { + $message = sprintf( + 'PgSQLResultWriter: skipping non-array row (type: %s).', + gettype($row), + ); + if (property_exists($this, 'logger') && $this->logger instanceof LoggerInterface) { + $this->logger->warning($message); + } else { + error_log($message); + } + return; + } + if ($this->replaceBooleans) { array_walk($row, function (&$item): void { if (is_bool($item)) {