xref: /PHP-5.5/ext/oci8/tests/conn_attr.inc (revision 02e4d7a2)
1<?php
2
3require(dirname(__FILE__)."/connect.inc");
4
5$sv = oci_server_version($c);
6$sv = preg_match('/Release (11\.2|12)\./', $sv, $matches);
7if ($sv == 1) {
8    // Server is Oracle 11.2+
9    $stmtarray = array(
10        "drop user testuser cascade",
11        "create user testuser identified by testuser",
12        "grant connect,resource,dba to testuser",
13        "alter user testuser enable editions",
14        "drop edition myedition1",
15        "drop edition myedition",
16        "grant create any edition to testuser",
17        "create edition myedition",
18        "create edition myedition1 as child of myedition",
19        "grant use on edition myedition to testuser",
20        "grant use on edition myedition1 to testuser",
21    );
22}
23else {
24    // Server is Pre 11.2
25    $stmtarray = array(
26        "drop user testuser cascade",
27        "create user testuser identified by testuser",
28        "grant connect,resource,dba to testuser",
29    );
30}
31
32foreach ($stmtarray as $stmt) {
33    $s = oci_parse($c, $stmt);
34    $r = @oci_execute($s);
35	if (!$r) {
36		$m = oci_error($s);
37		if (!in_array($m['code'], array(   // ignore expected errors
38                        942 // table or view does not exist
39                     , 1918 // user does not exist
40                     , 2289 // sequence does not exist
41                     , 4080 // trigger does not exist
42                    , 38802 // edition does not exist
43                ))) {
44			echo "Error:" . $stmt . PHP_EOL . $m['message'] . PHP_EOL;
45            if ($m['code'] == 38807) {
46                echo "You appear to already have an edition in use that prevents this PHP test from running.  Query DBA_EDITIONS to see existing editions.". PHP_EOL;
47            }
48            die;
49		}
50	}
51}
52
53function get_attr($conn,$attr)
54{
55    $sel_stmt="select " .$attr. " from v\$session where sid =
56	(select sid from v\$session where audsid =
57	sys_context('userenv','sessionid')) order by 1";
58    $s2 = oci_parse($conn,$sel_stmt);
59    oci_execute($s2,OCI_DEFAULT);
60    while (oci_fetch($s2)) {
61        echo "The value of ".$attr ." is ".oci_result($s2,1)."\n";
62    }
63}
64
65/* Pass $conn_type=1 for a connection with oci_connect()
66   Pass $conn_type=2 for ooci_pconnect
67   Default will give a oci_new_connect */
68
69function get_conn($conn_type)
70{
71	$user = 'testuser';
72	$password = 'testuser';
73	$dbase = $GLOBALS['dbase'];
74	switch($conn_type) {
75        case 1:
76            echo "Testing with oci_connect()\n";
77            return(oci_connect($user,$password,$dbase));
78            break;
79        case 2:
80            echo "Testing with oci_pconnect()\n";
81            return(oci_pconnect($user,$password,$dbase));
82            break;
83        default:
84            echo "Testing with oci_new_connect()\n";
85            return(oci_new_connect($user,$password,$dbase));
86            break;
87	}
88}
89
90function set_attr($conn,$attr,$sufix)
91{
92	if (!strcmp($attr,'MODULE'))
93		$r = oci_set_module_name($conn,'PHP TEST'.$sufix);
94	else if (!strcmp($attr,'ACTION'))
95        $r = oci_set_action($conn,'TASK'.$sufix);
96	else if (!strcmp($attr,'CLIENT_INFO'))
97        $r = oci_set_client_info($conn,'INFO1'.$sufix);
98	else if (!strcmp($attr,'CLIENT_IDENTIFIER'))
99        $r = oci_set_client_identifier($conn,'ID00'.$sufix);
100	else
101		echo "Pass one of the above four attributes!!!\n";
102	if ($r) {
103		echo "Value of $attr has been set successfully\n";
104    }
105
106	//Do a round-trip here
107	oci_server_version($conn);
108	return $r;
109}
110
111function set_edit_attr($value)
112{
113	$r = oci_set_edition($value);
114    if ($r) {
115		echo " The value of edition has been successfully set\n";
116    }
117	return $r;
118}
119
120function get_edit_attr ($conn) {
121	$sel_stmt = "select sys_context('USERENV', 'CURRENT_EDITION_NAME') from dual";
122    $s2 = oci_parse($conn,$sel_stmt);
123    oci_execute($s2,OCI_DEFAULT);
124    while (oci_fetch($s2)) {
125        echo "The value of current EDITION is ".oci_result($s2,1)."\n";
126    }
127}
128
129function get_sys_attr($conn,$attr)
130{
131	$sel_stmt="select " .$attr. " from v\$session where sid =
132	(select sid from v\$session where audsid = sys_context('userenv','sessionid')) order by 1";
133    $s2 = oci_parse($conn,$sel_stmt);
134    oci_execute($s2,OCI_DEFAULT);
135    while (oci_fetch($s2)) {
136        echo "The value of ".$attr ." is ".oci_result($s2,1)."\n";
137    }
138}
139
140function clean_up($c) {
141	$stmtarray = array(
142        "drop user testuser cascade",
143        "drop edition myedition1",
144        "drop edition myedition",
145	);
146
147	foreach ($stmtarray as $stmt) {
148        $s = oci_parse($c, $stmt);
149        @oci_execute($s);
150	}
151}
152