ID: 24679 Comment by: frank at geo-dienstleistung dot de Reported By: rorezende at hotmail dot com Status: No Feedback Bug Type: PostgreSQL related Operating System: * PHP Version: 4.3.2 Assigned To: helly New Comment:
I can confirm this bug on php 5.2.1 too. It really makes this function pretty much useless. Previous Comments: ------------------------------------------------------------------------ [2007-03-14 16:07:04] pentropia at gmail dot com Iv'e noticed the same problem on php 5.2.1 ------------------------------------------------------------------------ [2005-09-21 05:04:00] nathanr at nathanr dot net Nope, this is a genuine bug, I've tested on SuSE Linux Professional 9.3 using both PHP 4.3.10 and 5.0.3 against PostgreSQL 8.0.3. They both produce non-working results. To replicate the bug: test.sql: create schema tstschma; create table tstschma.tsttbl ( x int not null, y int not null, primary key (x) ); now try this php: $db = pg_connect("dbname=testdb"); $l = array('x'=>'1', 'y'=>'2'); pg_insert($db, "tstschma.tsttbl", $l); pg_close($db); If you remove the schema (tstschma) from the name then the select works, but the insert of course does not. The problem stems from the fact that pg_class.relname does not include the schema name, but to run a query against the table you must have the schema name. I suggest your fix is to strip everything before and including the last dot in the table name (won't change anything for those not using schemas, but will strip "tstschma." from the above example), but use the table name passed to the method (ie. including the "tstschma.") when you go to do the insert. ------------------------------------------------------------------------ [2005-09-21 05:03:41] nathanr at nathanr dot net Nope, this is a genuine bug, I've tested on SuSE Linux Professional 9.3 using both PHP 4.3.10 and 5.0.3 against PostgreSQL 8.0.3. They both produce non-working results. To replicate the bug: test.sql: create schema tstschma; create table tstschma.tsttbl ( x int not null, y int not null, primary key (x) ); now try this php: $db = pg_connect("dbname=testdb"); $l = array('x'=>'1', 'y'=>'2'); pg_insert($db, "tstschma.tsttbl", $l); pg_close($db); If you remove the schema (tstschma) from the name then the select works, but the insert of course does not. The problem stems from the fact that pg_class.relname does not include the schema name, but to run a query against the table you must have the schema name. I suggest your fix is to strip everything before and including the last dot in the table name (won't change anything for those not using schemas, but will strip "tstschma." from the above example), but use the table name passed to the method (ie. including the "tstschma.") when you go to do the insert. ------------------------------------------------------------------------ [2003-07-23 22:30:19] [EMAIL PROTECTED] No feedback was provided. The bug is being suspended because we assume that you are no longer experiencing the problem. If this is not the case and you are able to provide the information that was requested earlier, please do so and change the status of the bug back to "Open". Thank you. ------------------------------------------------------------------------ [2003-07-16 21:28:37] [EMAIL PROTECTED] Please provide an example script which shows the problem clearly. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/24679 -- Edit this bug report at http://bugs.php.net/?id=24679&edit=1