X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FTranslator%2FProducer%2FPostgreSQL.pm;h=4029c5d85b3b31a71a0658d99b5509c9ff208d29;hb=140a1dadfa55fbc73f518a9da1c7a38c3e3e8e68;hp=1526d79b55e2a33a4b698d8ab0d2cf583cfbf566;hpb=7edba2c119a289e63f993d72dff49c201275bc82;p=dbsrgits%2FSQL-Translator.git diff --git a/lib/SQL/Translator/Producer/PostgreSQL.pm b/lib/SQL/Translator/Producer/PostgreSQL.pm index 1526d79..4029c5d 100644 --- a/lib/SQL/Translator/Producer/PostgreSQL.pm +++ b/lib/SQL/Translator/Producer/PostgreSQL.pm @@ -326,7 +326,13 @@ sub next_unused_name { sub is_geometry { my $field = shift; - return 1 if $field->data_type eq 'geometry' || $field->data_type eq 'geography'; + return 1 if $field->data_type eq 'geometry'; +} + +sub is_geography +{ + my $field = shift; + return 1 if $field->data_type eq 'geography'; } sub create_table @@ -432,8 +438,10 @@ sub create_table # if(grep { is_geometry($_) } $table->get_fields){ $create_statement .= ";"; - $create_statement .= "\n".join("\n", map { drop_geometry_column($_) if is_geometry($_); } $table->get_fields) if $options->{add_drop_table}; - $create_statement .= "\n".join("\n", map { add_geometry_column($_) if is_geometry($_);} $table->get_fields); + my @geometry_columns; + foreach my $col ($table->get_fields) { push(@geometry_columns,$col) if is_geometry($col); } + $create_statement .= "\n".join("\n", map{ drop_geometry_column($_) } @geometry_columns) if $options->{add_drop_table}; + $create_statement .= "\n".join("\n", map{ add_geometry_column($_) } @geometry_columns); } return $create_statement, \@fks; @@ -779,6 +787,13 @@ sub convert_datatype $data_type .= '(' . join( ',', @size ) . ')'; } + # + # Geography + # + if($data_type eq 'geography'){ + $data_type .= '('.$field->{extra}{geography_type}.','. $field->{extra}{srid} .')' + } + return $data_type; }