nonstring : /[^;\'"]+/
-statement_body : (string | nonstring)(s?)
+statement_body : string | nonstring
-insert : /insert/i statement_body "$delimiter"
+insert : /insert/i statement_body(s?) "$delimiter"
delimiter : /delimiter/i /[\S]+/
{ $delimiter = $item[2] }
PROCEDURE : /procedure/i
| /function/i
-create : CREATE algorithm /view/i NAME not_delimiter "$delimiter"
+create : CREATE replace(?) algorithm(?) /view/i NAME not_delimiter "$delimiter"
{
@table_comments = ();
- my $view_name = $item[4];
- my $sql = "$item[1] $item[2] $item[3] $item[4] $item[5]";
+ my $view_name = $item[5];
+ my $sql = join(q{ }, grep { defined and length } $item[1], $item[2]->[0], $item[3]->[0])
+ . " $item[4] $item[5] $item[6]";
# Hack to strip database from function calls in SQL
$sql =~ s#`\w+`\.(`\w+`\()##g;
$views{ $view_name }{'sql'} = $sql;
}
+replace : /or replace/i
+
algorithm : /algorithm/i /=/ WORD
{
$return = "$item[1]=$item[3]";
$return = \$item[2];
}
|
- /default/i /'(?:.*?\\')*.*?'|(?:')?[\w\d:.-]*(?:')?/
+ /default/i /'(?:.*?(?:\\'|''))*.*?'|(?:')?[\w\d:.-]*(?:')?/
{
$item[2] =~ s/^\s*'|'\s*$//g;
$return = $item[2];