File tree 2 files changed +12
-1
lines changed
2 files changed +12
-1
lines changed Original file line number Diff line number Diff line change @@ -712,11 +712,15 @@ void pgsqlCopyFromArray_internal(INTERNAL_FUNCTION_PARAMETERS)
712
712
}
713
713
} ZEND_HASH_FOREACH_END ();
714
714
} else {
715
- iter = Z_OBJ_P (pg_rows )-> ce -> get_iterator (Z_OBJCE_P (pg_rows ), pg_rows , 0 );
715
+ iter = Z_OBJCE_P (pg_rows )-> get_iterator (Z_OBJCE_P (pg_rows ), pg_rows , 0 );
716
716
if (iter == NULL || EG (exception )) {
717
717
RETURN_THROWS ();
718
718
}
719
719
720
+ if (iter -> funcs -> rewind ) {
721
+ iter -> funcs -> rewind (iter );
722
+ }
723
+
720
724
for (; iter -> funcs -> valid (iter ) == SUCCESS && EG (exception ) == NULL ; iter -> funcs -> move_forward (iter )) {
721
725
tmp = iter -> funcs -> get_current_data (iter );
722
726
if (!_pdo_pgsql_send_copy_data (H , tmp )) {
Original file line number Diff line number Diff line change @@ -42,6 +42,12 @@ $iterator = new class implements Iterator{
42
42
}
43
43
};
44
44
45
+ try {
46
+ $ db ->pgsqlCopyFromArray ('test_copy_from_traversable ' ,new stdClass ());
47
+ } catch (\TypeError $ e ) {
48
+ echo $ e ->getMessage () . PHP_EOL ;
49
+ }
50
+
45
51
$ db ->pgsqlCopyFromArray ('test_copy_from_traversable ' ,$ iterator );
46
52
47
53
$ stmt = $ db ->query ("select * from test_copy_from_traversable order by 1 " );
@@ -56,6 +62,7 @@ $db = PDOTest::test_factory(__DIR__ . '/common.phpt');
56
62
$ db ->query ('DROP TABLE IF EXISTS test_copy_from_traversable CASCADE ' );
57
63
?>
58
64
--EXPECT--
65
+ PDO::pgsqlCopyFromArray(): Argument #2 ($rows) must be of type array or Traversable
59
66
array (
60
67
0 => 1,
61
68
1 => 1,
You can’t perform that action at this time.
0 commit comments