diff options
author | Christopher Jones <christopher.jones@oracle.com> | 2018-12-09 12:16:47 +1100 |
---|---|---|
committer | Christopher Jones <christopher.jones@oracle.com> | 2018-12-09 12:16:47 +1100 |
commit | 4246702406cb2dbbdb66bd84985ebfc72976569f (patch) | |
tree | 4fefbbc17dac84fe510d5f8fcbfabb5b2fb0c0f6 | |
parent | 465c149cd3ba61e13817621931f2af748fe19d28 (diff) | |
download | php-git-4246702406cb2dbbdb66bd84985ebfc72976569f.tar.gz |
Enable Oracle Database DBOP tracing attribute
-rw-r--r-- | ext/oci8/oci8.c | 6 | ||||
-rw-r--r-- | ext/oci8/oci8_interface.c | 5 | ||||
-rw-r--r-- | ext/oci8/package.xml | 1 | ||||
-rw-r--r-- | ext/oci8/tests/db_op_1.phpt | 6 | ||||
-rw-r--r-- | ext/oci8/tests/db_op_2.phpt | 33 |
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=== |