I opted for the /*+ CHOOSE */ hint - seems the most
sensible approach to me.
Please note, I made the diff against my Oracle.166_01,
which contains statistics_info from RT #88135.
If you dont't include statistics_info, simply drop
the last hunk from the patch.
--- Oracle.166_01 Mon Aug 26 10:57:59 2013
+++ Oracle.pm Tue Oct 29 15:31:45 2013
@@ -470,7 +470,7 @@
SELECT *
FROM
(
- SELECT /*+ RULE*/
+ SELECT /*+ CHOOSE */
NULL TABLE_CAT
, t.OWNER TABLE_SCHEM
, t.TABLE_NAME TABLE_NAME
@@ -524,7 +524,7 @@
SELECT *
FROM
(
- SELECT /*+ RULE*/
+ SELECT /*+ CHOOSE */
NULL TABLE_CAT
, c.OWNER TABLE_SCHEM
, c.TABLE_NAME TABLE_NAME
@@ -557,7 +557,7 @@
SELECT *
FROM
(
- SELECT /*+ RULE*/
+ SELECT /*+ CHOOSE */
to_char( NULL ) UK_TABLE_CAT
, uk.OWNER UK_TABLE_SCHEM
, uk.TABLE_NAME UK_TABLE_NAME
@@ -626,7 +626,7 @@
SELECT *
FROM
(
- SELECT /*+ RULE*/
+ SELECT /*+ CHOOSE */
to_char( NULL ) TABLE_CAT
, tc.OWNER TABLE_SCHEM
, tc.TABLE_NAME TABLE_NAME
@@ -794,7 +794,8 @@
SELECT *
FROM
(
- SELECT NULL TABLE_CAT
+ SELECT /*+ CHOOSE */
+ NULL TABLE_CAT
, t.OWNER TABLE_SCHEM
, t.TABLE_NAME TABLE_NAME
, to_number( NULL ) NON_UNIQUE