]> granicus.if.org Git - postgresql/commitdiff
Update gram.c.
authorBruce Momjian <bruce@momjian.us>
Wed, 20 Jan 1999 22:31:07 +0000 (22:31 +0000)
committerBruce Momjian <bruce@momjian.us>
Wed, 20 Jan 1999 22:31:07 +0000 (22:31 +0000)
src/backend/parser/gram.c

index ee8d7055cdeeeff1080eb5236fe3ac891c7c8645..15b4c690502f739619247ff4dbf1ba76d07feaf3 100644 (file)
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/parser/Attic/gram.c,v 2.57 1999/01/18 06:46:27 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/parser/Attic/gram.c,v 2.58 1999/01/20 22:31:07 momjian Exp $
  *
  * HISTORY
  *       AUTHOR                        DATE                    MAJOR EVENT
@@ -867,55 +867,55 @@ static const short yyrline[] = { 0,
   2456,  2468,  2484,  2500,  2514,  2532,  2533,  2536,  2539,  2543,
   2560,  2570,  2578,  2604,  2621,  2638,  2639,  2649,  2671,  2693,
   2694,  2695,  2696,  2697,  2700,  2701,  2704,  2705,  2713,  2730,
-  2830,  2834,  2838,  2843,  2852,  2859,  2886,  2887,  2890,  2891,
-  2894,  2895,  2898,  2899,  2900,  2901,  2904,  2905,  2908,  2909,
-  2912,  2920,  2921,  2922,  2923,  2924,  2925,  2935,  2936,  2939,
-  2941,  2943,  2947,  2948,  2951,  2955,  2958,  2963,  2967,  2981,
-  2986,  2987,  2990,  2992,  2994,  2998,  3004,  3010,  3018,  3019,
-  3021,  3023,  3025,  3027,  3029,  3031,  3035,  3036,  3039,  3040,
-  3041,  3044,  3045,  3048,  3063,  3070,  3079,  3080,  3083,  3090,
-  3098,  3100,  3102,  3106,  3108,  3110,  3125,  3147,  3148,  3155,
-  3156,  3157,  3160,  3168,  3169,  3177,  3183,  3188,  3194,  3202,
-  3204,  3206,  3208,  3212,  3223,  3229,  3240,  3248,  3254,  3265,
-  3273,  3287,  3314,  3333,  3353,  3354,  3355,  3356,  3359,  3360,
-  3363,  3364,  3367,  3368,  3371,  3377,  3384,  3390,  3398,  3399,
-  3400,  3401,  3402,  3403,  3406,  3407,  3410,  3411,  3412,  3413,
-  3414,  3415,  3416,  3417,  3418,  3428,  3430,  3447,  3457,  3467,
-  3480,  3493,  3499,  3505,  3509,  3515,  3516,  3517,  3518,  3519,
-  3520,  3521,  3522,  3525,  3526,  3537,  3542,  3544,  3546,  3554,
-  3556,  3558,  3560,  3562,  3564,  3566,  3568,  3570,  3572,  3574,
-  3576,  3592,  3608,  3610,  3612,  3614,  3616,  3618,  3620,  3632,
-  3639,  3646,  3661,  3676,  3698,  3713,  3735,  3742,  3749,  3759,
-  3766,  3773,  3781,  3788,  3795,  3802,  3809,  3811,  3813,  3815,
-  3822,  3832,  3842,  3852,  3862,  3868,  3874,  3874,  3888,  3888,
-  3902,  3912,  3922,  3932,  3942,  3952,  3962,  3972,  3982,  3992,
-  4002,  4012,  4022,  4032,  4042,  4052,  4062,  4072,  4082,  4092,
-  4102,  4112,  4122,  4132,  4142,  4144,  4146,  4148,  4157,  4162,
-  4164,  4172,  4174,  4176,  4178,  4180,  4182,  4184,  4186,  4188,
-  4204,  4220,  4222,  4224,  4226,  4228,  4235,  4242,  4257,  4272,
-  4294,  4309,  4331,  4338,  4345,  4352,  4360,  4367,  4374,  4381,
-  4390,  4397,  4404,  4408,  4410,  4412,  4416,  4423,  4427,  4428,
-  4429,  4432,  4434,  4438,  4443,  4445,  4447,  4449,  4451,  4453,
-  4455,  4457,  4473,  4489,  4491,  4493,  4495,  4497,  4505,  4512,
-  4519,  4526,  4534,  4541,  4548,  4555,  4564,  4568,  4572,  4574,
-  4583,  4585,  4589,  4591,  4593,  4597,  4603,  4607,  4609,  4615,
-  4621,  4625,  4627,  4648,  4656,  4667,  4685,  4687,  4691,  4700,
-  4701,  4704,  4709,  4717,  4721,  4729,  4739,  4741,  4743,  4754,
-  4756,  4758,  4773,  4780,  4787,  4806,  4808,  4813,  4820,  4827,
-  4839,  4853,  4854,  4857,  4862,  4874,  4875,  4876,  4877,  4878,
-  4884,  4885,  4887,  4888,  4893,  4900,  4907,  4914,  4922,  4924,
-  4934,  4946,  4954,  4955,  4956,  4963,  4965,  4967,  4978,  4979,
-  4980,  4981,  4982,  4983,  4984,  4985,  4986,  4987,  4988,  4989,
-  4990,  4991,  4992,  4993,  4994,  4995,  4996,  4997,  4998,  4999,
-  5000,  5001,  5002,  5003,  5004,  5005,  5006,  5007,  5008,  5009,
-  5010,  5011,  5012,  5013,  5014,  5015,  5016,  5017,  5018,  5019,
-  5020,  5021,  5022,  5023,  5024,  5025,  5026,  5027,  5028,  5029,
-  5030,  5031,  5032,  5033,  5034,  5035,  5036,  5037,  5038,  5039,
-  5040,  5041,  5042,  5043,  5044,  5045,  5046,  5047,  5048,  5061,
-  5062,  5063,  5064,  5065,  5066,  5067,  5068,  5069,  5070,  5071,
-  5072,  5073,  5074,  5075,  5076,  5077,  5078,  5079,  5080,  5081,
-  5082,  5083,  5084,  5085,  5086,  5087,  5088,  5089,  5090,  5091,
-  5092,  5093,  5094,  5095,  5096,  5097,  5098,  5099,  5102,  5109
+  2832,  2836,  2840,  2845,  2854,  2861,  2888,  2889,  2892,  2893,
+  2896,  2897,  2900,  2901,  2902,  2903,  2906,  2907,  2910,  2911,
+  2914,  2922,  2923,  2924,  2925,  2926,  2927,  2937,  2938,  2941,
+  2943,  2945,  2949,  2950,  2953,  2957,  2960,  2965,  2969,  2983,
+  2988,  2989,  2992,  2994,  2996,  3000,  3006,  3012,  3020,  3021,
+  3023,  3025,  3027,  3029,  3031,  3033,  3037,  3038,  3041,  3042,
+  3043,  3046,  3047,  3050,  3065,  3072,  3081,  3082,  3085,  3092,
+  3100,  3102,  3104,  3108,  3110,  3112,  3127,  3149,  3150,  3157,
+  3158,  3159,  3162,  3170,  3171,  3179,  3185,  3190,  3196,  3204,
+  3206,  3208,  3210,  3214,  3225,  3231,  3242,  3250,  3256,  3267,
+  3275,  3289,  3316,  3335,  3355,  3356,  3357,  3358,  3361,  3362,
+  3365,  3366,  3369,  3370,  3373,  3379,  3386,  3392,  3400,  3401,
+  3402,  3403,  3404,  3405,  3408,  3409,  3412,  3413,  3414,  3415,
+  3416,  3417,  3418,  3419,  3420,  3430,  3432,  3449,  3459,  3469,
+  3482,  3495,  3501,  3507,  3511,  3517,  3518,  3519,  3520,  3521,
+  3522,  3523,  3524,  3527,  3528,  3539,  3544,  3546,  3548,  3556,
+  3558,  3560,  3562,  3564,  3566,  3568,  3570,  3572,  3574,  3576,
+  3578,  3594,  3610,  3612,  3614,  3616,  3618,  3620,  3622,  3634,
+  3641,  3648,  3663,  3678,  3700,  3715,  3737,  3744,  3751,  3761,
+  3768,  3775,  3783,  3790,  3797,  3804,  3811,  3813,  3815,  3817,
+  3824,  3834,  3844,  3854,  3864,  3870,  3876,  3876,  3890,  3890,
+  3904,  3914,  3924,  3934,  3944,  3954,  3964,  3974,  3984,  3994,
+  4004,  4014,  4024,  4034,  4044,  4054,  4064,  4074,  4084,  4094,
+  4104,  4114,  4124,  4134,  4144,  4146,  4148,  4150,  4159,  4164,
+  4166,  4174,  4176,  4178,  4180,  4182,  4184,  4186,  4188,  4190,
+  4206,  4222,  4224,  4226,  4228,  4230,  4237,  4244,  4259,  4274,
+  4296,  4311,  4333,  4340,  4347,  4354,  4362,  4369,  4376,  4383,
+  4392,  4399,  4406,  4410,  4412,  4414,  4418,  4425,  4429,  4430,
+  4431,  4434,  4436,  4440,  4445,  4447,  4449,  4451,  4453,  4455,
+  4457,  4459,  4475,  4491,  4493,  4495,  4497,  4499,  4507,  4514,
+  4521,  4528,  4536,  4543,  4550,  4557,  4566,  4570,  4574,  4576,
+  4585,  4587,  4591,  4593,  4595,  4599,  4605,  4609,  4611,  4617,
+  4623,  4627,  4629,  4650,  4658,  4669,  4687,  4689,  4693,  4702,
+  4703,  4706,  4711,  4719,  4723,  4731,  4741,  4743,  4745,  4756,
+  4758,  4760,  4775,  4782,  4789,  4808,  4810,  4815,  4822,  4829,
+  4841,  4855,  4856,  4859,  4864,  4876,  4877,  4878,  4879,  4880,
+  4886,  4887,  4889,  4890,  4895,  4902,  4909,  4916,  4924,  4926,
+  4936,  4948,  4956,  4957,  4958,  4965,  4967,  4969,  4980,  4981,
+  4982,  4983,  4984,  4985,  4986,  4987,  4988,  4989,  4990,  4991,
+  4992,  4993,  4994,  4995,  4996,  4997,  4998,  4999,  5000,  5001,
+  5002,  5003,  5004,  5005,  5006,  5007,  5008,  5009,  5010,  5011,
+  5012,  5013,  5014,  5015,  5016,  5017,  5018,  5019,  5020,  5021,
+  5022,  5023,  5024,  5025,  5026,  5027,  5028,  5029,  5030,  5031,
+  5032,  5033,  5034,  5035,  5036,  5037,  5038,  5039,  5040,  5041,
+  5042,  5043,  5044,  5045,  5046,  5047,  5048,  5049,  5050,  5063,
+  5064,  5065,  5066,  5067,  5068,  5069,  5070,  5071,  5072,  5073,
+  5074,  5075,  5076,  5077,  5078,  5079,  5080,  5081,  5082,  5083,
+  5084,  5085,  5086,  5087,  5088,  5089,  5090,  5091,  5092,  5093,
+  5094,  5095,  5096,  5097,  5098,  5099,  5100,  5101,  5104,  5111
 };
 #endif
 
@@ -7946,6 +7946,8 @@ case 470:
 
                                        if (n->unionClause != NULL)
                                                elog(ERROR, "SELECT FOR UPDATE is not allowed with UNION clause");
+                                       if (n->intersectClause != NULL)
+                                               elog(ERROR, "SELECT FOR UPDATE is not allowed with INTERSECT/EXCEPT clause");
                                        if (n->unique != NULL)
                                                elog(ERROR, "SELECT FOR UPDATE is not allowed with DISTINCT clause");
                                        if (n->groupClause != NULL)
