#35945 [Com]: sybase_query() fails on AMD64

2007-04-25 Thread sabapamu at mizuho-sc dot com
 ID:   35945
 Comment by:   sabapamu at mizuho-sc dot com
 Reported By:  dbaffaleuf at ixis-cib dot com
 Status:   Open
 Bug Type: Sybase-ct (ctlib) related
 Operating System: Linux 2.6.9-22 RedHat AMD64
 PHP Version:  5CVS, 4CVS (2006-01-11) (snap)
 New Comment:

I experienced the same problem with PHP 5.2.1 on Intel x86_64 using
Sybase Open Client 15.0 64bit libraries.
Fix quoted by shawnf worked for me.


Previous Comments:


[2006-05-23 13:31:30] ewuerfel at blinx dot de

The modifications solve the problem... but dont forget the ./buildconf
in php_src

;-)



[2006-02-08 18:33:42] dbaffaleuf at ixis-cib dot com

Hello,

I downloaded the last release available (5.1.2) and modified the
config.m4 for sybase_ct extension as suggested.

The configure seems not to take care about those modifications, as the
Makefile still refers to :

(...)
EXTRA_LIBS = -lcrypt -lsybtcl -lintl -lcomn -lct -lcs -lcrypt -lrt -lgd
-lresolv -lm -ldl -lnsl -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm
-lcrypt -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt
(...)


Therefore, the make fails on:
/usr/bin/ld: skipping incompatible
/msmorzine/sgbd/MX_MT_MSMORZINE/ASE1253/OCS-12_5//lib/libsybtcl.so when
searching for -lsybtcl
/usr/bin/ld: cannot find -lsybtcl

I noticed that configure also refers as:
(...)
SYBASE_CT_LIBS=-L$SYBASE_CT_LIBDIR -lcs -lct -lcomn -lintl
(...)

Then I modified the EXTRA_LIBS so it has to look for 64bits libraries:

EXTRA_LIBS = -lcrypt -lsybtcl64 -lintl64 -lcomn64 -lct64 -lcs64 -lcrypt
-lrt -lgd -lresolv -lm -ldl -lnsl -lxml2 -lz -lm -lxml2 -lz -lm -lxml2
-lz -lm -lcrypt -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt

and the make completes but the make install fails with:

The context allocation routine failed.
The following problem caused the failure:
Invalid context version.

Each call to php outputs this error.



$ ./php -v


The context allocation routine failed.

The following problem caused the failure:

Invalid context version.
PHP 5.1.2 (cli) (built: Feb  8 2006 18:29:57)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies

I assume the modifications in config.m4 didn't solve the problem.

Thanks for your help.



[2006-02-04 16:59:25] shawnf at fletcher dot org dot za

here is a patch for php-5.1

it makes the module use the 64bit libraries and most importantly adds 

CFLAGS=${CFLAGS} -g -DSYB_LP64

-cut here


*** ext/sybase_ct/config.m4 2006-02-04 16:41:12.0 +0100
--- ext/sybase_ct/config.m4.old 2005-05-30 00:16:44.0 +0100
***
*** 29,59 
else
  AC_MSG_ERROR([ctpublic.h missing!])
fi
-
-   CFLAGS=${CFLAGS} -g -DSYB_LP64
-

PHP_ADD_LIBPATH($SYBASE_CT_LIBDIR, SYBASE_CT_SHARED_LIBADD)
if test -f $SYBASE_CT_INCDIR/tds.h; then
  PHP_ADD_LIBRARY(ct,, SYBASE_CT_SHARED_LIBADD)
! SYBASE_CT_LIBS=-L$SYBASE_CT_LIBDIR -lct64
else
! PHP_ADD_LIBRARY(cs64,, SYBASE_CT_SHARED_LIBADD)
! PHP_ADD_LIBRARY(ct64,, SYBASE_CT_SHARED_LIBADD)
! PHP_ADD_LIBRARY(comn64,, SYBASE_CT_SHARED_LIBADD)
! PHP_ADD_LIBRARY(intl64,, SYBASE_CT_SHARED_LIBADD)

! SYBASE_CT_LIBS=-L$SYBASE_CT_LIBDIR -lcs64 -lct64 -lcomn64
-lintl64

