|
4 | 4 | * procedural language |
5 | 5 | * |
6 | 6 | * IDENTIFICATION |
7 | | - * $PostgreSQL: pgsql/src/pl/plpgsql/src/gram.y,v 1.49 2003/11/29 19:52:12 pgsql Exp $ |
| 7 | + * $PostgreSQL: pgsql/src/pl/plpgsql/src/gram.y,v 1.50 2003/12/23 00:01:57 tgl Exp $ |
8 | 8 | * |
9 | 9 | * This software is copyrighted by Jan Wieck - Hamburg. |
10 | 10 | * |
@@ -628,52 +628,9 @@ decl_defval: ';' |
628 | 628 | {$$ =NULL; } |
629 | 629 | |decl_defkey |
630 | 630 | { |
631 | | -inttok; |
632 | | -intlno; |
633 | | -PLpgSQL_dstring ds; |
634 | | -PLpgSQL_expr*expr; |
635 | | - |
636 | | -lno = plpgsql_scanner_lineno(); |
637 | | -expr = malloc(sizeof(PLpgSQL_expr)); |
638 | | -plpgsql_dstring_init(&ds); |
639 | | -plpgsql_dstring_append(&ds,"SELECT"); |
640 | | - |
641 | | -expr->dtype = PLPGSQL_DTYPE_EXPR; |
642 | | -expr->plan =NULL; |
643 | | -expr->nparams =0; |
644 | | - |
645 | | -tok =yylex(); |
646 | | -switch (tok) |
647 | | -{ |
648 | | -case0: |
649 | | -yyerror("unexpected end of function"); |
650 | | -case K_NULL: |
651 | | -if (yylex() !=';') |
652 | | -yyerror("expected\";\" after\"NULL\""); |
653 | | - |
654 | | -free(expr); |
655 | | -plpgsql_dstring_free(&ds); |
656 | | - |
657 | | -$$ =NULL; |
658 | | -break; |
659 | | - |
660 | | -default: |
661 | | -plpgsql_dstring_append(&ds, yytext); |
662 | | -while ((tok =yylex()) !=';') |
663 | | -{ |
664 | | -if (tok ==0) |
665 | | -yyerror("unterminated default value"); |
666 | | - |
667 | | -if (plpgsql_SpaceScanned) |
668 | | -plpgsql_dstring_append(&ds,""); |
669 | | -plpgsql_dstring_append(&ds, yytext); |
670 | | -} |
671 | | -expr->query = strdup(plpgsql_dstring_get(&ds)); |
672 | | -plpgsql_dstring_free(&ds); |
673 | | - |
674 | | -$$ = expr; |
675 | | -break; |
676 | | -} |
| 631 | +plpgsql_ns_setlocal(false); |
| 632 | +$$ = plpgsql_read_expression(';',";"); |
| 633 | +plpgsql_ns_setlocal(true); |
677 | 634 | } |
678 | 635 | ; |
679 | 636 |
|
|