Re: ANNOUNCE: DBD::Oracle 1.24 Release Candidate 3
John Scoles <[email protected]>
| Newsgroups | gmane.comp.lang.perl.modules.dbi.sybase.devel |
|---|---|
| Message-ID | <[email protected]> |
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
>