On Wed, 09 Nov 2011 19:41:33 +0000, "Martin J. Evans" <martin.ev...@easysoft.com> wrote:
> Your going to have a lot of problems with this test code and DBD::Unify > as we previously discovered that DBD::Unify does not decode the data > coming back from the database itself but it can be decoded by any Perl > script using DBD::Unify into the correct data. Any chance you could > change the test code to print out the results of type_info_all for > DBD::Unify and send me them? Right, I have this: --8<--- $type_info_all = [ { TYPE_NAME => 0, DATA_TYPE => 1, COLUMN_SIZE => 2, LITERAL_PREFIX => 3, LITERAL_SUFFIX => 4, CREATE_PARAMS => 5, NULLABLE => 6, CASE_SENSITIVE => 7, SEARCHABLE => 8, UNSIGNED_ATTRIBUTE => 9, FIXED_PREC_SCALE => 10, AUTO_UNIQUE_VALUE => 11, LOCAL_TYPE_NAME => 12, MINIMUM_SCALE => 13, MAXIMUM_SCALE => 14, SQL_DATA_TYPE => 15, SQL_DATETIME_SUB => 16, NUM_PREC_RADIX => 17, INTERVAL_PRECISION => 18, }, # TYPE_NAME DATA_TYPE SIZE PFX SFX PARAMS N C S UNSIG FPS AUTO LOCAL MINSC MAXSC SDT SDS RADIX PREC [ "UNKNOWN", 0, undef,undef,undef,undef, 1,0,3,undef,undef,undef,undef,undef,undef,undef,undef,undef,undef, ], # [ "GIANT AMOUNT", undef,undef,undef,"PRECISION,SCALE",1,0,3,0, undef,undef,undef,2, 2, undef,undef,undef,undef, ], [ "HUGE AMOUNT", -207, undef,undef,undef,"PRECISION,SCALE",1,0,3,0, undef,undef,undef,2, 2, undef,undef,undef,undef, ], [ "AMOUNT", -206, undef,undef,undef,"PRECISION,SCALE",1,0,3,0, undef,undef,undef,2, 2, undef,undef,undef,undef, ], [ "VARBINARY", SQL_VARBINARY, undef,"'", ,"'", undef, 1,0,3,undef,undef,undef,undef,undef,undef,undef,undef,undef,undef, ], [ "BINARY", SQL_BINARY, undef,undef,undef,undef, 1,0,3,0, undef,undef,undef,0, undef,undef,undef,undef,undef, ], [ "CHAR", SQL_CHAR, undef,undef,undef,"PRECISION", 1,0,3,0, undef,undef,undef,0, undef,undef,undef,undef,undef, ], [ "CURRENCY", -218, undef,undef,undef,"PRECISION,SCALE",1,0,3,0, 2, undef,undef,0, 8, undef,undef,undef,undef, ], [ "TIMESTAMP", SQL_TIMESTAMP, undef,undef,undef,undef, 1,0,3,undef,undef,undef,undef,undef,undef,undef,undef,undef,undef, ], [ "DATE", SQL_DATE, undef,undef,undef,undef, 1,0,3,undef,undef,undef,undef,undef,undef,undef,undef,undef,undef, ], [ "DECIMAL", SQL_DECIMAL, undef,undef,undef,"PRECISION", 1,0,3,0, undef,undef,undef,0, undef,undef,undef,undef,undef, ], [ "DOUBLE PRECISION", SQL_DOUBLE, undef,undef,undef,"PRECISION", 1,0,3,0, undef,undef,undef,0, undef,undef,undef,undef,undef, ], [ "FLOAT", SQL_FLOAT, undef,undef,undef,"PRECISION", 1,0,3,0, undef,undef,undef,0, undef,undef,undef,undef,undef, ], [ "HUGE INTEGER", SQL_BIGINT, undef,undef,undef,"PRECISION", 1,0,3,0, undef,undef,undef,0, 0, undef,undef,undef,undef, ], [ "INTEGER", SQL_INTEGER, undef,undef,undef,"PRECISION", 1,0,3,0, undef,undef,undef,0, undef,undef,undef,undef,undef, ], [ "NUMERIC", SQL_NUMERIC, undef,undef,undef,"PRECISION", 1,0,3,0, undef,undef,undef,0, 0, undef,undef,undef,undef, ], [ "REAL", SQL_REAL, undef,undef,undef,"PRECISION", 1,0,3,0, undef,undef,undef,0, undef,undef,undef,undef,undef, ], [ "SMALLINT", SQL_SMALLINT, undef,undef,undef,"PRECISION", 1,0,3,0, undef,undef,undef,0, 0, undef,undef,undef,undef, ], [ "TEXT", SQL_LONGVARCHAR, undef,"'", ,"'", undef, 1,0,3,undef,undef,undef,undef,undef,undef,undef,undef,undef,undef, ], [ "TIME", SQL_TIME, undef,undef,undef,undef, 1,0,3,undef,undef,undef,undef,undef,undef,undef,undef,undef,undef, ], ]; my %odbc_types = map { ( $_->[0] => $_->[1], $_->[1] => $_->[0] ) } [ -5 => "BIGINT" ], # SQL_BIGINT [ -3 => "VARBINARY" ], # SQL_VARBINARY [ -2 => "BINARY" ], # SQL_BINARY [ -1 => "TEXT" ], # SQL_LONGVARCHAR [ 0 => "UNKNOWN_TYPE" ], # SQL_UNKNOWN_TYPE [ 1 => "CHAR" ], # SQL_CHAR [ 2 => "NUMERIC" ], # SQL_NUMERIC [ 3 => "DECIMAL" ], # SQL_DECIMAL [ 4 => "INTEGER" ], # SQL_INTEGER [ 5 => "SMALLINT" ], # SQL_SMALLINT [ 6 => "FLOAT" ], # SQL_FLOAT [ 7 => "REAL" ], # SQL_REAL [ 8 => "DOUBLE PRECISION"], # SQL_DOUBLE [ 9 => "DATE" ], # SQL_DATE [ 10 => "TIME" ], # SQL_TIME [ 11 => "TIMESTAMP" ], # SQL_TIMESTAMP [ 12 => "VARCHAR" ], # SQL_VARCHAR [ 16 => "BOOLEAN" ], # SQL_BOOLEAN [ 19 => "ROW" ], # SQL_ROW [ 20 => "REF" ], # SQL_REF [ 30 => "BLOB" ], # SQL_BLOB [ 40 => "CLOB" ], # SQL_CLOB ; $odbc_types{DOUBLE} = $odbc_types{"DOUBLE PRECISION"}; my %uni_types = map { ( $_->[0] => $_->[1], $_->[1] => $_->[0] ) } [ -18 => "CURRENCY" ], # SQLAMT64 [ -17 => "HUGE INTEGER" ], # SQLINT64 [ -12 => "BYTE" ], # SQLBYTE [ -11 => "HUGE DATE" ], # SQLHDATE [ -10 => "BINARY" ], # SQLBINARY [ -9 => "TEXT" ], # SQLTEXT [ -7 => "TIME" ], # SQLSMTIME [ -6 => "HUGE AMOUNT" ], # SQLHUGEAMT [ -4 => "AMOUNT" ], # SQLAMOUNT [ -3 => "DATE" ], # SQLDATE [ 0 => "NOTYPE" ], # SQLNOTYPE [ 1 => "CHAR" ], # SQLCHAR [ 2 => "NUMERIC" ], # SQLNUMERIC [ 3 => "DECIMAL" ], # SQLDECIMAL [ 4 => "INTEGER" ], # SQLINTEGER [ 5 => "SMALLINT" ], # SQLSMINT [ 6 => "FLOAT" ], # SQLFLOAT [ 7 => "REAL" ], # SQLREAL [ 8 => "DOUBLE PRECISION"], # SQLDBLPREC ; $uni_types{CHARACTER} = $uni_types{CHAR}; $uni_types{DOUBLE} = $uni_types{"DOUBLE PRECISION"}; sub odbc_type { my $t = shift; defined $t or return 0; $t = $odbc_types{uc $t} || $t; return $t; } # uni_type sub uni_type { my $t = shift; defined $t or return 0; $t = $uni_types{uc $t} || $t; return $t; } # uni_type -->8--- which shows I have set up the DATA_TYPE, not the SQL_DATA_TYPE shall I just copy DATA_TYPE to SQL_DATA_TYPE? -- H.Merijn Brand http://tux.nl Perl Monger http://amsterdam.pm.org/ using 5.00307 through 5.14 and porting perl5.15.x on HP-UX 10.20, 11.00, 11.11, 11.23 and 11.31, OpenSuSE 10.1, 11.0 .. 11.4 and AIX 5.2 and 5.3. http://mirrors.develooper.com/hpux/ http://www.test-smoke.org/ http://qa.perl.org http://www.goldmark.org/jeff/stupid-disclaimers/