1--TEST--
2PostgreSQL async prepared queries
3--SKIPIF--
4<?php
5include("skipif.inc");
6if (!function_exists('pg_send_prepare')) die('skip function pg_send_prepare() does not exist');
7?>
8--FILE--
9<?php
10
11include('config.inc');
12
13$db = pg_connect($conn_str);
14
15$version = pg_version($db);
16if ($version['protocol'] >= 3) {
17    if (!pg_send_prepare($db, 'php_test', "SELECT * FROM ".$table_name." WHERE num > \$1;")) {
18        echo "pg_send_prepare() error\n";
19    }
20    while(pg_connection_busy($db));  // busy wait: intended
21    if (pg_connection_status($db) === PGSQL_CONNECTION_BAD) {
22        echo "pg_connection_status() error\n";
23    }
24    if (!($result = pg_get_result($db)))
25    {
26        echo "pg_get_result() error\n";
27    }
28    pg_free_result($result);
29
30    if (!pg_send_execute($db, 'php_test', array(100))) {
31        echo "pg_send_execute() error\n";
32    }
33    while(pg_connection_busy($db));  // busy wait: intended
34    if (pg_connection_status($db) === PGSQL_CONNECTION_BAD) {
35        echo "pg_connection_status() error\n";
36    }
37    if (!($result = pg_get_result($db)))
38    {
39        echo "pg_get_result() error\n";
40    }
41
42    if (!($rows = pg_num_rows($result))) {
43        echo "pg_num_rows() error\n";
44    }
45    for ($i=0; $i < $rows; $i++)
46    {
47        pg_fetch_array($result, $i, PGSQL_NUM);
48    }
49    for ($i=0; $i < $rows; $i++)
50    {
51        pg_fetch_object($result);
52    }
53    for ($i=0; $i < $rows; $i++)
54    {
55        pg_fetch_row($result, $i);
56    }
57    for ($i=0; $i < $rows; $i++)
58    {
59        pg_fetch_result($result, $i, 0);
60    }
61
62    pg_num_rows(pg_query_params($db, "SELECT * FROM ".$table_name." WHERE num > \$1;", array(100)));
63    pg_num_fields(pg_query_params($db, "SELECT * FROM ".$table_name." WHERE num > \$1;", array(100)));
64    pg_field_name($result, 0);
65    pg_field_num($result, $field_name);
66    pg_field_size($result, 0);
67    pg_field_type($result, 0);
68    pg_field_prtlen($result, 0);
69    pg_field_is_null($result, 0);
70
71    if (!pg_send_prepare($db, "php_test2", "INSERT INTO ".$table_name." VALUES (\$1, \$2);"))
72    {
73        echo "pg_send_prepare() error\n";
74    }
75    while(pg_connection_busy($db));  // busy wait: intended
76    if (pg_connection_status($db) === PGSQL_CONNECTION_BAD) {
77        echo "pg_connection_status() error\n";
78    }
79    if (!($result = pg_get_result($db)))
80    {
81        echo "pg_get_result() error\n";
82    }
83    pg_free_result($result);
84
85    if (!pg_send_execute($db, "php_test2", array(9999, "A'BC")))
86    {
87        echo "pg_send_execute() error\n";
88    }
89    while(pg_connection_busy($db));  // busy wait: intended
90    if (pg_connection_status($db) === PGSQL_CONNECTION_BAD) {
91        echo "pg_connection_status() error\n";
92    }
93    if (!($result = pg_get_result($db)))
94    {
95        echo "pg_get_result() error\n";
96    }
97
98    pg_last_oid($result);
99    pg_free_result($result);
100}
101pg_close($db);
102
103echo "OK";
104?>
105--EXPECT--
106OK
107