File tree Expand file tree Collapse file tree 2 files changed +27
-2
lines changed
Expand file tree Collapse file tree 2 files changed +27
-2
lines changed Original file line number Diff line number Diff line change @@ -3451,11 +3451,12 @@ PHP_FUNCTION(pg_copy_from)
34513451 if (UNEXPECTED (!tmp )) {
34523452 return ;
34533453 }
3454- zend_string * zquery = zend_string_alloc (ZSTR_LEN (tmp ) + 1 , false);
3454+ zend_string * zquery = zend_string_alloc (ZSTR_LEN (tmp ) + 2 , false);
34553455 memcpy (ZSTR_VAL (zquery ), ZSTR_VAL (tmp ), ZSTR_LEN (tmp ) + 1 );
34563456 ZSTR_LEN (zquery ) = ZSTR_LEN (tmp );
3457- if (ZSTR_LEN (tmp ) > 0 && ZSTR_VAL (zquery )[ZSTR_LEN (tmp )] != '\n' ) {
3457+ if (ZSTR_LEN (tmp ) > 0 && ZSTR_VAL (zquery )[ZSTR_LEN (tmp ) - 1 ] != '\n' ) {
34583458 ZSTR_VAL (zquery )[ZSTR_LEN (tmp )] = '\n' ;
3459+ ZSTR_VAL (zquery )[ZSTR_LEN (tmp ) + 1 ] = '\0' ;
34593460 ZSTR_LEN (zquery ) ++ ;
34603461 }
34613462 if (PQputCopyData (pgsql , ZSTR_VAL (zquery ), ZSTR_LEN (zquery )) != 1 ) {
Original file line number Diff line number Diff line change 1+ --TEST--
2+ Fix GH-18148 pg_copy_from() command position offset when giving explicit \n terminator
3+ --EXTENSIONS--
4+ pgsql
5+ --SKIPIF--
6+ <?php
7+ include ("inc/skipif.inc " );
8+ ?>
9+ --FILE--
10+ <?php
11+
12+ include "inc/config.inc " ;
13+ $ table_name = "gh18148 " ;
14+ $ db = pg_connect ($ conn_str );
15+ pg_query ($ db , "CREATE TABLE {$ table_name } (a integer, b text) " );
16+ var_dump (pg_copy_from ( $ db , $ table_name , [ "1 \tone \n" ] ));
17+ --CLEAN --
18+ <?php
19+ include ('inc/config.inc ' );
20+ $ db = pg_connect ($ conn_str );
21+ pg_query ($ db , "DROP TABLE IF EXISTS gh18148 cascade " );
22+ ?>
23+ --EXPECT--
24+ bool(true)
You can’t perform that action at this time.
0 commit comments