php-src/ext/oci8/tests/conn_attr.inc
2018-09-24 13:27:27 +10:00

150 lines
4.6 KiB
PHP

<?php
require(dirname(__FILE__)."/connect.inc");
preg_match('/.*Release ([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)*/', oci_server_version($c), $matches);
if ((isset($matches[1]) && $matches[1] >= 11)) {
// Server is Oracle 11.2+
$stmtarray = array(
"drop user $testuser cascade",
"create user $testuser identified by $testpassword", // $testuser should be set by the file that includes conn_attr.inc
"grant connect,resource,dba to $testuser",
"alter user $testuser enable editions",
"drop edition myedition1 cascade",
"drop edition myedition cascade",
"grant create any edition to $testuser",
"create edition myedition",
"create edition myedition1 as child of myedition",
"grant use on edition myedition to $testuser",
"grant use on edition myedition1 to $testuser",
);
} else {
// Server is Pre 11.2
$stmtarray = array(
"drop user $testuser cascade",
"create user $testuser identified by $testpassword",
"grant connect,resource,dba to $testuser",
);
}
foreach ($stmtarray as $stmt) {
$s = oci_parse($c, $stmt);
$r = @oci_execute($s);
if (!$r) {
$m = oci_error($s);
if (!in_array($m['code'], array( // ignore expected errors
942 // table or view does not exist
, 1918 // user does not exist
, 2289 // sequence does not exist
, 4080 // trigger does not exist
, 38802 // edition does not exist
))) {
echo "Error:" . $stmt . PHP_EOL . $m['message'] . PHP_EOL;
if ($m['code'] == 38807) {
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;
}
die;
}
}
}
function get_attr($conn,$attr)
{
$sel_stmt="select " .$attr. " from v\$session where sid =
(select sid from v\$session where audsid =
sys_context('userenv','sessionid')) order by 1";
$s2 = oci_parse($conn,$sel_stmt);
oci_execute($s2,OCI_DEFAULT);
while (oci_fetch($s2)) {
echo "The value of ".$attr ." is ".oci_result($s2,1)."\n";
}
}
/* Pass $conn_type=1 for a connection with oci_connect()
Pass $conn_type=2 for ooci_pconnect
Default will give a oci_new_connect */
function get_conn($conn_type)
{
$user = $GLOBALS['testuser'];
$password = $GLOBALS['testpassword'];
$dbase = $GLOBALS['dbase'];
switch($conn_type) {
case 1:
echo "Testing with oci_connect()\n";
return(oci_connect($user,$password,$dbase));
break;
case 2:
echo "Testing with oci_pconnect()\n";
return(oci_pconnect($user,$password,$dbase));
break;
default:
echo "Testing with oci_new_connect()\n";
return(oci_new_connect($user,$password,$dbase));
break;
}
}
function set_attr($conn,$attr,$sufix)
{
if (!strcmp($attr,'MODULE'))
$r = oci_set_module_name($conn,'PHP TEST'.$sufix);
else if (!strcmp($attr,'ACTION'))
$r = oci_set_action($conn,'TASK'.$sufix);
else if (!strcmp($attr,'CLIENT_INFO'))
$r = oci_set_client_info($conn,'INFO1'.$sufix);
else if (!strcmp($attr,'CLIENT_IDENTIFIER'))
$r = oci_set_client_identifier($conn,'ID00'.$sufix);
else
echo "Pass one of the above four attributes!!!\n";
if ($r) {
echo "Value of $attr has been set successfully\n";
}
//Do a round-trip here
oci_server_version($conn);
return $r;
}
function set_edit_attr($value)
{
$r = oci_set_edition($value);
if ($r) {
echo " The value of edition has been successfully set\n";
}
return $r;
}
function get_edit_attr ($conn) {
$sel_stmt = "select sys_context('USERENV', 'CURRENT_EDITION_NAME') from dual";
$s2 = oci_parse($conn,$sel_stmt);
oci_execute($s2,OCI_DEFAULT);
while (oci_fetch($s2)) {
echo "The value of current EDITION is ".oci_result($s2,1)."\n";
}
}
function get_sys_attr($conn,$attr)
{
$sel_stmt="select " .$attr. " from v\$session where sid =
(select sid from v\$session where audsid = sys_context('userenv','sessionid')) order by 1";
$s2 = oci_parse($conn,$sel_stmt);
oci_execute($s2,OCI_DEFAULT);
while (oci_fetch($s2)) {
echo "The value of ".$attr ." is ".oci_result($s2,1)."\n";
}
}
function clean_up($c) {
$stmtarray = array(
"drop edition myedition1 cascade",
"drop edition myedition cascade",
"drop user " . $GLOBALS['testuser'] . " cascade",
);
foreach ($stmtarray as $stmt) {
$s = oci_parse($c, $stmt);
@oci_execute($s);
}
}