summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Jones <christopher.jones@oracle.com>2018-12-09 12:16:47 +1100
committerChristopher Jones <christopher.jones@oracle.com>2018-12-09 12:16:47 +1100
commit4246702406cb2dbbdb66bd84985ebfc72976569f (patch)
tree4fefbbc17dac84fe510d5f8fcbfabb5b2fb0c0f6
parent465c149cd3ba61e13817621931f2af748fe19d28 (diff)
downloadphp-git-4246702406cb2dbbdb66bd84985ebfc72976569f.tar.gz
Enable Oracle Database DBOP tracing attribute
-rw-r--r--ext/oci8/oci8.c6
-rw-r--r--ext/oci8/oci8_interface.c5
-rw-r--r--ext/oci8/package.xml1
-rw-r--r--ext/oci8/tests/db_op_1.phpt6
-rw-r--r--ext/oci8/tests/db_op_2.phpt33
5 files changed, 26 insertions, 25 deletions
diff --git a/ext/oci8/oci8.c b/ext/oci8/oci8.c
index a90eca41fe..8f3ce207fc 100644
--- a/ext/oci8/oci8.c
+++ b/ext/oci8/oci8.c
@@ -423,12 +423,10 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_oci_set_client_info, 0, 0, 2)
ZEND_ARG_INFO(0, client_information)
ZEND_END_ARG_INFO()
-#ifdef WAITIING_ORACLE_BUG_16695981_FIX
ZEND_BEGIN_ARG_INFO_EX(arginfo_oci_set_db_operation, 0, 0, 2)
ZEND_ARG_INFO(0, connection_resource)
ZEND_ARG_INFO(0, action)
ZEND_END_ARG_INFO()
-#endif
ZEND_BEGIN_ARG_INFO_EX(arginfo_oci_password_change, 0, 0, 4)
ZEND_ARG_INFO(0, connection_resource_or_connection_string)
@@ -672,9 +670,7 @@ PHP_FUNCTION(oci_statement_type);
PHP_FUNCTION(oci_num_rows);
PHP_FUNCTION(oci_set_prefetch);
PHP_FUNCTION(oci_set_client_identifier);
-#ifdef WAITIING_ORACLE_BUG_16695981_FIX
PHP_FUNCTION(oci_set_db_operation);
-#endif
PHP_FUNCTION(oci_set_edition);
PHP_FUNCTION(oci_set_module_name);
PHP_FUNCTION(oci_set_action);
@@ -777,9 +773,7 @@ static const zend_function_entry php_oci_functions[] = {
PHP_FE(oci_new_descriptor, arginfo_oci_new_descriptor)
PHP_FE(oci_set_prefetch, arginfo_oci_set_prefetch)
PHP_FE(oci_set_client_identifier, arginfo_oci_set_client_identifier)
-#ifdef WAITIING_ORACLE_BUG_16695981_FIX
PHP_FE(oci_set_db_operation, arginfo_oci_set_db_operation)
-#endif
PHP_FE(oci_set_edition, arginfo_oci_set_edition)
PHP_FE(oci_set_module_name, arginfo_oci_set_module_name)
PHP_FE(oci_set_action, arginfo_oci_set_action)
diff --git a/ext/oci8/oci8_interface.c b/ext/oci8/oci8_interface.c
index 87a9838c24..77e264d996 100644
--- a/ext/oci8/oci8_interface.c
+++ b/ext/oci8/oci8_interface.c
@@ -2027,9 +2027,9 @@ PHP_FUNCTION(oci_set_client_info)
}
/* }}} */
-#ifdef WAITIING_ORACLE_BUG_16695981_FIX
/* {{{ proto bool oci_set_db_operation(resource connection, string value)
- Sets the "DB operation" on the connection for Oracle end-to-end tracing */
+ Sets the "DB operation" on the connection for Oracle end-to-end tracing.
+ For history, see Oracle bug 16695981 */
PHP_FUNCTION(oci_set_db_operation)
{
#if (OCI_MAJOR_VERSION > 11)
@@ -2058,7 +2058,6 @@ PHP_FUNCTION(oci_set_db_operation)
#endif
}
/* }}} */
-#endif /* WAITIING_ORACLE_BUG_16695981_FIX */
/* {{{ proto bool oci_password_change(resource connection, string username, string old_password, string new_password)
Changes the password of an account */
diff --git a/ext/oci8/package.xml b/ext/oci8/package.xml
index fa2d15da4b..2541c264ec 100644
--- a/ext/oci8/package.xml
+++ b/ext/oci8/package.xml
@@ -67,6 +67,7 @@ Interoperability Support" (ID 207303.1) for details.
<notes>
This version is for PHP 7 only.
Fixed bug #76804 (oci_pconnect with OCI_CRED_EXT not working). (KoenigsKind)
+Support setting Oracle Database 'DBOP' end-to-end-tracing attribute. (Requires Oracle 12.2 or later)
Fixed installation on 7.3.
Internal change: Convert some parameter parsing to the Fast Parameter Parsing API.
</notes>
diff --git a/ext/oci8/tests/db_op_1.phpt b/ext/oci8/tests/db_op_1.phpt
index b3dc1ef087..b10ee9a984 100644
--- a/ext/oci8/tests/db_op_1.phpt
+++ b/ext/oci8/tests/db_op_1.phpt
@@ -16,10 +16,6 @@ preg_match('/^[[:digit:]]+/', oci_client_version(), $matches);
if (!(isset($matches[0]) && $matches[0] >= 12)) {
die("skip works only with Oracle 12c or greater version of Oracle client libraries");
}
-if (!function_exists('oci_set_db_operation'))
-{
- die("skip function oci_set_db_operation() does not exist");
-}
?>
--FILE--
<?php
@@ -40,7 +36,7 @@ function dq($c, $q)
}
oci_set_db_operation($c, "db_op_1");
-dq($c, 'select * from dual');
+dq($c, 'select /*+ MONITOR */ * from dual');
dq($c, 'select dbop_name from v$sql_monitor where dbop_name is not null order by dbop_exec_id desc');
diff --git a/ext/oci8/tests/db_op_2.phpt b/ext/oci8/tests/db_op_2.phpt
index a35e20fcc3..30709c9e36 100644
--- a/ext/oci8/tests/db_op_2.phpt
+++ b/ext/oci8/tests/db_op_2.phpt
@@ -1,5 +1,5 @@
--TEST--
-oci_set_db_operation: basic test for end-to-end tracing
+oci_set_db_operation: test DBOP for end-to-end tracing
--SKIPIF--
<?php
if (!extension_loaded('oci8')) die ("skip no oci8 extension");
@@ -35,34 +35,45 @@ function dq($c, $q)
echo "Test 1\n";
oci_set_db_operation($c, "db_op_2_a");
-dq($c, 'select * from dual');
+dq($c, 'select /*+ MONITOR */ * from dual');
-echo "Test 2\n";
oci_set_db_operation($c, "db_op_2_b");
-dq($c, 'select * from dual');
+dq($c, 'select /*+ MONITOR */ * from dual');
+
+dq($c, 'select dbop_name from v$sql_monitor where dbop_name like \'db_op_2%\' order by dbop_exec_id desc');
+
+echo "Test 2\n";
+oci_set_db_operation($c, "");
+dq($c, 'select /*+ MONITOR */ \'dboptest\' from dual');
-echo "Test 3\n";
-dq($c, 'select dbop_name from v$sql_monitor where dbop_name like \'db_op2%\' order by dbop_exec_id desc');
+dq($c, 'select sql_text, dbop_name from v$sql_monitor where sql_text like \'%dboptest2%\' order by dbop_exec_id desc');
?>
===DONE===
<?php exit(0); ?>
---XFAIL--
-Fails due to Oracle Bug 16695981
--EXPECT--
Test 1
array(1) {
["DUMMY"]=>
string(1) "X"
}
-Test 2
array(1) {
["DUMMY"]=>
string(1) "X"
}
-Test 3
+array(1) {
+ ["DBOP_NAME"]=>
+ string(9) "db_op_2_b"
+}
+Test 2
+array(1) {
+ ["'DBOPTEST'"]=>
+ string(8) "dboptest"
+}
array(2) {
+ ["SQL_TEXT"]=>
+ string(121) "select /*+ MONITOR */ sql_text, dbop_name from v$sql_monitor where sql_text like '%dboptest2%' order by dbop_exec_id desc"
["DBOP_NAME"]=>
- string(7) "db_op_2a"
+ NULL
}
===DONE===