John Scoles wrote: > Well here it is the second crack at 1.24 Beer version of DBD::ORACLE > > > You can find the release candidate here > > http://svn.perl.org/modules/dbd-oracle/trunk/DBD-Oracle-1.24-RC2.tar > > > this time out I have hopefully fixed most of the warnings > > I have also updated the pod to explain what ora_ncs_buff_mtpl and var > ORA_DBD_NCS_BUFFER do > > I have also added a few other little patches from H.Merijn Brand > > The big one this RC is that I think I finally got the RowsInCache and > RowCacheSize working according to spec > > RowCacheSize can now be set on the statement handle (in the prepare) > > and RowsInCache has been implemented as a Read only value off the > statement handle as well > > Both the Statement and the DB handle versions of RowsInCache also now > decrement correctly (nothing fancy in the change just moved the > decrement later on in the code path) > > Hope this cleans any bugs up. > > cheers > and thanks for the testing > >
Thanks. This seems to address most of my issues but I have a few more small changes below. All tests complete ok when no NLS_LANG set except a few in 26exe_array. However, I have quite a lot of problems when NLS_LANG is set to AMERICAN_AMERICA.AL32UTF8 (which we do all the time but fortunately not with ora_auto_lob defaulted/set) - see make_test.log attached. The prove output is in 30long_log and 31lob_extended.log. It appears if ora_auto_lob is defaulted/set then when NLS_LANG is set the second set of tests in 31lob_extended.t fail with: DBD::Oracle has returned a NEED_DATA status when doing a LobRead!! and any further operations lead to: DBD::Oracle::db DESTROY failed: ORA-03127: no new operations allowed until the active operation ends (DBD ERROR: OCIStmtExecute) even though the statement handle involved is now out of scope. A similar thing is happening in 30long. Attached is a small patch which contains the following changes: o a minor patch makes a lot of warnings go away because ah is actually an OCIServer * and not a signed long. o patch to Oracle.pm pod to correct some typos. o Minor patch to 31lob_extended.t which fixes test names and adds better error output. Martin -- Martin J. Evans Easysoft Limited http://www.easysoft.com
mar...@bragi:/tmp/DBD-Oracle-1.24-RC2$ make test PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/01base.t .............. # Test loading DBI, DBD::Oracle and version t/01base.t .............. ok t/10general.t ........... ok t/12impdata.t ........... ok t/14threads.t ........... ok t/15nls.t ............... ok t/20select.t ............ ok t/21nchar.t ............. ok t/22nchar_al32utf8.t .... ok t/22nchar_utf8.t ........ ok t/23wide_db.t ........... ok t/23wide_db_8bit.t ...... ok t/23wide_db_al32utf8.t .. ok t/24implicit_utf8.t ..... ok t/25plsql.t ............. ok t/26exe_array.t ......... 1/17 t/26exe_array.t ......... Dubious, test returned 2 (wstat 512, 0x200) Failed 2/17 subtests t/28array_bind.t ........ ok t/30long.t .............. 1/479 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. t/30long.t .............. Dubious, test returned 255 (wstat 65280, 0xff00) Failed 284/479 subtests (less 122 skipped subtests: 73 okay) t/31lob.t ............... ok t/31lob_extended.t ...... 1/31 DBD::Oracle has returned a NEED_DATA status when doing a LobRead!! procedure p_DBD_Oracle_drop_me possibly not dropped- check table dbd_ora__drop_me possibly not dropped - check 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. t/31lob_extended.t ...... Dubious, test returned 255 (wstat 65280, 0xff00) Failed 8/31 subtests t/32xmltype.t ........... ok t/34pres_lobs.t ......... ok t/40ph_type.t ........... 1/19 Placeholder behaviour for ora_type=1 VARCHAR2 (the default) varies with Oracle version. Oracle 7 didn't strip trailing spaces, Oracle 8 did, until 9.2.x Your system doesn't. If that seems odd, let us know. t/40ph_type.t ........... ok t/50cursor.t ............ ok t/51scroll.t ............ ok t/55nested.t ............ ok t/56embbeded.t .......... ok t/58object.t ............ ok t/60reauth.t ............ skipped: ORACLE_USERID_2 not defined. t/70meta.t .............. ok t/80ora_charset.t ....... ok Test Summary Report ------------------- t/26exe_array.t (Wstat: 512 Tests: 17 Failed: 2) Failed tests: 11, 14 Non-zero exit status: 2 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. t/31lob_extended.t (Wstat: 65280 Tests: 23 Failed: 0) Non-zero exit status: 255 Parse errors: Bad plan. You planned 31 tests but ran 23. Files=30, Tests=1917, 15 wallclock secs ( 0.22 usr 0.04 sys + 5.93 cusr 0.60 csys = 6.79 CPU) Result: FAIL Failed 3/30 test programs. 2/1917 subtests failed. make: *** [test_dynamic] Error 255
mar...@bragi:/tmp/DBD-Oracle-1.24-RC2$ 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 ok 1 - prepare: insert into dbd_ora__drop_me values (?, ?, SYSDATE) # 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 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 # --- fetch LONG data back again -- truncated - LongTruncOk == 0 # LongReadLen 81910, LongTruncOk ok 20 - prepare select * from dbd_ora__drop_me order by idx 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 ok 35 # skip blob_read tests for LONGs - not currently supported ok 36 # skip blob_read tests for LONGs - not currently supported ok 37 # skip blob_read tests for LONGs - not currently supported ok 38 # skip blob_read tests for LONGs - not currently supported ok 39 # skip blob_read tests for LONGs - not currently supported ok 40 # skip blob_read tests for LONGs - not currently supported ok 41 # skip blob_read tests for LONGs - not currently supported ok 42 # skip blob_read tests for LONGs - not currently supported ok 43 # skip blob_read tests for LONGs - not currently supported ok 44 # skip blob_read tests for LONGs - not currently supported ok 45 # skip blob_read tests for LONGs - not currently supported ok 46 # skip blob_read tests for LONGs - not currently supported ok 47 # skip blob_read tests for LONGs - not currently supported ok 48 # skip blob_read tests for LONGs - not currently supported ok 49 # skip ora_auto_lob tests for LONGs - not supported ok 50 # skip ora_auto_lob tests for LONGs - not supported ok 51 # skip ora_auto_lob tests for LONGs - not supported ok 52 # skip ora_auto_lob tests for LONGs - not supported ok 53 # skip ora_auto_lob tests for LONGs - not supported ok 54 # skip ora_auto_lob tests for LONGs - not supported ok 55 # skip ora_auto_lob tests for LONGs - not supported ok 56 # skip ora_auto_lob tests for LONGs - not supported ok 57 # skip ora_auto_lob tests for LONGs - not supported ok 58 # skip ora_auto_lob tests for LONGs - not supported ok 59 # skip ora_auto_lob tests for LONGs - not supported ok 60 # skip ora_auto_lob tests for LONGs - not supported ok 61 # skip ora_auto_lob tests for LONGs - not supported ok 62 # skip ora_auto_lob tests for LONGs - not supported ok 63 # skip ora_auto_lob tests for LONGs - not supported ok 64 # skip ora_auto_lob tests for LONGs - not supported ok 65 # skip ora_auto_lob tests for LONGs - not supported ok 66 # skip ora_auto_lob tests for LONGs - not supported ok 67 # skip ora_auto_lob tests for LONGs - not supported ok 68 # skip ora_auto_lob tests for LONGs - not supported ok 69 # skip ora_auto_lob tests for LONGs - not supported ok 70 # skip ora_auto_lob tests for LONGs - not supported ok 71 # skip ora_auto_lob tests for LONGs - not supported ok 72 # skip ora_auto_lob tests for LONGs - not supported ok 73 # skip ora_auto_lob tests for LONGs - not supported ok 74 # skip ora_auto_lob tests for LONGs - not supported ok 75 # skip ora_auto_lob tests for LONGs - not supported ok 76 # skip ora_auto_lob tests for LONGs - not supported ok 77 # skip ora_auto_lob tests for LONGs - not supported ok 78 # skip ora_auto_lob tests for LONGs - not supported ok 79 # skip ora_auto_lob tests for LONGs - not supported ok 80 # skip ora_auto_lob tests for LONGs - not supported ok 81 # skip ora_auto_lob tests for LONGs - not supported ok 82 # skip ora_auto_lob tests for LONGs - not supported ok 83 # skip ora_auto_lob tests for LONGs - not supported ok 84 # skip ora_auto_lob tests for LONGs - not supported ok 85 # skip ora_auto_lob tests for LONGs - not supported ok 86 # skip ora_auto_lob tests for LONGs - not supported ok 87 # skip ora_auto_lob tests for LONGs - not supported ok 88 # skip ora_auto_lob tests for LONGs - not supported ok 89 # skip ora_auto_lob tests for LONGs - not supported ok 90 # skip ora_auto_lob tests for LONGs - not supported ok 91 # skip ora_auto_lob tests for LONGs - not supported ok 92 # skip ora_auto_lob tests for LONGs - not supported ok 93 # skip ora_auto_lob tests for LONGs - not supported ok 94 # skip ora_auto_lob tests for LONGs - not supported # # ========================================================================= # Running long test for LONG RAW (24) use_utf8_data=0 # 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 95 - prepare: insert into dbd_ora__drop_me values (?, ?, SYSDATE) 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 ok 129 # skip blob_read tests for LONGs - not currently supported ok 130 # skip blob_read tests for LONGs - not currently supported ok 131 # skip blob_read tests for LONGs - not currently supported ok 132 # skip blob_read tests for LONGs - not currently supported ok 133 # skip blob_read tests for LONGs - not currently supported ok 134 # skip blob_read tests for LONGs - not currently supported ok 135 # skip blob_read tests for LONGs - not currently supported ok 136 # skip blob_read tests for LONGs - not currently supported ok 137 # skip blob_read tests for LONGs - not currently supported ok 138 # skip blob_read tests for LONGs - not currently supported ok 139 # skip blob_read tests for LONGs - not currently supported ok 140 # skip blob_read tests for LONGs - not currently supported ok 141 # skip blob_read tests for LONGs - not currently supported ok 142 # skip blob_read tests for LONGs - not currently supported ok 143 # skip ora_auto_lob tests for LONG RAWs - not supported ok 144 # skip ora_auto_lob tests for LONG RAWs - not supported ok 145 # skip ora_auto_lob tests for LONG RAWs - not supported ok 146 # skip ora_auto_lob tests for LONG RAWs - not supported ok 147 # skip ora_auto_lob tests for LONG RAWs - not supported ok 148 # skip ora_auto_lob tests for LONG RAWs - not supported ok 149 # skip ora_auto_lob tests for LONG RAWs - not supported ok 150 # skip ora_auto_lob tests for LONG RAWs - not supported ok 151 # skip ora_auto_lob tests for LONG RAWs - not supported ok 152 # skip ora_auto_lob tests for LONG RAWs - not supported ok 153 # skip ora_auto_lob tests for LONG RAWs - not supported ok 154 # skip ora_auto_lob tests for LONG RAWs - not supported ok 155 # skip ora_auto_lob tests for LONG RAWs - not supported ok 156 # skip ora_auto_lob tests for LONG RAWs - not supported ok 157 # skip ora_auto_lob tests for LONG RAWs - not supported ok 158 # skip ora_auto_lob tests for LONG RAWs - not supported ok 159 # skip ora_auto_lob tests for LONG RAWs - not supported ok 160 # skip ora_auto_lob tests for LONG RAWs - not supported ok 161 # skip ora_auto_lob tests for LONG RAWs - not supported ok 162 # skip ora_auto_lob tests for LONG RAWs - not supported ok 163 # skip ora_auto_lob tests for LONG RAWs - not supported ok 164 # skip ora_auto_lob tests for LONG RAWs - not supported ok 165 # skip ora_auto_lob tests for LONG RAWs - not supported ok 166 # skip ora_auto_lob tests for LONG RAWs - not supported ok 167 # skip ora_auto_lob tests for LONG RAWs - not supported ok 168 # skip ora_auto_lob tests for LONG RAWs - not supported ok 169 # skip ora_auto_lob tests for LONG RAWs - not supported ok 170 # skip ora_auto_lob tests for LONG RAWs - not supported ok 171 # skip ora_auto_lob tests for LONG RAWs - not supported ok 172 # skip ora_auto_lob tests for LONG RAWs - not supported ok 173 # skip ora_auto_lob tests for LONG RAWs - not supported ok 174 # skip ora_auto_lob tests for LONG RAWs - not supported ok 175 # skip ora_auto_lob tests for LONG RAWs - not supported ok 176 # skip ora_auto_lob tests for LONG RAWs - not supported ok 177 # skip ora_auto_lob tests for LONG RAWs - not supported ok 178 # skip ora_auto_lob tests for LONG RAWs - not supported ok 179 # skip ora_auto_lob tests for LONG RAWs - not supported ok 180 # skip ora_auto_lob tests for LONG RAWs - not supported ok 181 # skip ora_auto_lob tests for LONG RAWs - not supported ok 182 # skip ora_auto_lob tests for LONG RAWs - not supported ok 183 # skip ora_auto_lob tests for LONG RAWs - not supported ok 184 # skip ora_auto_lob tests for LONG RAWs - not supported ok 185 # skip ora_auto_lob tests for LONG RAWs - not supported ok 186 # skip ora_auto_lob tests for LONG RAWs - not supported ok 187 # skip ora_auto_lob tests for LONG RAWs - not supported 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 # long_data[1] length 81920 # long_data[2] length 71680 # --- insert some NCLOB data (ora_type 112) ok 189 - prepare: insert into dbd_ora__drop_me values (?, ?, SYSDATE) 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, 1 wallclock secs ( 0.06 usr 0.00 sys + 0.13 cusr 0.01 csys = 0.20 CPU) Result: FAIL
mar...@bragi:/tmp/DBD-Oracle-1.24-RC2$ 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 prefetch prepare call proc ok 5 - ora_auto_lobs prefetch - bind out cursor ok 6 - ora_auto_lobs prefetch - execute to get out cursor ok 7 - ora_auto_lobs prefetch - lob locator retrieved ok 8 - ora_auto_lobs prefetch - is a lob locator ok 9 - ora_auto_lobs prefetch - first lob length 6000 ok 10 - ora_auto_lobs prefetch - correct lob length ok 11 - ora_auto_lobs prefetch - read lob ok 12 - ora_auto_lobs prefetch - lob returned matches lob inserted ok 13 - ora_auto_lobs prefetch - lob locator retrieved ok 14 - ora_auto_lobs prefetch - is a lob locator ok 15 - ora_auto_lobs prefetch - first lob length 6000 ok 16 - ora_auto_lobs prefetch - correct lob length ok 17 - ora_auto_lobs prefetch - read lob ok 18 - ora_auto_lobs prefetch - lob returned matches lob inserted ok 19 - ora_auto_lobs prefetch - finished returned sth ok 20 - ora_auto_lobs prefetch - finished sth ok 21 - ora_auto_lobs not fetching prepare call proc ok 22 - ora_auto_lobs not fetching - bind out cursor ok 23 - 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 table dbd_ora__drop_me possibly not dropped - check # Looks like you planned 31 tests but ran 23. # Looks like your test exited with 255 just after 23. 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 8/31 subtests Test Summary Report ------------------- t/31lob_extended.t (Wstat: 65280 Tests: 23 Failed: 0) Non-zero exit status: 255 Parse errors: Bad plan. You planned 31 tests but ran 23. Files=1, Tests=23, 1 wallclock secs ( 0.03 usr 0.00 sys + 0.07 cusr 0.01 csys = 0.11 CPU) Result: FAIL
Index: ocitrace.h =================================================================== --- ocitrace.h (revision 13722) +++ ocitrace.h (working copy) @@ -267,7 +267,7 @@ stat=OCIAttrSet(th,ht,ah,s1,a,eh); \ (DBD_OCI_TRACEON) ? PerlIO_printf(DBD_OCI_TRACEFP, \ "%sAttrSet(%p,%s, %p,%lu,Attr=%s,%p)=%s\n", \ - OciTp, (void*)th,oci_hdtype_name(ht),sl_t(ah),ul_t(s1),oci_attr_name(a),(void*)eh, \ + OciTp, (void*)th,oci_hdtype_name(ht),(void *)ah,ul_t(s1),oci_attr_name(a),(void*)eh, \ oci_status_name(stat)),stat : stat #define OCIBindByName_log_stat(sh,bp,eh,p1,pl,v,vs,dt,in,al,rc,mx,cu,md,stat) \ Index: Oracle.pm =================================================================== --- Oracle.pm (revision 13722) +++ Oracle.pm (working copy) @@ -1477,12 +1477,14 @@ =item ora_ncs_buff_mtpl -You can now customize the size of the buffer when selecting a LOBs with the build in AUTO Lob -The default value is 1 which should be fine for most situations if you are converting between -a NCS on the DB and one on the Client they you might want to set this to 2. The orginal value -was 4 which was excessive. For convieance I have added support for a 'ORA_DBD_NCS_BUFFER' enviornemnt -varaible that you can use at the OS level to set this value. If used it will take the value at the -connect stage. +You can now customize the size of the buffer when selecting LOBs with +the built in AUTO Lob. The default value is 1 which should be fine +for most situations. If you are converting between a NCS on the DB and +one on the Client then you might want to set this to 2. The orignal +value (prior to version 1.24) of 4 was found to be excessive. For +convenience I have added support for a 'ORA_DBD_NCS_BUFFER' +environment variable that you can use at the OS level to set this +value. If used it will take the value at the connect stage. See more details in the LOB section of the POD Index: t/31lob_extended.t =================================================================== --- t/31lob_extended.t (revision 13722) +++ t/31lob_extended.t (working copy) @@ -1,7 +1,7 @@ #!perl -w ## ---------------------------------------------------------------------------- -## 26exe_array.t +## 31lob_extended.t ## By Martin Evans, The Pythian Group ## ---------------------------------------------------------------------------- ## This run through some bugs that have been found in earlier versions of DBD::Oracle @@ -38,7 +38,7 @@ my ($table, $data0, $data1) = setup_test($dbh); # -# bug in DBD::0.21 where if ora_auto_lobs is set and we attempt to +# bug in DBD::Oracle 0.21 where if ora_auto_lobs is not set and we attempt to # fetch from a table containing lobs which has more than one row # we get a segfault. This was due to prefetching more than one row. # @@ -82,7 +82,8 @@ # ora_auto_lobs is supposed to default to set q/begin p_DBD_Oracle_drop_me(?); end;/); }; - ok(!$@, "$testname prepare call proc"); + ok(!$@, "$testname - prepare call proc"); + my $sth2; ok($sth1->bind_param_inout(1, \$sth2, 500, {ora_type => ORA_RSET}), "$testname - bind out cursor"); @@ -175,13 +176,13 @@ eval {$dbh->do(q/drop procedure p_DBD_Oracle_drop_me/);}; if ($@) { warn("procedure p_DBD_Oracle_drop_me possibly not dropped" . - "- check\n") if $dbh->err ne '4043'; + "- check - $...@\n") if $dbh->err ne '4043'; } else { diag("procedure p_DBD_Oracle_drop_me dropped"); } eval {drop_table($dbh);}; if ($@) { - warn("table $table possibly not dropped - check\n") + warn("table $table possibly not dropped - check - $...@\n") if $dbh->err ne '942'; } else { diag("table $table dropped");