[Bast-commits] r7307 - in
branches/DBIx-Class-Schema-Loader/current: .
lib/DBIx/Class/Schema/Loader/DBI t
caelum at dev.catalyst.perl.org
caelum at dev.catalyst.perl.org
Wed Aug 12 00:58:06 GMT 2009
Author: caelum
Date: 2009-08-12 00:58:06 +0000 (Wed, 12 Aug 2009)
New Revision: 7307
Added:
branches/DBIx-Class-Schema-Loader/current/t/11mysql_current_timestamp.t
Modified:
branches/DBIx-Class-Schema-Loader/current/Makefile.PL
branches/DBIx-Class-Schema-Loader/current/lib/DBIx/Class/Schema/Loader/DBI/mysql.pm
Log:
fix CURRENT_TIMESTAMP default for MySQL
Modified: branches/DBIx-Class-Schema-Loader/current/Makefile.PL
===================================================================
--- branches/DBIx-Class-Schema-Loader/current/Makefile.PL 2009-08-11 22:14:00 UTC (rev 7306)
+++ branches/DBIx-Class-Schema-Loader/current/Makefile.PL 2009-08-12 00:58:06 UTC (rev 7307)
@@ -9,6 +9,7 @@
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;
Modified: branches/DBIx-Class-Schema-Loader/current/lib/DBIx/Class/Schema/Loader/DBI/mysql.pm
===================================================================
--- branches/DBIx-Class-Schema-Loader/current/lib/DBIx/Class/Schema/Loader/DBI/mysql.pm 2009-08-11 22:14:00 UTC (rev 7306)
+++ branches/DBIx-Class-Schema-Loader/current/lib/DBIx/Class/Schema/Loader/DBI/mysql.pm 2009-08-12 00:58:06 UTC (rev 7307)
@@ -122,6 +122,7 @@
}
sub _extra_column_info {
+ no warnings 'uninitialized';
my ($self, $info) = @_;
my %extra_info;
@@ -134,6 +135,9 @@
if ($info->{mysql_values}) {
$extra_info{extra}{list} = $info->{mysql_values};
}
+ if ($info->{COLUMN_DEF} =~ /^CURRENT_TIMESTAMP\z/i) {
+ $extra_info{default_value} = \'CURRENT_TIMESTAMP';
+ }
return \%extra_info;
}
Added: branches/DBIx-Class-Schema-Loader/current/t/11mysql_current_timestamp.t
===================================================================
--- branches/DBIx-Class-Schema-Loader/current/t/11mysql_current_timestamp.t (rev 0)
+++ branches/DBIx-Class-Schema-Loader/current/t/11mysql_current_timestamp.t 2009-08-12 00:58:06 UTC (rev 7307)
@@ -0,0 +1,71 @@
+use strict;
+use lib qw(t/lib);
+use Test::More;
+use DBI;
+
+my $DUMP_DIR;
+BEGIN {
+ $DUMP_DIR = './t/_common_dump';
+}
+
+use lib $DUMP_DIR;
+use DBIx::Class::Schema::Loader 'make_schema_at', "dump_to_dir:$DUMP_DIR";
+use File::Path;
+use Test::Exception;
+
+my ($dsn, $user, $password) = map $ENV{"DBICTEST_MYSQL_$_"}, qw/DSN USER PASS/;
+
+if( !$dsn || !$user ) {
+ plan skip_all => 'You need to set the DBICTEST_MYSQL_DSN, _USER, and _PASS'
+ .' environment variables';
+}
+
+eval "use SQL::Translator '0.09007';";
+plan skip_all => 'SQL::Translator 0.09007 or greater required'
+ if $@;
+
+plan tests => 2;
+
+my $dbh = DBI->connect($dsn, $user, $password, {
+ RaiseError => 1, PrintError => 0
+});
+
+eval { $dbh->do('DROP TABLE loadertest') };
+$dbh->do(q{
+ CREATE TABLE loadertest (
+ id INT PRIMARY KEY,
+ somedate TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ somestr VARCHAR(100) NOT NULL DEFAULT 'foo'
+ ) Engine=InnoDB
+});
+# XXX there needs to be code to distinguish these two types of defaults
+
+rmtree $DUMP_DIR;
+
+make_schema_at(
+ 'TestSL::Schema',
+ {
+ use_namespaces => 1,
+ constraint => qr/^loadertest\z/
+ },
+ [ $dsn, $user, $password, ]
+);
+
+lives_ok { require TestSL::Schema } 'schema loads';
+
+$dbh->do('DROP TABLE loadertest');
+
+my $schema = TestSL::Schema->connect($dsn, $user, $password);
+
+my @warnings;
+local $SIG{__WARN__} = sub { push @warnings, shift };
+
+$schema->deploy;
+
+ok (not(grep /Invalid default/, @warnings)), 'default deployed';
+diag $_ for @warnings;
+
+END {
+ rmtree $DUMP_DIR;
+ eval { $dbh->do('DROP TABLE loadertest') };
+}
More information about the Bast-commits
mailing list