Is it possible to report a bug in RDBMS Oracle? [message #209965] |
Mon, 18 December 2006 14:01 |
onetime128
Messages: 2 Registered: December 2006
|
Junior Member |
|
|
Hello to everyone.
By chance, I recently discovered a wrong results bug in Oracle (10.2), that has apparently been present at least since 9.2.
Now I wonder if there's any way to actually report this bug to Oracle.
In order to use Metalink, one needs to have purchased support. I certainly have none of that, I am an external developer for a company. So it would seem to me that I would have to go through the bureaucratic process of actually identifying my employer's technical contacts for support and forcing them to open a TAR.
The bug, although easily reproducible with a very simple query, came up serendipitously during casual research and does not actually hinder our production environment in any way. Having had the experience with the local technical support and considering that it's only a theoretical issue with no actual problem to solve, I can say with a degree of confidence that I would be unable to push it through the bureaucracy (at least not without extreme effort).
So now I wonder if there's actually any reasonable way to report this bug to Oracle. Unless I have missed something, it seems to me that it is impossible. Is that true, or have I overlooked some way out?
|
|
|
|
|
Re: Is it possible to report a bug in RDBMS Oracle? [message #210416 is a reply to message #210073] |
Wed, 20 December 2006 13:39 |
onetime128
Messages: 2 Registered: December 2006
|
Junior Member |
|
|
Of course I can.
select * from
(select nvl(b,1)as c from (select 1 as a from dual),(select 2 as b from dual) where a=b(+)) x
full outer join
(select 1 as c from dual) y
on x.c=y.c
This will return 2 rows instead of 1 as it should. The second returned row is erroneous.
The reason for this is that internally, full outer join is executed as a union-all of a left outer join and an anti-join. Oracle goofs up during the anti-join part, forgetting the (+) on the left-side of the full outer join and executing an inner join instead of an outer join, thus producing the erroneous row. (You can see this in the execution plan).
That also explains why you will get a correct result if you swap the order of the X and Y queries, replace the full outer join with a union of left- and right- outer joins, or rewrite the left-side into ANSI style.
|
|
|