@@ -7956,26 +7958,26 @@ case 470:
                        ;
     break;}
 case 471:
-#line 2831 "gram.y"
+#line 2833 "gram.y"
 {
                                yyval.node = yyvsp[-1].node; 
                        ;
     break;}
 case 472:
-#line 2835 "gram.y"
+#line 2837 "gram.y"
 {
                                yyval.node = yyvsp[0].node; 
                        ;
     break;}
 case 473:
-#line 2839 "gram.y"
+#line 2841 "gram.y"
 {
                                yyval.node = (Node *)makeA_Expr(AND,NULL,yyvsp[-2].node,
                                                        makeA_Expr(NOT,NULL,NULL,yyvsp[0].node));
                        ;
     break;}
 case 474:
-#line 2844 "gram.y"
+#line 2846 "gram.y"
 {      
                                if (IsA(yyvsp[0].node, SelectStmt))
                                  {
@@ -7986,13 +7988,13 @@ case 474:
                        ;
     break;}
 case 475:
-#line 2853 "gram.y"
+#line 2855 "gram.y"
 {
                                yyval.node = (Node *)makeA_Expr(AND,NULL,yyvsp[-2].node,yyvsp[0].node);
                        ;
     break;}
 case 476:
-#line 2862 "gram.y"
+#line 2864 "gram.y"
 {
                                        SelectStmt *n = makeNode(SelectStmt);
                                        n->unique = yyvsp[-6].str;
@@ -8017,63 +8019,63 @@ case 476:
                                ;
     break;}
 case 477:
-#line 2886 "gram.y"
+#line 2888 "gram.y"
 { yyval.str= yyvsp[0].str; ;
     break;}
 case 478:
-#line 2887 "gram.y"
+#line 2889 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 479:
-#line 2890 "gram.y"
+#line 2892 "gram.y"
 { yyval.boolean = TRUE; ;
     break;}
 case 480:
-#line 2891 "gram.y"
+#line 2893 "gram.y"
 { yyval.boolean = FALSE; ;
     break;}
 case 481:
-#line 2894 "gram.y"
+#line 2896 "gram.y"
 { yyval.boolean = TRUE; ;
     break;}
 case 482:
-#line 2895 "gram.y"
+#line 2897 "gram.y"
 { yyval.boolean = FALSE; ;
     break;}
 case 483:
-#line 2898 "gram.y"
+#line 2900 "gram.y"
 { yyval.str = "*"; ;
     break;}
 case 484:
-#line 2899 "gram.y"
+#line 2901 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 485:
-#line 2900 "gram.y"
+#line 2902 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 486:
-#line 2901 "gram.y"
+#line 2903 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 487:
-#line 2904 "gram.y"
+#line 2906 "gram.y"
 { yyval.list = yyvsp[0].list; ;
     break;}
 case 488:
-#line 2905 "gram.y"
+#line 2907 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 489:
-#line 2908 "gram.y"
+#line 2910 "gram.y"
 { yyval.list = lcons(yyvsp[0].sortgroupby, NIL); ;
     break;}
 case 490:
-#line 2909 "gram.y"
+#line 2911 "gram.y"
 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].sortgroupby); ;
     break;}
 case 491:
-#line 2913 "gram.y"
+#line 2915 "gram.y"
 {
                                        yyval.sortgroupby = makeNode(SortGroupBy);
                                        yyval.sortgroupby->node = yyvsp[-1].node;
@@ -8081,110 +8083,110 @@ case 491:
                                ;
     break;}
 case 492:
-#line 2920 "gram.y"
+#line 2922 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 493:
-#line 2921 "gram.y"
+#line 2923 "gram.y"
 { yyval.str = "<"; ;
     break;}
 case 494:
-#line 2922 "gram.y"
+#line 2924 "gram.y"
 { yyval.str = ">"; ;
     break;}
 case 495:
-#line 2923 "gram.y"
+#line 2925 "gram.y"
 { yyval.str = "<"; ;
     break;}
 case 496:
-#line 2924 "gram.y"
+#line 2926 "gram.y"
 { yyval.str = ">"; ;
     break;}
 case 497:
-#line 2925 "gram.y"
+#line 2927 "gram.y"
 { yyval.str = "<"; /*default*/ ;
     break;}
 case 498:
-#line 2935 "gram.y"
+#line 2937 "gram.y"
 { yyval.boolean = TRUE; ;
     break;}
 case 499:
-#line 2936 "gram.y"
+#line 2938 "gram.y"
 { yyval.boolean = FALSE; ;
     break;}
 case 501:
-#line 2942 "gram.y"
+#line 2944 "gram.y"
 {      yyval.list = lcons(makeString(yyvsp[0].str),NIL); ;
     break;}
 case 502:
-#line 2944 "gram.y"
+#line 2946 "gram.y"
 {      yyval.list = lappend(yyvsp[-2].list,makeString(yyvsp[0].str)); ;
     break;}
 case 503:
-#line 2947 "gram.y"
+#line 2949 "gram.y"
 { yyval.list = yyvsp[0].list; ;
     break;}
 case 504:
-#line 2948 "gram.y"
+#line 2950 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 505:
-#line 2952 "gram.y"
+#line 2954 "gram.y"
 {
                                        yyval.node = yyvsp[0].node;
                                ;
     break;}
 case 506:
-#line 2955 "gram.y"
+#line 2957 "gram.y"
 { yyval.node = NULL; ;
     break;}
 case 507:
-#line 2960 "gram.y"
+#line 2962 "gram.y"
 {
                                yyval.list = lcons(NULL, NULL);
                        ;
     break;}
 case 508:
-#line 2964 "gram.y"
+#line 2966 "gram.y"
 {
                                yyval.list = yyvsp[0].list;
                        ;
     break;}
 case 509:
-#line 2968 "gram.y"
+#line 2970 "gram.y"
 {
                                yyval.list = NULL;
                        ;
     break;}
 case 510:
-#line 2982 "gram.y"
+#line 2984 "gram.y"
 {
                                        yyval.list = NIL;
                                        elog(ERROR,"JOIN not yet implemented");
                                ;
     break;}
 case 511:
-#line 2986 "gram.y"
+#line 2988 "gram.y"
 { yyval.list = yyvsp[0].list; ;
     break;}
 case 512:
-#line 2987 "gram.y"
+#line 2989 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 513:
-#line 2991 "gram.y"
+#line 2993 "gram.y"
 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].range); ;
     break;}
 case 514:
-#line 2993 "gram.y"
+#line 2995 "gram.y"
 { elog(ERROR,"CROSS JOIN not yet implemented"); ;
     break;}
 case 515:
-#line 2995 "gram.y"
+#line 2997 "gram.y"
 { yyval.list = lcons(yyvsp[0].range, NIL); ;
     break;}
 case 516:
-#line 2999 "gram.y"
+#line 3001 "gram.y"
 {
                                        yyval.range = makeNode(RangeVar);
                                        yyval.range->relExpr = yyvsp[-2].relexp;
@@ -8192,7 +8194,7 @@ case 516:
                                ;
     break;}
 case 517:
-#line 3005 "gram.y"
+#line 3007 "gram.y"
 {
                                        yyval.range = makeNode(RangeVar);
                                        yyval.range->relExpr = yyvsp[-1].relexp;
@@ -8200,7 +8202,7 @@ case 517:
                                ;
     break;}
 case 518:
-#line 3011 "gram.y"
+#line 3013 "gram.y"
 {
                                        yyval.range = makeNode(RangeVar);
                                        yyval.range->relExpr = yyvsp[0].relexp;
@@ -8208,67 +8210,67 @@ case 518:
                                ;
     break;}
 case 519:
-#line 3018 "gram.y"
+#line 3020 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 520:
-#line 3020 "gram.y"
+#line 3022 "gram.y"
 { elog(ERROR,"FULL OUTER JOIN not yet implemented"); ;
     break;}
 case 521:
-#line 3022 "gram.y"
+#line 3024 "gram.y"
 { elog(ERROR,"LEFT OUTER JOIN not yet implemented"); ;
     break;}
 case 522:
-#line 3024 "gram.y"
+#line 3026 "gram.y"
 { elog(ERROR,"RIGHT OUTER JOIN not yet implemented"); ;
     break;}
 case 523:
-#line 3026 "gram.y"
+#line 3028 "gram.y"
 { elog(ERROR,"OUTER JOIN not yet implemented"); ;
     break;}
 case 524:
-#line 3028 "gram.y"
+#line 3030 "gram.y"
 { elog(ERROR,"INNER JOIN not yet implemented"); ;
     break;}
 case 525:
-#line 3030 "gram.y"
+#line 3032 "gram.y"
 { elog(ERROR,"UNION JOIN not yet implemented"); ;
     break;}
 case 526:
-#line 3032 "gram.y"
+#line 3034 "gram.y"
 { elog(ERROR,"INNER JOIN not yet implemented"); ;
     break;}
 case 527:
-#line 3035 "gram.y"
+#line 3037 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 528:
-#line 3036 "gram.y"
+#line 3038 "gram.y"
 { yyval.str = NULL;  /* no qualifiers */ ;
     break;}
 case 529:
-#line 3039 "gram.y"
+#line 3041 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 530:
-#line 3040 "gram.y"
+#line 3042 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 531:
-#line 3041 "gram.y"
+#line 3043 "gram.y"
 { yyval.str = NULL;  /* no qualifiers */ ;
     break;}
 case 532:
-#line 3044 "gram.y"
+#line 3046 "gram.y"
 { yyval.list = lcons(yyvsp[0].joinusing, NIL); ;
     break;}
 case 533:
-#line 3045 "gram.y"
+#line 3047 "gram.y"
 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].joinusing); ;
     break;}
 case 534:
-#line 3057 "gram.y"
+#line 3059 "gram.y"
 {
                                        yyval.joinusing = makeNode(JoinUsing);
                                        yyval.joinusing->resno = 0;
@@ -8277,7 +8279,7 @@ case 534:
                                ;
     break;}
 case 535:
-#line 3064 "gram.y"
+#line 3066 "gram.y"
 {
                                        yyval.joinusing = makeNode(JoinUsing);
                                        yyval.joinusing->resno = 0;
@@ -8286,7 +8288,7 @@ case 535:
                                ;
     break;}
 case 536:
-#line 3071 "gram.y"
+#line 3073 "gram.y"
 {
                                        yyval.joinusing = makeNode(JoinUsing);
                                        yyval.joinusing->resno = yyvsp[0].ival;
@@ -8295,15 +8297,15 @@ case 536:
                                ;
     break;}
 case 537:
-#line 3079 "gram.y"
+#line 3081 "gram.y"
 { yyval.node = yyvsp[0].node; ;
     break;}
 case 538:
-#line 3080 "gram.y"
+#line 3082 "gram.y"
 { yyval.node = NULL;  /* no qualifiers */ ;
     break;}
 case 539:
-#line 3084 "gram.y"
+#line 3086 "gram.y"
 {
                                        /* normal relations */
                                        yyval.relexp = makeNode(RelExpr);
@@ -8312,7 +8314,7 @@ case 539:
                                ;
     break;}
 case 540:
-#line 3091 "gram.y"
+#line 3093 "gram.y"
 {
                                        /* inheritance query */
                                        yyval.relexp = makeNode(RelExpr);
@@ -8321,31 +8323,31 @@ case 540:
                                ;
     break;}
 case 541:
-#line 3099 "gram.y"
+#line 3101 "gram.y"
 {  yyval.list = lcons(makeInteger(-1), yyvsp[0].list); ;
     break;}
 case 542:
-#line 3101 "gram.y"
+#line 3103 "gram.y"
 {  yyval.list = lcons(makeInteger(yyvsp[-2].ival), yyvsp[0].list); ;
     break;}
 case 543:
