X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FTranslator%2FProducer%2FSybase.pm;h=07ecd044408ec22c9df003399459892930cb7fcf;hb=afff8ac67f4291a68dcb72ab19508dcfd500ea0a;hp=bb89bef737b925645f7a3f00a5ed5a2c169c97a9;hpb=a1d94525d6fbbc48c0d72bf7712a92366519e63f;p=dbsrgits%2FSQL-Translator.git diff --git a/lib/SQL/Translator/Producer/Sybase.pm b/lib/SQL/Translator/Producer/Sybase.pm index bb89bef..07ecd04 100644 --- a/lib/SQL/Translator/Producer/Sybase.pm +++ b/lib/SQL/Translator/Producer/Sybase.pm @@ -1,12 +1,9 @@ package SQL::Translator::Producer::Sybase; # ------------------------------------------------------------------- -# $Id: Sybase.pm,v 1.4 2003-06-11 04:00:44 kycl4rk Exp $ +# $Id: Sybase.pm,v 1.9 2004-02-09 23:02:17 kycl4rk Exp $ # ------------------------------------------------------------------- -# Copyright (C) 2003 Ken Y. Clark , -# darren chamberlain , -# Chris Mungall , -# Sam Angiuoli +# Copyright (C) 2002-4 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 @@ -27,11 +24,22 @@ package SQL::Translator::Producer::Sybase; SQL::Translator::Producer::Sybase - Sybase producer for SQL::Translator +=head1 SYNOPSIS + + use SQL::Translator; + + my $t = SQL::Translator->new( parser => '...', producer => 'Sybase' ); + $t->translate; + +=head1 DESCRIPTION + +This module will produce text output of the schema suitable for Sybase. + =cut use strict; use vars qw[ $DEBUG $WARN $VERSION ]; -$VERSION = sprintf "%d.%02d", q$Revision: 1.4 $ =~ /(\d+)\.(\d+)/; +$VERSION = sprintf "%d.%02d", q$Revision: 1.9 $ =~ /(\d+)\.(\d+)/; $DEBUG = 1 unless defined $DEBUG; use Data::Dumper; @@ -171,7 +179,8 @@ sub produce { my $orig_data_type = $data_type; my %extra = $field->extra; my $list = $extra{'list'} || []; - my $commalist = join ",", @$list; + # \todo deal with embedded quotes + my $commalist = join( ', ', map { qq['$_'] } @$list ); my $seq_name; if ( $data_type eq 'enum' ) { @@ -313,6 +322,40 @@ sub produce { ); } + foreach my $view ( $schema->get_views ) { + my (@comments, $view_name); + + $view_name = $view->name(); + push @comments, "--\n-- View: $view_name\n--" unless $no_comments; + + # text of view is already a 'create view' statement so no need + # to do anything fancy. + + $output .= join("\n\n", + @comments, + $view->sql(), + ); + } + + + foreach my $procedure ( $schema->get_procedures ) { + my (@comments, $procedure_name); + + $procedure_name = $procedure->name(); + push @comments, + "--\n-- Procedure: $procedure_name\n--" unless $no_comments; + + # text of procedure already has the 'create procedure' stuff + # so there is no need to do anything fancy. However, we should + # think about doing fancy stuff with granting permissions and + # so on. + + $output .= join("\n\n", + @comments, + $procedure->sql(), + ); + } + if ( $WARN ) { if ( %truncated ) { warn "Truncated " . keys( %truncated ) . " names:\n"; @@ -394,9 +437,14 @@ sub unreserve { =pod +=head1 SEE ALSO + +SQL::Translator. + =head1 AUTHORS Sam Angiuoli Eangiuoli@users.sourceforge.netE, -Ken Y. Clark Ekclark@cpan.orgE +Paul Harrington Eharringp@deshaw.comE, +Ken Y. Clark Ekclark@cpan.orgE. =cut