Hi
I'm trying to get DBD::Teradata to work.
The environment is:
Solaris 10
Perl 5.8.7 (64 bit)
DBI 1.604
DBD::Teradata 1.50
Teradata client - TTU 13.0 SOLARIS SPARC cliv2.13.00.00.00
Teradata Server - V2R6.1
The sequence of events is:
(1) I changed Makefile.Pl to get these settings for Libraires, Includes
and Compile flags
to allow it to compile.
The additional compile flags were taken from
use Config;
print $Config{ccflags}, "\n";
* DBD::Teradata will be built using the following
* directives:
* Libraries: -L/usr/lib/sparcv9 -lcliv2 -lnet -lsocket -lresolv
-ltdusr
* -L/opt/teradata/teragss/solaris-sparc/13.00.00.00/lib
-ltdgss
* Include files: -I/usr/include
* Compile flags: -D__error_t_defined=1 -xarch=generic64
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
(2) After I got it to compile, error 302 occurred when trying to connect
to a database.
I got more info by setting these 2 environment variables:
$ENV{NETRACE} = 1;
$ENV{COPANOMLOG} = "/tmp/install/teradata/log/netrace_$dte";
SCBinit: NOMEM[1] Error cur_req_buf_len is 65536 maxlen is 32768
DBCHCL: CLICON returned [302]
RCBinit: buffer too big [63000], max [32768]
DBCHCL: CLICON returned [302]
Error 302 is invalid buffer size.
I tried changing req_buf_len & resp_buf_len by setting tdat_reqsize
& tdat_respsize to 1024
when connecting but it didn't help.
$dbh = DBI->connect("dbi:Teradata:$dsn",
$user,
$pswd,
{ RaiseError => 0,
AutoCommit => 0,
PrintError => 1,
tdat_database => $db,
tdat_reqsize => 1024
tdat_respsize => 1024
}
I finally changed the code in Teradata.xs
from
dbcp->req_buf_len = 65536;
dbcp->resp_buf_len = 63000;
to
dbcp->req_buf_len = 32768;
dbcp->resp_buf_len = 32768;
(3) Changing the code allowed me to get passed Error 302.
But now I'm getting a Segmentation Fault.
Does anyone has any suggestions?
Any help is appreciated.
thank you
Albert Tom