! PHP_CHECK_LIBRARY(tcl64, netg_errstr, [
!   PHP_ADD_LIBRARY(tcl64,,SYBASE_CT_SHARED_LIBADD)
  ],[
!   PHP_ADD_LIBRARY(sybtcl64,,SYBASE_CT_SHARED_LIBADD)
  ],[
$SYBASE_CT_LIBS
  ])

! PHP_CHECK_LIBRARY(insck64, insck__getVdate,
[PHP_ADD_LIBRARY(insck64,,
SYBASE_CT_SHARED_LIBADD)],[],[-L$SYBASE_CT_LIBDIR])
! PHP_CHECK_LIBRARY(insck64, bsd_tcp,
[PHP_ADD_LIBRARY(insck64,,
SYBASE_CT_SHARED_LIBADD)],[],[-L$SYBASE_CT_LIBDIR])
fi
  fi
--- 29,56 
else
  AC_MSG_ERROR([ctpublic.h missing!])
fi

PHP_ADD_LIBPATH($SYBASE_CT_LIBDIR, SYBASE_CT_SHARED_LIBADD)
if test -f $SYBASE_CT_INCDIR/tds.h; then
  PHP_ADD_LIBRARY(ct,, SYBASE_CT_SHARED_LIBADD)
! SYBASE_CT_LIBS=-L$SYBASE_CT_LIBDIR -lct
else
! PHP_ADD_LIBRARY(cs,, SYBASE_CT_SHARED_LIBADD)
! PHP_ADD_LIBRARY(ct,, SYBASE_CT_SHARED_LIBADD)
! PHP_ADD_LIBRARY(comn,, SYBASE_CT_SHARED_LIBADD)
! PHP_ADD_LIBRARY(intl,, SYBASE_CT_SHARED_LIBADD)

! SYBASE_CT_LIBS=-L$SYBASE_CT_LIBDIR -lcs -lct -lcomn -lintl

! PHP_CHECK_LIBRARY(tcl, netg_errstr, [
!   PHP_ADD_LIBRARY(tcl,,SYBASE_CT_SHARED_LIBADD)
  ],[
!   PHP_ADD_LIBRARY(sybtcl,,SYBASE_CT_SHARED_LIBADD)
  ],[
$SYBASE_CT_LIBS
  ])

