1--TEST-- 2Set and get of connection attributes across persistent connections and sysdba connection. 3--EXTENSIONS-- 4oci8 5--SKIPIF-- 6<?php 7if (getenv('SKIP_REPEAT')) die('skip fails with repeat'); 8$target_dbs = array('oracledb' => true, 'timesten' => false); // test runs on these DBs 9require(__DIR__.'/skipif.inc'); 10 11if (strcasecmp($user, "system") && strcasecmp($user, "sys")) die("skip needs to be run as a DBA user"); 12if ($test_drcp) die("skip output might vary with DRCP"); 13 14preg_match('/.*Release ([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)*/', oci_server_version($c), $matches); 15if (!(isset($matches[0]) && $matches[1] >= 10)) { 16 die("skip expected output only valid when using Oracle 10g or greater database server"); 17} 18?> 19--INI-- 20oci8.privileged_connect = On 21--FILE-- 22<?php 23 24$testuser = 'testuser_attr_2'; // Used in conn_attr.inc 25$testpassword = 'testuser'; 26 27require(__DIR__."/conn_attr.inc"); 28 29$attr_array = array('MODULE','ACTION','CLIENT_INFO','CLIENT_IDENTIFIER'); 30 31echo"**Set values using pconnect-1**\n"; 32 33var_dump($pc1 = oci_pconnect($testuser,$testpassword,$dbase)); 34foreach($attr_array as $attr) { 35 set_attr($pc1,$attr,100); 36} 37 38// using pc1 again 39echo"\n**Get values using pconnect-2**\n"; 40var_dump($pc3 = oci_pconnect($testuser,$testpassword,$dbase)); 41foreach($attr_array as $attr) { 42 get_attr($pc3,$attr); 43} 44 45// Get with different pconnect 46echo"\n**Get values using pconnect-3**\n"; 47var_dump($pc2 = oci_pconnect($testuser,$testpassword,$dbase,'UTF8')); 48foreach($attr_array as $attr) { 49 get_attr($pc2,$attr); 50} 51 52oci_close($pc1); 53oci_close($pc2); 54oci_close($pc3); 55 56// Re-open a persistent connection and check for the attr values. 57echo "\n**Re-open a pconnect()**\n"; 58var_dump($pc4 = oci_pconnect($testuser,$testpassword,$dbase)); 59foreach($attr_array as $attr) { 60 get_attr($pc4,$attr); 61} 62oci_close($pc4); 63 64// Test with SYSDBA connection. 65echo "\n**Test with SYSDBA connection**\n"; 66$sys_c1 = @oci_pconnect($testuser,$testpassword,$dbase,false,OCI_SYSDBA); 67var_dump($sys_c1); 68if (!$sys_c1) { 69 $e = oci_error(); 70 if ($e['code'] != 1031 && $e['code'] != 1017) { 71 var_dump($e); 72 } 73} else { 74 set_attr($sys_c1,'ACTION',10); 75 get_sys_attr($sys_c1,'ACTION'); 76 get_attr($sys_c1,'ACTION'); 77 oci_close($sys_c1); 78} 79 80clean_up($c); 81 82echo "Done\n"; 83?> 84--EXPECTF-- 85**Set values using pconnect-1** 86resource(%d) of type (oci8 persistent connection) 87Value of MODULE has been set successfully 88Value of ACTION has been set successfully 89Value of CLIENT_INFO has been set successfully 90Value of CLIENT_IDENTIFIER has been set successfully 91 92**Get values using pconnect-2** 93resource(%d) of type (oci8 persistent connection) 94The value of MODULE is PHP TEST100 95The value of ACTION is TASK100 96The value of CLIENT_INFO is INFO1100 97The value of CLIENT_IDENTIFIER is ID00100 98 99**Get values using pconnect-3** 100resource(%d) of type (oci8 persistent connection) 101The value of MODULE is %s 102The value of ACTION is 103The value of CLIENT_INFO is 104The value of CLIENT_IDENTIFIER is 105 106**Re-open a pconnect()** 107resource(%d) of type (oci8 persistent connection) 108The value of MODULE is PHP TEST100 109The value of ACTION is TASK100 110The value of CLIENT_INFO is INFO1100 111The value of CLIENT_IDENTIFIER is ID00100 112 113**Test with SYSDBA connection** 114bool(false) 115Done 116