X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FTranslator%2FParser%2FSQLite.pm;h=10b5a51dcf6a9b6b673b9c66a39aa8fea75cf8c8;hb=2661d702977d22849f5fcc4f756c649d7170874b;hp=996935abefc9ce20c6f8cf0986ded4e55f1a856b;hpb=ac9c4e2e21a26f3c05d033a658d0eff4a5a359b3;p=dbsrgits%2FSQL-Translator.git diff --git a/lib/SQL/Translator/Parser/SQLite.pm b/lib/SQL/Translator/Parser/SQLite.pm index 996935a..10b5a51 100644 --- a/lib/SQL/Translator/Parser/SQLite.pm +++ b/lib/SQL/Translator/Parser/SQLite.pm @@ -1,7 +1,7 @@ package SQL::Translator::Parser::SQLite; # ------------------------------------------------------------------- -# $Id: SQLite.pm,v 1.8 2006-06-07 16:08:45 schiffbruechige Exp $ +# $Id: SQLite.pm,v 1.12 2006-11-10 21:43:15 mwz444 Exp $ # ------------------------------------------------------------------- # Copyright (C) 2002-4 SQLFairy Authors # @@ -152,7 +152,7 @@ like-op::= use strict; use vars qw[ $DEBUG $VERSION $GRAMMAR @EXPORT_OK ]; -$VERSION = sprintf "%d.%02d", q$Revision: 1.8 $ =~ /(\d+)\.(\d+)/; +$VERSION = sprintf "%d.%02d", q$Revision: 1.12 $ =~ /(\d+)\.(\d+)/; $DEBUG = 0 unless defined $DEBUG; use Data::Dumper; @@ -411,7 +411,7 @@ sort_order : /(ASC|DESC)/i # # Create Trigger -create : CREATE TEMPORARY(?) TRIGGER NAME before_or_after(?) database_event ON table_name trigger_action +create : CREATE TEMPORARY(?) TRIGGER NAME before_or_after(?) database_event ON table_name trigger_action SEMICOLON { my $table_name = $item[8]->{'name'}; push @triggers, { @@ -421,6 +421,7 @@ create : CREATE TEMPORARY(?) TRIGGER NAME before_or_after(?) database_event ON t instead_of => 0, db_event => $item[6], action => $item[9], + on_table => $table_name, } } @@ -434,6 +435,7 @@ create : CREATE TEMPORARY(?) TRIGGER NAME instead_of database_event ON view_name instead_of => 1, db_event => $item[6], action => $item[9], + on_table => $table_name, } } @@ -454,9 +456,16 @@ for_each : /FOR EACH ROW/i | /FOR EACH STATEMENT/i when : WHEN expr { $item[2] } -trigger_step : /(select|delete|insert|update)/i /[^;]+/ SEMICOLON +string : + /'(\\.|''|[^\\\'])*'/ + +nonstring : /[^;\'"]+/ + +statement_body : (string | nonstring)(s?) + +trigger_step : /(select|delete|insert|update)/i statement_body SEMICOLON { - $return = join( ' ', $item[1], $item[2] ) + $return = join( ' ', $item[1], join ' ', @{ $item[2] || [] } ) } before_or_after : /(before|after)/i { $return = lc $1 } @@ -628,6 +637,7 @@ sub parse { perform_action_when => $def->{'when'}, database_event => $def->{'db_event'}, action => $def->{'action'}, + on_table => $def->{'on_table'}, ); }