]> granicus.if.org Git - php/commitdiff
Enable Oracle Database DBOP tracing attribute
authorChristopher Jones <christopher.jones@oracle.com>
Sun, 9 Dec 2018 01:16:47 +0000 (12:16 +1100)
committerChristopher Jones <christopher.jones@oracle.com>
Sun, 9 Dec 2018 01:16:47 +0000 (12:16 +1100)
ext/oci8/oci8.c
ext/oci8/oci8_interface.c
ext/oci8/package.xml
ext/oci8/tests/db_op_1.phpt
ext/oci8/tests/db_op_2.phpt

index a90eca41fec71bb24cef5a369fa9dafc961f0396..8f3ce207fc8bec924a74e50011bab68cb828b440 100644 (file)
@@ -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)
index 87a9838c243cfb205056f7e03b32605beaabf3d9..77e264d996a9df9eec88860d508c0c902a457ca6 100644 (file)
@@ -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 */
index fa2d15da4b86bf6d0098db01dd68380efde843da..2541c264ec897c66c1f9c2d39fb39714bf2ef39c 100644 (file)
@@ -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>
index b3dc1ef08726f3926831925aaa11f01b039346f6..b10ee9a984417bd4c74136bb47b65488da4e5425 100644 (file)
@@ -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');
 
index a35e20fcc34eaa424b4d151106dfd2a86f1afe20..30709c9e36b3fff0b010fc56f8d939c144e93b25 100644 (file)
@@ -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===