-#line 3103 "gram.y"
+#line 3105 "gram.y"
 {  yyval.list = NIL; ;
     break;}
 case 544:
-#line 3107 "gram.y"
+#line 3109 "gram.y"
 {  yyval.list = lcons(makeInteger(-1), yyvsp[0].list); ;
     break;}
 case 545:
-#line 3109 "gram.y"
+#line 3111 "gram.y"
 {  yyval.list = lcons(makeInteger(yyvsp[-2].ival), yyvsp[0].list); ;
     break;}
 case 546:
-#line 3111 "gram.y"
+#line 3113 "gram.y"
 {  yyval.list = NIL; ;
     break;}
 case 547:
-#line 3126 "gram.y"
+#line 3128 "gram.y"
 {
                                        yyval.typnam = yyvsp[-1].typnam;
                                        yyval.typnam->arrayBounds = yyvsp[0].list;
@@ -8369,14 +8371,14 @@ case 547:
                                ;
     break;}
 case 549:
-#line 3149 "gram.y"
+#line 3151 "gram.y"
 {
                                        yyval.typnam = yyvsp[0].typnam;
                                        yyval.typnam->setof = TRUE;
                                ;
     break;}
 case 553:
-#line 3161 "gram.y"
+#line 3163 "gram.y"
 {
                                        yyval.typnam = makeNode(TypeName);
                                        yyval.typnam->name = xlateSqlType(yyvsp[0].str);
@@ -8384,15 +8386,15 @@ case 553:
                                ;
     break;}
 case 554:
-#line 3168 "gram.y"
+#line 3170 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 555:
-#line 3169 "gram.y"
+#line 3171 "gram.y"
 { yyval.str = xlateSqlType("type"); ;
     break;}
 case 556:
-#line 3178 "gram.y"
+#line 3180 "gram.y"
 {
                                        yyval.typnam = makeNode(TypeName);
                                        yyval.typnam->name = xlateSqlType(yyvsp[0].str);
@@ -8400,14 +8402,14 @@ case 556:
                                ;
     break;}
 case 557:
-#line 3184 "gram.y"
+#line 3186 "gram.y"
 {
                                        yyval.typnam = makeNode(TypeName);
                                        yyval.typnam->name = xlateSqlType("float");
                                ;
     break;}
 case 558:
-#line 3189 "gram.y"
+#line 3191 "gram.y"
 {
                                        yyval.typnam = makeNode(TypeName);
                                        yyval.typnam->name = xlateSqlType("numeric");
@@ -8415,7 +8417,7 @@ case 558:
                                ;
     break;}
 case 559:
-#line 3195 "gram.y"
+#line 3197 "gram.y"
 {
                                        yyval.typnam = makeNode(TypeName);
                                        yyval.typnam->name = xlateSqlType("numeric");
@@ -8423,23 +8425,23 @@ case 559:
                                ;
     break;}
 case 560:
-#line 3203 "gram.y"
+#line 3205 "gram.y"
 {      yyval.str = xlateSqlType("float8"); ;
     break;}
 case 561:
-#line 3205 "gram.y"
+#line 3207 "gram.y"
 {      yyval.str = xlateSqlType("float8"); ;
     break;}
 case 562:
-#line 3207 "gram.y"
+#line 3209 "gram.y"
 {      yyval.str = xlateSqlType("numeric"); ;
     break;}
 case 563:
-#line 3209 "gram.y"
+#line 3211 "gram.y"
 {      yyval.str = xlateSqlType("numeric"); ;
     break;}
 case 564:
-#line 3213 "gram.y"
+#line 3215 "gram.y"
 {
                                        if (yyvsp[-1].ival < 1)
                                                elog(ERROR,"precision for FLOAT must be at least 1");
@@ -8452,13 +8454,13 @@ case 564:
                                ;
     break;}
 case 565:
-#line 3224 "gram.y"
+#line 3226 "gram.y"
 {
                                        yyval.str = xlateSqlType("float8");
                                ;
     break;}
 case 566:
