#=============================================================================
BEGIN {
- maybe_plan(72,
+ maybe_plan(73,
'YAML',
'SQL::Translator::Producer::MySQL',
'Test::Differences',
thing:
name: thing
extra:
- mysql_charset: latin1
- mysql_collate: latin1_danish_ci
+ mysql_charset: latin1
+ mysql_collate: latin1_danish_ci
order: 1
fields:
id:
thing3:
name: some.thing3
extra:
- order: 2
+ order: 3
fields:
id:
name: id
};
for my $size (keys %$number_sizes) {
my $expected = $number_sizes->{$size};
- my $number_field = SQL::Translator::Schema::Field->new(
+ my $number_field = SQL::Translator::Schema::Field->new(
name => "numberfield_$expected",
table => $table,
data_type => 'number',
size => $size,
is_nullable => 1,
is_foreign_key => 0,
- is_unique => 0
+ is_unique => 0
);
is(
my $varchars;
for my $size (qw/255 256 65535 65536/) {
- $varchars->{$size} = SQL::Translator::Schema::Field->new(
+ $varchars->{$size} = SQL::Translator::Schema::Field->new(
name => "vch_$size",
table => $table,
data_type => 'varchar',
is (
SQL::Translator::Producer::MySQL::create_field($varchars->{255}, { mysql_version => 5.000003 }),
- 'vch_255 varchar(255)',
+ 'vch_255 varchar(255)',
'VARCHAR(255) is not substituted with TEXT for Mysql >= 5.0.3'
);
is (
SQL::Translator::Producer::MySQL::create_field($varchars->{255}, { mysql_version => 5.0 }),
- 'vch_255 varchar(255)',
+ 'vch_255 varchar(255)',
'VARCHAR(255) is not substituted with TEXT for Mysql < 5.0.3'
);
is (
SQL::Translator::Producer::MySQL::create_field($varchars->{255}),
- 'vch_255 varchar(255)',
+ 'vch_255 varchar(255)',
'VARCHAR(255) is not substituted with TEXT when no version specified',
);
is (
SQL::Translator::Producer::MySQL::create_field($varchars->{256}, { mysql_version => 5.000003 }),
- 'vch_256 varchar(256)',
+ 'vch_256 varchar(256)',
'VARCHAR(256) is not substituted with TEXT for Mysql >= 5.0.3'
);
is (
SQL::Translator::Producer::MySQL::create_field($varchars->{256}, { mysql_version => 5.0 }),
- 'vch_256 text',
+ 'vch_256 text',
'VARCHAR(256) is substituted with TEXT for Mysql < 5.0.3'
);
is (
SQL::Translator::Producer::MySQL::create_field($varchars->{256}),
- 'vch_256 text',
+ 'vch_256 text',
'VARCHAR(256) is substituted with TEXT when no version specified',
);
is (
SQL::Translator::Producer::MySQL::create_field($varchars->{65535}, { mysql_version => 5.000003 }),
- 'vch_65535 varchar(65535)',
+ 'vch_65535 varchar(65535)',
'VARCHAR(65535) is not substituted with TEXT for Mysql >= 5.0.3'
);
is (
SQL::Translator::Producer::MySQL::create_field($varchars->{65535}, { mysql_version => 5.0 }),
- 'vch_65535 text',
+ 'vch_65535 text',
'VARCHAR(65535) is substituted with TEXT for Mysql < 5.0.3'
);
is (
SQL::Translator::Producer::MySQL::create_field($varchars->{65535}),
- 'vch_65535 text',
+ 'vch_65535 text',
'VARCHAR(65535) is substituted with TEXT when no version specified',
);
is (
SQL::Translator::Producer::MySQL::create_field($varchars->{65536}, { mysql_version => 5.000003 }),
- 'vch_65536 text',
+ 'vch_65536 text',
'VARCHAR(65536) is substituted with TEXT for Mysql >= 5.0.3'
);
is (
SQL::Translator::Producer::MySQL::create_field($varchars->{65536}, { mysql_version => 5.0 }),
- 'vch_65536 text',
+ 'vch_65536 text',
'VARCHAR(65536) is substituted with TEXT for Mysql < 5.0.3'
);
is (
SQL::Translator::Producer::MySQL::create_field($varchars->{65536}),
- 'vch_65536 text',
+ 'vch_65536 text',
'VARCHAR(65536) is substituted with TEXT when no version specified',
);
quote_field_names => $qf,
};
-
+
my $alter_field = SQL::Translator::Producer::MySQL::alter_field($field1, $field2, $options);
is($alter_field, 'ALTER TABLE `mydb`.`mytable` CHANGE COLUMN `myfield` `myfield` VARCHAR(25) NOT NULL', 'Alter field works');
};
for my $size (keys %$number_sizes) {
my $expected = $number_sizes->{$size};
- my $number_field = SQL::Translator::Schema::Field->new(
+ my $number_field = SQL::Translator::Schema::Field->new(
name => "numberfield_$expected",
table => $table,
data_type => 'number',
size => $size,
is_nullable => 1,
is_foreign_key => 0,
- is_unique => 0
+ is_unique => 0
);
is(
my $varchars;
for my $size (qw/255 256 65535 65536/) {
- $varchars->{$size} = SQL::Translator::Schema::Field->new(
+ $varchars->{$size} = SQL::Translator::Schema::Field->new(
name => "vch_$size",
table => $table,
data_type => 'varchar',
is (
SQL::Translator::Producer::MySQL::create_field($varchars->{255}, { mysql_version => 5.000003, %$options }),
- '`vch_255` varchar(255)',
+ '`vch_255` varchar(255)',
'VARCHAR(255) is not substituted with TEXT for Mysql >= 5.0.3'
);
is (
SQL::Translator::Producer::MySQL::create_field($varchars->{255}, { mysql_version => 5.0, %$options }),
- '`vch_255` varchar(255)',
+ '`vch_255` varchar(255)',
'VARCHAR(255) is not substituted with TEXT for Mysql < 5.0.3'
);
is (
SQL::Translator::Producer::MySQL::create_field($varchars->{255}, $options),
- '`vch_255` varchar(255)',
+ '`vch_255` varchar(255)',
'VARCHAR(255) is not substituted with TEXT when no version specified',
);
is (
SQL::Translator::Producer::MySQL::create_field($varchars->{256}, { mysql_version => 5.000003, %$options }),
- '`vch_256` varchar(256)',
+ '`vch_256` varchar(256)',
'VARCHAR(256) is not substituted with TEXT for Mysql >= 5.0.3'
);
is (
SQL::Translator::Producer::MySQL::create_field($varchars->{256}, { mysql_version => 5.0, %$options }),
- '`vch_256` text',
+ '`vch_256` text',
'VARCHAR(256) is substituted with TEXT for Mysql < 5.0.3'
);
is (
SQL::Translator::Producer::MySQL::create_field($varchars->{256}, $options),
- '`vch_256` text',
+ '`vch_256` text',
'VARCHAR(256) is substituted with TEXT when no version specified',
);
is (
SQL::Translator::Producer::MySQL::create_field($varchars->{65535}, { mysql_version => 5.000003, %$options }),
- '`vch_65535` varchar(65535)',
+ '`vch_65535` varchar(65535)',
'VARCHAR(65535) is not substituted with TEXT for Mysql >= 5.0.3'
);
is (
SQL::Translator::Producer::MySQL::create_field($varchars->{65535}, { mysql_version => 5.0, %$options }),
- '`vch_65535` text',
+ '`vch_65535` text',
'VARCHAR(65535) is substituted with TEXT for Mysql < 5.0.3'
);
is (
SQL::Translator::Producer::MySQL::create_field($varchars->{65535}, $options),
- '`vch_65535` text',
+ '`vch_65535` text',
'VARCHAR(65535) is substituted with TEXT when no version specified',
);
is (
SQL::Translator::Producer::MySQL::create_field($varchars->{65536}, { mysql_version => 5.000003, %$options }),
- '`vch_65536` text',
+ '`vch_65536` text',
'VARCHAR(65536) is substituted with TEXT for Mysql >= 5.0.3'
);
is (
SQL::Translator::Producer::MySQL::create_field($varchars->{65536}, { mysql_version => 5.0, %$options }),
- '`vch_65536` text',
+ '`vch_65536` text',
'VARCHAR(65536) is substituted with TEXT for Mysql < 5.0.3'
);
is (
SQL::Translator::Producer::MySQL::create_field($varchars->{65536}, $options),
- '`vch_65536` text',
+ '`vch_65536` text',
'VARCHAR(65536) is substituted with TEXT when no version specified',
);
}
}
}
+
+{ # test for rt62250
+ my $table = SQL::Translator::Schema::Table->new(name => 'table');
+ $table->add_field(
+ SQL::Translator::Schema::Field->new( name => 'mypk',
+ table => $table,
+ data_type => 'INT',
+ size => 10,
+ default_value => undef,
+ is_auto_increment => 1,
+ is_nullable => 0,
+ is_foreign_key => 0,
+ is_unique => 1 ));
+
+ my $constraint = $table->add_constraint(fields => ['mypk'], type => 'PRIMARY_KEY');
+ my $options = {quote_table_names => '`'};
+ is(SQL::Translator::Producer::MySQL::alter_drop_constraint($constraint,$options),
+ 'ALTER TABLE `table` DROP PRIMARY KEY','valid drop primary key');
+}