selfjoin and object type causes SIGSEGV

87 views
Skip to first unread message

Oleg Paraschenko

unread,
Jun 24, 2003, 1:51:21 AM6/24/03
to
Hello all,

I'm trying to use Oracle Object-Oriented (OO) features, and stopped
on very first steps. Basic functionality not works for me, and it
looks like fault of Oracle.

I created simple object: wrapper of integer value. Member function
of this object returns this value. I constructed query to return pairs
of unwrapped integers. But Oracle dies with SIGSEGV instead of
compiling query.

Sample code is below. Bug is reproduced on 9.2.0.3 on:
Linux oracle1 2.4.18-24.7.xsmp #1 SMP Fri Jan 31 06:10:55 EST 2003
i686 unknown
SunOS fox 5.8 Generic_108528-13 sun4u sparc SUNW,UltraAX-i2

My questions:

* Can you reproduce this bug?
* Are some patch exists to fix it?
* Have you suggestions to workaround? Dynamic SQL works, but I wish to
avoid it.
* Are OO in Oracle works at all?

Regards, Oleg Paraschenko

Sample code:

--
-- Simple object: wrapper of integer value
--
create or replace type t_foo as object (
foo integer,
member function getFoo return integer
);
/

create or replace type body t_foo as
member function getFoo return integer
is begin
return self.foo;
end;
end;
/

--
-- Prepare tables
--
create table bar_pairs (
bar_id_1 integer,
bar_id_2 integer
);

create table bar_items (
bar_id integer,
bar_foo t_foo
);

--
-- Produce error
--
variable c refcursor
begin
open :c for select
bi1.bar_foo.getFoo() foo1,
bi2.bar_foo.getFoo() foo2
from bar_pairs bp
inner join bar_items bi1 on bp.bar_id_1 = bi1.bar_id
inner join bar_items bi2 on bp.bar_id_2 = bi2.bar_id;
end;
/

Here I get:
ORA-03113: end-of-file on communication channel
for client and something like
Exception signal: 11 (SIGSEGV), code: 1 (Address not mapped to
object), addr: 0x78, PC: [0x874a3e9, kokscfac()+479]
in trace file.

--
-- Cleanup
--
drop table bar_items;
drop table bar_pairs;
drop type t_foo;

Oleg Paraschenko

unread,
Jun 26, 2003, 3:18:32 AM6/26/03
to
Hello all,

In OTN forum (http://www.oracle.com/forums/thread.jsp?forum=68&thread=186463)
Barbara Boehmer suggested me to rewrite join to use non-ANSI syntax:

variable c refcursor
begin
open :c for
select bi1.bar_foo.getFoo() foo1,
bi2.bar_foo.getFoo() foo2

from bar_pairs bp, bar_items bi1, bar_items bi2
where bp.bar_id_1 = bi1.bar_id
and bp.bar_id_2 = bi2.bar_id;
end;
/

Oracle now works.

But if someone wish to make Oracle better, please submit problem to
Oracle support team. I do not have metalink access.

Regards, Oleg

Sybrand Bakker

unread,
Jun 26, 2003, 4:38:45 PM6/26/03
to
On 26 Jun 2003 00:18:32 -0700, use...@sein.sportwetten.spb.ru (Oleg
Paraschenko) wrote:


The above syntax definitely IS ANSI-syntax.
Why would we submit TARs on your behalf. We would need to stay in
touch with you to address feedback from Oracle. Don't you think this
falls outside the scope of a volunteer group, and the user helping you
out is just giving away money?


Sybrand Bakker, Senior Oracle DBA

To reply remove -verwijderdit from my e-mail address

Oleg Paraschenko

unread,
Jun 27, 2003, 12:35:19 AM6/27/03
to
Hello Sybrand,

Sybrand Bakker <gooid...@sybrandb.demon.nl> wrote in message news:<0bmmfvo629amkkf8h...@4ax.com>...

...


> The above syntax definitely IS ANSI-syntax.

Thank you for remark, I will take into account.

> Why would we submit TARs on your behalf. We would need to stay in
> touch with you to address feedback from Oracle. Don't you think this
> falls outside the scope of a volunteer group, and the user helping you
> out is just giving away money?

Let me explain. I do not need anymore assistance with this problem.
All is working now, and I can forget about it. But bother troubles me.
It is bad that software contains bug, more, this bug looks for me
important enough: basic code not works. In open-source world I can
submit a bug or patch. But with this bug I cannot do it (or am I
wrong?) and the only thing I can do is to notify other developers. If
nobody else bothers about it, let it be so.

Regards, Oleg

Reply all
Reply to author
Forward
0 new messages