-#line 3230 "gram.y"
+#line 3232 "gram.y"
 {
                                        if (yyvsp[-3].ival < 1 || yyvsp[-3].ival > NUMERIC_MAX_PRECISION)
                                                elog(ERROR,"NUMERIC precision %d must be beween 1 and %d",
@@ -8471,7 +8473,7 @@ case 566:
                                ;
     break;}
 case 567:
-#line 3241 "gram.y"
+#line 3243 "gram.y"
 {
                                        if (yyvsp[-1].ival < 1 || yyvsp[-1].ival > NUMERIC_MAX_PRECISION)
                                                elog(ERROR,"NUMERIC precision %d must be beween 1 and %d",
@@ -8481,13 +8483,13 @@ case 567:
                                ;
     break;}
 case 568:
-#line 3249 "gram.y"
+#line 3251 "gram.y"
 {
                                        yyval.ival = ((NUMERIC_DEFAULT_PRECISION << 16) | NUMERIC_DEFAULT_SCALE) + VARHDRSZ;
                                ;
     break;}
 case 569:
-#line 3255 "gram.y"
+#line 3257 "gram.y"
 {
                                        if (yyvsp[-3].ival < 1 || yyvsp[-3].ival > NUMERIC_MAX_PRECISION)
                                                elog(ERROR,"DECIMAL precision %d must be beween 1 and %d",
@@ -8500,7 +8502,7 @@ case 569:
                                ;
     break;}
 case 570:
-#line 3266 "gram.y"
+#line 3268 "gram.y"
 {
                                        if (yyvsp[-1].ival < 1 || yyvsp[-1].ival > NUMERIC_MAX_PRECISION)
                                                elog(ERROR,"DECIMAL precision %d must be beween 1 and %d",
@@ -8510,13 +8512,13 @@ case 570:
                                ;
     break;}
 case 571:
-#line 3274 "gram.y"
+#line 3276 "gram.y"
 {
                                        yyval.ival = ((NUMERIC_DEFAULT_PRECISION << 16) | NUMERIC_DEFAULT_SCALE) + VARHDRSZ;
                                ;
     break;}
 case 572:
-#line 3288 "gram.y"
+#line 3290 "gram.y"
 {
                                        yyval.typnam = makeNode(TypeName);
                                        if (strcasecmp(yyvsp[-3].str, "char") == 0)
@@ -8545,7 +8547,7 @@ case 572:
                                ;
     break;}
 case 573:
-#line 3315 "gram.y"
+#line 3317 "gram.y"
 {
                                        yyval.typnam = makeNode(TypeName);
                                        /* Let's try to make all single-character types into bpchar(1)
@@ -8564,7 +8566,7 @@ case 573:
                                ;
     break;}
 case 574:
-#line 3334 "gram.y"
+#line 3336 "gram.y"
 {
                                        char *type, *c;
                                        if ((yyvsp[-1].str == NULL) || (strcasecmp(yyvsp[-1].str, "sql_text") == 0)) {
@@ -8586,47 +8588,47 @@ case 574:
                                ;
     break;}
 case 575:
-#line 3353 "gram.y"
+#line 3355 "gram.y"
 { yyval.str = xlateSqlType(yyvsp[0].boolean? "varchar": "char"); ;
     break;}
 case 576:
-#line 3354 "gram.y"
+#line 3356 "gram.y"
 { yyval.str = xlateSqlType("varchar"); ;
     break;}
 case 577:
-#line 3355 "gram.y"
+#line 3357 "gram.y"
 { yyval.str = xlateSqlType(yyvsp[0].boolean? "varchar": "char"); ;
     break;}
 case 578:
-#line 3356 "gram.y"
+#line 3358 "gram.y"
 { yyval.str = xlateSqlType(yyvsp[0].boolean? "varchar": "char"); ;
     break;}
 case 579:
-#line 3359 "gram.y"
+#line 3361 "gram.y"
 { yyval.boolean = TRUE; ;
     break;}
 case 580:
-#line 3360 "gram.y"
+#line 3362 "gram.y"
 { yyval.boolean = FALSE; ;
     break;}
 case 581:
-#line 3363 "gram.y"
+#line 3365 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 582:
-#line 3364 "gram.y"
+#line 3366 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 583:
-#line 3367 "gram.y"
+#line 3369 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 584:
-#line 3368 "gram.y"
+#line 3370 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 585:
-#line 3372 "gram.y"
+#line 3374 "gram.y"
 {
                                        yyval.typnam = makeNode(TypeName);
                                        yyval.typnam->name = xlateSqlType(yyvsp[0].str);
@@ -8634,7 +8636,7 @@ case 585:
                                ;
     break;}
 case 586:
-#line 3378 "gram.y"
+#line 3380 "gram.y"
 {
                                        yyval.typnam = makeNode(TypeName);
                                        yyval.typnam->name = xlateSqlType("timestamp");
@@ -8643,7 +8645,7 @@ case 586:
                                ;
     break;}
 case 587:
-#line 3385 "gram.y"
+#line 3387 "gram.y"
 {
                                        yyval.typnam = makeNode(TypeName);
                                        yyval.typnam->name = xlateSqlType("time");
@@ -8651,7 +8653,7 @@ case 587:
                                ;
     break;}
 case 588:
-#line 3391 "gram.y"
+#line 3393 "gram.y"
 {
                                        yyval.typnam = makeNode(TypeName);
                                        yyval.typnam->name = xlateSqlType("interval");
@@ -8659,79 +8661,79 @@ case 588:
                                ;
     break;}
 case 589:
-#line 3398 "gram.y"
+#line 3400 "gram.y"
 { yyval.str = "year"; ;
     break;}
 case 590:
-#line 3399 "gram.y"
+#line 3401 "gram.y"
 { yyval.str = "month"; ;
     break;}
 case 591:
-#line 3400 "gram.y"
+#line 3402 "gram.y"
 { yyval.str = "day"; ;
     break;}
 case 592:
-#line 3401 "gram.y"
+#line 3403 "gram.y"
 { yyval.str = "hour"; ;
     break;}
 case 593:
-#line 3402 "gram.y"
+#line 3404 "gram.y"
 { yyval.str = "minute"; ;
     break;}
 case 594:
-#line 3403 "gram.y"
+#line 3405 "gram.y"
 { yyval.str = "second"; ;
     break;}
 case 595:
-#line 3406 "gram.y"
+#line 3408 "gram.y"
 { yyval.boolean = TRUE; ;
     break;}
 case 596:
-#line 3407 "gram.y"
+#line 3409 "gram.y"
 { yyval.boolean = FALSE; ;
     break;}
 case 597:
-#line 3410 "gram.y"
+#line 3412 "gram.y"
 { yyval.list = lcons(yyvsp[0].str, NIL); ;
     break;}
 case 598:
-#line 3411 "gram.y"
+#line 3413 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 599:
-#line 3412 "gram.y"
+#line 3414 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 600:
-#line 3413 "gram.y"
+#line 3415 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 601:
-#line 3414 "gram.y"
+#line 3416 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 602:
-#line 3415 "gram.y"
+#line 3417 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 603:
-#line 3416 "gram.y"
+#line 3418 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 604:
-#line 3417 "gram.y"
+#line 3419 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 605:
-#line 3418 "gram.y"
+#line 3420 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 606:
-#line 3429 "gram.y"
+#line 3431 "gram.y"
 { yyval.node = yyvsp[0].node; ;
     break;}
 case 607:
-#line 3431 "gram.y"
+#line 3433 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        n->val.type = T_Null;
@@ -8739,7 +8741,7 @@ case 607:
                                ;
     break;}
 case 608:
-#line 3448 "gram.y"
+#line 3450 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = yyvsp[-5].list;
@@ -8751,7 +8753,7 @@ case 608:
                                ;
     break;}
 case 609:
-#line 3458 "gram.y"
+#line 3460 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = yyvsp[-6].list;
@@ -8763,7 +8765,7 @@ case 609:
                                ;
     break;}
 case 610:
-#line 3468 "gram.y"
+#line 3470 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = yyvsp[-6].list;
@@ -8778,7 +8780,7 @@ case 610:
                                ;
     break;}
 case 611:
-#line 3481 "gram.y"
+#line 3483 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = yyvsp[-5].list;
@@ -8793,86 +8795,86 @@ case 611:
                                ;
     break;}
 case 612:
-#line 3494 "gram.y"
+#line 3496 "gram.y"
 {
                                        yyval.node = makeRowExpr(yyvsp[-3].str, yyvsp[-5].list, yyvsp[-1].list);
                                ;
     break;}
 case 613:
-#line 3500 "gram.y"
+#line 3502 "gram.y"
 {
                                        yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node);
                                ;
     break;}
 case 614:
-#line 3506 "gram.y"
+#line 3508 "gram.y"
 {
                                        yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node);
                                ;
     break;}
 case 615:
-#line 3510 "gram.y"
+#line 3512 "gram.y"
 {
                                        yyval.list = lcons(yyvsp[0].node, NIL);
                                ;
     break;}
 case 616:
-#line 3515 "gram.y"
+#line 3517 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 617:
-#line 3516 "gram.y"
+#line 3518 "gram.y"
 { yyval.str = "<"; ;
     break;}
 case 618:
-#line 3517 "gram.y"
+#line 3519 "gram.y"
 { yyval.str = "="; ;
     break;}
 case 619:
-#line 3518 "gram.y"
+#line 3520 "gram.y"
 { yyval.str = ">"; ;
     break;}
 case 620:
-#line 3519 "gram.y"
+#line 3521 "gram.y"
 { yyval.str = "+"; ;
     break;}
 case 621:
-#line 3520 "gram.y"
+#line 3522 "gram.y"
 { yyval.str = "-"; ;
     break;}
 case 622:
-#line 3521 "gram.y"
+#line 3523 "gram.y"
 { yyval.str = "*"; ;
     break;}
 case 623:
-#line 3522 "gram.y"
+#line 3524 "gram.y"
 { yyval.str = "/"; ;
     break;}
 case 624:
-#line 3525 "gram.y"
+#line 3527 "gram.y"
 { yyval.ival = ANY_SUBLINK; ;
     break;}
 case 625:
-#line 3526 "gram.y"
+#line 3528 "gram.y"
 { yyval.ival = ALL_SUBLINK; ;
     break;}
 case 626:
-#line 3538 "gram.y"
+#line 3540 "gram.y"
 {
                                        yyvsp[-1].attr->indirection = yyvsp[0].list;
                                        yyval.node = (Node *)yyvsp[-1].attr;
                                ;
     break;}
 case 627:
-#line 3543 "gram.y"
+#line 3545 "gram.y"
 {      yyval.node = yyvsp[0].node;  ;
     break;}
 case 628:
-#line 3545 "gram.y"
+#line 3547 "gram.y"
 {      yyval.node = yyvsp[0].node;  ;
     break;}
 case 629:
-#line 3547 "gram.y"
+#line 3549 "gram.y"
 {
                                        /* could be a column name or a relation_name */
                                        Ident *n = makeNode(Ident);
@@ -8882,51 +8884,51 @@ case 629:
                                ;
     break;}
 case 630:
-#line 3555 "gram.y"
+#line 3557 "gram.y"
 {      yyval.node = makeA_Expr(OP, "-", NULL, yyvsp[0].node); ;
     break;}
 case 631:
-#line 3557 "gram.y"
+#line 3559 "gram.y"
 {      yyval.node = makeA_Expr(OP, "+", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 632:
-#line 3559 "gram.y"
+#line 3561 "gram.y"
 {      yyval.node = makeA_Expr(OP, "-", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 633:
-#line 3561 "gram.y"
+#line 3563 "gram.y"
 {      yyval.node = makeA_Expr(OP, "/", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 634:
-#line 3563 "gram.y"
+#line 3565 "gram.y"
 {      yyval.node = makeA_Expr(OP, "*", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 635:
-#line 3565 "gram.y"
+#line 3567 "gram.y"
 {      yyval.node = makeA_Expr(OP, "<", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 636:
-#line 3567 "gram.y"
+#line 3569 "gram.y"
 {      yyval.node = makeA_Expr(OP, ">", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 637:
-#line 3569 "gram.y"
+#line 3571 "gram.y"
 {      yyval.node = makeA_Expr(OP, "=", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 638:
-#line 3571 "gram.y"
+#line 3573 "gram.y"
 {      yyval.node = makeA_Expr(OP, ":", NULL, yyvsp[0].node); ;
     break;}
 case 639:
-#line 3573 "gram.y"
+#line 3575 "gram.y"
 {      yyval.node = makeA_Expr(OP, ";", NULL, yyvsp[0].node); ;
     break;}
 case 640:
-#line 3575 "gram.y"
+#line 3577 "gram.y"
 {      yyval.node = makeA_Expr(OP, "|", NULL, yyvsp[0].node); ;
     break;}
 case 641:
-#line 3577 "gram.y"
+#line 3579 "gram.y"
 {
                                        yyval.node = (Node *)yyvsp[-2].node;
                                        /* AexprConst can be either A_Const or ParamNo */
@@ -8944,7 +8946,7 @@ case 641:
                                ;
     break;}
 case 642:
-#line 3593 "gram.y"
+#line 3595 "gram.y"
 {
                                        yyval.node = (Node *)yyvsp[-3].node;
                                        /* AexprConst can be either A_Const or ParamNo */
@@ -8962,31 +8964,31 @@ case 642:
                                ;
     break;}
 case 643:
-#line 3609 "gram.y"
+#line 3611 "gram.y"
 {      yyval.node = yyvsp[-1].node; ;
     break;}
 case 644:
-#line 3611 "gram.y"
+#line 3613 "gram.y"
 {      yyval.node = makeIndexable(yyvsp[-1].str,yyvsp[-2].node,yyvsp[0].node); ;
     break;}
 case 645:
-#line 3613 "gram.y"
+#line 3615 "gram.y"
 {      yyval.node = makeIndexable("~~", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 646:
-#line 3615 "gram.y"
+#line 3617 "gram.y"
 {      yyval.node = makeA_Expr(OP, "!~~", yyvsp[-3].node, yyvsp[0].node); ;
     break;}
 case 647:
-#line 3617 "gram.y"
+#line 3619 "gram.y"
 {      yyval.node = makeA_Expr(OP, yyvsp[-1].str, NULL, yyvsp[0].node); ;
     break;}
 case 648:
-#line 3619 "gram.y"
+#line 3621 "gram.y"
 {      yyval.node = makeA_Expr(OP, yyvsp[0].str, yyvsp[-1].node, NULL); ;
     break;}
 case 649:
-#line 3621 "gram.y"
+#line 3623 "gram.y"
 {
                                        /* cheap hack for aggregate (eg. count) */
                                        FuncCall *n = makeNode(FuncCall);
@@ -9000,7 +9002,7 @@ case 649:
                                ;
     break;}
 case 650:
-#line 3633 "gram.y"
+#line 3635 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = yyvsp[-2].str;
@@ -9009,7 +9011,7 @@ case 650:
                                ;
     break;}
 case 651:
-#line 3640 "gram.y"
+#line 3642 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = yyvsp[-3].str;
@@ -9018,7 +9020,7 @@ case 651:
                                ;
     break;}
 case 652:
-#line 3647 "gram.y"
+#line 3649 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        TypeName *t = makeNode(TypeName);
@@ -9035,7 +9037,7 @@ case 652:
                                ;
     break;}
 case 653:
-#line 3662 "gram.y"
+#line 3664 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        TypeName *t = makeNode(TypeName);
@@ -9052,7 +9054,7 @@ case 653:
                                ;
     break;}
 case 654:
-#line 3677 "gram.y"
+#line 3679 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        A_Const *s = makeNode(A_Const);
@@ -9076,7 +9078,7 @@ case 654:
                                ;
     break;}
 case 655:
-#line 3699 "gram.y"
+#line 3701 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        TypeName *t = makeNode(TypeName);
@@ -9093,7 +9095,7 @@ case 655:
                                ;
     break;}
 case 656:
-#line 3714 "gram.y"
+#line 3716 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        A_Const *s = makeNode(A_Const);
@@ -9117,7 +9119,7 @@ case 656:
                                ;
     break;}
 case 657:
-#line 3736 "gram.y"
+#line 3738 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "getpgusername";
@@ -9126,7 +9128,7 @@ case 657:
                                ;
     break;}
 case 658:
-#line 3743 "gram.y"
+#line 3745 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "getpgusername";
@@ -9135,7 +9137,7 @@ case 658:
                                ;
     break;}
 case 659:
-#line 3750 "gram.y"
+#line 3752 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = NIL;
@@ -9147,7 +9149,7 @@ case 659:
                                ;
     break;}
 case 660:
-#line 3760 "gram.y"
+#line 3762 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "date_part";
@@ -9156,7 +9158,7 @@ case 660:
                                ;
     break;}
 case 661:
-#line 3767 "gram.y"
+#line 3769 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "strpos";
@@ -9165,7 +9167,7 @@ case 661:
                                ;
     break;}
 case 662:
-#line 3774 "gram.y"
+#line 3776 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "substr";
@@ -9174,7 +9176,7 @@ case 662:
                                ;
     break;}
 case 663:
-#line 3782 "gram.y"
+#line 3784 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "btrim";
@@ -9183,7 +9185,7 @@ case 663:
                                ;
     break;}
 case 664:
-#line 3789 "gram.y"
+#line 3791 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "ltrim";
@@ -9192,7 +9194,7 @@ case 664:
                                ;
     break;}
 case 665:
-#line 3796 "gram.y"
+#line 3798 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "rtrim";
@@ -9201,7 +9203,7 @@ case 665:
                                ;
     break;}
 case 666:
-#line 3803 "gram.y"
+#line 3805 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "btrim";
@@ -9210,23 +9212,23 @@ case 666:
                                ;
     break;}
 case 667:
-#line 3810 "gram.y"
+#line 3812 "gram.y"
 {      yyval.node = makeA_Expr(ISNULL, NULL, yyvsp[-1].node, NULL); ;
     break;}
 case 668:
-#line 3812 "gram.y"
+#line 3814 "gram.y"
 {      yyval.node = makeA_Expr(ISNULL, NULL, yyvsp[-2].node, NULL); ;
     break;}
 case 669:
-#line 3814 "gram.y"
+#line 3816 "gram.y"
 {      yyval.node = makeA_Expr(NOTNULL, NULL, yyvsp[-1].node, NULL); ;
     break;}
 case 670:
-#line 3816 "gram.y"
+#line 3818 "gram.y"
 {      yyval.node = makeA_Expr(NOTNULL, NULL, yyvsp[-3].node, NULL); ;
     break;}
 case 671:
-#line 3823 "gram.y"
+#line 3825 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        n->val.type = T_String;
@@ -9238,7 +9240,7 @@ case 671:
                                ;
     break;}
 case 672:
-#line 3833 "gram.y"
+#line 3835 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        n->val.type = T_String;
@@ -9250,7 +9252,7 @@ case 672:
                                ;
     break;}
 case 673:
-#line 3843 "gram.y"
+#line 3845 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        n->val.type = T_String;
@@ -9262,7 +9264,7 @@ case 673:
                                ;
     break;}
 case 674:
-#line 3853 "gram.y"
+#line 3855 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        n->val.type = T_String;
@@ -9274,7 +9276,7 @@ case 674:
                                ;
     break;}
 case 675:
