Bug->Req #68156 [Asn]: pg_query_params Sets Boolean False to Blank String
Edit report at https://bugs.php.net/bug.php?id=68156&edit=1
ID: 68156
Updated by: yohgaki@php.net
Reported by: nexisentertainment at gmail dot com
Summary: pg_query_params Sets Boolean False to Blank String
Status: Assigned
-Type: Bug
+Type: Feature/Change Request
Package: PostgreSQL related
Operating System: Debian Linux (Jessie)
PHP Version: 5.6.1
Assigned To: yohgaki
Block user comment: N
Private report: N
New Comment:
IIRC, PostgreSQL does not support true/false since 6.x.
http://www.postgresql.org/docs/9.3/static/datatype-boolean.html
Valid literal values for the "true" state are:
TRUE
't'
'true'
'y'
'yes'
'on'
'1'For the "false" state, the following values can be used:
FALSE
'f'
'false'
'n'
'no'
'off'
'0'
So, this behavior is not a bug. It could be feature request.
Previous Comments:
------------------------------------------------------------------------
[2014-10-05 09:30:00] nexisentertainment at gmail dot com
Created a simplified test phpt. Used it to verify the issue still exists on git (commit
429e1b45a7cd2f491e836f4bffa57c72beb6128b).
https://gist.github.com/N3X15/56ab6238a5a8e57bdc32
Can link if someone hates gists. Will now attempt to sleep.
------------------------------------------------------------------------
[2014-10-05 07:50:48] nexisentertainment at gmail dot com
Should be more clear.
------------------------------------------------------------------------
[2014-10-05 07:45:36] nexisentertainment at gmail dot com
Description:
------------
pg_query_params somehow converts (boolean)false (as a parameter) to a blank string before sending it
to postgres.
Note, behavior has not been documented, but has been mentioned by a user comment: http://php.net/manual/en/function.pg-query-params.php#115063
I therefore conclude I am not crazy and imagining things.
May be related to #19575.
Test script:
---------------
<?php
// NOTE: General layout unabashedly stolen from [FILE] of https://github.com/php/php-src/blob/master/ext/pgsql/tests/bug64609.phpt
$conn_str='user=test password=test host=localhost dbname=test';
error_reporting(E_ALL);
$db = pg_connect($conn_str);
foreach(array(TRUE,FALSE) as $bool) {
echo "Inserting ".($bool?'true':'false');
pg_query("BEGIN");
pg_query("CREATE TABLE test_bool_table (a boolean)");
$values = array($bool);
pg_query_params($db,'INSERT INTO test_bool_table (a) VALUES ($1)',$values);
pg_query("ROLLBACK");
}
Expected result:
----------------
No errors, output of:
Inserting true
Inserting false
Actual result:
--------------
Inserting true
Inserting false
Warning: pg_query_params(): Query failed: ERROR: invalid input syntax for type boolean: ""
in /host/[NOPE]/htdocs/testpgbug.php on line 13
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=68156&edit=1
Thread (9 messages)