package SQL::Translator::Parser::PostgreSQL;
# -------------------------------------------------------------------
-# $Id: PostgreSQL.pm,v 1.50 2007-11-13 19:25:04 mwz444 Exp $
-# -------------------------------------------------------------------
-# Copyright (C) 2002-4 SQLFairy Authors
+# Copyright (C) 2002-2009 SQLFairy Authors
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
use strict;
use vars qw[ $DEBUG $VERSION $GRAMMAR @EXPORT_OK ];
-$VERSION = sprintf "%d.%02d", q$Revision: 1.50 $ =~ /(\d+)\.(\d+)/;
+$VERSION = '1.99';
$DEBUG = 0 unless defined $DEBUG;
use Data::Dumper;
#
# Create table.
#
-create : create_table table_name '(' create_definition(s? /,/) ')' table_option(s?) ';'
+create : CREATE temporary_table(?) TABLE table_name '(' create_definition(s? /,/) ')' table_option(s?) ';'
{
my $table_info = $item{'table_name'};
my $schema_name = $table_info->{'schema_name'};
$tables{ $table_name }{'schema_name'} = $schema_name;
$tables{ $table_name }{'table_name'} = $table_name;
+ $tables{ $table_name }{'temporary'} = $item[2][0];
+
if ( @table_comments ) {
$tables{ $table_name }{'comments'} = [ @table_comments ];
@table_comments = ();
}
my @constraints;
- for my $definition ( @{ $item[4] } ) {
+ for my $definition ( @{ $item[6] } ) {
if ( $definition->{'supertype'} eq 'field' ) {
my $field_name = $definition->{'name'};
$tables{ $table_name }{'fields'}{ $field_name } =
}
}
- for my $option ( @{ $item[6] } ) {
+ for my $option ( @{ $item[8] } ) {
$tables{ $table_name }{'table_options(s?)'}{ $option->{'type'} } =
$option;
}
storage_type : /(plain|external|extended|main)/i
+temporary: /temp(orary)?\\b/i
+
+temporary_table: temporary
+ {
+ 1;
+ }
+
alter_default_val : SET default_val
{
$return = { value => $item[2]->{'value'} }
name => $tdata->{'table_name'},
) or die "Couldn't create table '$table_name': " . $schema->error;
+ $table->extra(temporary => 1) if $tdata->{'temporary'};
+
$table->comments( $tdata->{'comments'} );
my @fields = sort {