-#line 3863 "gram.y"
+#line 3865 "gram.y"
 {
                                        yyval.node = makeA_Expr(AND, NULL,
                                                makeA_Expr(OP, ">=", yyvsp[-4].node, yyvsp[-2].node),
@@ -9282,7 +9284,7 @@ case 675:
                                ;
     break;}
 case 676:
-#line 3869 "gram.y"
+#line 3871 "gram.y"
 {
                                        yyval.node = makeA_Expr(OR, NULL,
                                                makeA_Expr(OP, "<", yyvsp[-5].node, yyvsp[-2].node),
@@ -9290,11 +9292,11 @@ case 676:
                                ;
     break;}
 case 677:
-#line 3874 "gram.y"
+#line 3876 "gram.y"
 { saved_In_Expr = lcons(yyvsp[-1].node,saved_In_Expr); ;
     break;}
 case 678:
-#line 3875 "gram.y"
+#line 3877 "gram.y"
 {
                                        saved_In_Expr = lnext(saved_In_Expr);
                                        if (nodeTag(yyvsp[-1].node) == T_SubLink)
@@ -9310,11 +9312,11 @@ case 678:
                                ;
     break;}
 case 679:
-#line 3888 "gram.y"
+#line 3890 "gram.y"
 { saved_In_Expr = lcons(yyvsp[-2].node,saved_In_Expr); ;
     break;}
 case 680:
-#line 3889 "gram.y"
+#line 3891 "gram.y"
 {
                                        saved_In_Expr = lnext(saved_In_Expr);
                                        if (nodeTag(yyvsp[-1].node) == T_SubLink)
@@ -9330,7 +9332,7 @@ case 680:
                                ;
     break;}
 case 681:
-#line 3903 "gram.y"
+#line 3905 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-4].node, NULL);
@@ -9342,7 +9344,7 @@ case 681:
                                ;
     break;}
 case 682:
-#line 3913 "gram.y"
+#line 3915 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-4].node, NULL);
@@ -9354,7 +9356,7 @@ case 682:
                                ;
     break;}
 case 683:
-#line 3923 "gram.y"
+#line 3925 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-4].node, NULL);
@@ -9366,7 +9368,7 @@ case 683:
                                ;
     break;}
 case 684:
-#line 3933 "gram.y"
+#line 3935 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-4].node, NULL);
@@ -9378,7 +9380,7 @@ case 684:
                                ;
     break;}
 case 685:
-#line 3943 "gram.y"
+#line 3945 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-4].node, NULL);
@@ -9390,7 +9392,7 @@ case 685:
                                ;
     break;}
 case 686:
-#line 3953 "gram.y"
+#line 3955 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-4].node, NULL);
@@ -9402,7 +9404,7 @@ case 686:
                                ;
     break;}
 case 687:
-#line 3963 "gram.y"
+#line 3965 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-4].node, NULL);
@@ -9414,7 +9416,7 @@ case 687:
                                ;
     break;}
 case 688:
-#line 3973 "gram.y"
+#line 3975 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-4].node, NULL);
@@ -9426,7 +9428,7 @@ case 688:
                                ;
     break;}
 case 689:
-#line 3983 "gram.y"
+#line 3985 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node,NIL);
@@ -9438,7 +9440,7 @@ case 689:
                                ;
     break;}
 case 690:
-#line 3993 "gram.y"
+#line 3995 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node,NIL);
@@ -9450,7 +9452,7 @@ case 690:
                                ;
     break;}
 case 691:
-#line 4003 "gram.y"
+#line 4005 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node,NIL);
@@ -9462,7 +9464,7 @@ case 691:
                                ;
     break;}
 case 692:
-#line 4013 "gram.y"
+#line 4015 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node,NIL);
@@ -9474,7 +9476,7 @@ case 692:
                                ;
     break;}
 case 693:
-#line 4023 "gram.y"
+#line 4025 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node,NIL);
@@ -9486,7 +9488,7 @@ case 693:
                                ;
     break;}
 case 694:
-#line 4033 "gram.y"
+#line 4035 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node,NIL);
@@ -9498,7 +9500,7 @@ case 694:
                                ;
     break;}
 case 695:
-#line 4043 "gram.y"
+#line 4045 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node,NIL);
@@ -9510,7 +9512,7 @@ case 695:
                                ;
     break;}
 case 696:
-#line 4053 "gram.y"
+#line 4055 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node,NIL);
@@ -9522,7 +9524,7 @@ case 696:
                                ;
     break;}
 case 697:
-#line 4063 "gram.y"
+#line 4065 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node, NULL);
@@ -9534,7 +9536,7 @@ case 697:
                                ;
     break;}
 case 698:
-#line 4073 "gram.y"
+#line 4075 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node, NULL);
@@ -9546,7 +9548,7 @@ case 698:
                                ;
     break;}
 case 699:
-#line 4083 "gram.y"
+#line 4085 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node, NULL);
@@ -9558,7 +9560,7 @@ case 699:
                                ;
     break;}
 case 700:
-#line 4093 "gram.y"
+#line 4095 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node, NULL);
@@ -9570,7 +9572,7 @@ case 700:
                                ;
     break;}
 case 701:
-#line 4103 "gram.y"
+#line 4105 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node, NULL);
@@ -9582,7 +9584,7 @@ case 701:
                                ;
     break;}
 case 702:
-#line 4113 "gram.y"
+#line 4115 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node, NULL);
@@ -9594,7 +9596,7 @@ case 702:
                                ;
     break;}
 case 703:
-#line 4123 "gram.y"
+#line 4125 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node, NULL);
@@ -9606,7 +9608,7 @@ case 703:
                                ;
     break;}
 case 704:
-#line 4133 "gram.y"
+#line 4135 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node, NULL);
@@ -9618,34 +9620,34 @@ case 704:
                                ;
     break;}
 case 705:
-#line 4143 "gram.y"
+#line 4145 "gram.y"
 {      yyval.node = makeA_Expr(AND, NULL, yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 706:
-#line 4145 "gram.y"
+#line 4147 "gram.y"
 {      yyval.node = makeA_Expr(OR, NULL, yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 707:
-#line 4147 "gram.y"
+#line 4149 "gram.y"
 {      yyval.node = makeA_Expr(NOT, NULL, NULL, yyvsp[0].node); ;
     break;}
 case 708:
-#line 4149 "gram.y"
+#line 4151 "gram.y"
 {      yyval.node = yyvsp[0].node; ;
     break;}
 case 709:
-#line 4158 "gram.y"
+#line 4160 "gram.y"
 {
                                        yyvsp[-1].attr->indirection = yyvsp[0].list;
                                        yyval.node = (Node *)yyvsp[-1].attr;
                                ;
     break;}
 case 710:
-#line 4163 "gram.y"
+#line 4165 "gram.y"
 {      yyval.node = yyvsp[0].node;  ;
     break;}
 case 711:
-#line 4165 "gram.y"
+#line 4167 "gram.y"
 {
                                        /* could be a column name or a relation_name */
                                        Ident *n = makeNode(Ident);
@@ -9655,39 +9657,39 @@ case 711:
                                ;
     break;}
 case 712:
-#line 4173 "gram.y"
+#line 4175 "gram.y"
 {      yyval.node = makeA_Expr(OP, "-", NULL, yyvsp[0].node); ;
     break;}
 case 713:
-#line 4175 "gram.y"
+#line 4177 "gram.y"
 {      yyval.node = makeA_Expr(OP, "+", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 714:
-#line 4177 "gram.y"
+#line 4179 "gram.y"
 {      yyval.node = makeA_Expr(OP, "-", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 715:
-#line 4179 "gram.y"
+#line 4181 "gram.y"
 {      yyval.node = makeA_Expr(OP, "/", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 716:
-#line 4181 "gram.y"
+#line 4183 "gram.y"
 {      yyval.node = makeA_Expr(OP, "*", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 717:
-#line 4183 "gram.y"
+#line 4185 "gram.y"
 {      yyval.node = makeA_Expr(OP, ":", NULL, yyvsp[0].node); ;
     break;}
 case 718:
-#line 4185 "gram.y"
+#line 4187 "gram.y"
 {      yyval.node = makeA_Expr(OP, ";", NULL, yyvsp[0].node); ;
     break;}
 case 719:
-#line 4187 "gram.y"
+#line 4189 "gram.y"
 {      yyval.node = makeA_Expr(OP, "|", NULL, yyvsp[0].node); ;
     break;}
 case 720:
-#line 4189 "gram.y"
+#line 4191 "gram.y"
 {
                                        yyval.node = (Node *)yyvsp[-2].node;
                                        /* AexprConst can be either A_Const or ParamNo */
@@ -9705,7 +9707,7 @@ case 720:
                                ;
     break;}
 case 721:
-#line 4205 "gram.y"
+#line 4207 "gram.y"
 {
                                        yyval.node = (Node *)yyvsp[-3].node;
                                        /* AexprConst can be either A_Const or ParamNo */
@@ -9723,23 +9725,23 @@ case 721:
                                ;
     break;}
 case 722:
-#line 4221 "gram.y"
+#line 4223 "gram.y"
 {      yyval.node = yyvsp[-1].node; ;
     break;}
 case 723:
-#line 4223 "gram.y"
+#line 4225 "gram.y"
 {      yyval.node = makeIndexable(yyvsp[-1].str,yyvsp[-2].node,yyvsp[0].node); ;
     break;}
 case 724:
-#line 4225 "gram.y"
+#line 4227 "gram.y"
 {      yyval.node = makeA_Expr(OP, yyvsp[-1].str, NULL, yyvsp[0].node); ;
     break;}
 case 725:
-#line 4227 "gram.y"
+#line 4229 "gram.y"
 {      yyval.node = makeA_Expr(OP, yyvsp[0].str, yyvsp[-1].node, NULL); ;
     break;}
 case 726:
-#line 4229 "gram.y"
+#line 4231 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = yyvsp[-2].str;
@@ -9748,7 +9750,7 @@ case 726:
                                ;
     break;}
 case 727:
-#line 4236 "gram.y"
+#line 4238 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = yyvsp[-3].str;
@@ -9757,7 +9759,7 @@ case 727:
                                ;
     break;}
 case 728:
-#line 4243 "gram.y"
+#line 4245 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        TypeName *t = makeNode(TypeName);
@@ -9774,7 +9776,7 @@ case 728:
                                ;
     break;}
 case 729:
-#line 4258 "gram.y"
+#line 4260 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        TypeName *t = makeNode(TypeName);
@@ -9791,7 +9793,7 @@ case 729:
                                ;
     break;}
 case 730:
-#line 4273 "gram.y"
+#line 4275 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        A_Const *s = makeNode(A_Const);
@@ -9815,7 +9817,7 @@ case 730:
                                ;
     break;}
 case 731:
-#line 4295 "gram.y"
+#line 4297 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        TypeName *t = makeNode(TypeName);
@@ -9832,7 +9834,7 @@ case 731:
                                ;
     break;}
 case 732:
-#line 4310 "gram.y"
+#line 4312 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        A_Const *s = makeNode(A_Const);
@@ -9856,7 +9858,7 @@ case 732:
                                ;
     break;}
 case 733:
-#line 4332 "gram.y"
+#line 4334 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "getpgusername";
@@ -9865,7 +9867,7 @@ case 733:
                                ;
     break;}
 case 734:
-#line 4339 "gram.y"
+#line 4341 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "getpgusername";
@@ -9874,7 +9876,7 @@ case 734:
                                ;
     break;}
 case 735:
-#line 4346 "gram.y"
+#line 4348 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "strpos";
@@ -9883,7 +9885,7 @@ case 735:
                                ;
     break;}
 case 736:
-#line 4353 "gram.y"
+#line 4355 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "substr";
@@ -9892,7 +9894,7 @@ case 736:
                                ;
     break;}
 case 737:
-#line 4361 "gram.y"
+#line 4363 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "btrim";
@@ -9901,7 +9903,7 @@ case 737:
                                ;
     break;}
 case 738:
-#line 4368 "gram.y"
+#line 4370 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "ltrim";
@@ -9910,7 +9912,7 @@ case 738:
                                ;
     break;}
 case 739:
