test_requires 'DBD::SQLite' => '1.12';
test_requires 'File::Path' => 0;
test_requires 'IPC::Open3' => 0;
+test_requires 'Test::Exception';
requires 'File::Spec' => 0;
requires 'Scalar::Util' => 0;
}
sub _extra_column_info {
+ no warnings 'uninitialized';
my ($self, $info) = @_;
my %extra_info;
if ($info->{mysql_values}) {
$extra_info{extra}{list} = $info->{mysql_values};
}
+# XXX we need to distinguish between DEFAULT CURRENT_TIMESTAMP and DEFAULT 'foo'
+# somehow, but DBI column_info doesn't preserve quotes.
+ if ($info->{COLUMN_DEF} =~ /^CURRENT_TIMESTAMP\z/i) {
+ $extra_info{default_value} = \'CURRENT_TIMESTAMP';
+ }
return \%extra_info;
}
value ENUM('foo', 'bar', 'baz')
)
},
+ qq{
+ CREATE TABLE mysql_loader_test2 (
+ id INTEGER UNSIGNED NOT NULL PRIMARY KEY,
+ somedate TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ somestr VARCHAR(100) NOT NULL DEFAULT 'foo'
+ )
+ },
],
- drop => [ qw/ mysql_loader_test1 / ],
- count => 3,
+ drop => [ qw/ mysql_loader_test1 mysql_loader_test2 / ],
+ count => 5,
run => sub {
my ($schema, $monikers, $classes) = @_;
like($column_info->{data_type}, qr/^enum$/i, 'MySQL ENUM type');
is_deeply($column_info->{extra}->{list}, [qw/foo bar baz/],
'MySQL ENUM values');
+
+ $rs = $schema->resultset($monikers->{mysql_loader_test2});
+ my $column_info = $rs->result_source->column_info('somedate');
+ my $default = $column_info->{default_value};
+ ok (ref($default) eq 'SCALAR'),
+ 'CURRENT_TIMESTAMP default_value is a scalar ref';
+ like $$default, qr/^CURRENT_TIMESTAMP\z/i,
+ 'CURRENT_TIMESTAMP default eq "CURRENT_TIMESTAMP"';
},
}
);