diff options
| author | Christopher Kings-Lynne <chriskl@php.net> | 2005-03-19 08:46:56 +0000 |
|---|---|---|
| committer | Christopher Kings-Lynne <chriskl@php.net> | 2005-03-19 08:46:56 +0000 |
| commit | 1168c306359b2b763274bf2d1fbf21ade775ebcb (patch) | |
| tree | 513768e1ec6bc4e325ce135cc388d10f3be5872c /ext/pgsql/tests | |
| parent | 43fc6b2254a7a69e3f471f378b350a7a1c1686d5 (diff) | |
| download | php-git-1168c306359b2b763274bf2d1fbf21ade775ebcb.tar.gz | |
Added several new functions to support the PostgreSQL v3 protocol
introduced in PostgreSQL 7.4.
(PHP pg_transaction_status) New function to get in-transaction status of
a database connection.
(PHP pg_query_params) New function to allow execution of parameterized
queries.
(PHP pg_prepare) New function to allow preparing named queries.
(PHP pg_execute) New function to allow execution of named prepared
queries.
(PHP pg_send_query_params) New function that is the async equivalent of
pg_query_params.
(PHP pg_send_prepare) New function that is the async equivalent of
pg_prepare.
(PHP pg_send_execute) New function that is the async equivalent of
pg_execute.
(PHP pg_result_error_field) New function that allows highly detailed
error information, most importantly the
SQLSTATE error code
# Regression tests are included for all but 2 functions, the rest will
# follow shortly. Docs will also follow shortly.
Diffstat (limited to 'ext/pgsql/tests')
| -rw-r--r-- | ext/pgsql/tests/23sync_query_params.phpt | 53 | ||||
| -rw-r--r-- | ext/pgsql/tests/24sync_query_prepared.phpt | 59 | ||||
| -rw-r--r-- | ext/pgsql/tests/25async_query_params.phpt | 63 | ||||
| -rw-r--r-- | ext/pgsql/tests/26async_query_prepared.phpt | 99 |
4 files changed, 274 insertions, 0 deletions
diff --git a/ext/pgsql/tests/23sync_query_params.phpt b/ext/pgsql/tests/23sync_query_params.phpt new file mode 100644 index 0000000000..db1cfb24f9 --- /dev/null +++ b/ext/pgsql/tests/23sync_query_params.phpt @@ -0,0 +1,53 @@ +--TEST-- +PostgreSQL sync query params +--SKIPIF-- +<?php include("skipif.inc"); ?> +--FILE-- +<?php + +include('config.inc'); + +$db = pg_connect($conn_str); + +$result = pg_query_params($db, "SELECT * FROM ".$table_name." WHERE num > \$1;", array(100)); +if (!($rows = pg_num_rows($result))) +{ + echo "pg_num_row() error\n"; +} +for ($i=0; $i < $rows; $i++) +{ + pg_fetch_array($result, $i, PGSQL_NUM); +} +for ($i=0; $i < $rows; $i++) +{ + pg_fetch_object($result); +} +for ($i=0; $i < $rows; $i++) +{ + pg_fetch_row($result, $i); +} +for ($i=0; $i < $rows; $i++) +{ + pg_fetch_result($result, $i, 0); +} + +pg_result_error($result); +pg_num_rows(pg_query_params($db, "SELECT * FROM ".$table_name." WHERE num > \$1;", array(100))); +pg_num_fields(pg_query_params($db, "SELECT * FROM ".$table_name." WHERE num > \$1;", array(100))); +pg_field_name($result, 0); +pg_field_num($result, $field_name); +pg_field_size($result, 0); +pg_field_type($result, 0); +pg_field_prtlen($result, 0); +pg_field_is_null($result, 0); + +$result = pg_query_params($db, "INSERT INTO ".$table_name." VALUES (\$1, \$2);", array(9999, "A'BC")); +pg_last_oid($result); + +pg_free_result($result); +pg_close($db); + +echo "OK"; +?> +--EXPECT-- +OK diff --git a/ext/pgsql/tests/24sync_query_prepared.phpt b/ext/pgsql/tests/24sync_query_prepared.phpt new file mode 100644 index 0000000000..273353b6df --- /dev/null +++ b/ext/pgsql/tests/24sync_query_prepared.phpt @@ -0,0 +1,59 @@ +--TEST-- +PostgreSQL sync prepared queries +--SKIPIF-- +<?php include("skipif.inc"); ?> +--FILE-- +<?php + +include('config.inc'); + +$db = pg_connect($conn_str); + +$result = pg_prepare($db, "php_test", "SELECT * FROM ".$table_name." WHERE num > \$1;"); +pg_result_error($result); +pg_free_result($result); +$result = pg_execute($db, "php_test", array(100)); +if (!($rows = pg_num_rows($result))) +{ + echo "pg_num_row() error\n"; +} +for ($i=0; $i < $rows; $i++) +{ + pg_fetch_array($result, $i, PGSQL_NUM); +} +for ($i=0; $i < $rows; $i++) +{ + pg_fetch_object($result); +} +for ($i=0; $i < $rows; $i++) +{ + pg_fetch_row($result, $i); +} +for ($i=0; $i < $rows; $i++) +{ + pg_fetch_result($result, $i, 0); +} + +pg_result_error($result); +pg_num_rows(pg_execute($db, "php_test", array(100))); +pg_num_fields(pg_execute($db, "php_test", array(100))); +pg_field_name($result, 0); +pg_field_num($result, $field_name); +pg_field_size($result, 0); +pg_field_type($result, 0); +pg_field_prtlen($result, 0); +pg_field_is_null($result, 0); + +$result = pg_prepare($db, "php_test2", "INSERT INTO ".$table_name." VALUES (\$1, \$2);"); +pg_result_error($result); +pg_free_result($result); +$result = pg_execute($db, "php_test2", array(9999, "A'BC")); +pg_last_oid($result); + +pg_free_result($result); +pg_close($db); + +echo "OK"; +?> +--EXPECT-- +OK diff --git a/ext/pgsql/tests/25async_query_params.phpt b/ext/pgsql/tests/25async_query_params.phpt new file mode 100644 index 0000000000..2d0edbb724 --- /dev/null +++ b/ext/pgsql/tests/25async_query_params.phpt @@ -0,0 +1,63 @@ +--TEST-- +PostgreSQL async query params +--SKIPIF-- +<?php include("skipif.inc"); ?> +--FILE-- +<?php + +include('config.inc'); + +$db = pg_connect($conn_str); + +if (!pg_send_query_params($db, "SELECT * FROM ".$table_name." WHERE num > \$1;", array(100))) { + echo "pg_send_query_params() error\n"; +} +while(pg_connection_busy($db)); // busy wait: intended +if (pg_connection_status($db) === PGSQL_CONNECTION_BAD) { + echo "pg_connection_status() error\n"; +} +if (!($result = pg_get_result($db))) +{ + echo "pg_get_result() error\n"; +} +if (!($rows = pg_num_rows($result))) { + echo "pg_num_rows() error\n"; +} +for ($i=0; $i < $rows; $i++) +{ + pg_fetch_array($result, $i, PGSQL_NUM); +} +for ($i=0; $i < $rows; $i++) +{ + pg_fetch_object($result); +} +for ($i=0; $i < $rows; $i++) +{ + pg_fetch_row($result, $i); +} +for ($i=0; $i < $rows; $i++) +{ + pg_fetch_result($result, $i, 0); +} + +pg_num_rows(pg_query_params($db, "SELECT * FROM ".$table_name." WHERE num > \$1;", array(100))); +pg_num_fields(pg_query_params($db, "SELECT * FROM ".$table_name." WHERE num > \$1;", array(100))); +pg_field_name($result, 0); +pg_field_num($result, $field_name); +pg_field_size($result, 0); +pg_field_type($result, 0); +pg_field_prtlen($result, 0); +pg_field_is_null($result, 0); + +if (!pg_send_query_params($db, "INSERT INTO ".$table_name." VALUES (\$1, \$2);", array(9999, "A'BC"))) +{ + echo "pg_send_query_params() error\n"; +} + +pg_last_oid($result); +pg_free_result($result); + +echo "OK"; +?> +--EXPECT-- +OK diff --git a/ext/pgsql/tests/26async_query_prepared.phpt b/ext/pgsql/tests/26async_query_prepared.phpt new file mode 100644 index 0000000000..84945be323 --- /dev/null +++ b/ext/pgsql/tests/26async_query_prepared.phpt @@ -0,0 +1,99 @@ +--TEST-- +PostgreSQL async prepared queries +--SKIPIF-- +<?php include("skipif.inc"); ?> +--FILE-- +<?php + +include('config.inc'); + +$db = pg_connect($conn_str); + +if (!pg_send_prepare($db, 'php_test', "SELECT * FROM ".$table_name." WHERE num > \$1;")) { + echo "pg_send_prepare() error\n"; +} +while(pg_connection_busy($db)); // busy wait: intended +if (pg_connection_status($db) === PGSQL_CONNECTION_BAD) { + echo "pg_connection_status() error\n"; +} +if (!($result = pg_get_result($db))) +{ + echo "pg_get_result() error\n"; +} +pg_free_result($result); + +if (!pg_send_execute($db, 'php_test', array(100))) { + echo "pg_send_execute() error\n"; +} +while(pg_connection_busy($db)); // busy wait: intended +if (pg_connection_status($db) === PGSQL_CONNECTION_BAD) { + echo "pg_connection_status() error\n"; +} +if (!($result = pg_get_result($db))) +{ + echo "pg_get_result() error\n"; +} + +if (!($rows = pg_num_rows($result))) { + echo "pg_num_rows() error\n"; +} +for ($i=0; $i < $rows; $i++) +{ + pg_fetch_array($result, $i, PGSQL_NUM); +} +for ($i=0; $i < $rows; $i++) +{ + pg_fetch_object($result); +} +for ($i=0; $i < $rows; $i++) +{ + pg_fetch_row($result, $i); +} +for ($i=0; $i < $rows; $i++) +{ + pg_fetch_result($result, $i, 0); +} + +pg_num_rows(pg_query_params($db, "SELECT * FROM ".$table_name." WHERE num > \$1;", array(100))); +pg_num_fields(pg_query_params($db, "SELECT * FROM ".$table_name." WHERE num > \$1;", array(100))); +pg_field_name($result, 0); +pg_field_num($result, $field_name); +pg_field_size($result, 0); +pg_field_type($result, 0); +pg_field_prtlen($result, 0); +pg_field_is_null($result, 0); + +if (!pg_send_prepare($db, "php_test2", "INSERT INTO ".$table_name." VALUES (\$1, \$2);")) +{ + echo "pg_send_prepare() error\n"; +} +while(pg_connection_busy($db)); // busy wait: intended +if (pg_connection_status($db) === PGSQL_CONNECTION_BAD) { + echo "pg_connection_status() error\n"; +} +if (!($result = pg_get_result($db))) +{ + echo "pg_get_result() error\n"; +} +pg_free_result($result); + +if (!pg_send_execute($db, "php_test2", array(9999, "A'BC"))) +{ + echo "pg_send_execute() error\n"; +} +while(pg_connection_busy($db)); // busy wait: intended +if (pg_connection_status($db) === PGSQL_CONNECTION_BAD) { + echo "pg_connection_status() error\n"; +} +if (!($result = pg_get_result($db))) +{ + echo "pg_get_result() error\n"; +} + +pg_last_oid($result); +pg_free_result($result); + +echo "OK"; +?> +--EXPECT-- +OK |