-#line 4375 "gram.y"
+#line 4377 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "rtrim";
@@ -9919,7 +9921,7 @@ case 739:
                                ;
     break;}
 case 740:
-#line 4382 "gram.y"
+#line 4384 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "btrim";
@@ -9928,7 +9930,7 @@ case 740:
                                ;
     break;}
 case 741:
-#line 4391 "gram.y"
+#line 4393 "gram.y"
 {
                                        A_Indices *ai = makeNode(A_Indices);
                                        ai->lidx = NULL;
@@ -9937,7 +9939,7 @@ case 741:
                                ;
     break;}
 case 742:
-#line 4398 "gram.y"
+#line 4400 "gram.y"
 {
                                        A_Indices *ai = makeNode(A_Indices);
                                        ai->lidx = yyvsp[-4].node;
@@ -9946,23 +9948,23 @@ case 742:
                                ;
     break;}
 case 743:
-#line 4405 "gram.y"
+#line 4407 "gram.y"
 {      yyval.list = NIL; ;
     break;}
 case 744:
-#line 4409 "gram.y"
+#line 4411 "gram.y"
 { yyval.list = lcons(yyvsp[0].node, NIL); ;
     break;}
 case 745:
-#line 4411 "gram.y"
+#line 4413 "gram.y"
 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node); ;
     break;}
 case 746:
-#line 4413 "gram.y"
+#line 4415 "gram.y"
 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node); ;
     break;}
 case 747:
-#line 4417 "gram.y"
+#line 4419 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        n->val.type = T_String;
@@ -9971,66 +9973,66 @@ case 747:
                                ;
     break;}
 case 748:
-#line 4424 "gram.y"
+#line 4426 "gram.y"
 {      yyval.list = NIL; ;
     break;}
 case 749:
-#line 4427 "gram.y"
+#line 4429 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 750:
-#line 4428 "gram.y"
+#line 4430 "gram.y"
 { yyval.str = "tz_hour"; ;
     break;}
 case 751:
-#line 4429 "gram.y"
+#line 4431 "gram.y"
 { yyval.str = "tz_minute"; ;
     break;}
 case 752:
-#line 4433 "gram.y"
+#line 4435 "gram.y"
 {      yyval.list = makeList(yyvsp[0].node, yyvsp[-2].node, -1); ;
     break;}
 case 753:
-#line 4435 "gram.y"
+#line 4437 "gram.y"
 {      yyval.list = NIL; ;
     break;}
 case 754:
-#line 4439 "gram.y"
+#line 4441 "gram.y"
 {
                                        yyvsp[-1].attr->indirection = yyvsp[0].list;
                                        yyval.node = (Node *)yyvsp[-1].attr;
                                ;
     break;}
 case 755:
-#line 4444 "gram.y"
+#line 4446 "gram.y"
 {      yyval.node = yyvsp[0].node;  ;
     break;}
 case 756:
-#line 4446 "gram.y"
+#line 4448 "gram.y"
 {      yyval.node = makeA_Expr(OP, "-", NULL, yyvsp[0].node); ;
     break;}
 case 757:
-#line 4448 "gram.y"
+#line 4450 "gram.y"
 {      yyval.node = makeA_Expr(OP, "+", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 758:
-#line 4450 "gram.y"
+#line 4452 "gram.y"
 {      yyval.node = makeA_Expr(OP, "-", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 759:
-#line 4452 "gram.y"
+#line 4454 "gram.y"
 {      yyval.node = makeA_Expr(OP, "/", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 760:
-#line 4454 "gram.y"
+#line 4456 "gram.y"
 {      yyval.node = makeA_Expr(OP, "*", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 761:
-#line 4456 "gram.y"
+#line 4458 "gram.y"
 {      yyval.node = makeA_Expr(OP, "|", NULL, yyvsp[0].node); ;
     break;}
 case 762:
-#line 4458 "gram.y"
+#line 4460 "gram.y"
 {
                                        yyval.node = (Node *)yyvsp[-2].node;
                                        /* AexprConst can be either A_Const or ParamNo */
@@ -10048,7 +10050,7 @@ case 762:
                                ;
     break;}
 case 763:
-#line 4474 "gram.y"
+#line 4476 "gram.y"
 {
                                        yyval.node = (Node *)yyvsp[-3].node;
                                        /* AexprConst can be either A_Const or ParamNo */
@@ -10066,23 +10068,23 @@ case 763:
                                ;
     break;}
 case 764:
-#line 4490 "gram.y"
+#line 4492 "gram.y"
 {      yyval.node = yyvsp[-1].node; ;
     break;}
 case 765:
-#line 4492 "gram.y"
+#line 4494 "gram.y"
 {      yyval.node = makeA_Expr(OP, yyvsp[-1].str, yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 766:
-#line 4494 "gram.y"
+#line 4496 "gram.y"
 {      yyval.node = makeA_Expr(OP, yyvsp[-1].str, NULL, yyvsp[0].node); ;
     break;}
 case 767:
-#line 4496 "gram.y"
+#line 4498 "gram.y"
 {      yyval.node = makeA_Expr(OP, yyvsp[0].str, yyvsp[-1].node, NULL); ;
     break;}
 case 768:
-#line 4498 "gram.y"
+#line 4500 "gram.y"
 {
                                        /* could be a column name or a relation_name */
                                        Ident *n = makeNode(Ident);
@@ -10092,7 +10094,7 @@ case 768:
                                ;
     break;}
 case 769:
-#line 4506 "gram.y"
+#line 4508 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = yyvsp[-2].str;
@@ -10101,7 +10103,7 @@ case 769:
                                ;
     break;}
 case 770:
-#line 4513 "gram.y"
+#line 4515 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = yyvsp[-3].str;
@@ -10110,7 +10112,7 @@ case 770:
                                ;
     break;}
 case 771:
-#line 4520 "gram.y"
+#line 4522 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "strpos";
@@ -10119,7 +10121,7 @@ case 771:
                                ;
     break;}
 case 772:
-#line 4527 "gram.y"
+#line 4529 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "substr";
@@ -10128,7 +10130,7 @@ case 772:
                                ;
     break;}
 case 773:
-#line 4535 "gram.y"
+#line 4537 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "btrim";
@@ -10137,7 +10139,7 @@ case 773:
                                ;
     break;}
 case 774:
-#line 4542 "gram.y"
+#line 4544 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "ltrim";
@@ -10146,7 +10148,7 @@ case 774:
                                ;
     break;}
 case 775:
-#line 4549 "gram.y"
+#line 4551 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "rtrim";
@@ -10155,7 +10157,7 @@ case 775:
                                ;
     break;}
 case 776:
-#line 4556 "gram.y"
+#line 4558 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "btrim";
@@ -10164,21 +10166,21 @@ case 776:
                                ;
     break;}
 case 777:
-#line 4565 "gram.y"
+#line 4567 "gram.y"
 {
                                        yyval.list = nconc(nconc(yyvsp[-2].list,yyvsp[-1].list),yyvsp[0].list);
                                ;
     break;}
 case 778:
-#line 4569 "gram.y"
+#line 4571 "gram.y"
 {      yyval.list = NIL; ;
     break;}
 case 779:
-#line 4573 "gram.y"
+#line 4575 "gram.y"
 {      yyval.list = yyvsp[0].list; ;
     break;}
 case 780:
-#line 4575 "gram.y"
+#line 4577 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        n->val.type = T_Integer;
@@ -10187,27 +10189,27 @@ case 780:
                                ;
     break;}
 case 781:
-#line 4584 "gram.y"
+#line 4586 "gram.y"
 {      yyval.list = yyvsp[0].list; ;
     break;}
 case 782:
-#line 4586 "gram.y"
+#line 4588 "gram.y"
 {      yyval.list = NIL; ;
     break;}
 case 783:
-#line 4590 "gram.y"
+#line 4592 "gram.y"
 { yyval.list = lappend(yyvsp[0].list, yyvsp[-2].node); ;
     break;}
 case 784:
-#line 4592 "gram.y"
+#line 4594 "gram.y"
 { yyval.list = yyvsp[0].list; ;
     break;}
 case 785:
-#line 4594 "gram.y"
+#line 4596 "gram.y"
 { yyval.list = yyvsp[0].list; ;
     break;}
 case 786:
-#line 4598 "gram.y"
+#line 4600 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->subselect = yyvsp[0].node;
@@ -10215,21 +10217,21 @@ case 786:
                                ;
     break;}
 case 787:
-#line 4604 "gram.y"
+#line 4606 "gram.y"
 {      yyval.node = yyvsp[0].node; ;
     break;}
 case 788:
-#line 4608 "gram.y"
+#line 4610 "gram.y"
 {      yyval.node = makeA_Expr(OP, "=", lfirst(saved_In_Expr), yyvsp[0].node); ;
     break;}
 case 789:
-#line 4610 "gram.y"
+#line 4612 "gram.y"
 {      yyval.node = makeA_Expr(OR, NULL, yyvsp[-2].node,
                                                makeA_Expr(OP, "=", lfirst(saved_In_Expr), yyvsp[0].node));
                                ;
     break;}
 case 790:
-#line 4616 "gram.y"
+#line 4618 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->subselect = yyvsp[0].node;
@@ -10237,21 +10239,21 @@ case 790:
                                ;
     break;}
 case 791:
-#line 4622 "gram.y"
+#line 4624 "gram.y"
 {      yyval.node = yyvsp[0].node; ;
     break;}
 case 792:
-#line 4626 "gram.y"
+#line 4628 "gram.y"
 {      yyval.node = makeA_Expr(OP, "<>", lfirst(saved_In_Expr), yyvsp[0].node); ;
     break;}
 case 793:
-#line 4628 "gram.y"
+#line 4630 "gram.y"
 {      yyval.node = makeA_Expr(AND, NULL, yyvsp[-2].node,
                                                makeA_Expr(OP, "<>", lfirst(saved_In_Expr), yyvsp[0].node));
                                ;
     break;}
 case 794:
-#line 4649 "gram.y"
+#line 4651 "gram.y"
 {
                                        CaseExpr *c = makeNode(CaseExpr);
                                        c->arg = yyvsp[-3].node;
@@ -10261,7 +10263,7 @@ case 794:
                                ;
     break;}
 case 795:
-#line 4657 "gram.y"
+#line 4659 "gram.y"
 {
                                        CaseExpr *c = makeNode(CaseExpr);
                                        CaseWhen *w = makeNode(CaseWhen);
@@ -10274,7 +10276,7 @@ case 795:
                                ;
     break;}
 case 796:
-#line 4668 "gram.y"
+#line 4670 "gram.y"
 {
                                        CaseExpr *c = makeNode(CaseExpr);
                                        CaseWhen *w;
@@ -10292,15 +10294,15 @@ case 796:
                                ;
     break;}
 case 797:
-#line 4686 "gram.y"
+#line 4688 "gram.y"
 { yyval.list = lappend(yyvsp[-1].list, yyvsp[0].node); ;
     break;}
 case 798:
-#line 4688 "gram.y"
+#line 4690 "gram.y"
 { yyval.list = lcons(yyvsp[0].node, NIL); ;
     break;}
 case 799:
-#line 4692 "gram.y"
+#line 4694 "gram.y"
 {
                                        CaseWhen *w = makeNode(CaseWhen);
                                        w->expr = yyvsp[-2].node;
@@ -10309,22 +10311,22 @@ case 799:
                                ;
     break;}
 case 800:
-#line 4700 "gram.y"
+#line 4702 "gram.y"
 { yyval.node = yyvsp[0].node; ;
     break;}
 case 801:
-#line 4701 "gram.y"
+#line 4703 "gram.y"
 { yyval.node = NULL; ;
     break;}
 case 802:
