package SQL::Translator::Producer::PostgreSQL;
# -------------------------------------------------------------------
-# $Id: PostgreSQL.pm,v 1.25 2006-08-04 21:38:20 schiffbruechige Exp $
+# $Id: PostgreSQL.pm,v 1.28 2006-11-20 23:56:14 schiffbruechige Exp $
# -------------------------------------------------------------------
# Copyright (C) 2002-4 SQLFairy Authors
#
use strict;
use warnings;
use vars qw[ $DEBUG $WARN $VERSION ];
-$VERSION = sprintf "%d.%02d", q$Revision: 1.25 $ =~ /(\d+)\.(\d+)/;
+$VERSION = sprintf "%d.%02d", q$Revision: 1.28 $ =~ /(\d+)\.(\d+)/;
$DEBUG = 1 unless defined $DEBUG;
use SQL::Translator::Schema::Constants;
$output = join("\n\n", @table_defs);
if ( @fks ) {
$output .= "--\n-- Foreign Key Definitions\n--\n\n" unless $no_comments;
- $output .= join( "\n\n", @fks );
+ $output .= join( "\n\n", @fks ) . "\n";
}
if ( $WARN ) {
my $create_statement;
$create_statement = join("\n", @comments);
- $create_statement .= qq[DROP TABLE $qt$table_name_ur$qt;\n]
+ $create_statement .= qq[DROP TABLE $qt$table_name_ur$qt CASCADE;\n]
if $add_drop_table;
$create_statement .= qq[CREATE TABLE $qt$table_name_ur$qt (\n].
join( ",\n", map { " $_" } @field_defs, @constraint_defs ).
#
# Default value -- disallow for timestamps
#
- my $default = $data_type =~ /(timestamp|date)/i
- ? undef : $field->default_value;
+# my $default = $data_type =~ /(timestamp|date)/i
+# ? undef : $field->default_value;
+ my $default = $field->default_value;
if ( defined $default ) {
+ my $qd = "'";
+ $qd = '' if ($default eq 'now()' ||
+ $default eq 'CURRENT_TIMESTAMP');
$field_def .= sprintf( ' DEFAULT %s',
( $field->is_auto_increment && $seq_name )
? qq[nextval('"$seq_name"'::text)] :
- ( $default =~ m/null/i ) ? 'NULL' : "'$default'"
+ ( $default =~ m/null/i ) ? 'NULL' : "$qd$default$qd"
);
}