Changes in DBD::Teradata 12.001 - update version string processing for new format - update test suite to detect R6.2, TW12 and add BIGINT and large precision decimal data types to test data/tables - disabled serverside vartext for TW12 (crashes the dbms) - disabled updatable cursor support for >= R6.2 (apparent change in CURSORHOST format ?) - change license to GPL Vers. 2 8.105 - restore proper character set info from PREPINFOX; adjust returned CHAR/VARCHAR precision as for 8.001 releases. EXCEPTION: prepare() will throw an error if a returned UNICODE field has an improperly truncated PRECISION value, due to Teradata's screwed up behavior for UNICODE fields > 21845 characters, which does not truncate the length at a whole multiple of 3, thereby resulting in ill-formed UTF8 encodings. Users are advised to limit returned UNICODE field sizes to less that 21300 characters. - restore tdat_CHARSET statement handle attribute; add tdat_CASESPECIFIC statement handle attribute - fix for issue with DBI clearing error info when existing $sth gets overwritten with undef (due to DESTROY() calling finish()) - fix connect() to attempt non-CLI logon is CLI not available 8.104 - fix DECIMAL PREPINFO prec/scale mask bits - fix Utility/ThreadUtility to inherit CLI adapter usage setting from control session - fix Utility/ThreadUtility to inherit no_bigint setting from control session - added reports (via Report closure) after each utility session logon - fix bad error reported on prepare() when attributes contains DBI-level attributes (would cause some DBI methods e.g., selectall_arrayref(), to improperly fail) - improve test data generator - added $dbh->tdat_ServerSideVartext() - added more complete/current DBI API test suite 8.103 - fix regression of tdat_no_cli - update Cli.xs to explicitly disable prototypes - fix some Cli.xs compile warnings on Linux - improve performance of regexen for query scanner - add explicit default database argument to all test suites - added support for DSN attributes - fix for $DBI::rows failure - fix TdTestArrayBind.pm for proper PH param types - update TdTestDataGen and test suites to properly generate test data files if not exists or empty - (UNTESTED) prelim support for R6.2 big precision DECIMAL and BIGINT types 8.102 - created separate DBD::Teradata::ThreadedUtil subclass of DBD::Teradata::Utility to isolate threaded operations for non-threaded environments; made various Utility methods true OO method calls - updated DBD::Teradata::Cli version for consistency - corrected some unfortunate language in an error message - fixed behavior of various utility test modules when Utility returned errors 8.101 - fixed bug with multistmt, formatted requests, which were not properly reporting end-of-statement via tdat_more_results - added tdat_param_types, ParamTypes statement handle attributes to return a hashref of parameter type information, keyed by parameter number or name, with hashref values of { TYPE, PRECISION, SCALE, IN_OR_OUT } for each parameter. - added support for the DBI ParamValues, ParamArrays statement handle attributes - added a warning to a $dbh when the tdat_vartext_in option has been specified, and the prepared statement has a non-string (i.e., other than CHAR, VARCHAR, or CLOB) USING parameter. - fixed ping() to properly not do ECHOTEST - extract get_info, type_info_all internals to separate, dynamically loaded module - fix for execution of small request after big SQL - convert CLI adapter to pure XS/C - moved PM/API template structures to separate module, loaded only when PM/API session is used - revised tdat_FirstAvailList() for better performance with CLI adapter - added execute_for_fetch() to support array binding - added tdat_respsize connection handle attribute to permit tunable response buffer size (replaces deprecated tdat_bufsize) - added tdat_reqsize connection handle attribute to permit tunable request buffer size (replaces the deprecated tdat_bufsize) - major refactoring of prepare()/execute() to suss out 6 years (!?!) of organic code grafting - changed DECIMAL input/output conversion to support Math::BigInt if available, rather than converting to/from float, which could lead to possible loss of precision, esp. when VARDECIMAL arrives - added tdat_no_bigint connection/statement attribute to disable using Math::BigInt for DECIMALs; if supplied on connection handle, all derived statement handles will inherit the value. Default false (use Math::BigInt). - enhancements to minimize buffer copying for large requests - fixed placeholder binding types behavior to conform to DBI spec: when a prior execution has applied explicit type info via bind_param[_array](), any succeding executions should reuse the type info unless it has been changed, including when using implicit parameters (ie, params supplied directly in execute[_array]()). Previously, implict binding would cause type info to be reset to VARCHAR for all PHs (note this only applies to '?' placeholders) - fixed bind_param[_array]() for DECIMAL types with full PRECISION and SCALE specifications; previously the precision/scale info was being ignored - fixed bug in execute() for implicit vartext input; previously parameters were not getting picked up after processing by bind_param() - updated SQLSTATE mapping, per R6.1 docs; the following changes/corrections occured: Error New Old Code SQLSTATE SQLSTATE ----- -------- -------- 2664 54001 54011 3628 42507 43507 3653 53026 53016 3737 01004 54001 - added tdat_progress attribute to $sth->execute_array() attributes; value is arrayref of [ $count, \&report_sub() ], which causes report_sub() to be called with the current total sent tuple count whenever the tuple count MOD $count is zero (ie, a progress indicator) - added RequestSize attribute for tdat_UtilitySetup for fastload/mload sessions. - added proper implementation of $handle->{Active} attribute - extracted encryption package to separate module, broke up into class hierarchy for various releases - added tdat_versnum connection attribute to report Teradata version as an integer *and* to permit the application to change the version-specific behavior of DBD::Teradata by setting tdat_versnum to a value other than the true server version. - in Crypt module, wrapped Math::BigInt::bmod() and Math::BigInt::bmodpow() in eval{} in order to overcome a problem with silent death on return from $drh->connect() on Linux. - fixed coredump issue with threaded MP fastload/mload on Solaris when using the CLI adapter. 8.001.04 - fix st::DESTROY to finish() if 'Active' - weaken() $dbh->{_stmts}{CursorName} reference to $sth if Scalar::Util::weaken() is available, in order to permit sth->DESTROY() to be called when sth goes out of scope in application - updated Makefile.PL to warn if Scalar::Util is not available - removed perldoc from Makefile.PL (some platforms don't install it) 8.001.03 - add full COPn suffix to logonsource string when COPn hostname resolution occurs - remove srand() from connection sequence; was causing clustering of initial rand() values - added COP reselection and connection retry if a selected COPn connection attempt fails, up to the number of COPs defined - added tdat_security connection() option to enable disable encrypted logons (eventually use to support security method, e.g., for SSO) - changed socket from pure filehandle to IO::Socket::INET object - added tdat_timeout connection attribute to set the socket timeout value; useful for limiting the wait for failed connects. !!!NOTE!!!: this attribute has no effect on Win32 platforms, due to issues with setting nonblocking behavior on sockets. 8.001.02 - patch handling of returned CHAR() data to trim spaces padding: required use of MULTIPARTREQ during prepare to retrieve PREPINFOX to get true column character set info, along with case-specific indicator. - added tdat_CHARSET metadata field, and TD_CS_ASCII, TD_CS_LATIN, TD_CS_UNICODE constants to return character set info. Note that the high bit of the tdat_CHARSET byte value indicates the case-specificity (i.e., 0x80 | TD_CS_UNICODE == case-specific UNICODE column) - added interactive mode to test.pl via -i option, which prompts user for y/n to continue or exit after each test 8.001a - added prelim support for get_info, type_info, type_info_all 8.001 - added proper servername, userid to logon source data - verified V2R6 encrypted logons in pure perl mode 7.111 - updated logon encryption for V2R5.1.1 - added flag to indicate either Crypt::Blowfish or Blowfish_PP - code cleanup - adjust CLI adapter for new TTU 8.0 header files 7.105 - fixed support for pure perl blowfish - added extended support for version numbers - removed CLI adapter missing warning 7.104 - fixed numeric server address regex - fix for inherited charsets on non-Intel 7.103 - removed accidental timelock 7.102 - support V2R6 beta version strings - fix for non-threaded Perls 7.101 - changed version numbering scheme to align with Teradata Warehouse release numbers - migrated DBD::TdatUtility to DBD::Teradata::Utility, since a new DBD/Teradata directory is now generated for the CLI and encryption packages - added CLI adapter to use native libraries *if available and if desired* - added write only tdat_no_cli attribute for connect(), and tdat_uses_cli readonly connection attribute - fixed memory leak in end-request processing - fixed hole in CONTINUE request processing when double buffering turned off, and fetch() needs CONTINUE on entry 2.3.5 - performance optimization: - converted internal impl object to arrayref instead of hashref - added sth->{_private} attribute as an arrayref of private sth attributes 2.3.4 - removed old_parse_using - added $reqno = $dbh->tdat_SendPassThru($msg); $msg = $dbh->tdat_RecvPassThru(); $socket = $dbh->tdat_GetSocket(); $platform = $dbh->tdat_GetPlatform(); connect() tdat_passthru attribute DBD::Teradata::Constants object $msg = $dbh->tdat_MakeEndRequest(); $sth->tdat_SetStmtNum($stmtnum); $sth->tdat_SetSummary($issum); \@row = $sth->tdat_Unpack($rec, $recmode); $sth->{tdat_TYPE_STRING} attribute returning arrayref of complete string form of column type - fixed authenticator byte order 2.3.3 - fixed hostname regex for dotted hostnames - fixed dbh lookup to use full DSN 2.3.2 - added Retry attribute to tdat_UtilitySetup - enhanced UTF8 support to convert input/output data from/to client's defined locale 2.3.1 - updated for DBI 1.42 compatibility 2.3.0 - require Perl 5.008 - require DBI 1.39 - UTF8 support: - added $dbh->tdat_CharSet, $sth->tdat_CharSet functions to return connection character set - added tdat_charset connection attribute - updated tdat_UtilitySetup to use utf8 encoded I/O for VARTEXT files if charset eq 'utf8' - updated driver to explicitly tag CHAR/VARCHAR results as utf8 if charset eq 'utf8' - updated test suite for UTF8 tests - thread support: - added CLONE method - updated tdat_UtilitySetup with threaded MP implementation - added threadtests to test suite 2.2.10 - support nowait mode for CREATE/REPLACE PROCEDURE - support ECHO statement - add tdat_Rewind function - add sth->cancel(), w/ async support - fix EXPLAIN with USING clause - fix sth->finish to undefine tdat_more_results - fix prepare for USING....CALL... - add support for named params in bind_param w/ USING clause - fix prepare of EXEC of macro that includes a CALL - fixed error reporting to use driver level error variables *** NOTE: this now results in consistent error reporting, but may alter behavior of scripts which previously did not turn off RaiseError/PrintError!!! - added tdat_inxact readonly connection property to indicate if the connection is currently in a transaction - fix to support USING with conditional ABORT - "installed" methods tdat_Realize, tdat_FirstAvailable, tdat_FirstAvailList, tdat_UtilitySetup, tdat_Rewind (don't need to use 'func(@args, 'tdat_XXX') any more) - fix prepare of 'HELP VOLATILE TABLE' when no volatile tables exist (DBMS returns an empty PREPINFO; DBD::Tdat now synths proper PREPARE info) - add support for the various INTERVAL types (USING clauses only!) - add Retry delay to UtilitySetup interface 2.2.9 - change tdat_UtilitySetup to support connection fd's > 31 - fix to correct returned fieldcount in PM/API - more taint fixes 2.2.8 - fix prior taint fix - fix for another taint warning 2.2.7 - fix for syntax error (& instead of &&) - fix for undefined value 2.2.6 - fix LoadCleanup AutoCommit enable code - fix MPUtilityLogon extra variable declaration - fix export dbh handle test 2.2.5 - fix for LoadCleanup when errdbh doesn't exist - fix Utility logon multiple variable declaration 2.2.4 - added individual Insert/Update/Delete counts for each MLOAD table returned in the ActivityCounts attributes hash provided in UtilitySetup - fixed MLOAD LoadRaw to read full allotment of records every time 2.2.3: - added support for non-DBI handles in FirstAvailList() - added $dbh->{tdat_hostid} as read-only attribute - added new dbccons.pl to support full duplex console utilities - fixed ordering of username and session number input parameters for MONITOR SESSION (Teradata docs provide incorrect info)