PHP  
 PHP_HEAD
downloads | QA | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | my php.net 
 

Test Failure Report for ext/pdo_oci/tests/pdo_oci_stmt_getcolumnmeta.phpt ('PDO_OCI: PDOStatement->getColumnMeta')

Script

1: <?php
2:
3:
echo "Preparations before the test\n";
4:
5: require(
__DIR__ '/../../pdo/tests/pdo_test.inc');
6: try {
7:     
$db PDOTest::factory();
8:     
$db->exec(<<<SQL
9:
BEGIN
10:    EXECUTE IMMEDIATE 'DROP TABLE test';
11: EXCEPTION
12:    WHEN OTHERS THEN
13:       IF SQLCODE != -942 THEN
14:      RAISE;
15:       END IF;
16: END;
17:
SQL
18: );
19:     
$db->exec("CREATE TABLE test(id INT)");
20:
21:     
$db->beginTransaction();
22:
23:     
$stmt $db->prepare('SELECT id FROM test ORDER BY id ASC');
24:
25:     echo 
"Test 1. calling function with invalid parameters\n";
26:
27:     
// execute() has not been called yet
28:     // NOTE: no warning
29:     
if (false !== ($tmp $stmt->getColumnMeta(0)))
30:         
printf("[002] Expecting false got %s\n"var_export($tmptrue));
31:
32:     
$stmt->execute();
33:     
// Warning: PDOStatement::getColumnMeta() expects exactly 1 parameter, 0 given in
34:     
if (false !== ($tmp = @$stmt->getColumnMeta()))
35:         
printf("[003] Expecting false got %s\n"var_export($tmptrue));
36:
37:     
// invalid offset
38:     
if (false !== ($tmp = @$stmt->getColumnMeta(-1)))
39:         
printf("[004] Expecting false got %s\n"var_export($tmptrue));
40:
41:     
// Warning: PDOStatement::getColumnMeta() expects parameter 1 to be int, array given in
42:     
if (false !== ($tmp = @$stmt->getColumnMeta(array())))
43:         
printf("[005] Expecting false got %s\n"var_export($tmptrue));
44:
45:     
// Warning: PDOStatement::getColumnMeta() expects exactly 1 parameter, 2 given in
46:     
if (false !== ($tmp = @$stmt->getColumnMeta(11)))
47:         
printf("[006] Expecting false got %s\n"var_export($tmptrue));
48:
49:     
// invalid offset
50:     
if (false !== ($tmp $stmt->getColumnMeta(1)))
51:         
printf("[007] Expecting false because of invalid offset got %s\n"var_export($tmptrue));
52:
53:     echo 
"Test 2. testing return values\n";
54:     echo 
"Test 2.1 testing array returned\n";
55:
56:     
$stmt $db->prepare('SELECT id FROM test ORDER BY id ASC');
57:     
$stmt->execute();
58:     
$native $stmt->getColumnMeta(0);
59:     if (
count($native) == 0) {
60:         
printf("[008] Meta data seems wrong, %s / %s\n",
61:             
var_export($nativetrue), var_export($emulatedtrue));
62:     }
63:
64:
65:     function 
test_return($meta$offset$native_type$pdo_type){
66:         if (empty(
$meta)) {
67:             
printf("[%03d + 2] getColumnMeta() failed, %d - %s\n"$offset,
68:                 
$stmt->errorCode(), var_export($stmt->errorInfo(), true));
69:             return 
false;
70:         }
71:         
$elements = array('flags''scale''name''len''precision''pdo_type');
72:         foreach (
$elements as $k => $element)
73:             if (!isset(
$meta[$element])) {
74:                 
printf("[%03d + 3] Element %s missing, %s\n"$offset,
75:                     
$elementvar_export($metatrue));
76:                 return 
false;
77:             }
78:
79:         if (!
is_null($native_type)) {
80:             if (!isset(
$meta['native_type'])) {
81:                 
printf("[%03d + 4] Element native_type missing, %s\n"$offset,
82:                     
var_export($metatrue));
83:                 return 
false;
84:             }
85:
86:             if (!
is_array($native_type))
87:                 
$native_type = array($native_type);
88:
89:             
$found false;
90:             foreach (
$native_type as $k => $type) {
91:                 if (
$meta['native_type'] == $type) {
92:                     
$found true;
93:                     break;
94:                 }
95:             }
96:
97:             if (!
$found) {
98:                 
printf("[%03d + 5] Expecting native type %s, %s\n"$offset,
99:                     
var_export($native_typetrue), var_export($metatrue));
100:                 return 
false;
101:             }
102:         }
103:
104:         if (!
is_null($pdo_type) && ($meta['pdo_type'] != $pdo_type)) {
105:             
printf("[%03d + 6] Expecting PDO type %s got %s (%s)\n"$offset,
106:                 
$pdo_typevar_export($metatrue), var_export($meta['native_type']));
107:             return 
false;
108:         }
109:
110:         return 
true;
111:     }
112:
113:
114:     function 
test_meta(&$db$offset$sql_type$value$native_type$pdo_type) {
115:
116:         
$db->exec(<<<SQL
117:
BEGIN
118:    EXECUTE IMMEDIATE 'DROP TABLE test';
119: EXCEPTION
120:    WHEN OTHERS THEN
121:       IF SQLCODE != -942 THEN
122:          RAISE;
123:       END IF;
124: END;
125:
SQL
126: );
127:
128:         
$sql sprintf('CREATE TABLE test(id INT, label %s)'$sql_type);
129:         
$stmt $db->prepare($sql);
130:         
$stmt->execute();
131:
132:         if (!
$db->exec(sprintf("INSERT INTO test(id, label) VALUES (1, '%s')"$value))) {
133:             
printf("[%03d] + 1] Insert failed, %d - %s\n"$offset,
134:                 
$db->errorCode(), var_export($db->errorInfo(), true));
135:             return 
false;
136:         }
137:
138:         
$stmt $db->prepare('SELECT id, label FROM test');
139:         
$stmt->execute();
140:         
$meta $stmt->getColumnMeta(1);
141:         return 
test_return($meta$offset$native_type$pdo_type);
142:     }
143:
144:     echo 
"Test 2.2 testing numeric columns\n";
145:
146:     
test_meta($db20'NUMBER'         0                    'NUMBER'PDO::PARAM_STR);
147:     
test_meta($db30'NUMBER'         256                  'NUMBER'PDO::PARAM_STR);
148:     
test_meta($db40'INT'            256                  'NUMBER'PDO::PARAM_STR);
149:     
test_meta($db50'INTEGER'        256                  'NUMBER'PDO::PARAM_STR);
150:     
test_meta($db60'NUMBER'         256.01               'NUMBER'PDO::PARAM_STR);
151:     
test_meta($db70'NUMBER'         , -8388608             'NUMBER'PDO::PARAM_STR);
152:
153:     
test_meta($db80'NUMBER'         2147483648           'NUMBER'PDO::PARAM_STR);
154:     
test_meta($db90'NUMBER'         4294967295           'NUMBER'PDO::PARAM_STR);
155:
156:     
test_meta($db100'DEC'             1.01               'NUMBER'       PDO::PARAM_STR);
157:     
test_meta($db110'DECIMAL'         1.01               'NUMBER'       PDO::PARAM_STR);
158:     
test_meta($db120'FLOAT'           1.01               'FLOAT'        PDO::PARAM_STR);
159:     
test_meta($db130'DOUBLE PRECISION'1.01               'FLOAT'        PDO::PARAM_STR);
160:     
test_meta($db140'BINARY_FLOAT'    1.01               'BINARY_FLOAT' PDO::PARAM_STR);
161:     
test_meta($db150'BINARY_DOUBLE'   1.01               'BINARY_DOUBLE'PDO::PARAM_STR);
162:
163:     echo 
"Test 2.3 testing temporal columns\n";
164:
165:     
$db->exec("alter session set nls_date_format='YYYY-MM-DD'");
166:     
test_meta($db160'DATE'           '2008-04-23'        'DATE'PDO::PARAM_STR);
167:
168:     echo 
"Test 2.4 testing string columns\n";
169:
170:     
test_meta($db170'CHAR(1)'       'a'                  'CHAR'     PDO::PARAM_STR);
171:     
test_meta($db180'CHAR(10)'      '0123456789'         'CHAR'     PDO::PARAM_STR);
172:     
test_meta($db190'CHAR(255)'     str_repeat('z'255) , 'CHAR'     PDO::PARAM_STR);
173:     
test_meta($db200'VARCHAR(1)'    'a'                  'VARCHAR2' PDO::PARAM_STR);
174:     
test_meta($db210'VARCHAR(10)'   '0123456789'         'VARCHAR2' PDO::PARAM_STR);
175:     
test_meta($db220'VARCHAR(255)'  str_repeat('z'255) , 'VARCHAR2' PDO::PARAM_STR);
176:     
test_meta($db230'VARCHAR2(1)'   'a'                  'VARCHAR2' PDO::PARAM_STR);
177:     
test_meta($db240'VARCHAR2(10)'  '0123456789'         'VARCHAR2' PDO::PARAM_STR);
178:     
test_meta($db250'VARCHAR2(255)' str_repeat('z'255) , 'VARCHAR2' PDO::PARAM_STR);
179:
180:     
test_meta($db260'NCHAR(1)'      'a'                  'NCHAR'    PDO::PARAM_STR);
181:     
test_meta($db270'NCHAR(10)'     '0123456789'         'NCHAR'    PDO::PARAM_STR);
182:     
test_meta($db280'NCHAR(255)'    str_repeat('z'255) , 'NCHAR'    PDO::PARAM_STR);
183:     
test_meta($db290'NVARCHAR2(1)'  'a'                  'NVARCHAR2'PDO::PARAM_STR);
184:     
test_meta($db300'NVARCHAR2(10)' '0123456789'         'NVARCHAR2'PDO::PARAM_STR);
185:     
test_meta($db310'NVARCHAR2(255)'str_repeat('z'255) , 'NVARCHAR2'PDO::PARAM_STR);
186:
187:     echo 
"Test 2.5 testing lobs columns\n";
188:
189:     
test_meta($db320'CLOB'          str_repeat('b'255) , 'CLOB'    PDO::PARAM_LOB);
190:     
test_meta($db330'BLOB'          str_repeat('b'256) , 'BLOB'    PDO::PARAM_LOB);
191:     
test_meta($db340'NCLOB'         str_repeat('b'255) , 'NCLOB'   PDO::PARAM_LOB);
192:
193:     
test_meta($db350'LONG'          str_repeat('b'256) , 'LONG'    PDO::PARAM_STR);
194:     
test_meta($db360'LONG RAW'      str_repeat('b'256) , 'LONG RAW'PDO::PARAM_STR);
195:     
test_meta($db370'RAW(256)'      str_repeat('b'256) , 'RAW'     PDO::PARAM_STR);
196:
197:
198:     
$db->exec(<<<SQL
199:
BEGIN
200:    EXECUTE IMMEDIATE 'DROP TABLE test';
201: EXCEPTION
202:    WHEN OTHERS THEN
203:       IF SQLCODE != -942 THEN
204:          RAISE;
205:       END IF;
206: END;
207:
SQL
208: );
209:     echo 
"Test 2.6 testing function return\n";
210:
211:     
$stmt $db->query('SELECT count(*) FROM dual');
212:     
$meta $stmt->getColumnMeta(0);
213:     
test_return($meta380'NUMBER'PDO::PARAM_STR);
214:     
$stmt $db->query("SELECT TO_DATE('2008-04-23') FROM dual");
215:     
$meta $stmt->getColumnMeta(0);
216:     
test_return($meta390'DATE'PDO::PARAM_STR);
217:     
$stmt $db->query("SELECT TO_CHAR(542) FROM dual");
218:     
$meta $stmt->getColumnMeta(0);
219:     
test_return($meta400'VARCHAR2'PDO::PARAM_STR);
220:
221:
222:     echo 
"Test 2.7 testing flags returned\n";
223:
224:     
$sql sprintf('CREATE TABLE test(id INT NOT NULL, label INT NULL)');
225:     
$stmt $db->prepare($sql);
226:     
$stmt->execute();
227:     
$db->exec('INSERT INTO test(id, label) VALUES (1, 1)');
228:     
$stmt $db->query('SELECT id, label FROM test');
229:     
$meta $stmt->getColumnMeta(0);
230:     
// verify the flags array countains a not_null flag and not nullable flags
231:     
if (!isset($meta['flags'])) {
232:         
printf("[1001] No flags contained in metadata %s\n"var_export($metatrue));
233:     } else {
234:         
$flags $meta['flags'];
235:         
$found false;
236:         foreach (
$flags as $k => $flag) {
237:             if (
$flag == 'not_null')
238:                 
$found true;
239:             if (
$flag == 'nullable')
240:                 
printf("[1003] Flags seem wrong %s\n"var_export($metatrue));
241:         }
242:         if (!
$found)
243:             
printf("[1002] Flags seem wrong %s\n"var_export($metatrue));
244:     }
245:     
$meta $stmt->getColumnMeta(1);
246:     
// verify the flags array countains a nullable flag and not not_null flags
247:     
if (!isset($meta['flags'])) {
248:         
printf("[1003] No flags contained in metadata %s\n"var_export($metatrue));
249:     } else {
250:         
$flags $meta['flags'];
251:         
$found false;
252:         foreach (
$flags as $k => $flag) {
253:             if (
$flag == 'not_null')
254:                 
printf("[1004] Flags seem wrong %s\n"var_export($metatrue));
255:             if (
$flag == 'nullable')
256:                 
$found true;
257:         }
258:         if (!
$found)
259:             
printf("[1005] Flags seem wrong %s\n"var_export($metatrue));
260:     }
261:
262: } catch (
PDOException $e) {
263:     
// we should never get here, we use warnings, but never trust a system...
264:     
printf("[001] %s, [%s} %s\n",
265:         
$e->getMessage(), $db->errorInfo(), implode(' '$db->errorInfo()));
266: }
267:
268:
$db->exec(<<<SQL
269:
BEGIN
270:    EXECUTE IMMEDIATE 'DROP TABLE test';
271: EXCEPTION
272:    WHEN OTHERS THEN
273:       IF SQLCODE != -942 THEN
274:          RAISE;
275:       END IF;
276: END;
277:
SQL
278: );
279: print 
"done!";
280:
?>
281:

Expected

Preparations before the test
Test 1. calling function with invalid parameters
Test 2. testing return values
Test 2.1 testing array returned
Test 2.2 testing numeric columns
Test 2.3 testing temporal columns
Test 2.4 testing string columns
Test 2.5 testing lobs columns
Test 2.6 testing function return
Test 2.7 testing flags returned
done!

Output

Preparations before the test
Test 1. calling function with invalid parameters

Fatal error: Uncaught ArgumentCountError: PDOStatement::getColumnMeta() expects exactly 1 parameter, 0 given in /var/php_gcov/PHP_HEAD/ext/pdo_oci/tests/pdo_oci_stmt_getcolumnmeta.php:34
Stack trace:
#0 /var/php_gcov/PHP_HEAD/ext/pdo_oci/tests/pdo_oci_stmt_getcolumnmeta.php(34): PDOStatement->getColumnMeta()
#1 {main}
  thrown in /var/php_gcov/PHP_HEAD/ext/pdo_oci/tests/pdo_oci_stmt_getcolumnmeta.php on line 34

Diff

003+ 
004+ Fatal error: Uncaught ArgumentCountError: PDOStatement::getColumnMeta() expects exactly 1 parameter, 0 given in /var/php_gcov/PHP_HEAD/ext/pdo_oci/tests/pdo_oci_stmt_getcolumnmeta.php:34
005+ Stack trace:
006+ #0 /var/php_gcov/PHP_HEAD/ext/pdo_oci/tests/pdo_oci_stmt_getcolumnmeta.php(34): PDOStatement->getColumnMeta()
007+ #1 {main}
008+   thrown in /var/php_gcov/PHP_HEAD/ext/pdo_oci/tests/pdo_oci_stmt_getcolumnmeta.php on line 34
003- Test 2. testing return values
004- Test 2.1 testing array returned
005- Test 2.2 testing numeric columns
006- Test 2.3 testing temporal columns
007- Test 2.4 testing string columns
008- Test 2.5 testing lobs columns
009- Test 2.6 testing function return
010- Test 2.7 testing flags returned
011- done!

 

Generated at Mon, 06 May 2019 17:58:35 +0000 (942 days ago)

Copyright © 2005-2021 The PHP Group
All rights reserved.