-#line 4705 "gram.y"
+#line 4707 "gram.y"
 {
                                        yyvsp[-1].attr->indirection = yyvsp[0].list;
                                        yyval.node = (Node *)yyvsp[-1].attr;
                                ;
     break;}
 case 803:
-#line 4710 "gram.y"
+#line 4712 "gram.y"
 {
                                        /* could be a column name or a relation_name */
                                        Ident *n = makeNode(Ident);
@@ -10334,11 +10336,11 @@ case 803:
                                ;
     break;}
 case 804:
-#line 4718 "gram.y"
+#line 4720 "gram.y"
 {      yyval.node = NULL; ;
     break;}
 case 805:
-#line 4722 "gram.y"
+#line 4724 "gram.y"
 {
                                        yyval.attr = makeNode(Attr);
                                        yyval.attr->relname = yyvsp[-2].str;
@@ -10348,7 +10350,7 @@ case 805:
                                ;
     break;}
 case 806:
-#line 4730 "gram.y"
+#line 4732 "gram.y"
 {
                                        yyval.attr = makeNode(Attr);
                                        yyval.attr->relname = NULL;
@@ -10358,27 +10360,27 @@ case 806:
                                ;
     break;}
 case 807:
-#line 4740 "gram.y"
+#line 4742 "gram.y"
 { yyval.list = lcons(makeString(yyvsp[0].str), NIL); ;
     break;}
 case 808:
-#line 4742 "gram.y"
+#line 4744 "gram.y"
 { yyval.list = lappend(yyvsp[-2].list, makeString(yyvsp[0].str)); ;
     break;}
 case 809:
-#line 4744 "gram.y"
+#line 4746 "gram.y"
 { yyval.list = lappend(yyvsp[-2].list, makeString("*")); ;
     break;}
 case 810:
-#line 4755 "gram.y"
+#line 4757 "gram.y"
 {      yyval.list = lappend(yyvsp[-2].list,yyvsp[0].target);  ;
     break;}
 case 811:
-#line 4757 "gram.y"
+#line 4759 "gram.y"
 {      yyval.list = lcons(yyvsp[0].target, NIL);  ;
     break;}
 case 812:
-#line 4759 "gram.y"
+#line 4761 "gram.y"
 {
                                        ResTarget *rt = makeNode(ResTarget);
                                        Attr *att = makeNode(Attr);
@@ -10393,7 +10395,7 @@ case 812:
                                ;
     break;}
 case 813:
-#line 4774 "gram.y"
+#line 4776 "gram.y"
 {
                                        yyval.target = makeNode(ResTarget);
                                        yyval.target->name = yyvsp[-3].str;
@@ -10402,7 +10404,7 @@ case 813:
                                ;
     break;}
 case 814:
-#line 4781 "gram.y"
+#line 4783 "gram.y"
 {
                                        yyval.target = makeNode(ResTarget);
                                        yyval.target->name = NULL;
@@ -10411,7 +10413,7 @@ case 814:
                                ;
     break;}
 case 815:
-#line 4788 "gram.y"
+#line 4790 "gram.y"
 {
                                        Attr *att = makeNode(Attr);
                                        att->relname = yyvsp[-2].str;
@@ -10425,15 +10427,15 @@ case 815:
                                ;
     break;}
 case 816:
-#line 4807 "gram.y"
+#line 4809 "gram.y"
 {      yyval.list = lappend(yyvsp[-2].list, yyvsp[0].target);  ;
     break;}
 case 817:
-#line 4809 "gram.y"
+#line 4811 "gram.y"
 {      yyval.list = lcons(yyvsp[0].target, NIL);  ;
     break;}
 case 818:
-#line 4814 "gram.y"
+#line 4816 "gram.y"
 {
                                        yyval.target = makeNode(ResTarget);
                                        yyval.target->name = yyvsp[0].str;
@@ -10442,7 +10444,7 @@ case 818:
                                ;
     break;}
 case 819:
-#line 4821 "gram.y"
+#line 4823 "gram.y"
 {
                                        yyval.target = makeNode(ResTarget);
                                        yyval.target->name = NULL;
@@ -10451,7 +10453,7 @@ case 819:
                                ;
     break;}
 case 820:
-#line 4828 "gram.y"
+#line 4830 "gram.y"
 {
                                        Attr *att = makeNode(Attr);
                                        att->relname = yyvsp[-2].str;
@@ -10465,7 +10467,7 @@ case 820:
                                ;
     break;}
 case 821:
-#line 4840 "gram.y"
+#line 4842 "gram.y"
 {
                                        Attr *att = makeNode(Attr);
                                        att->relname = "*";
@@ -10479,22 +10481,22 @@ case 821:
                                ;
     break;}
 case 822:
-#line 4853 "gram.y"
+#line 4855 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 823:
-#line 4854 "gram.y"
+#line 4856 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 824:
-#line 4858 "gram.y"
+#line 4860 "gram.y"
 {
                                        yyval.str = yyvsp[0].str;
                                        StrNCpy(saved_relname, yyvsp[0].str, NAMEDATALEN);
                                ;
     break;}
 case 825:
-#line 4863 "gram.y"
+#line 4865 "gram.y"
 {
                                        /* disallow refs to variable system tables */
                                        if (strcmp(LogRelationName, yyvsp[0].str) == 0
@@ -10506,43 +10508,43 @@ case 825:
                                ;
     break;}
 case 826:
-#line 4874 "gram.y"
+#line 4876 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 827:
-#line 4875 "gram.y"
+#line 4877 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 828:
-#line 4876 "gram.y"
+#line 4878 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 829:
-#line 4877 "gram.y"
+#line 4879 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 830:
-#line 4878 "gram.y"
+#line 4880 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 831:
-#line 4884 "gram.y"
+#line 4886 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 832:
-#line 4885 "gram.y"
+#line 4887 "gram.y"
 { yyval.str = xlateSqlFunc(yyvsp[0].str); ;
     break;}
 case 833:
-#line 4887 "gram.y"
+#line 4889 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 834:
-#line 4888 "gram.y"
+#line 4890 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 835:
-#line 4894 "gram.y"
+#line 4896 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        n->val.type = T_Integer;
@@ -10551,7 +10553,7 @@ case 835:
                                ;
     break;}
 case 836:
-#line 4901 "gram.y"
+#line 4903 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        n->val.type = T_Float;
@@ -10560,7 +10562,7 @@ case 836:
                                ;
     break;}
 case 837:
-#line 4908 "gram.y"
+#line 4910 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        n->val.type = T_String;
@@ -10569,7 +10571,7 @@ case 837:
                                ;
     break;}
 case 838:
-#line 4915 "gram.y"
+#line 4917 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        n->typename = yyvsp[-1].typnam;
@@ -10579,11 +10581,11 @@ case 838:
                                ;
     break;}
 case 839:
-#line 4923 "gram.y"
+#line 4925 "gram.y"
 {      yyval.node = (Node *)yyvsp[0].paramno;  ;
     break;}
 case 840:
-#line 4925 "gram.y"
+#line 4927 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        n->val.type = T_String;
@@ -10595,7 +10597,7 @@ case 840:
                                ;
     break;}
 case 841:
-#line 4935 "gram.y"
+#line 4937 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        n->val.type = T_String;
@@ -10607,7 +10609,7 @@ case 841:
                                ;
     break;}
 case 842:
-#line 4947 "gram.y"
+#line 4949 "gram.y"
 {
                                        yyval.paramno = makeNode(ParamNo);
                                        yyval.paramno->number = yyvsp[-1].ival;
@@ -10615,471 +10617,471 @@ case 842:
                                ;
     break;}
 case 843:
-#line 4954 "gram.y"
+#line 4956 "gram.y"
 { yyval.ival = yyvsp[0].ival; ;
     break;}
 case 844:
-#line 4955 "gram.y"
+#line 4957 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 845:
-#line 4956 "gram.y"
+#line 4958 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 846:
-#line 4964 "gram.y"
+#line 4966 "gram.y"
 {      yyval.str = xlateSqlType(yyvsp[0].str); ;
     break;}
 case 847:
-#line 4966 "gram.y"
+#line 4968 "gram.y"
 {      yyval.str = xlateSqlType(yyvsp[0].str); ;
     break;}
 case 848:
-#line 4968 "gram.y"
+#line 4970 "gram.y"
 {      yyval.str = xlateSqlType(yyvsp[0].str); ;
     break;}
 case 849:
-#line 4978 "gram.y"
+#line 4980 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 850:
-#line 4979 "gram.y"
+#line 4981 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 851:
-#line 4980 "gram.y"
+#line 4982 "gram.y"
 { yyval.str = "absolute"; ;
     break;}
 case 852:
-#line 4981 "gram.y"
+#line 4983 "gram.y"
 { yyval.str = "action"; ;
     break;}
 case 853:
-#line 4982 "gram.y"
+#line 4984 "gram.y"
 { yyval.str = "after"; ;
     break;}
 case 854:
-#line 4983 "gram.y"
+#line 4985 "gram.y"
 { yyval.str = "aggregate"; ;
     break;}
 case 855:
-#line 4984 "gram.y"
+#line 4986 "gram.y"
 { yyval.str = "backward"; ;
     break;}
 case 856:
-#line 4985 "gram.y"
+#line 4987 "gram.y"
 { yyval.str = "before"; ;
     break;}
 case 857:
-#line 4986 "gram.y"
+#line 4988 "gram.y"
 { yyval.str = "cache"; ;
     break;}
 case 858:
-#line 4987 "gram.y"
+#line 4989 "gram.y"
 { yyval.str = "createdb"; ;
     break;}
 case 859:
-#line 4988 "gram.y"
+#line 4990 "gram.y"
 { yyval.str = "createuser"; ;
     break;}
 case 860:
-#line 4989 "gram.y"
+#line 4991 "gram.y"
 { yyval.str = "cycle"; ;
     break;}
 case 861:
-#line 4990 "gram.y"
+#line 4992 "gram.y"
 { yyval.str = "database"; ;
     break;}
 case 862:
-#line 4991 "gram.y"
+#line 4993 "gram.y"
 { yyval.str = "delimiters"; ;
     break;}
 case 863:
-#line 4992 "gram.y"
+#line 4994 "gram.y"
 { yyval.str = "double"; ;
     break;}
 case 864:
-#line 4993 "gram.y"
+#line 4995 "gram.y"
 { yyval.str = "each"; ;
     break;}
 case 865:
-#line 4994 "gram.y"
+#line 4996 "gram.y"
 { yyval.str = "encoding"; ;
     break;}
 case 866:
-#line 4995 "gram.y"
+#line 4997 "gram.y"
 { yyval.str = "forward"; ;
     break;}
 case 867:
-#line 4996 "gram.y"
+#line 4998 "gram.y"
 { yyval.str = "function"; ;
     break;}
 case 868:
-#line 4997 "gram.y"
+#line 4999 "gram.y"
 { yyval.str = "handler"; ;
     break;}
 case 869:
-#line 4998 "gram.y"
+#line 5000 "gram.y"
 { yyval.str = "increment"; ;
     break;}
 case 870:
-#line 4999 "gram.y"
+#line 5001 "gram.y"
 { yyval.str = "index"; ;
     break;}
 case 871:
-#line 5000 "gram.y"
+#line 5002 "gram.y"
 { yyval.str = "inherits"; ;
     break;}
 case 872:
-#line 5001 "gram.y"
+#line 5003 "gram.y"
 { yyval.str = "insensitive"; ;
     break;}
 case 873:
-#line 5002 "gram.y"
+#line 5004 "gram.y"
 { yyval.str = "instead"; ;
     break;}
 case 874:
-#line 5003 "gram.y"
+#line 5005 "gram.y"
 { yyval.str = "isnull"; ;
     break;}
 case 875:
-#line 5004 "gram.y"
+#line 5006 "gram.y"
 { yyval.str = "key"; ;
     break;}
 case 876:
