1--TEST--
2PDO_OCI: Attribute: Column Case
3--SKIPIF--
4<?php
5if (!extension_loaded('pdo') || !extension_loaded('pdo_oci')) die('skip not loaded');
6require(__DIR__.'/../../pdo/tests/pdo_test.inc');
7PDOTest::skip();
8?>
9--FILE--
10<?php
11
12require(__DIR__ . '/../../pdo/tests/pdo_test.inc');
13
14function do_query1($dbh)
15{
16    var_dump($dbh->getAttribute(PDO::ATTR_CASE));
17    $s = $dbh->prepare("select dummy from dual");
18    $s->execute();
19    while ($r = $s->fetch(PDO::FETCH_ASSOC)) {
20        var_dump($r);
21    }
22}
23
24function do_query2($dbh, $mode)
25{
26    echo "Mode desired is $mode\n";
27    $s = $dbh->prepare("select dummy from dual", array(PDO::ATTR_CASE, $mode));
28    $s->execute();
29    while ($r = $s->fetch(PDO::FETCH_ASSOC)) {
30        var_dump($r);
31    }
32}
33
34$dbh = PDOTest::factory();
35$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
36
37echo "Test 1 - Force column names to lower case\n";
38$dbh->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER);
39do_query1($dbh);
40
41echo "Test 2 - Leave column names as returned by the database driver\n";
42$dbh->setAttribute(PDO::ATTR_CASE, PDO::CASE_NATURAL);
43do_query1($dbh);
44
45echo "Test 3 - Force column names to upper case\n";
46$dbh->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER);
47do_query1($dbh);
48
49echo "Test 4 - Setting on statement has no effect.  Attempt lower case but get upper\n";
50$dbh->setAttribute(PDO::ATTR_CASE, PDO::CASE_NATURAL); // reset
51do_query2($dbh, PDO::CASE_LOWER);
52
53echo "Done\n";
54
55?>
56--EXPECT--
57Test 1 - Force column names to lower case
58int(2)
59array(1) {
60  ["dummy"]=>
61  string(1) "X"
62}
63Test 2 - Leave column names as returned by the database driver
64int(0)
65array(1) {
66  ["DUMMY"]=>
67  string(1) "X"
68}
69Test 3 - Force column names to upper case
70int(1)
71array(1) {
72  ["DUMMY"]=>
73  string(1) "X"
74}
75Test 4 - Setting on statement has no effect.  Attempt lower case but get upper
76Mode desired is 2
77array(1) {
78  ["DUMMY"]=>
79  string(1) "X"
80}
81Done
82