PEPPLER.ORG
Michael Peppler
Sybase Consulting
Menu
Home
Sybase on Linux
Install Guide for Sybase on Linux
General Sybase Resources
General Perl Resources
Freeware
Sybperl
Sybase::Simple
DBD::Sybase
BCP Tool
Bug Tracker
Mailing List Archive
Downloads Directory
FAQs
Sybase on Linux FAQ
Sybperl FAQ
Personal
Michael Peppler's resume

sybperl-l Archive

Up    Prev    Next    

From: Michael Peppler <mpeppler at peppler dot org>
Subject: Re: Odd issue with DBI/DBD::Sybase
Date: Feb 12 2008 7:18PM

Wechsler, Steven wrote:
> Hi Michael,
> 
> I'm attaching the output. I sent it privately because it's too big for
> the list. I appreciate your taking a look at it.
> 
> We're using FreeTDS.


I see you're also using a pretty old version of DBD::Sybase.

However I think you're seeing a FreeTDS bug. If we look in the trace 
around the prepare() calls with placeholders we see:

     -> prepare for DBD::Sybase::db (DBI::db=HASH(0x87256b4)~0x872a388 
'insert ne
wdb..up_UserAttribute
select a.* from nick_user_profile..up_UserAttribute a, 
newdb..key_10387UserID b
  where a.UserID = b.UserID and b.idnum10387 >= ? and b.idnum10387 < ?') 
thr#8433
008
     New DBI::st (for DBD::Sybase::st, parent=DBI::db=HASH(0x872a388), id=)
     dbih_setup_handle(DBI::st=HASH(0x87a174c)=>DBI::st=HASH(0x876df94), 
DBD::Syb
ase::st, 876dfa0, Null!)
     dbih_make_com(DBI::db=HASH(0x872a388), 872b730, DBD::Sybase::st, 
396, 0) thr
#8433008
     dbd_preparse parameter :p1 ()
     dbd_preparse parameter :p2 ()
     dbd_preparse scanned 2 distinct placeholders
     syb_st_prepare: ct_dynamic(CS_PREPARE) for DBD3
     syb_st_prepare: ct_dynamic(CS_DESCRIBE_INPUT) for DBD3
     syb_st_prepare: ct_results(CS_DESCRIBE_INPUT) for DBD3 - restype 4051
     syb_st_prepare: ct_res_info(CS_DESCRIBE_INPUT) statement has 0 
parameters
     syb_st_prepare: ct_results(CS_DESCRIBE_INPUT) for DBD3 - restype 4046
     <- prepare= DBI::st=HASH(0x87a174c) at rewrite_table.pl line 317


Notice how ct_res_info(CS_DESCRIBE_INPUT) thinks that there are no 
parameters when there should be 2 parameters found.

And that means that the DBD::Sybase internal data structures don't get 
populated as they should. I'm actually surprised that it even works at all!

Michael
-- 
Michael Peppler           -                 Peppler Consulting SaRL
mpeppler@peppler.org      -                  http://www.peppler.org
Sybase DBA/Developer      -   TeamSybase: http://www.teamsybase.com
Sybase on Linux FAQ       -   http://www.peppler.org/FAQ/linux.html