At a first look it most likely is my new

ora_ncs_buff_mtpl /ORA_DBD_NCS_BUFFER  might be the source of the problem

byt default it is 1 which may be too small.

Can you set the ORA_DBD_NCS_BUFFER to 2 then 3 and 4 to see if it cleans up the problem

My guess is that 1 is too small and I might have to make it 2 to cover more bases.

cheers

John Scoles

Martin Evans wrote:
John Scoles wrote:
Thank Charles that is really good stuff

I have not investigated the

NLS_LANG=.WE8ISO8859P1, but the tests 30long.t and 31lob_extended.t
 still fail badly if NLS_LANG=.AL32UTF8.

bug yet as my local test box is just US7ASCII.

BTW can you tell me what the '

NLS_CHARACTERSET and

NLS_NCHAR_CHARACTERSET

setting of your  Oralcle DB you are testing on


I will have to do that later today or tonight as I have to install a
different version or Oracle to get that to fail (I hope)

If you can set $dbh->{dbd_verbose}=15 just before the test start to fail in

30long.t and 31lob_extended.t

and send me the results I will have something more to go on.


Look for another  RC in the next day or two.

Cheers

Jardine wrote:
On 14/01/10 12:19, Charles Jardine wrote:
On 12/01/10 12:07, John Scoles wrote:
Ok third time is a Charm

The Third RC of the beer edition of DBD::Oracle 1.24 can be found at


http://svn.perl.org/modules/dbd-oracle/trunk/DBD-Oracle-1.24-RC3.tar


This round has a few little patches from Martin Evans on it.


Please test and enjoy
My environment is Linux x86-64, Perl 5.10.1 (64 bit), DBI 1.609,
Oracle 10.2.0.4.2 (64 bit). Database charset UTF8, national
charset AL16UTF16

Three things:
[snip]

3. Here is a patch which removes the remaining warnings detected by
  gcc in 64-bit mode.
[snip]

I realise that something has wrapped the very long lines in the patch,
so I am trying again, sending the patch as an attachment.

For me tests 40long.t and 30lob_extended.t also fail when $NLS_LANG is
AMERICAN_AMERICA.AL32UTF8. The values of NLS_CHARACTERSET and
NLS_NCHAR_CHARACTERSET in my database are:

AL32UTF8 and
UTF8

as the test output below shows.

The errors I get are:

