xref: /PHP-8.0/ext/pdo_pgsql/tests/bug62498.phpt (revision 26dfce7f)
1--TEST--
2PDO PgSQL Bug #62498 (pdo_pgsql inefficient when getColumnMeta() is used), 64-bit
3--SKIPIF--
4<?php
5if (!extension_loaded('pdo') || !extension_loaded('pdo_pgsql')) die('skip not loaded');
6require __DIR__ . '/config.inc';
7require __DIR__ . '/../../../ext/pdo/tests/pdo_test.inc';
8PDOTest::skip();
9if (PHP_INT_SIZE < 8) die("skip valid for 64-bit only");
10?>
11--FILE--
12<?php
13echo "Begin test...\n";
14
15require __DIR__ . '/../../../ext/pdo/tests/pdo_test.inc';
16$db = PDOTest::test_factory(__DIR__ . '/common.phpt');
17$db->setAttribute (\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
18
19// create the table
20$db->exec("CREATE TEMPORARY TABLE bugtest_62498 (int2col INT2, int4col INT4, int8col INT8, stringcol VARCHAR(255), boolcol BOOLEAN, datecol DATE, textcol TEXT, tscol TIMESTAMP, byteacol BYTEA)");
21
22// insert some data
23$statement = $db->prepare("INSERT INTO bugtest_62498 (int2col, int4col, int8col, stringcol, boolcol, datecol, textcol, tscol, byteacol) VALUES (:int2val, :int4val, :int8val, :stringval, :boolval, :dateval, :textval, :tsval, :byteaval)");
24$vals = array(
25    "int2val" => "42",
26    "int4val" => "42",
27    "int8val" => "42",
28    "stringval" => "The Answer",
29    "boolval" => true,
30    "dateval" => '2015-12-14',
31    "textval" => "some text",
32    "tsval"   => 19990108,
33    "byteaval" => 0,
34);
35$statement->execute($vals);
36
37$select = $db->query('SELECT int2col, int4col, int8col, stringcol, boolcol, datecol, textcol, tscol, byteacol FROM bugtest_62498');
38$meta = [];
39for ($i=0; $i < count($vals); $i++) {
40  $meta[] = $select->getColumnMeta($i);
41}
42var_dump($meta);
43
44?>
45Done
46--EXPECTF--
47Begin test...
48array(9) {
49  [0]=>
50  array(8) {
51    ["pgsql:oid"]=>
52    int(21)
53    ["pgsql:table_oid"]=>
54    int(%d)
55    ["table"]=>
56    string(13) "bugtest_62498"
57    ["native_type"]=>
58    string(4) "int2"
59    ["name"]=>
60    string(7) "int2col"
61    ["len"]=>
62    int(2)
63    ["precision"]=>
64    int(-1)
65    ["pdo_type"]=>
66    int(1)
67  }
68  [1]=>
69  array(8) {
70    ["pgsql:oid"]=>
71    int(23)
72    ["pgsql:table_oid"]=>
73    int(%d)
74    ["table"]=>
75    string(13) "bugtest_62498"
76    ["native_type"]=>
77    string(4) "int4"
78    ["name"]=>
79    string(7) "int4col"
80    ["len"]=>
81    int(4)
82    ["precision"]=>
83    int(-1)
84    ["pdo_type"]=>
85    int(1)
86  }
87  [2]=>
88  array(8) {
89    ["pgsql:oid"]=>
90    int(20)
91    ["pgsql:table_oid"]=>
92    int(%d)
93    ["table"]=>
94    string(13) "bugtest_62498"
95    ["native_type"]=>
96    string(4) "int8"
97    ["name"]=>
98    string(7) "int8col"
99    ["len"]=>
100    int(8)
101    ["precision"]=>
102    int(-1)
103    ["pdo_type"]=>
104    int(1)
105  }
106  [3]=>
107  array(8) {
108    ["pgsql:oid"]=>
109    int(1043)
110    ["pgsql:table_oid"]=>
111    int(%d)
112    ["table"]=>
113    string(13) "bugtest_62498"
114    ["native_type"]=>
115    string(7) "varchar"
116    ["name"]=>
117    string(9) "stringcol"
118    ["len"]=>
119    int(-1)
120    ["precision"]=>
121    int(259)
122    ["pdo_type"]=>
123    int(2)
124  }
125  [4]=>
126  array(8) {
127    ["pgsql:oid"]=>
128    int(16)
129    ["pgsql:table_oid"]=>
130    int(%d)
131    ["table"]=>
132    string(13) "bugtest_62498"
133    ["native_type"]=>
134    string(4) "bool"
135    ["name"]=>
136    string(7) "boolcol"
137    ["len"]=>
138    int(1)
139    ["precision"]=>
140    int(-1)
141    ["pdo_type"]=>
142    int(5)
143  }
144  [5]=>
145  array(8) {
146    ["pgsql:oid"]=>
147    int(1082)
148    ["pgsql:table_oid"]=>
149    int(%d)
150    ["table"]=>
151    string(13) "bugtest_62498"
152    ["native_type"]=>
153    string(4) "date"
154    ["name"]=>
155    string(7) "datecol"
156    ["len"]=>
157    int(4)
158    ["precision"]=>
159    int(-1)
160    ["pdo_type"]=>
161    int(2)
162  }
163  [6]=>
164  array(8) {
165    ["pgsql:oid"]=>
166    int(25)
167    ["pgsql:table_oid"]=>
168    int(%d)
169    ["table"]=>
170    string(13) "bugtest_62498"
171    ["native_type"]=>
172    string(4) "text"
173    ["name"]=>
174    string(7) "textcol"
175    ["len"]=>
176    int(-1)
177    ["precision"]=>
178    int(-1)
179    ["pdo_type"]=>
180    int(2)
181  }
182  [7]=>
183  array(8) {
184    ["pgsql:oid"]=>
185    int(1114)
186    ["pgsql:table_oid"]=>
187    int(%d)
188    ["table"]=>
189    string(13) "bugtest_62498"
190    ["native_type"]=>
191    string(9) "timestamp"
192    ["name"]=>
193    string(5) "tscol"
194    ["len"]=>
195    int(8)
196    ["precision"]=>
197    int(-1)
198    ["pdo_type"]=>
199    int(2)
200  }
201  [8]=>
202  array(8) {
203    ["pgsql:oid"]=>
204    int(17)
205    ["pgsql:table_oid"]=>
206    int(%d)
207    ["table"]=>
208    string(13) "bugtest_62498"
209    ["native_type"]=>
210    string(5) "bytea"
211    ["name"]=>
212    string(8) "byteacol"
213    ["len"]=>
214    int(-1)
215    ["precision"]=>
216    int(-1)
217    ["pdo_type"]=>
218    int(3)
219  }
220}
221Done
222