#!perl -w use Test::More; use strict; use DBI qw(:sql_types); use Data::Dumper; unshift @INC ,'t'; require 'nchar_test_lib.pl'; $| = 1; my $dsn = oracle_test_dsn(); my $dbuser = $ENV{ORACLE_USERID} || 'scott/tiger'; my $dbh = DBI->connect($dsn, $dbuser, '', {PrintError => 0 }); if ($dbh) { plan tests=>21; $dbh->{RaiseError} = 1; } else { plan skip_all => "Unable to connect to Oracle"; } note("type_info_all\n"); my @types = $dbh->type_info(SQL_ALL_TYPES); ok(@types >= 8, 'more than 8 types'); note(Dumper( @types )); note("tables():\n"); my @tables = $dbh->tables; note(@tables." tables\n"); ok(scalar @tables, 'tables'); my @table_info_params = ( [ 'schema list', undef, '%', undef, undef ], [ 'type list', undef, undef, undef, '%' ], [ 'table list', undef, undef, undef, undef ], ); foreach my $table_info_params (@table_info_params) { my ($name) = shift @$table_info_params; my $start = time; note("$name: table_info(".DBI::neat_list($table_info_params).")\n"); my $table_info_sth = $dbh->table_info(@$table_info_params); ok($table_info_sth, 'table_info'); my $data = $table_info_sth->fetchall_arrayref; ok($data, 'table_info fetch'); ok(scalar @$data, 'table_info data returned'); my $dur = time - $start; note("$name: ".@$data." rows, $dur seconds\n"); } my $sql_dbms_version = $dbh->get_info(18); ok($sql_dbms_version, 'dbms_version'); note "sql_dbms_version=$sql_dbms_version"; like($sql_dbms_version, qr/^\d+\.\d+\.\d+$/, 'matched'); # test long DEFAULT from column_info SKIP: { my $table = "dbd_ora__drop_me" . ($ENV{DBD_ORACLE_SEQ}||''); eval { $dbh->do("DROP TABLE $table") }; my $created = eval { $dbh->do("CREATE TABLE $table (testcol NUMBER(15) DEFAULT to_number(decode(substrb(userenv('CLIENT_INFO'),1,1),' ', null,substrb(userenv('CLIENT_INFO'),1,10))))") }; skip 'could not create test table', 8 unless $created; is $dbh->{LongReadLen}, 80, 'LongReadLen is at default'; ok((my $sth = $dbh->column_info(undef, '%', uc($table), '%')), 'column_info sth'); is $dbh->{LongReadLen}, 80, 'LongReadLen still at default'; ok((my $info = eval { $sth->fetchrow_hashref }), 'sth->fetchrow_hashref lived') or diag $@; is $info->{COLUMN_DEF}, "to_number(decode(substrb(userenv('CLIENT_INFO'),1,1),' ', null,substrb(userenv('CLIENT_INFO'),1,10)))", 'long DEFAULT matched'; ok($sth->finish, 'sth->finish'); is $dbh->{LongReadLen}, 80, 'LongReadLen still at default'; ok($dbh->do("DROP TABLE $table"), 'drop table'); } $dbh->disconnect; exit 0;