[freetds] solaris 5.7, perl v5.8.5, freetds 0.62.4, DBD::Sybase-1.05_02 doesn't recognize the column type of a table database.

Jean Uwacu jean.uwacu at freemindconsulting.com
Wed Jul 20 11:12:59 EDT 2005


I've installed DBD::Sybase-1.05_02 on top of freetds 0.62.4 on Solaris 5.7.
The integer column type doesn't appear as such for a select request 
while executing tsql those are processed correctly.
So I'm thinking it's a DBD-Sybase issue. I didn't see any function in 
DBD-Sybase to help me change this format number.

I notice that on this device, the remote tsql client give good results 
and have no issue with number.

Here is a log of the dbitrace associated to my select request, done in a 
perl script using DBI and DBD::Sybase:

    DBI 1.48-nothread default trace level set to 0x0/5 (pid 4363)
    -> prepare for DBD::Sybase::db (DBI::db=HASH(0x2a8c60)~0x2ccc00 
'select Node, ServerSerial, AlertKey, Severity from aler
ts.status where Class = 101;')
    New DBI::st (for DBD::Sybase::st, parent=DBI::db=HASH(0x2ccc00), id=)
    dbih_setup_handle(DBI::st=HASH(0x2cdc08)=>DBI::st=HASH(0x2ccc30), 
DBD::Sybase::st, 2cdc14, Null!)
    dbih_make_com(DBI::db=HASH(0x2ccc00), 2dc2d0, DBD::Sybase::st, 420, 
0) thr#0
    dbih_setup_attrib(DBI::st=HASH(0x2ccc30), Err, 
DBI::db=HASH(0x2ccc00)) SCALAR(0x25a8b0) (already defined)
    dbih_setup_attrib(DBI::st=HASH(0x2ccc30), State, 
DBI::db=HASH(0x2ccc00)) SCALAR(0x25a910) (already defined)
    dbih_setup_attrib(DBI::st=HASH(0x2ccc30), Errstr, 
DBI::db=HASH(0x2ccc00)) SCALAR(0x25a8e0) (already defined)
    dbih_setup_attrib(DBI::st=HASH(0x2ccc30), TraceLevel, 
DBI::db=HASH(0x2ccc00)) 0 (already defined)
    dbih_setup_attrib(DBI::st=HASH(0x2ccc30), FetchHashKeyName, 
DBI::db=HASH(0x2ccc00)) 'NAME' (already defined)
    dbih_setup_attrib(DBI::st=HASH(0x2ccc30), HandleSetErr, 
DBI::db=HASH(0x2ccc00)) undef (not defined)
    dbih_setup_attrib(DBI::st=HASH(0x2ccc30), HandleError, 
DBI::db=HASH(0x2ccc00)) undef (not defined)
    syb_st_prepare() -> inUse = 0
    syb_st_prepare() -> set inUse
    <- prepare= DBI::st=HASH(0x2cdc08) at tstdbd.pl line 32
    -> execute for DBD::Sybase::st (DBI::st=HASH(0x2cdc08)~0x2ccc30)
    syb_alloc_cmd() -> CS_COMMAND 2de0d8 for CS_CONNECTION 2cf4d0
    cmd_execute() -> ct_command() OK
    cmd_execute() -> ct_send() OK
    cmd_execute() -> set inUse flag
    st_next_result() -> ct_results(4040) == 1
    ct_res_info() returns 4 columns

fails in:
    ct_describe(0): type = 1315923045, maxlen = 0
    describe() -> col 0, type 1, realtype 1315923045
    ct_describe(1): type = 1399157366, maxlen = 1919508844
    describe() -> col 1, type 1, realtype 1399157366
    ct_describe(2): type = 1097622898, maxlen = 0
    describe() -> col 2, type 1, realtype 1097622898
    ct_describe(3): type = 1399158373, maxlen = 0
    describe() -> col 3, type 1, realtype 1399158373
describe() retcode = 1
    st_next_result() -> lasterr = 0, lastsev = 0
    <- execute= -1 at tstdbd.pl line 34

while must have be (script that executes on the server):
    ct_describe(0): type = 1, maxlen = 64
    describe() -> col 0, type 1, realtype 1
    ct_describe(1): type = 2, maxlen = 4
    describe() -> col 1, type 2, realtype 2
    ct_describe(2): type = 1, maxlen = 64
    describe() -> col 2, type 1, realtype 1
    ct_describe(3): type = 2, maxlen = 4
    describe() -> col 3, type 2, realtype 2
describe() retcode = 1
    st_next_result() -> lasterr = 0, lastsev = 0
    <- execute= -1 at eqtoobjserv.pl line 34

Do you have a suggestion? Thanks in advance,
Jean.






More information about the FreeTDS mailing list