use strict;
use warnings;
use vars qw[ $DEBUG $WARN $VERSION %used_names ];
-$VERSION = '1.60';
+$VERSION = '1.59';
$DEBUG = 0 unless defined $DEBUG;
use base qw(SQL::Translator::Producer);
use SQL::Translator::Schema::Constants;
-use SQL::Translator::Utils qw(debug header_comment);
+use SQL::Translator::Utils qw(debug header_comment parse_dbms_version);
use Data::Dumper;
my ( %translate, %index_name );
my $add_drop_table = $translator->add_drop_table;
my $schema = $translator->schema;
my $pargs = $translator->producer_args;
- my $postgres_version = $pargs->{postgres_version} || 0;
+ my $postgres_version = parse_dbms_version(
+ $pargs->{postgres_version}, 'perl'
+ );
my $qt = $translator->quote_table_names ? q{"} : q{};
my $qf = $translator->quote_field_names ? q{"} : q{};
my $create_statement;
$create_statement = join("\n", @comments);
if ($add_drop_table) {
- if ($postgres_version >= 8.2) {
+ if ($postgres_version >= 8.002) {
$create_statement .= qq[DROP TABLE IF EXISTS $qt$table_name_ur$qt CASCADE;\n];
$create_statement .= join (";\n", @type_drops) . ";\n"
- if $postgres_version >= 8.3 && scalar @type_drops;
+ if $postgres_version >= 8.003 && scalar @type_drops;
} else {
$create_statement .= qq[DROP TABLE $qt$table_name_ur$qt CASCADE;\n];
}
}
$create_statement .= join(";\n", @type_defs) . ";\n"
- if $postgres_version >= 8.3 && scalar @type_defs;
+ if $postgres_version >= 8.003 && scalar @type_defs;
$create_statement .= qq[CREATE ${temporary}TABLE $qt$table_name_ur$qt (\n].
join( ",\n", map { " $_" } @field_defs, @constraint_defs ).
"\n)"
# todo deal with embedded quotes
my $commalist = join( ', ', map { qq['$_'] } @$list );
- if ($postgres_version >= 8.3 && $field->data_type eq 'enum') {
+ if ($postgres_version >= 8.003 && $field->data_type eq 'enum') {
my $type_name = $field->table->name . '_' . $field->name . '_type';
$field_def .= ' '. $type_name;
push @$type_defs, "CREATE TYPE $type_name AS ENUM ($commalist)";
#
# Default value
#
- my $default = $field->default_value;
- if ( defined $default ) {
- SQL::Translator::Producer->_apply_default_value(
- \$field_def,
- $default,
- [
- 'NULL' => \'NULL',
- 'now()' => 'now()',
- 'CURRENT_TIMESTAMP' => 'CURRENT_TIMESTAMP',
- ],
- );
- }
+ SQL::Translator::Producer->_apply_default_value(
+ $field,
+ \$field_def,
+ [
+ 'NULL' => \'NULL',
+ 'now()' => 'now()',
+ 'CURRENT_TIMESTAMP' => 'CURRENT_TIMESTAMP',
+ ],
+ );
#
# Not null constraint
my $type_with_size = join('|',
'bit', 'varbit', 'character', 'bit varying', 'character varying',
- 'time', 'timestamp', 'interval'
+ 'time', 'timestamp', 'interval', 'numeric'
);
if ( $data_type !~ /$type_with_size/ ) {