ID: 27824 User updated by: gwood at ewebengine dot com Reported By: gwood at ewebengine dot com -Status: Bogus +Status: Open -Bug Type: PostgreSQL related +Bug Type: Documentation problem Operating System: FreeBSD 5.1-RELEASE-p10 PHP Version: 4.3.4 New Comment:
If this isn't considered a bug, then the documentation is incorrect. The documentation states that persistant connections can be swapped out for non-persistant connections with no problem. This IS NOT TRUE for the example I presented. If this is expected behaviour this caveat needs to be added to the warnings on the persistant connection page. Previous Comments: ------------------------------------------------------------------------ [2004-04-01 08:53:00] [EMAIL PROTECTED] Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php When creating a persistent connection PHP uses the provided authentication information to determine is such connection is already avaliable. This is why when using pg_pconnect with the same data in one script would result in a single connection. ------------------------------------------------------------------------ [2004-04-01 08:51:32] gwood at ewebengine dot com Description: ------------ According to the documentation: "An important summary. Persistent connections were designed to have one-to-one mapping to regular connections. That means that you should always be able to replace persistent connections with non-persistent connections, and it won't change the way your script behaves. It may (and probably will) change the efficiency of the script, but not its behavior!" This does not appear to be the case with pg_pconnect. Specifically, creating two database connections using pg_pconnect with the same connection parameters, results in only a single database connection. This means that instead of being able to execute queries in parallel, all queries are executed sequentially. This happens with both the CLI interface and mod_php. Reproduce code: --------------- $conn1 = pg_pconnect($connect_string); $conn2 = pg_pconnect($connect_string); pg_query($conn1, 'BEGIN'); pg_query($conn2, 'BEGIN'); pg_query($conn1, 'INSERT INTO test (int1) VALUES (1)'); pg_query($conn2, 'INSERT INTO test (int1) VALUES (2)'); pg_query($conn1, 'ROLLBACK'); pg_query($conn2, 'COMMIT'); Expected result: ---------------- This should result in the second insert to the database being committed, while the first insert is rolled back. This is what happens when pg_connect() is substituted for pg_pconnect. Actual result: -------------- Both inserts are rolled back. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=27824&edit=1
