This behaviour  is also inconsistent with versions of  Oracle 11.  Some
patch sets show it other do not.I will have an answer for if later today

Did you try it with the full 11 client.

Cheers
John

On Fri, Jan 21, 2011 at 6:02 AM, Martin J. Evans
<martin.ev...@easysoft.com>wrote:

> On 20/01/11 09:55, Tim Bunce wrote:
>
> > I wonder if we could run an older DBD::Oracle against an Oracle 9 (say)
> > database to recreate the (presumably) original behaviour.
>
> I kept my Oracle 11.1.0.6.0 database and tried various combinations of
> DBD::Oracle (back to 1.19) and instant clients - non work as documented.
>
> I then tried instant client 10.2.0.5.0 to an oracle database 10.2.0.5.0
> (with DBD::Oracle 1.19) and it works:
>
> DB Version: 10.2.0.1.0
> ********** do_it **********
> AutoCommit = 1
> execute_array = undef
> total affected rows = undef
> Error from execute_array - errstr=ORA-24381: error(s) in array DML (DBD
> SUCCESS_WITH_INFO: OCIStmtExecute), err=0, state=''
> $tuple_status = [
>                  -1,
>                  [
>                     1,
>                    'ORA-00001: unique constraint (SYSTEM.SYS_C005544)
> violated (DBD SUCCESS_WITH_INFO)'
>                   ],
>                  -1,
>                  -1
>                ];
>
> Error captured in handler: undef
> Warning captured in SIGWARN handler: undef
> $select * from mytest = [
>                          [
>                            '1',
>                            'onetwothree         '
>                          ],
>                          [
>                            '51',
>                            'fiftyone            '
>                          ],
>                          [
>                            '52',
>                            'fiftythree          '
>                          ],
>                          [
>                            '53',
>                            'one                 '
>                          ]
>                        ];
>
> Notice, the successful rows are committed and the unsuccessful row is not.
>
> After trying various other combinations it seems any version of instant
> client or DBD::Oracle works so long as Oracle database is less than 11. I
> cannot say as yet if it is a bug in Oracle or some change DBD::Oracle didn't
> follow.
>
> So it would appear DBD::Oracle/Oracle has always issued a warning and not
> an error when a tuple fails. I think this is really dangerous if someone is
> relying on RaiseError so I've changed the DBD::Oracle we use internally to
> raise an error.
>
> Martin
> --
> Martin J. Evans
> Easysoft Limited
> http://www.easysoft.com
>

--
The best compliment you could give Pythian for our service is a referral.

Reply via email to