prove -vb t/30long.t
t/30long.t ..
1..479
# ora_server_version: 11 1 0 6 0
# Database 11.1.0.6.0 CHAR set is AL32UTF8 (Unicode), NCHAR set is UTF8
(Unicode)
# Client 11.1.0.6 NLS_LANG is 'AMERICAN_AMERICA.AL32UTF8', NLS_NCHAR is
'<unset>'
#
#
=========================================================================
#     Running long test for LONG (0) use_utf8_data=0
# create table dbd_ora__drop_me ( idx integer, lng LONG,  dt date )
# long_data[0] length 10240
# long_data[1] length 81920
# long_data[2] length 71680
#  --- insert some LONG data (ora_type 0)
ok 1 - prepare: insert into dbd_ora__drop_me values (?, ?, SYSDATE)
ok 2 - insert long data 40
ok 3 - insert long data 41
ok 4 - insert long data 42
ok 5 - insert long data undef 43
#  --- fetch LONG data back again -- truncated - LongTruncOk == 1
# LongReadLen 20, LongTruncOk 1
ok 6 - prepare: select * from dbd_ora__drop_me order by idx
ok 7 - execute: select * from dbd_ora__drop_me order by idx
ok 8 - fetch_arrayref for select * from dbd_ora__drop_me order by idx
ok 9 - four rows
ok 10 - byte_string test of truncated to LongReadLen 20
ok 11 - nice_string test of truncated to LongReadLen 20
ok 12 - LONG UTF8 setting
ok 13 - byte_string test of truncated to LongReadLen 20
ok 14 - nice_string test of truncated to LongReadLen 20
ok 15 - LONG UTF8 setting
ok 16 - byte_string test of truncated to LongReadLen 20
ok 17 - nice_string test of truncated to LongReadLen 20
ok 18 - LONG UTF8 setting
ok 19 - last row undefined
ok 20 - prepare select * from dbd_ora__drop_me order by idx
#  --- fetch LONG data back again -- truncated - LongTruncOk == 0
# LongReadLen 81910, LongTruncOk
ok 21 - execute select * from dbd_ora__drop_me order by idx
ok 22 - fetchrow_arrayref select * from dbd_ora__drop_me order by idx
ok 23 - length tmp->[1] 10240
ok 24 - truncation error not triggered (LongReadLen 81910, data 10240)
ok 25 - tmp==1406 || tmp==24345 tmp actually=24345
#  --- fetch LONG data back again -- complete - LongTruncOk == 0
# LongReadLen 82920, LongTruncOk
ok 26 - prepare: select * from dbd_ora__drop_me order by idx
ok 27 - execute select * from dbd_ora__drop_me order by idx
ok 28 - fetchrow_arrayref select * from dbd_ora__drop_me order by idx
ok 29 - Strings are identical, Len 10240
ok 30 - fetchrow_arrayref select * from dbd_ora__drop_me order by idx
ok 31 - Strings are identical, Len 10240
ok 32 - fetchrow_arrayref select * from dbd_ora__drop_me order by idx
ok 33 - Strings are identical, Len 10240
ok 34 # skip blob_read tests for LONGs - not currently supported
<snipped - all the same>
ok 94 # skip ora_auto_lob tests for LONGs - not supported
#
#
=========================================================================
#     Running long test for LONG RAW (24) use_utf8_data=0
ok 95 - prepare: insert into dbd_ora__drop_me values (?, ?, SYSDATE)
# create table dbd_ora__drop_me ( idx integer, lng LONG RAW,  dt date )
# long_data[0] length 20480
# long_data[1] length 81920
# long_data[2] length 71680
#  --- insert some LONG RAW data (ora_type 24)
ok 96 - insert long data 40
ok 97 - insert long data 41
ok 98 - insert long data 42
ok 99 - insert long data undef 43
#  --- fetch LONG RAW data back again -- truncated - LongTruncOk == 1
# LongReadLen 20, LongTruncOk 1
ok 100 - prepare: select * from dbd_ora__drop_me order by idx
ok 101 - execute: select * from dbd_ora__drop_me order by idx
ok 102 - fetch_arrayref for select * from dbd_ora__drop_me order by idx
ok 103 - four rows
ok 104 - byte_string test of truncated to LongReadLen 40
ok 105 - nice_string test of truncated to LongReadLen 40
ok 106 - LONG RAW UTF8 setting
ok 107 - byte_string test of truncated to LongReadLen 40
ok 108 - nice_string test of truncated to LongReadLen 40
ok 109 - LONG RAW UTF8 setting
ok 110 - byte_string test of truncated to LongReadLen 40
ok 111 - nice_string test of truncated to LongReadLen 40
ok 112 - LONG RAW UTF8 setting
ok 113 - last row undefined
ok 114 - prepare select * from dbd_ora__drop_me order by idx
#  --- fetch LONG RAW data back again -- truncated - LongTruncOk == 0
# LongReadLen 40955, LongTruncOk
ok 115 - execute select * from dbd_ora__drop_me order by idx
ok 116 - fetchrow_arrayref select * from dbd_ora__drop_me order by idx
ok 117 - length tmp->[1] 20480
ok 118 - truncation error not triggered (LongReadLen 40955, data 20480)
ok 119 - tmp==1406 || tmp==24345 tmp actually=24345
#  --- fetch LONG RAW data back again -- complete - LongTruncOk == 0
# LongReadLen 82920, LongTruncOk
ok 120 - prepare: select * from dbd_ora__drop_me order by idx
ok 121 - execute select * from dbd_ora__drop_me order by idx
ok 122 - fetchrow_arrayref select * from dbd_ora__drop_me order by idx
ok 123 - Strings are identical, Len 20480
ok 124 - fetchrow_arrayref select * from dbd_ora__drop_me order by idx
ok 125 - Strings are identical, Len 81920
ok 126 - fetchrow_arrayref select * from dbd_ora__drop_me order by idx
ok 127 - Strings are identical, Len 71680
ok 128 # skip blob_read tests for LONGs - not currently supported
<snipped all the same>
ok 188 # skip ora_auto_lob tests for LONG RAWs - not supported
#
#
=========================================================================
#     Running long test for NCLOB (112) use_utf8_data=1
# create table dbd_ora__drop_me ( idx integer, lng NCLOB,  dt date )
# long_data[0] length 10240
ok 189 - prepare: insert into dbd_ora__drop_me values (?, ?, SYSDATE)
# long_data[1] length 81920
# long_data[2] length 71680
#  --- insert some NCLOB data (ora_type 112)
ok 190 - insert long data 40
ok 191 - insert long data 41
ok 192 - insert long data 42
ok 193 - insert long data undef 43
#  --- fetch NCLOB data back again -- truncated - LongTruncOk == 1
# LongReadLen 20, LongTruncOk 1
ok 194 - prepare: select * from dbd_ora__drop_me order by idx
ok 195 - execute: select * from dbd_ora__drop_me order by idx
DBD::Oracle has returned a NEED_DATA status when doing a LobRead!!
DBD::Oracle::db disconnect failed: ORA-03127: no new operations allowed
until the active operation ends (DBD ERROR: OCISessionEnd) at t/30long.t
line 68.
# Looks like you planned 479 tests but ran 195.
# Looks like your test exited with 255 just after 195.
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 284/479 subtests
        (less 122 skipped subtests: 73 okay)

