DBIx-Class-Schema-Loader
view release on metacpan or search on metacpan
t/10_08sqlanywhere_common.t view on Meta::CPAN
'bit varying(20)'
=> { data_type => 'varbit', size => 20 },
# Date and Time Types
'date' => { data_type => 'date' },
'datetime' => { data_type => 'datetime' },
'smalldatetime'
=> { data_type => 'smalldatetime' },
'timestamp' => { data_type => 'timestamp' },
# rewrite 'current timestamp' as 'current_timestamp'
'timestamp default current timestamp'
=> { data_type => 'timestamp', default_value => \'current_timestamp',
original => { default_value => \'current timestamp' } },
'time' => { data_type => 'time' },
# String Types
'char' => { data_type => 'char', size => 1 },
'char(11)' => { data_type => 'char', size => 11 },
'nchar' => { data_type => 'nchar', size => 1 },
'nchar(11)' => { data_type => 'nchar', size => 11 },
'varchar' => { data_type => 'varchar', size => 1 },
'varchar(20)' => { data_type => 'varchar', size => 20 },
'char varying(20)'
=> { data_type => 'varchar', size => 20 },
'character varying(20)'
=> { data_type => 'varchar', size => 20 },
'nvarchar(20)' => { data_type => 'nvarchar', size => 20 },
'xml' => { data_type => 'xml' },
'uniqueidentifierstr'
=> { data_type => 'uniqueidentifierstr' },
# Binary types
'binary' => { data_type => 'binary', size => 1 },
'binary(20)' => { data_type => 'binary', size => 20 },
'varbinary' => { data_type => 'varbinary', size => 1 },
'varbinary(20)'=> { data_type => 'varbinary', size => 20 },
'uniqueidentifier'
=> { data_type => 'uniqueidentifier' },
# Blob types
'long binary' => { data_type => 'long binary' },
'image' => { data_type => 'image' },
'long varchar' => { data_type => 'long varchar' },
'text' => { data_type => 'text' },
'long nvarchar'=> { data_type => 'long nvarchar' },
'ntext' => { data_type => 'ntext' },
},
extra => {
create => [
# 4 through 8 are used for the multi-schema tests
q{
create table sqlanywhere_loader_test9 (
id int identity not null primary key
)
},
q{
create table sqlanywhere_loader_test10 (
id int identity not null primary key,
nine_id int,
foreign key (nine_id) references sqlanywhere_loader_test9(id)
on delete cascade on update set null
)
},
],
drop => [ qw/sqlanywhere_loader_test9 sqlanywhere_loader_test10/ ],
count => 4 + 30 * 2,
run => sub {
SKIP: {
$schema = $_[0];
my $self = $_[3];
# test on delete/update fk clause introspection
ok ((my $rel_info = $schema->source('SqlanywhereLoaderTest10')->relationship_info('nine')),
'got rel info');
is $rel_info->{attrs}{on_delete}, 'CASCADE',
'ON DELETE clause introspected correctly';
is $rel_info->{attrs}{on_update}, 'SET NULL',
'ON UPDATE clause introspected correctly';
is $rel_info->{attrs}{is_deferrable}, 1,
'is_deferrable defaults to 1';
my $connect_info = [@$self{qw/dsn user password/}];
my $dbh = $schema->storage->dbh;
try {
$dbh->do("CREATE USER dbicsl_test1 identified by 'dbicsl'");
}
catch {
$schemas_created = 0;
skip "no CREATE USER privileges", 30 * 2;
};
$dbh->do(<<"EOF");
CREATE TABLE dbicsl_test1.sqlanywhere_loader_test4 (
id INT IDENTITY NOT NULL PRIMARY KEY,
value VARCHAR(100)
)
EOF
$dbh->do(<<"EOF");
CREATE TABLE dbicsl_test1.sqlanywhere_loader_test5 (
id INT IDENTITY NOT NULL PRIMARY KEY,
value VARCHAR(100),
four_id INTEGER NOT NULL,
CONSTRAINT loader_test5_uniq UNIQUE (four_id),
FOREIGN KEY (four_id) REFERENCES dbicsl_test1.sqlanywhere_loader_test4 (id)
)
EOF
$dbh->do("CREATE USER dbicsl_test2 identified by 'dbicsl'");
$dbh->do(<<"EOF");
CREATE TABLE dbicsl_test2.sqlanywhere_loader_test5 (
pk INT IDENTITY NOT NULL PRIMARY KEY,
value VARCHAR(100),
four_id INTEGER NOT NULL,
CONSTRAINT loader_test5_uniq UNIQUE (four_id),
FOREIGN KEY (four_id) REFERENCES dbicsl_test1.sqlanywhere_loader_test4 (id)
)
EOF
( run in 0.505 second using v1.01-cache-2.11-cpan-39bf76dae61 )