DBD::Oracle - Problem with LOB's (regression ?)



I've just noticed an apparent regression/change_of_behaviour that
affects me.

We do a good deal of our DB access accessing tables via private
synonyms. That is, we connect via schema_X which has a private synonym
(lob_table) to schema_Y.lob_table.

On our 'current' machines which have DBD::Oracle ver 1.15, everything
works fine.

On our 'new' machines which have DBD::Oracle ver 1.21, if I attempt to
insert/update a lob column, connecting as schema_X, I get an error 942 -
table or view does not exist.

It would seem the error is not being caused by the insert/update, but
something DBD::Oracle is doing afterwards. Here is a snippet from the
trace ...

:
DBI 1.605-ithread default trace level set to 0x0/2 (pid 26352) at
sb3.plx line 79 via sb3.plx line 124
-> prepare for DBD::Oracle::db (DBI::db=HASH(0x8e59c0c)~0x8e59738 '
insert
into sb1 (id, text_b)
values (100, :txt)
') thr#8153008
dbd_preparse scanned 1 distinct placeholders
<- prepare= DBI::st=HASH(0x8edbeb4) at sb3.plx line 80
-> bind_param for DBD::Oracle::st (DBI::st=HASH(0x8edbeb4)~0x8bef8c0
':txt' '....���A..zip-usa.csv.Խ�.�:.�{�..��...' (type 0, attribs:
HASH(0x8153c28))
<- bind_param= 1 at sb3.plx line 85
-> execute for DBD::Oracle::st (DBI::st=HASH(0x8edbeb4)~0x8bef8c0)
thr#8153008
dbd_st_execute INSERT (out0, lob1)...
Statement Execute Mode is 0
dbd_st_execute INSERT returned (SUCCESS, rpc1, fn3, out0)
!! ERROR: '942' 'ORA-00942: table or view does not exist (DBD ERROR:
OCIStmtExecute/LOB refetch)' (err#1)
<- execute= undef at sb3.plx line 87
-> HandleError on DBI::st=HASH(0x8bef8c0) via CODE(0x8ed5ff4)
(undef)
:

If I either connect as schema_Y (which owns the table), or qualify the
table name with the schema name (e.g. schema_y.sb1), the error does not
occur.

If I wrap the insert/update with a BEGIN .. END; (i.e. turn it into an
anonymous pl/sql block), it works ok, but I'd rather not have to go
through all our code and do this.

Is this a regression, or intended new behaviour?

Thanks,

Steve



******************************************************************
This email is intended solely for the use of the addressee and may
contain information that is confidential, proprietary, or both.
If you receive this email in error please immediately notify the
sender and delete the email.
******************************************************************

.



Relevant Pages

  • newbie having SQL trouble
    ... I'm building a data entry windows form that requires the data to be ... INSERT/UPDATE statments to a SQL Server table (the table's name is ... private System.Windows.Forms.TextBox txtFamilyName; ...
    (microsoft.public.dotnet.vjsharp)
  • Re: [Info-Ingres] Dropping and creating views
    ... Not certain how 'private' they can be, but might synonyms be an alternative? ... It doesn't mesh well with today's O/R mapping tools. ... the user is connected to the database using her ...
    (comp.databases.ingres)