|
3 | 3 | * procedural language
|
4 | 4 | *
|
5 | 5 | * IDENTIFICATION
|
6 |
| - * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_exec.c,v 1.18 2000/02/07 03:39:13 inoue Exp $ |
| 6 | + * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_exec.c,v 1.19 2000/03/11 06:19:00 tgl Exp $ |
7 | 7 | *
|
8 | 8 | * This software is copyrighted by Jan Wieck - Hamburg.
|
9 | 9 | *
|
@@ -2510,30 +2510,35 @@ exec_simple_check_plan(PLpgSQL_expr * expr)
|
2510 | 2510 | if (plan == NULL) /* utility statement produces this */
|
2511 | 2511 | return;
|
2512 | 2512 |
|
2513 |
| - if (nodeTag(plan) != T_Result) |
| 2513 | + if (! IsA(plan, Result)) |
2514 | 2514 | return;
|
2515 | 2515 |
|
2516 | 2516 | /* ----------
|
2517 |
| - * 3. The plan must have a single attribute as result |
| 2517 | + * 3. Can't have any subplan or qual clause, either |
2518 | 2518 | * ----------
|
2519 | 2519 | */
|
2520 |
| - if (length(plan->targetlist) != 1) |
| 2520 | + if (plan->lefttree != NULL || |
| 2521 | + plan->righttree != NULL || |
| 2522 | + plan->initPlan != NULL || |
| 2523 | + plan->subPlan != NULL || |
| 2524 | + plan->qual != NULL || |
| 2525 | + ((Result *) plan)->resconstantqual != NULL) |
2521 | 2526 | return;
|
2522 | 2527 |
|
2523 | 2528 | /* ----------
|
2524 |
| - * 4. Don't know if all these can break us, so let SPI handle |
2525 |
| - * those plans |
| 2529 | + * 4. The plan must have a single attribute as result |
2526 | 2530 | * ----------
|
2527 | 2531 | */
|
2528 |
| - if (plan->qual != NULL || plan->lefttree != NULL || plan->righttree != NULL) |
| 2532 | + if (length(plan->targetlist) != 1) |
2529 | 2533 | return;
|
2530 | 2534 |
|
| 2535 | + tle = (TargetEntry *) lfirst(plan->targetlist); |
| 2536 | + |
2531 | 2537 | /* ----------
|
2532 | 2538 | * 5. Check that all the nodes in the expression are one of
|
2533 | 2539 | * Expr, Param or Const.
|
2534 | 2540 | * ----------
|
2535 | 2541 | */
|
2536 |
| - tle = (TargetEntry *) lfirst(plan->targetlist); |
2537 | 2542 | if (!exec_simple_check_node(tle->expr))
|
2538 | 2543 | return;
|
2539 | 2544 |
|
@@ -2563,8 +2568,6 @@ exec_simple_check_plan(PLpgSQL_expr * expr)
|
2563 | 2568 | default:
|
2564 | 2569 | expr->plan_simple_type = InvalidOid;
|
2565 | 2570 | }
|
2566 |
| - |
2567 |
| - return; |
2568 | 2571 | }
|
2569 | 2572 |
|
2570 | 2573 |
|
|
0 commit comments