Test Summary Report
-------------------
t/30long.t (Wstat: 65280 Tests: 195 Failed: 0)
  Non-zero exit status: 255
  Parse errors: Bad plan.  You planned 479 tests but ran 195.
Files=1, Tests=195,  0 wallclock secs ( 0.04 usr  0.00 sys +  0.12 cusr
 0.01 csys =  0.17 CPU)
Result: FAIL

It is similar with 31lob_extended.t but as it is a shorter test and it
is easier to segregate the failure I've concentrated on that. I
commented out the first section of bracketed tests in 31lob_extended.t
and left the remaining one which fails. The output is:

prove -vb t/31lob_extended.t
t/31lob_extended.t ..
1..31
ok 1 - created test table
# create table dbd_ora__drop_me ( idx integer, x clob,  dt date )
ok 2 - created test data
ok 3 - created test procedure
ok 4 - ora_auto_lobs not fetching prepare call proc
ok 5 - ora_auto_lobs not fetching - bind out cursor
ok 6 - ora_auto_lobs not fetching - execute to get out cursor
DBD::Oracle has returned a NEED_DATA status when doing a LobRead!!
procedure p_DBD_Oracle_drop_me possibly not dropped- check -
DBD::Oracle::db do failed: ORA-03127: no new operations allowed until
the active operation ends (DBD ERROR: OCIStmtExecute) [for Statement
"drop procedure p_DBD_Oracle_drop_me"] at t/31lob_extended.t line 175.

table dbd_ora__drop_me possibly not dropped - check - DBD::Oracle::db do
failed: ORA-03127: no new operations allowed until the active operation
ends (DBD ERROR: OCIStmtExecute) [for Statement " drop table
dbd_ora__drop_me "] at t/nchar_test_lib.pl line 204.

# Looks like you planned 31 tests but ran 6.
# Looks like your test exited with 255 just after 6.
DBD::Oracle::db DESTROY failed: ORA-03127: no new operations allowed
until the active operation ends (DBD ERROR: OCIStmtExecute)
ORA-03127: no new operations allowed until the active operation ends
(DBD ERROR: OCISessionEnd) at t/31lob_extended.t line 91.
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 25/31 subtests

Test Summary Report
-------------------
t/31lob_extended.t (Wstat: 65280 Tests: 6 Failed: 0)
  Non-zero exit status: 255
  Parse errors: Bad plan.  You planned 31 tests but ran 6.
Files=1, Tests=6,  0 wallclock secs ( 0.02 usr  0.00 sys +  0.05 cusr
0.01 csys =  0.08 CPU)
Result: FAIL

With verbose turned on I get the attached output.

This is not actually causing me a problem right now as it only seems to
happen when ora_auto_lob is on (default) and we mostly disable it.

Please let me know if there is anything else I can provide or do to help
nail this one.

Martin

Reply via email to