* Fix parsing of MySQL column comments (RT#83380)
* Fix multi-line comments in YAML, JSON and PostgreSQL producers
* Fix identifier quoting in PostgreSQL diff producer
+ * Fix incorrect type conversion from various BigInt AutoIncrement to the
+ PostgreSQL-specific bigserial (GH#72)
* Fix missing semicolons between PostGIS statements
* Fix string and identifier quoting in PostGIS statements
* Fix intermittent test failures (RT#108460)
$data_type = 'character varying';
}
elsif ( $field->is_auto_increment ) {
- if ( defined $size[0] && $size[0] > 11 ) {
+ if ( (defined $size[0] && $size[0] > 11) or $data_type eq 'bigint' ) {
$data_type = 'bigserial';
}
else {
my $drop_field = SQL::Translator::Producer::PostgreSQL::drop_field($field2);
is($drop_field, 'ALTER TABLE mytable DROP COLUMN myfield', 'Drop field works');
+my $field_serial = SQL::Translator::Schema::Field->new( name => 'serial_field',
+ table => $table,
+ data_type => 'INT',
+ is_auto_increment => 1,
+ is_nullable => 0 );
+
+my $field_serial_sql = SQL::Translator::Producer::PostgreSQL::create_field($field_serial);
+
+is($field_serial_sql, 'serial_field serial NOT NULL', 'Create serial field works');
+
+my $field_bigserial = SQL::Translator::Schema::Field->new( name => 'bigserial_field',
+ table => $table,
+ data_type => 'BIGINT',
+ is_auto_increment => 1,
+ is_nullable => 0 );
+
+my $field_bigserial_sql = SQL::Translator::Producer::PostgreSQL::create_field($field_bigserial);
+
+is($field_bigserial_sql, 'bigserial_field bigserial NOT NULL', 'Create bigserial field works (from bigint type)');
+
+$field_bigserial = SQL::Translator::Schema::Field->new( name => 'bigserial_field',
+ table => $table,
+ data_type => 'INT',
+ is_auto_increment => 1,
+ is_nullable => 0,
+ size => 12 );
+
+$field_bigserial_sql = SQL::Translator::Producer::PostgreSQL::create_field($field_bigserial);
+
+is($field_bigserial_sql, 'bigserial_field bigserial NOT NULL', 'Create bigserial field works (based on size)');
+
my $field3 = SQL::Translator::Schema::Field->new( name => 'time_field',
table => $table,
data_type => 'TIME',