! PHP_CHECK_LIBRARY(insck, insck__getVdate,
[PHP_ADD_LIBRARY(insck,,
SYBASE_CT_SHARED_LIBADD)],[],[-L$SYBASE_CT_LIBDIR])
! PHP_CHECK_LIBRARY(insck, bsd_tcp,
[PHP_ADD_LIBRARY(insck,,

#35945 [Com]: sybase_query() fails on AMD64

2006-05-23 Thread ewuerfel at blinx dot de
 ID:   35945
 Comment by:   ewuerfel at blinx dot de
 Reported By:  dbaffaleuf at ixis-cib dot com
 Status:   Open
 Bug Type: Sybase-ct (ctlib) related
 Operating System: Linux 2.6.9-22 RedHat AMD64
 PHP Version:  5CVS, 4CVS (2006-01-11) (snap)
 New Comment:

The modifications solve the problem... but dont forget the ./buildconf
in php_src

;-)


Previous Comments:


[2006-02-08 18:33:42] dbaffaleuf at ixis-cib dot com

Hello,

I downloaded the last release available (5.1.2) and modified the
config.m4 for sybase_ct extension as suggested.

The configure seems not to take care about those modifications, as the
Makefile still refers to :

(...)
EXTRA_LIBS = -lcrypt -lsybtcl -lintl -lcomn -lct -lcs -lcrypt -lrt -lgd
-lresolv -lm -ldl -lnsl -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm
-lcrypt -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt
(...)


Therefore, the make fails on:
/usr/bin/ld: skipping incompatible
/msmorzine/sgbd/MX_MT_MSMORZINE/ASE1253/OCS-12_5//lib/libsybtcl.so when
searching for -lsybtcl
/usr/bin/ld: cannot find -lsybtcl

I noticed that configure also refers as:
(...)
SYBASE_CT_LIBS=-L$SYBASE_CT_LIBDIR -lcs -lct -lcomn -lintl
(...)

Then I modified the EXTRA_LIBS so it has to look for 64bits libraries:

EXTRA_LIBS = -lcrypt -lsybtcl64 -lintl64 -lcomn64 -lct64 -lcs64 -lcrypt
-lrt -lgd -lresolv -lm -ldl -lnsl -lxml2 -lz -lm -lxml2 -lz -lm -lxml2
-lz -lm -lcrypt -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt

and the make completes but the make install fails with:

The context allocation routine failed.
The following problem caused the failure:
Invalid context version.

Each call to php outputs this error.



$ ./php -v


The context allocation routine failed.

The following problem caused the failure:

Invalid context version.
PHP 5.1.2 (cli) (built: Feb  8 2006 18:29:57)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies

I assume the modifications in config.m4 didn't solve the problem.

Thanks for your help.



[2006-02-04 16:59:25] shawnf at fletcher dot org dot za

here is a patch for php-5.1

it makes the module use the 64bit libraries and most importantly adds 

CFLAGS=${CFLAGS} -g -DSYB_LP64

-cut here


*** ext/sybase_ct/config.m4 2006-02-04 16:41:12.0 +0100
--- ext/sybase_ct/config.m4.old 2005-05-30 00:16:44.0 +0100
***
*** 29,59 
else
  AC_MSG_ERROR([ctpublic.h missing!])
fi
-
-   CFLAGS=${CFLAGS} -g -DSYB_LP64
-

PHP_ADD_LIBPATH($SYBASE_CT_LIBDIR, SYBASE_CT_SHARED_LIBADD)
if test -f $SYBASE_CT_INCDIR/tds.h; then
  PHP_ADD_LIBRARY(ct,, SYBASE_CT_SHARED_LIBADD)
! SYBASE_CT_LIBS=-L$SYBASE_CT_LIBDIR -lct64
else
! PHP_ADD_LIBRARY(cs64,, SYBASE_CT_SHARED_LIBADD)
! PHP_ADD_LIBRARY(ct64,, SYBASE_CT_SHARED_LIBADD)
! PHP_ADD_LIBRARY(comn64,, SYBASE_CT_SHARED_LIBADD)
! PHP_ADD_LIBRARY(intl64,, SYBASE_CT_SHARED_LIBADD)

! SYBASE_CT_LIBS=-L$SYBASE_CT_LIBDIR -lcs64 -lct64 -lcomn64
-lintl64

! PHP_CHECK_LIBRARY(tcl64, netg_errstr, [
!   PHP_ADD_LIBRARY(tcl64,,SYBASE_CT_SHARED_LIBADD)
  ],[
!   PHP_ADD_LIBRARY(sybtcl64,,SYBASE_CT_SHARED_LIBADD)
  ],[
$SYBASE_CT_LIBS
  ])

! PHP_CHECK_LIBRARY(insck64, insck__getVdate,
[PHP_ADD_LIBRARY(insck64,,
SYBASE_CT_SHARED_LIBADD)],[],[-L$SYBASE_CT_LIBDIR])
! PHP_CHECK_LIBRARY(insck64, bsd_tcp,
[PHP_ADD_LIBRARY(insck64,,
SYBASE_CT_SHARED_LIBADD)],[],[-L$SYBASE_CT_LIBDIR])
fi
  fi
--- 29,56 
else
  AC_MSG_ERROR([ctpublic.h missing!])
fi

PHP_ADD_LIBPATH($SYBASE_CT_LIBDIR, SYBASE_CT_SHARED_LIBADD)
if test -f $SYBASE_CT_INCDIR/tds.h; then
  PHP_ADD_LIBRARY(ct,, SYBASE_CT_SHARED_LIBADD)
! SYBASE_CT_LIBS=-L$SYBASE_CT_LIBDIR -lct
else
! PHP_ADD_LIBRARY(cs,, SYBASE_CT_SHARED_LIBADD)
! PHP_ADD_LIBRARY(ct,, SYBASE_CT_SHARED_LIBADD)
! PHP_ADD_LIBRARY(comn,, SYBASE_CT_SHARED_LIBADD)
! PHP_ADD_LIBRARY(intl,, SYBASE_CT_SHARED_LIBADD)

! SYBASE_CT_LIBS=-L$SYBASE_CT_LIBDIR -lcs -lct -lcomn -lintl

! PHP_CHECK_LIBRARY(tcl, netg_errstr, [
!   PHP_ADD_LIBRARY(tcl,,SYBASE_CT_SHARED_LIBADD)
  ],[
!   PHP_ADD_LIBRARY(sybtcl,,SYBASE_CT_SHARED_LIBADD)
  ],[
$SYBASE_CT_LIBS
  ])

! PHP_CHECK_LIBRARY(insck, insck__getVdate,
[PHP_ADD_LIBRARY(insck,,
SYBASE_CT_SHARED_LIBADD)],[],[-L$SYBASE_CT_LIBDIR])
! PHP_CHECK_LIBRARY(insck, bsd_tcp,
[PHP_ADD_LIBRARY(insck,,
SYBASE_CT_SHARED_LIBADD)],[],[-L$SYBASE_CT_LIBDIR])
fi
  fi



[2006-01-11 12:05:06] dbaffaleuf at ixis-cib dot com

Hi, thx for your reply.

Though, it does not work either with the 5.1. CVS snapshot you
provided. I get exactly the same 

#35945 [Com]: sybase_query() fails on AMD64

2006-02-04 Thread shawnf at fletcher dot org dot za
 ID:   35945
 Comment by:   shawnf at fletcher dot org dot za
 Reported By:  dbaffaleuf at ixis-cib dot com
 Status:   Open
 Bug Type: Sybase-ct (ctlib) related
 Operating System: Linux 2.6.9-22 RedHat AMD64
 PHP Version:  5CVS, 4CVS (2006-01-11) (snap)
 New Comment:

here is a patch for php-5.1

it makes the module use the 64bit libraries and most importantly adds 

CFLAGS=${CFLAGS} -g -DSYB_LP64

-cut here


*** ext/sybase_ct/config.m4 2006-02-04 16:41:12.0 +0100
--- ext/sybase_ct/config.m4.old 2005-05-30 00:16:44.0 +0100
***
*** 29,59 
else
  AC_MSG_ERROR([ctpublic.h missing!])
fi
-
-   CFLAGS=${CFLAGS} -g -DSYB_LP64
-

PHP_ADD_LIBPATH($SYBASE_CT_LIBDIR, SYBASE_CT_SHARED_LIBADD)
if test -f $SYBASE_CT_INCDIR/tds.h; then
  PHP_ADD_LIBRARY(ct,, SYBASE_CT_SHARED_LIBADD)
! SYBASE_CT_LIBS=-L$SYBASE_CT_LIBDIR -lct64
else
! PHP_ADD_LIBRARY(cs64,, SYBASE_CT_SHARED_LIBADD)
! PHP_ADD_LIBRARY(ct64,, SYBASE_CT_SHARED_LIBADD)
! PHP_ADD_LIBRARY(comn64,, SYBASE_CT_SHARED_LIBADD)
! PHP_ADD_LIBRARY(intl64,, SYBASE_CT_SHARED_LIBADD)

! SYBASE_CT_LIBS=-L$SYBASE_CT_LIBDIR -lcs64 -lct64 -lcomn64
-lintl64

! PHP_CHECK_LIBRARY(tcl64, netg_errstr, [
!   PHP_ADD_LIBRARY(tcl64,,SYBASE_CT_SHARED_LIBADD)
  ],[
!   PHP_ADD_LIBRARY(sybtcl64,,SYBASE_CT_SHARED_LIBADD)
  ],[
$SYBASE_CT_LIBS
  ])

! PHP_CHECK_LIBRARY(insck64, insck__getVdate,
[PHP_ADD_LIBRARY(insck64,,
SYBASE_CT_SHARED_LIBADD)],[],[-L$SYBASE_CT_LIBDIR])
! PHP_CHECK_LIBRARY(insck64, bsd_tcp,
[PHP_ADD_LIBRARY(insck64,,
SYBASE_CT_SHARED_LIBADD)],[],[-L$SYBASE_CT_LIBDIR])
fi
  fi
--- 29,56 
else
  AC_MSG_ERROR([ctpublic.h missing!])
fi

PHP_ADD_LIBPATH($SYBASE_CT_LIBDIR, SYBASE_CT_SHARED_LIBADD)
if test -f $SYBASE_CT_INCDIR/tds.h; then
  PHP_ADD_LIBRARY(ct,, SYBASE_CT_SHARED_LIBADD)
! SYBASE_CT_LIBS=-L$SYBASE_CT_LIBDIR -lct
else
! PHP_ADD_LIBRARY(cs,, SYBASE_CT_SHARED_LIBADD)
! PHP_ADD_LIBRARY(ct,, SYBASE_CT_SHARED_LIBADD)
! PHP_ADD_LIBRARY(comn,, SYBASE_CT_SHARED_LIBADD)
! PHP_ADD_LIBRARY(intl,, SYBASE_CT_SHARED_LIBADD)

! SYBASE_CT_LIBS=-L$SYBASE_CT_LIBDIR -lcs -lct -lcomn -lintl

! PHP_CHECK_LIBRARY(tcl, netg_errstr, [
!   PHP_ADD_LIBRARY(tcl,,SYBASE_CT_SHARED_LIBADD)
  ],[
!   PHP_ADD_LIBRARY(sybtcl,,SYBASE_CT_SHARED_LIBADD)
  ],[
$SYBASE_CT_LIBS
  ])

! PHP_CHECK_LIBRARY(insck, insck__getVdate,
[PHP_ADD_LIBRARY(insck,,
SYBASE_CT_SHARED_LIBADD)],[],[-L$SYBASE_CT_LIBDIR])
! PHP_CHECK_LIBRARY(insck, bsd_tcp,
[PHP_ADD_LIBRARY(insck,,
SYBASE_CT_SHARED_LIBADD)],[],[-L$SYBASE_CT_LIBDIR])
fi
  fi


Previous Comments:


[2006-01-11 12:05:06] dbaffaleuf at ixis-cib dot com

Hi, thx for your reply.

Though, it does not work either with the 5.1. CVS snapshot you
provided. I get exactly the same error message:

Warning: sybase_query(): Sybase:  Client message:  (): user api layer:
internal common library error: The bind of result set item 1 resulted
in truncation. (severity 116) in
/msmorzine/sgbd/contrib/src/php5.1-200601110930/MKTEST/bin/test_sybase_ct.php
on line 4
resource(4) of type (sybase-ct link)
bool(false)

Warning: sybase_fetch_row(): supplied argument is not a valid Sybase
result resource in
/msmorzine/sgbd/contrib/src/php5.1-200601110930/MKTEST/bin/test_sybase_ct.php
on line 8



[2006-01-09 16:17:45] dbaffaleuf at ixis-cib dot com

Description:

Acutally I have the problem both in PHP 4.4.1 and 4.4.2RC3


Always returns a correct resource id for the handler, but FALSE for the
query (see the following code)

The Sybase OpenClient warning code suggest an overflow in the
CS_DATAFMT.maxlength C struct. When returning, the datalength is sized
whether the type is CS_NUMERIC, CS_MONEY, etc... in the
php_sybase_fetch_result_set() fonction (src: php_sybase_ct.c). 

Works fine in DB-LIB.

The configure :

./configure \
   
--prefix=/msmorzine/sgbd/contrib/src/php4-STABLE-200601091335/MKTEST   
\
   
--with-sybase-ct=/msmorzine/sgbd/MX_MT_MSMORZINE/ASE1253/OCS-12_5/devlib
\
--enable-static=sybase-ct \
   
--with-config-file-path=/msmorzine/sgbd/contrib/src/php4-STABLE-200601091335/MKTEST
\
--with-apxs2=/msmorzine/sgbd/contrib/bin/apxs   \
--with-gd=/msmorzine/sgbd/contrib/ \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm



Reproduce code:
---
The following code:

$STR= select name from syslogins;
$DBH= @sybase_connect(MX_MT_MSMORZINE,sa, mypassword);
$QUERY  = sybase_query($STR,$DBH);
var_dump($DBH);
var_dump($QUERY);

while($row = sybase_fetch_row($QUERY)) {
while(list($k, $v) = each($row)) {
echo