Hi Martin,

Any idea why if I just change the version of Perl to 5.8.7 (leaving
Easysoft, DBI, and DBD::ODBC alone) everything tests fine? 

-----Original Message-----
From: Martin J. Evans [mailto:[EMAIL PROTECTED] 
Sent: Monday, March 06, 2006 3:35 PM
To: Jonathan Gillespie
Cc: dbi-users@perl.org
Subject: Re: [dbi] DBD::ODBC with Perl 5.8.8

As I suspected, DBD::ODBC has bumped the length to 51 then on the rebind
spotted it has grown from 50 to 51. I will try and reproduce tomorrow
and get back to you.

I've also bcc'ed [EMAIL PROTECTED] so they know you are experiencing
a problem although at this stage I am thinking the issue is in DBD::ODBC
(but that may change).

Martin

Jonathan Gillespie wrote:
>  We are using Easysoft odbc-odbc-bridge-2.0.0-linux-x86-glibc with DBI

> 1.50
> 
> Here is what we think is the relevant portion of the trace:
> 
>     >> bind_param_inout DISPATCH (DBI::st=HASH(0x8ac55d8) rc1/1 @5 g0
> ima1 pid#30101) at t/20SqlServer.t line 180
>     -> bind_param_inout for DBD::ODBC::st
> (DBI::st=HASH(0x8ac55d8)~0x8ac5638 1 SCALAR(0x89a2d64) 50 4) bind 1 
> <== '' (attribs: ), type 4
>     <- bind_param_inout= 1 at t/20SqlServer.t line 180
>     >> bind_param  DISPATCH (DBI::st=HASH(0x8ac55d8) rc1/1 @4 g0 ima1
> pid#30101) at t/20SqlServer.t line 181
>     -> bind_param for DBD::ODBC::st (DBI::st=HASH(0x8ac55d8)~0x8ac5638

> 2
> 1 4)
> bind 2 <== '1' (attribs: ), type 4
>     <- bind_param= 1 at t/20SqlServer.t line 181
>     >> execute     DISPATCH (DBI::st=HASH(0x8ac55d8) rc1/1 @1 g0
ima1041 
> pid#30101) at t/20SqlServer.t line 183
>     -> execute for DBD::ODBC::st (DBI::st=HASH(0x8ac55d8)~0x8ac5638)
>     dbd_st_execute (outparams = 1)...
> bind 1 <== undef (size -1/-1/*50*, ptype 4, otype 1, sqltype 4) bind 1

> <== '(null)' (len 0/*51*, null 1)
>     bind 1: CTy=1, STy=INTEGER, CD=51, Sc=1, VM=51.
>     SQLBindParameter: idx = 1: fParamType=2, name=1, fCtype=1, 
> SQL_Type = 4, cbColDef=51, scale=1, rgbValue = 8af2d70, cbValue 
> Max=51, cbValue = 1
>     Param value =
>    rebind check char Param 1 ()
> bind 2 <== 1 (size 1/4/0, ptype 5, otype 1, sqltype 4) bind 2 <== '1' 
> (len 1/3, null 0)
>     bind 2: CTy=1, STy=INTEGER, CD=1, Sc=1, VM=1.
>     SQLBindParameter: idx = 2: fParamType=1, name=2, fCtype=1, 
> SQL_Type = 4, cbColDef=1, scale=1, rgbValue = 8af7680, cbValueM ax=1, 
> cbValue = 1
>     Param value = 1
>    rebind check char Param 2 (1)
>     dbd_st_execute (for hstmt 145710992 before)...
>     dbd_st_execute (for hstmt 145710992 after, rc = 0)...
> dbd_error: err_rc=0 rc=0 s/d/e: 145710992/145541856/145540432
> dbd_error: err_rc=0 rc=0 s/d/e: 0/145541856/145540432
> dbd_error: err_rc=0 rc=0 s/d/e: 0/0/145540432
>     dbd_st_execute getting row count
>     dbd_st_execute got row count 1
>     dbd_describe 145710992 getting num fields Numfields == 0, 
> SQLMoreResults == 100
> dbd_error: err_rc=100 rc=0 s/d/e: 145710992/145541856/145540432
> dbd_error: err_rc=100 rc=0 s/d/e: 0/145541856/145540432
> dbd_error: err_rc=100 rc=0 s/d/e: 0/0/145540432
>     dbd_describe sql 145710992: num_fields=0
>     dbd_describe skipped (no result cols) (sql f145710992)
>     dbd_st_execute got no rows: resetting ACTIVE, moreResults
>        handling 1 output parameters
>        out 1 has length of 1
>     <- execute= 1 at t/20SqlServer.t line 183
>     >> bind_param_inout DISPATCH (DBI::st=HASH(0x8ac55d8) rc1/1 @5 g0
> ima1 pid#30101) at t/20SqlServer.t line 180
>     -> bind_param_inout for DBD::ODBC::st
> (DBI::st=HASH(0x8ac55d8)~0x8ac5638 1 SCALAR(0x89a2d64) 50 4)
> 
> 
> -----Original Message-----
> From: Martin J. Evans [mailto:[EMAIL PROTECTED]
> Sent: Friday, March 03, 2006 10:03 AM
> To: dbi-users@perl.org
> Subject: RE: [dbi] DBD::ODBC with Perl 5.8.8
> 
> Jonathan,
> 
> The test that fails works fine for me.
> What ODBC driver are you using?
> 
> Strangely, what DBD::ODBC is saying is that you bound an in/out 
> parameter of max size 50 then changed it to 51 but the code in 
> 20SqlServer has a hard-wired 50 so somewhere a long the line the 50 
> that got into dbdimp.c got changed to 51.
> 
> A trace of the 20SqlServer test might help.
> 
> Martin
> --
> Martin J. Evans
> Easysoft Ltd, UK
> http://www.easysoft.com
> 
> 
> On 02-Mar-2006 Jonathan Gillespie wrote:
>  > Hello,
>  >
>  > I'm having problems getting DBD::ODBC 1.13 to work with perl 5.8.8

> >  > I'm running CentOS 4.2 with the latest updates, it's a brand new

> > install  >  > With Perl 5.8.7, DBD::ODBC installes with out a 
> problem, but with perl  > 5.8.8 I get the following from make test:
>  >
>  > make test TEST_VERBOSE=1
>  > PERL_DL_NONLAZY=1 /usr/local/perl5.8.8/bin/perl  
> >"-MExtUtils::Command::MM" "-e" "test_harness(1, 'blib/lib',  
> >'blib/arch')" t/*.t  > t/01base.........1..5  > ok 1 - require DBI;  
> > ok 2 - import DBI  > ok 3 - DBI->internal is DBI::dr  > ok 4 - 
> Install ODBC driver OK  > ok 5 - Version is not empty  > ok  > 
> t/02simple.......1..36  > ok 1 - use DBI;  > ok 2 - use ODBCTEST;  > 
> ok 3 - Set Auto commit  > ok 4 - Auto commit retrieved to what was set

> ok 5 - create test table  >ok 6 - test table exists  ok 7 - insert 
> test data  ok 8 - select test  >data  ok 9 - Set Long Read len  ok 10 
> - Set Long Truncok 1  ok 11 - Set  >Print Error  ok 12 - Select Long 
> data  ok 13 - Set Long Truncok 0  ok
>  >14 - Select Long Data failure  ok 15 - prepare select from table  ok

> 16
>  >- Execute select  ok 17 - Col count matches correct col count  ok 18

> -  >Set RaiseError 0  ok 19 - Set PrintError 0  ok 20 - Error reported

> on  >bad query  ok 21 - date check select  ok 22 - date check execute

> ok 23
>  >- date check rows  ok 24 - group by query prepare  ok 25 - group by

> >query execute  ok 26 - group by query returned rows  ok 27 - data  
> >sources test  ok 28 - test ping method  ok 29 - Attrib  
> >odbc_ignore_named_placeholders 0 to start  ok 30 - Attrib  
> >odbc_ignore_named_placeholders set to 1  ok 31 - test connecting 
> twice  >to the same database  ok 32 - database name is returned 
> successfully  >ok 33 - automatically finish when execute run again  ok

> 34 - INVALID  >DSN Test: [unixODBC][Driver Manager]Data source name 
> not  found, and no  >default driver specified (SQL-IM002)(DBD:
>  > db_login/SQLConnect err=-1)
>  >#
>  > ok 35 - Connection with DSN=
>  > ok 36 - Connection with DSN= and uid and pwd are set  ok  > 
> t/03dbatt........1..24  > ok 1 - use DBI;  > ok 2 - use ODBCTEST;  > 
> ok 3 - Set Long Read Len  > ok 4 - AutoCommit set on dbh  > ok 5 - 
> commitTest with AutoCommit  > ok 6 - AutoCommit turned off  > ok 7 - 
> commitTest with AutoCommit off  > ok 8 - Ensure autocommit back on  > 
> ok 9 - sth {NAME} returns ref to array isa ARRAY  ok 10 - Column test

> >for table_info 0  ok 11 - Column test for table_info 1  ok 12 - 
> Column  >test for table_info 2  ok 13 - Column test for table_info 3  
> ok 14 -  >Column test for table_info 4  ok 15 - must be some tables
out there?
>  > ok 16 - tables returnes array
>  > ok 17 - column info returns more than one row for test table  ok 18

> -  >primary key count  ok 19 - prepare update statement returns valid 
> sth  >ok 20 - update statement has 0 columns returned  ok 21 - update

> >statement has 0 columns returned 2  ok 22 - Verify odbc_query_timeout

> >set ok  ok 23 - verify dbh setting for query_timeout passed to sth  
> ok
>  >24 - verify sth query_timeout can be overridden  ok  > 
> t/05meth.........1..8  > ok 1 - use DBI;  > ok 2 - delete prepared 
> statement  > ok 3 - Number of rows > 0  > ok 4 - Number of rows from 
> DBI matches sth  ok 5 - finished and rolled  >back  ok 6 - no error  
> ok 7 - ?
>  > ok 8 - ??
>  > ok
>  > t/07bind.........1..11
>  > ok 1 - use ODBCTEST;
>  > ok 2 - Create tables
>  > ok 3 - Table insert test
>  > ok 4 - Ensure long readlen set correctly  ok 5 - Select tests  ok 6

> -  >Insert with bind tests  ok 7 - select long test data  ok 8 - 
> update  >long test data  ok 9 - select long test data again  ok 10 - 
> ParamValues  >test integer  ok 11 - Paramvalues test string  ok  > 
> t/08bind2........1..5  > ok 1 - use ODBCTEST;  > ok 2 - use 
> Data::Dumper;  > ok 3 - insert \#1 various test data no dates, no long

> data  ok 4 -  >insert \#2 various test data no dates, with long data  
> ok 5 - insert
>  >\#3 various test data data with dates  ok  > t/09multi........1..7  
> > ok 1 - use strict;  > ok 2 - use DBI;  > ok 3 - use ODBCTEST;  > ok 
> 4 - count number of result sets  > ok 5 - Multiple result sets with 
> different column counts (less then  > more)  > ok 6 - Multiple result 
> sets with different column counts (more then  > less)  > ok 7 - 
> Multiple result sets with multiple cols, then second result set  >with

> one col  ok  > t/20SqlServer....1..37  > ok 1 - use ODBCTEST;  > ok 2 
> - use Data::Dumper;  > ok 3 - errors on data comparison  > ok 4 - 
> temporary table handling  > Can't change param 1 maxlen (51->50) after

> first bind at  >t/20SqlServer.t  line 180.
>  ># Looks like you planned 37 tests but only ran 4.
>  ># Looks like your test died just after 4.
>  > dubious
>  >         Test returned status 255 (wstat 65280, 0xff00)  DIED.
FAILED
>  >tests 5-37
>  >         Failed 33/37 tests, 10.81% okay
>  > t/30Oracle.......1..4
>  > ok 1 - use ODBCTEST;
>  > ok 2 - use Data::Dumper;
>  > ok 3 # skip Oracle tests not supported using Microsoft SQL Server  
> ok
>  >4 # skip Oracle tests not supported using Microsoft SQL Server  ok
>  >         2/4 skipped: Oracle tests not supported using Microsoft SQL

>  >Server
>  > Failed Test     Stat Wstat Total Fail  Failed  List of Failed
>  >
>  
> >---------------------------------------------------------------------
> --
>  >-
>  > -------
>  > t/20SqlServer.t  255 65280    37   66 178.38%  5-37
>  > 2 subtests skipped.
>  > Failed 1/9 test scripts, 88.89% okay. 33/137 subtests failed, 
> 75.91%  >okay.
>  > make: *** [test_dynamic] Error 255
> 

Reply via email to