#=============================================================================
BEGIN {
- maybe_plan(150, 'SQL::Translator::Parser::XML::SQLFairy');
+ maybe_plan(238, 'SQL::Translator::Parser::XML::SQLFairy');
}
my $testschema = "$Bin/data/xml/schema.xml";
add_drop_table => 1,
);
die "Can't find test schema $testschema" unless -e $testschema;
-my $sql = $sqlt->translate(
+
+my $sql;
+{
+ my @w;
+ local $SIG{__WARN__} = sub { push @w, $_[0] if $_[0] =~ /The database_event tag is deprecated - please use database_events/ };
+
+ $sql = $sqlt->translate(
from => 'XML-SQLFairy',
to => 'MySQL',
filename => $testschema,
-) or die $sqlt->error;
-print $sql if DEBUG;
+ ) or die $sqlt->error;
+ print $sql if DEBUG;
+
+ ok (@w, 'database_event deprecation warning issued');
+}
# Test the schema objs generted from the XML
#
tables => [
{
name => "Basic",
+ options => [ { ENGINE => 'InnoDB' } ],
extra => {
foo => "bar",
hello => "world",
bar => "baz",
- mysql_table_type => "InnoDB",
},
fields => [
{
is_nullable => 0,
default_value => "hello",
size => 100,
+ is_unique => 1,
},
{
name => "description",
{
name => "email",
data_type => "varchar",
- size => 255,
+ size => 500,
is_unique => 1,
default_value => undef,
is_nullable => 1,
data_type => "varchar",
default_value => undef,
is_nullable => 1,
+ size => 255,
},
{
name => "explicitemptystring",
data_type => "varchar",
default_value => "",
is_nullable => 1,
+ size => 255,
},
{
name => "emptytagdef",
default_value => "",
is_nullable => 1,
comments => "Hello emptytagdef",
+ size => 255,
+ },
+ {
+ name => "another_id",
+ data_type => "int",
+ size => "10",
+ default_value => 2,
+ is_nullable => 1,
+ is_foreign_key => 1,
+ },
+ {
+ name => "timest",
+ data_type => "timestamp",
+ size => "0",
+ is_nullable => 1,
},
],
constraints => [
name => 'emailuniqueindex',
type => UNIQUE,
fields => ["email"],
- }
+ },
+ {
+ name => 'very_long_index_name_on_title_field_which_should_be_truncated_for_various_rdbms',
+ type => UNIQUE,
+ fields => ["title"],
+ },
+ {
+ type => FOREIGN_KEY,
+ fields => ["another_id"],
+ reference_table => "Another",
+ reference_fields => ["id"],
+ name => 'Basic_fk'
+ },
],
indices => [
{
},
},
],
- } # end table Basic
+ }, # end table Basic
+ {
+ name => "Another",
+ extra => {
+ foo => "bar",
+ hello => "world",
+ bar => "baz",
+ },
+ options => [ { ENGINE => 'InnoDB' } ],
+ fields => [
+ {
+ name => "id",
+ data_type => "int",
+ default_value => undef,
+ is_nullable => 0,
+ size => 10,
+ is_primary_key => 1,
+ is_auto_increment => 1,
+ },
+ {
+ name => "num",
+ data_type => "numeric",
+ default_value => undef,
+ size => '10,2',
+ },
+ ],
+ }, # end table Another
], # end tables
views => [
{
name => 'email_list',
- sql => "SELECT email FROM Basic WHERE email IS NOT NULL",
+ sql => "SELECT email FROM Basic WHERE (email IS NOT NULL)",
fields => ['email'],
extra => {
foo => "bar",
{
name => 'foo_trigger',
perform_action_when => 'after',
- database_event => 'insert',
- on_table => 'foo',
+ database_events => 'insert',
+ on_table => 'Basic',
action => 'update modified=timestamp();',
extra => {
foo => "bar",
bar => "baz",
},
},
+ {
+ name => 'bar_trigger',
+ perform_action_when => 'before',
+ database_events => 'insert,update',
+ on_table => 'Basic',
+ action => 'update modified2=timestamp();',
+ extra => {
+ hello => "aliens",
+ },
+ },
],
procedures => [