1use strict; 2use warnings; 3 4use Test::More; 5use lib qw(t/lib); 6use DBICTest; 7 8my ($dsn, $user, $pass) = @ENV{map { "DBICTEST_DB2_400_${_}" } qw/DSN USER PASS/}; 9 10#warn "$dsn $user $pass"; 11 12# Probably best to pass the DBQ option in the DSN to specify a specific 13# libray. Something like: 14# DBICTEST_DB2_400_DSN='dbi:ODBC:dsn=MyAS400;DBQ=MYLIB' 15plan skip_all => 'Set $ENV{DBICTEST_DB2_400_DSN}, _USER and _PASS to run this test' 16 unless ($dsn && $user); 17 18plan tests => 6; 19 20my $schema = DBICTest::Schema->connect($dsn, $user, $pass); 21 22my $dbh = $schema->storage->dbh; 23 24eval { $dbh->do("DROP TABLE artist") }; 25 26$dbh->do(<<''); 27CREATE TABLE artist ( 28 artistid INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), 29 name VARCHAR(255), 30 rank INTEGER default 13 not null, 31 charfield CHAR(10) 32) 33 34# Just to test loading, already in Core 35$schema->class('Artist')->load_components('PK::Auto'); 36 37# test primary key handling 38my $new = $schema->resultset('Artist')->create({ name => 'foo' }); 39ok($new->artistid, "Auto-PK worked"); 40 41# test LIMIT support 42for (1..6) { 43 $schema->resultset('Artist')->create({ name => 'Artist ' . $_ }); 44} 45my $it = $schema->resultset('Artist')->search( {}, 46 { rows => 3, 47 order_by => 'artistid' 48 } 49); 50is( $it->count, 3, "LIMIT count ok" ); 51is( $it->next->name, "foo", "iterator->next ok" ); 52$it->next; 53is( $it->next->name, "Artist 2", "iterator->next ok" ); 54is( $it->next, undef, "next past end of resultset ok" ); 55 56my $test_type_info = { 57 'artistid' => { 58 'data_type' => 'INTEGER', 59 'is_nullable' => 0, 60 'size' => 10 61 }, 62 'name' => { 63 'data_type' => 'VARCHAR', 64 'is_nullable' => 1, 65 'size' => 255 66 }, 67 'rank' => { 68 'data_type' => 'INTEGER', 69 'is_nullable' => 0, 70 'size' => 10, 71 }, 72 'charfield' => { 73 'data_type' => 'CHAR', 74 'is_nullable' => 1, 75 'size' => 10 76 }, 77}; 78 79 80my $type_info = $schema->storage->columns_info_for('artist'); 81is_deeply($type_info, $test_type_info, 'columns_info_for - column data types'); 82 83# clean up our mess 84END { 85 my $dbh = eval { $schema->storage->_dbh }; 86 $dbh->do("DROP TABLE artist") if $dbh; 87} 88