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: DBD::Sybase prepare() with placeholders fails with ASE 11.0.x
Date: Dec 19 2003 4:35PM

I've just discovered that DBD::Sybase 1.01 prepare() call with
placeholders will fail with

ct_result(ct_dynamic(CS_PREPARE)) returned -205 at
/usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi/DBD/Sybase.pm
line 124.
DBD::Sybase::db prepare failed: Server message number=193 severity=15
state=4 line=1 text=The object or column name starting with '' is too
long.  The maximum length is 10 characters.

when connected to an 11.0.3.3 server (in my case the free 11.0.3.3
release for linux).

The reason is that in 1.01 I increased the length of the identifier used
when creating the temporary stored proc/dynamic statement, and that
identifier now exceeds the max limit of 10 characters that 11.0.3.3 has.

A fix will be in 1.02, but in the meantime you can fix it by changing:

	    sprintf(imp_sth->dyn_id, "DBD%d_%x", getpid(), (int)tt++);
to
	    sprintf(imp_sth->dyn_id, "DBD_%x", (int)tt++);

around line 1990 of dbdimp.c and rebuilding.

Michael    
-- 
Michael Peppler                              Data Migrations, Inc.
mpeppler@peppler.org                 http://www.mbay.net/~mpeppler
Sybase T-SQL/OpenClient/OpenServer/C/Perl developer available for short or 
long term contract positions - http://www.mbay.net/~mpeppler/resume.html