-#line 5005 "gram.y"
+#line 5007 "gram.y"
 { yyval.str = "language"; ;
     break;}
 case 877:
-#line 5006 "gram.y"
+#line 5008 "gram.y"
 { yyval.str = "lancompiler"; ;
     break;}
 case 878:
-#line 5007 "gram.y"
+#line 5009 "gram.y"
 { yyval.str = "location"; ;
     break;}
 case 879:
-#line 5008 "gram.y"
+#line 5010 "gram.y"
 { yyval.str = "match"; ;
     break;}
 case 880:
-#line 5009 "gram.y"
+#line 5011 "gram.y"
 { yyval.str = "maxvalue"; ;
     break;}
 case 881:
-#line 5010 "gram.y"
+#line 5012 "gram.y"
 { yyval.str = "minvalue"; ;
     break;}
 case 882:
-#line 5011 "gram.y"
+#line 5013 "gram.y"
 { yyval.str = "next"; ;
     break;}
 case 883:
-#line 5012 "gram.y"
+#line 5014 "gram.y"
 { yyval.str = "nocreatedb"; ;
     break;}
 case 884:
-#line 5013 "gram.y"
+#line 5015 "gram.y"
 { yyval.str = "nocreateuser"; ;
     break;}
 case 885:
-#line 5014 "gram.y"
+#line 5016 "gram.y"
 { yyval.str = "nothing"; ;
     break;}
 case 886:
-#line 5015 "gram.y"
+#line 5017 "gram.y"
 { yyval.str = "notnull"; ;
     break;}
 case 887:
-#line 5016 "gram.y"
+#line 5018 "gram.y"
 { yyval.str = "of"; ;
     break;}
 case 888:
-#line 5017 "gram.y"
+#line 5019 "gram.y"
 { yyval.str = "oids"; ;
     break;}
 case 889:
-#line 5018 "gram.y"
+#line 5020 "gram.y"
 { yyval.str = "only"; ;
     break;}
 case 890:
-#line 5019 "gram.y"
+#line 5021 "gram.y"
 { yyval.str = "operator"; ;
     break;}
 case 891:
-#line 5020 "gram.y"
+#line 5022 "gram.y"
 { yyval.str = "option"; ;
     break;}
 case 892:
-#line 5021 "gram.y"
+#line 5023 "gram.y"
 { yyval.str = "password"; ;
     break;}
 case 893:
-#line 5022 "gram.y"
+#line 5024 "gram.y"
 { yyval.str = "prior"; ;
     break;}
 case 894:
-#line 5023 "gram.y"
+#line 5025 "gram.y"
 { yyval.str = "privileges"; ;
     break;}
 case 895:
-#line 5024 "gram.y"
+#line 5026 "gram.y"
 { yyval.str = "procedural"; ;
     break;}
 case 896:
-#line 5025 "gram.y"
+#line 5027 "gram.y"
 { yyval.str = "read"; ;
     break;}
 case 897:
-#line 5026 "gram.y"
+#line 5028 "gram.y"
 { yyval.str = "recipe"; ;
     break;}
 case 898:
-#line 5027 "gram.y"
+#line 5029 "gram.y"
 { yyval.str = "relative"; ;
     break;}
 case 899:
-#line 5028 "gram.y"
+#line 5030 "gram.y"
 { yyval.str = "rename"; ;
     break;}
 case 900:
-#line 5029 "gram.y"
+#line 5031 "gram.y"
 { yyval.str = "returns"; ;
     break;}
 case 901:
-#line 5030 "gram.y"
+#line 5032 "gram.y"
 { yyval.str = "row"; ;
     break;}
 case 902:
-#line 5031 "gram.y"
+#line 5033 "gram.y"
 { yyval.str = "rule"; ;
     break;}
 case 903:
-#line 5032 "gram.y"
+#line 5034 "gram.y"
 { yyval.str = "scroll"; ;
     break;}
 case 904:
-#line 5033 "gram.y"
+#line 5035 "gram.y"
 { yyval.str = "sequence"; ;
     break;}
 case 905:
-#line 5034 "gram.y"
+#line 5036 "gram.y"
 { yyval.str = "serial"; ;
     break;}
 case 906:
-#line 5035 "gram.y"
+#line 5037 "gram.y"
 { yyval.str = "start"; ;
     break;}
 case 907:
-#line 5036 "gram.y"
+#line 5038 "gram.y"
 { yyval.str = "statement"; ;
     break;}
 case 908:
-#line 5037 "gram.y"
+#line 5039 "gram.y"
 { yyval.str = "stdin"; ;
     break;}
 case 909:
-#line 5038 "gram.y"
+#line 5040 "gram.y"
 { yyval.str = "stdout"; ;
     break;}
 case 910:
-#line 5039 "gram.y"
+#line 5041 "gram.y"
 { yyval.str = "time"; ;
     break;}
 case 911:
-#line 5040 "gram.y"
+#line 5042 "gram.y"
 { yyval.str = "timestamp"; ;
     break;}
 case 912:
-#line 5041 "gram.y"
+#line 5043 "gram.y"
 { yyval.str = "timezone_hour"; ;
     break;}
 case 913:
-#line 5042 "gram.y"
+#line 5044 "gram.y"
 { yyval.str = "timezone_minute"; ;
     break;}
 case 914:
-#line 5043 "gram.y"
+#line 5045 "gram.y"
 { yyval.str = "trigger"; ;
     break;}
 case 915:
-#line 5044 "gram.y"
+#line 5046 "gram.y"
 { yyval.str = "trusted"; ;
     break;}
 case 916:
-#line 5045 "gram.y"
+#line 5047 "gram.y"
 { yyval.str = "type"; ;
     break;}
 case 917:
-#line 5046 "gram.y"
+#line 5048 "gram.y"
 { yyval.str = "valid"; ;
     break;}
 case 918:
-#line 5047 "gram.y"
+#line 5049 "gram.y"
 { yyval.str = "version"; ;
     break;}
 case 919:
-#line 5048 "gram.y"
+#line 5050 "gram.y"
 { yyval.str = "zone"; ;
     break;}
 case 920:
-#line 5061 "gram.y"
+#line 5063 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 921:
-#line 5062 "gram.y"
+#line 5064 "gram.y"
 { yyval.str = "abort"; ;
     break;}
 case 922:
-#line 5063 "gram.y"
+#line 5065 "gram.y"
 { yyval.str = "analyze"; ;
     break;}
 case 923:
-#line 5064 "gram.y"
+#line 5066 "gram.y"
 { yyval.str = "binary"; ;
     break;}
 case 924:
-#line 5065 "gram.y"
+#line 5067 "gram.y"
 { yyval.str = "case"; ;
     break;}
 case 925:
-#line 5066 "gram.y"
+#line 5068 "gram.y"
 { yyval.str = "cluster"; ;
     break;}
 case 926:
-#line 5067 "gram.y"
+#line 5069 "gram.y"
 { yyval.str = "coalesce"; ;
     break;}
 case 927:
-#line 5068 "gram.y"
+#line 5070 "gram.y"
 { yyval.str = "constraint"; ;
     break;}
 case 928:
-#line 5069 "gram.y"
+#line 5071 "gram.y"
 { yyval.str = "copy"; ;
     break;}
 case 929:
-#line 5070 "gram.y"
+#line 5072 "gram.y"
 { yyval.str = "cross"; ;
     break;}
 case 930:
-#line 5071 "gram.y"
+#line 5073 "gram.y"
 { yyval.str = "current"; ;
     break;}
 case 931:
-#line 5072 "gram.y"
+#line 5074 "gram.y"
 { yyval.str = "do"; ;
     break;}
 case 932:
-#line 5073 "gram.y"
+#line 5075 "gram.y"
 { yyval.str = "else"; ;
     break;}
 case 933:
-#line 5074 "gram.y"
+#line 5076 "gram.y"
 { yyval.str = "end"; ;
     break;}
 case 934:
-#line 5075 "gram.y"
+#line 5077 "gram.y"
 { yyval.str = "explain"; ;
     break;}
 case 935:
-#line 5076 "gram.y"
+#line 5078 "gram.y"
 { yyval.str = "extend"; ;
     break;}
 case 936:
-#line 5077 "gram.y"
+#line 5079 "gram.y"
 { yyval.str = "false"; ;
     break;}
 case 937:
-#line 5078 "gram.y"
+#line 5080 "gram.y"
 { yyval.str = "foreign"; ;
     break;}
 case 938:
-#line 5079 "gram.y"
+#line 5081 "gram.y"
 { yyval.str = "group"; ;
     break;}
 case 939:
-#line 5080 "gram.y"
+#line 5082 "gram.y"
 { yyval.str = "listen"; ;
     break;}
 case 940:
-#line 5081 "gram.y"
+#line 5083 "gram.y"
 { yyval.str = "load"; ;
     break;}
 case 941:
-#line 5082 "gram.y"
+#line 5084 "gram.y"
 { yyval.str = "lock"; ;
     break;}
 case 942:
-#line 5083 "gram.y"
+#line 5085 "gram.y"
 { yyval.str = "move"; ;
     break;}
 case 943:
-#line 5084 "gram.y"
+#line 5086 "gram.y"
 { yyval.str = "new"; ;
     break;}
 case 944:
-#line 5085 "gram.y"
+#line 5087 "gram.y"
 { yyval.str = "none"; ;
     break;}
 case 945:
-#line 5086 "gram.y"
+#line 5088 "gram.y"
 { yyval.str = "nullif"; ;
     break;}
 case 946:
-#line 5087 "gram.y"
+#line 5089 "gram.y"
 { yyval.str = "order"; ;
     break;}
 case 947:
-#line 5088 "gram.y"
+#line 5090 "gram.y"
 { yyval.str = "position"; ;
     break;}
 case 948:
-#line 5089 "gram.y"
+#line 5091 "gram.y"
 { yyval.str = "precision"; ;
     break;}
 case 949:
-#line 5090 "gram.y"
+#line 5092 "gram.y"
 { yyval.str = "reset"; ;
     break;}
 case 950:
-#line 5091 "gram.y"
+#line 5093 "gram.y"
 { yyval.str = "setof"; ;
     break;}
 case 951:
-#line 5092 "gram.y"
+#line 5094 "gram.y"
 { yyval.str = "show"; ;
     break;}
 case 952:
-#line 5093 "gram.y"
+#line 5095 "gram.y"
 { yyval.str = "table"; ;
     break;}
 case 953:
-#line 5094 "gram.y"
+#line 5096 "gram.y"
 { yyval.str = "then"; ;
     break;}
 case 954:
-#line 5095 "gram.y"
+#line 5097 "gram.y"
 { yyval.str = "transaction"; ;
     break;}
 case 955:
-#line 5096 "gram.y"
+#line 5098 "gram.y"
 { yyval.str = "true"; ;
     break;}
 case 956:
-#line 5097 "gram.y"
+#line 5099 "gram.y"
 { yyval.str = "vacuum"; ;
     break;}
 case 957:
-#line 5098 "gram.y"
+#line 5100 "gram.y"
 { yyval.str = "verbose"; ;
     break;}
 case 958:
-#line 5099 "gram.y"
+#line 5101 "gram.y"
 { yyval.str = "when"; ;
     break;}
 case 959:
-#line 5103 "gram.y"
+#line 5105 "gram.y"
 {
                                        if (QueryIsRule)
                                                yyval.str = "*CURRENT*";
@@ -11088,7 +11090,7 @@ case 959:
                                ;
     break;}
 case 960:
-#line 5110 "gram.y"
+#line 5112 "gram.y"
 {
                                        if (QueryIsRule)
                                                yyval.str = "*NEW*";
@@ -11294,7 +11296,7 @@ yyerrhandle:
   yystate = yyn;
   goto yynewstate;
 }
-#line 5118 "gram.y"
+#line 5120 "gram.y"
 
 
 static Node *