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

Reply via email to