]> granicus.if.org Git - postgresql/commitdiff
Fix shift/reduce for NULL = Var.
authorBruce Momjian <bruce@momjian.us>
Fri, 19 Mar 1999 23:48:50 +0000 (23:48 +0000)
committerBruce Momjian <bruce@momjian.us>
Fri, 19 Mar 1999 23:48:50 +0000 (23:48 +0000)
src/backend/parser/gram.c
src/backend/parser/gram.y

index eef50e9484b5f2572b00d6e894cfed9480d43180..8bdec93af090e0df86c3050f80354c5328cf44dc 100644 (file)
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/parser/Attic/gram.c,v 2.85 1999/03/18 22:11:42 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/parser/Attic/gram.c,v 2.86 1999/03/19 23:48:44 momjian Exp $
  *
  * HISTORY
  *       AUTHOR                        DATE                    MAJOR EVENT
@@ -839,106 +839,106 @@ static const short yyrhs[] = {   243,
 
 #if YYDEBUG != 0
 static const short yyrline[] = { 0,
-   357,   359,   363,   372,   376,   377,   378,   379,   380,   381,
-   382,   383,   384,   385,   386,   387,   388,   389,   390,   391,
-   392,   393,   394,   395,   396,   397,   398,   399,   400,   401,
-   402,   403,   404,   405,   406,   407,   408,   409,   410,   411,
-   412,   413,   414,   415,   416,   417,   427,   448,   469,   477,
-   478,   481,   487,   493,   496,   502,   508,   511,   515,   521,
-   522,   525,   526,   538,   545,   552,   559,   568,   577,   590,
-   591,   594,   595,   596,   599,   605,   611,   619,   625,   631,
-   647,   657,   661,   669,   671,   673,   675,   687,   704,   717,
-   719,   728,   729,   730,   733,   734,   737,   738,   744,   745,
-   756,   769,   770,   773,   780,   787,   790,   791,   794,   804,
-   819,   820,   823,   830,   839,   848,   851,   858,   872,   881,
-   890,   899,   908,   917,   926,   933,   938,   951,   953,   955,
-   957,   959,   961,   963,   965,   967,   969,   971,   973,   975,
-   977,   982,   987,   989,   994,  1000,  1006,  1008,  1011,  1013,
-  1015,  1021,  1023,  1029,  1031,  1039,  1045,  1049,  1057,  1066,
-  1075,  1082,  1087,  1093,  1095,  1097,  1101,  1103,  1105,  1107,
-  1109,  1111,  1113,  1115,  1117,  1119,  1121,  1123,  1125,  1130,
-  1135,  1137,  1142,  1148,  1150,  1152,  1154,  1156,  1158,  1160,
-  1162,  1164,  1166,  1168,  1170,  1172,  1174,  1176,  1178,  1180,
-  1187,  1194,  1201,  1210,  1215,  1221,  1225,  1226,  1227,  1230,
-  1231,  1232,  1235,  1236,  1239,  1240,  1241,  1242,  1245,  1246,
-  1249,  1260,  1261,  1264,  1265,  1268,  1288,  1297,  1299,  1302,
-  1308,  1314,  1320,  1326,  1332,  1340,  1341,  1343,  1347,  1354,
-  1358,  1373,  1385,  1386,  1388,  1404,  1420,  1421,  1424,  1429,
-  1434,  1442,  1443,  1444,  1447,  1453,  1454,  1457,  1458,  1461,
-  1463,  1465,  1469,  1475,  1481,  1482,  1485,  1502,  1509,  1517,
-  1518,  1519,  1522,  1523,  1524,  1525,  1526,  1529,  1532,  1533,
-  1536,  1542,  1548,  1556,  1557,  1558,  1559,  1560,  1579,  1586,
-  1605,  1625,  1641,  1642,  1643,  1644,  1649,  1652,  1653,  1654,
-  1655,  1656,  1657,  1660,  1661,  1662,  1673,  1679,  1683,  1687,
-  1693,  1697,  1703,  1707,  1711,  1715,  1719,  1725,  1729,  1733,
-  1739,  1743,  1754,  1771,  1788,  1789,  1792,  1793,  1796,  1797,
-  1800,  1801,  1804,  1814,  1824,  1825,  1826,  1835,  1836,  1837,
-  1848,  1894,  1907,  1908,  1911,  1912,  1915,  1917,  1921,  1931,
-  1932,  1952,  1961,  1962,  1963,  1964,  1968,  1977,  1978,  1982,
-  1992,  2001,  2001,  2003,  2004,  2005,  2006,  2007,  2008,  2009,
-  2010,  2013,  2017,  2019,  2021,  2034,  2046,  2047,  2050,  2051,
-  2064,  2066,  2080,  2081,  2082,  2083,  2084,  2087,  2088,  2091,
-  2093,  2095,  2099,  2100,  2101,  2102,  2105,  2113,  2124,  2125,
-  2126,  2127,  2130,  2131,  2143,  2151,  2159,  2165,  2187,  2193,
-  2199,  2205,  2211,  2219,  2220,  2221,  2232,  2255,  2271,  2295,
-  2309,  2310,  2313,  2314,  2317,  2318,  2319,  2322,  2323,  2324,
-  2334,  2350,  2367,  2376,  2389,  2390,  2393,  2394,  2397,  2398,
-  2401,  2403,  2415,  2436,  2437,  2438,  2439,  2440,  2441,  2458,
-  2465,  2477,  2493,  2510,  2524,  2542,  2543,  2546,  2549,  2553,
-  2570,  2580,  2588,  2614,  2631,  2648,  2649,  2659,  2681,  2703,
-  2704,  2705,  2706,  2707,  2710,  2711,  2714,  2715,  2723,  2742,
-  2833,  2837,  2841,  2846,  2855,  2862,  2891,  2892,  2895,  2896,
-  2899,  2900,  2903,  2904,  2905,  2906,  2909,  2910,  2913,  2914,
-  2917,  2925,  2926,  2927,  2928,  2929,  2930,  2934,  2936,  2938,
-  2940,  2942,  2944,  2948,  2964,  2977,  2988,  3001,  3018,  3019,
-  3022,  3024,  3026,  3030,  3031,  3034,  3038,  3041,  3042,  3045,
-  3046,  3057,  3058,  3061,  3063,  3065,  3069,  3071,  3075,  3081,
-  3087,  3099,  3101,  3105,  3125,  3129,  3141,  3149,  3157,  3162,
-  3167,  3172,  3177,  3182,  3186,  3192,  3193,  3204,  3205,  3208,
-  3209,  3212,  3222,  3223,  3226,  3233,  3241,  3243,  3245,  3249,
-  3251,  3253,  3268,  3290,  3291,  3298,  3299,  3300,  3303,  3311,
-  3312,  3320,  3326,  3331,  3337,  3345,  3347,  3349,  3351,  3355,
-  3366,  3372,  3383,  3391,  3397,  3408,  3416,  3430,  3457,  3476,
-  3496,  3497,  3498,  3499,  3502,  3503,  3506,  3507,  3510,  3511,
-  3514,  3520,  3527,  3533,  3541,  3542,  3543,  3544,  3545,  3546,
-  3549,  3550,  3553,  3554,  3555,  3556,  3557,  3558,  3559,  3560,
-  3561,  3571,  3573,  3590,  3600,  3610,  3623,  3636,  3642,  3648,
-  3652,  3658,  3659,  3660,  3661,  3662,  3663,  3664,  3665,  3666,
-  3669,  3670,  3681,  3686,  3688,  3690,  3698,  3700,  3702,  3704,
-  3706,  3708,  3710,  3712,  3716,  3718,  3721,  3723,  3725,  3727,
-  3729,  3745,  3761,  3763,  3765,  3767,  3769,  3771,  3773,  3785,
-  3792,  3799,  3814,  3829,  3851,  3866,  3888,  3895,  3902,  3912,
-  3919,  3926,  3934,  3941,  3948,  3955,  3962,  3964,  3966,  3968,
-  3975,  3985,  3995,  4005,  4015,  4021,  4027,  4027,  4041,  4041,
-  4055,  4065,  4075,  4085,  4095,  4105,  4115,  4125,  4135,  4145,
-  4155,  4165,  4175,  4185,  4195,  4205,  4215,  4225,  4235,  4245,
-  4255,  4265,  4275,  4285,  4295,  4305,  4315,  4325,  4327,  4329,
-  4331,  4340,  4345,  4347,  4355,  4357,  4359,  4361,  4363,  4365,
-  4367,  4369,  4371,  4373,  4389,  4405,  4407,  4409,  4411,  4413,
-  4420,  4427,  4442,  4457,  4479,  4494,  4516,  4523,  4530,  4537,
-  4545,  4552,  4559,  4566,  4575,  4582,  4589,  4593,  4595,  4597,
-  4601,  4608,  4612,  4613,  4614,  4617,  4619,  4623,  4628,  4630,
-  4632,  4634,  4636,  4638,  4640,  4642,  4644,  4660,  4676,  4678,
-  4680,  4682,  4684,  4692,  4699,  4706,  4713,  4721,  4728,  4735,
-  4742,  4751,  4755,  4759,  4761,  4770,  4772,  4776,  4778,  4780,
-  4784,  4790,  4794,  4796,  4802,  4808,  4812,  4814,  4835,  4843,
-  4857,  4873,  4875,  4879,  4888,  4889,  4892,  4897,  4905,  4909,
-  4917,  4927,  4929,  4931,  4942,  4944,  4946,  4961,  4968,  4975,
-  4994,  4996,  5001,  5008,  5015,  5027,  5041,  5042,  5045,  5050,
-  5062,  5063,  5064,  5065,  5066,  5072,  5073,  5075,  5081,  5088,
-  5095,  5102,  5110,  5112,  5122,  5134,  5142,  5143,  5144,  5151,
-  5153,  5155,  5166,  5167,  5168,  5169,  5170,  5171,  5172,  5173,
-  5174,  5175,  5176,  5177,  5178,  5179,  5180,  5181,  5182,  5183,
-  5184,  5185,  5186,  5187,  5188,  5189,  5190,  5191,  5192,  5193,
-  5194,  5195,  5196,  5197,  5198,  5199,  5200,  5201,  5202,  5203,
-  5204,  5205,  5206,  5207,  5208,  5209,  5210,  5211,  5212,  5213,
-  5214,  5215,  5216,  5217,  5218,  5219,  5220,  5221,  5222,  5223,
-  5224,  5225,  5226,  5227,  5228,  5229,  5230,  5231,  5232,  5233,
-  5234,  5235,  5248,  5249,  5250,  5251,  5252,  5253,  5254,  5255,
-  5256,  5257,  5258,  5259,  5260,  5261,  5262,  5263,  5264,  5265,
-  5266,  5267,  5268,  5269,  5270,  5271,  5272,  5273,  5274,  5275,
-  5276,  5277,  5278,  5279,  5280,  5281,  5282,  5283,  5284,  5285,
-  5288,  5295
+   358,   360,   364,   373,   377,   378,   379,   380,   381,   382,
+   383,   384,   385,   386,   387,   388,   389,   390,   391,   392,
+   393,   394,   395,   396,   397,   398,   399,   400,   401,   402,
+   403,   404,   405,   406,   407,   408,   409,   410,   411,   412,
+   413,   414,   415,   416,   417,   418,   428,   449,   470,   478,
+   479,   482,   488,   494,   497,   503,   509,   512,   516,   522,
+   523,   526,   527,   539,   546,   553,   560,   569,   578,   591,
+   592,   595,   596,   597,   600,   606,   612,   620,   626,   632,
+   648,   658,   662,   670,   672,   674,   676,   688,   705,   718,
+   720,   729,   730,   731,   734,   735,   738,   739,   745,   746,
+   757,   770,   771,   774,   781,   788,   791,   792,   795,   805,
+   820,   821,   824,   831,   840,   849,   852,   859,   873,   882,
+   891,   900,   909,   918,   927,   934,   939,   952,   954,   956,
+   958,   960,   962,   964,   966,   968,   970,   972,   974,   976,
+   978,   983,   988,   990,   995,  1001,  1007,  1009,  1012,  1014,
+  1016,  1022,  1024,  1030,  1032,  1040,  1046,  1050,  1058,  1067,
+  1076,  1083,  1088,  1094,  1096,  1098,  1102,  1104,  1106,  1108,
+  1110,  1112,  1114,  1116,  1118,  1120,  1122,  1124,  1126,  1131,
+  1136,  1138,  1143,  1149,  1151,  1153,  1155,  1157,  1159,  1161,
+  1163,  1165,  1167,  1169,  1171,  1173,  1175,  1177,  1179,  1181,
+  1188,  1195,  1202,  1211,  1216,  1222,  1226,  1227,  1228,  1231,
+  1232,  1233,  1236,  1237,  1240,  1241,  1242,  1243,  1246,  1247,
+  1250,  1261,  1262,  1265,  1266,  1269,  1289,  1298,  1300,  1303,
+  1309,  1315,  1321,  1327,  1333,  1341,  1342,  1344,  1348,  1355,
+  1359,  1374,  1386,  1387,  1389,  1405,  1421,  1422,  1425,  1430,
+  1435,  1443,  1444,  1445,  1448,  1454,  1455,  1458,  1459,  1462,
+  1464,  1466,  1470,  1476,  1482,  1483,  1486,  1503,  1510,  1518,
+  1519,  1520,  1523,  1524,  1525,  1526,  1527,  1530,  1533,  1534,
+  1537,  1543,  1549,  1557,  1558,  1559,  1560,  1561,  1580,  1587,
+  1606,  1626,  1642,  1643,  1644,  1645,  1650,  1653,  1654,  1655,
+  1656,  1657,  1658,  1661,  1662,  1663,  1674,  1680,  1684,  1688,
+  1694,  1698,  1704,  1708,  1712,  1716,  1720,  1726,  1730,  1734,
+  1740,  1744,  1755,  1772,  1789,  1790,  1793,  1794,  1797,  1798,
+  1801,  1802,  1805,  1815,  1825,  1826,  1827,  1836,  1837,  1838,
+  1849,  1895,  1908,  1909,  1912,  1913,  1916,  1918,  1922,  1932,
+  1933,  1953,  1962,  1963,  1964,  1965,  1969,  1978,  1979,  1983,
+  1993,  2002,  2002,  2004,  2005,  2006,  2007,  2008,  2009,  2010,
+  2011,  2014,  2018,  2020,  2022,  2035,  2047,  2048,  2051,  2052,
+  2065,  2067,  2081,  2082,  2083,  2084,  2085,  2088,  2089,  2092,
+  2094,  2096,  2100,  2101,  2102,  2103,  2106,  2114,  2125,  2126,
+  2127,  2128,  2131,  2132,  2144,  2152,  2160,  2166,  2188,  2194,
+  2200,  2206,  2212,  2220,  2221,  2222,  2233,  2256,  2272,  2296,
+  2310,  2311,  2314,  2315,  2318,  2319,  2320,  2323,  2324,  2325,
+  2335,  2351,  2368,  2377,  2390,  2391,  2394,  2395,  2398,  2399,
+  2402,  2404,  2416,  2437,  2438,  2439,  2440,  2441,  2442,  2459,
+  2466,  2478,  2494,  2511,  2525,  2543,  2544,  2547,  2550,  2554,
+  2571,  2581,  2589,  2615,  2632,  2649,  2650,  2660,  2682,  2704,
+  2705,  2706,  2707,  2708,  2711,  2712,  2715,  2716,  2724,  2743,
+  2834,  2838,  2842,  2847,  2856,  2863,  2892,  2893,  2896,  2897,
+  2900,  2901,  2904,  2905,  2906,  2907,  2910,  2911,  2914,  2915,
+  2918,  2926,  2927,  2928,  2929,  2930,  2931,  2935,  2937,  2939,
+  2941,  2943,  2945,  2949,  2965,  2978,  2989,  3002,  3019,  3020,
+  3023,  3025,  3027,  3031,  3032,  3035,  3039,  3042,  3043,  3046,
+  3047,  3058,  3059,  3062,  3064,  3066,  3070,  3072,  3076,  3082,
+  3088,  3100,  3102,  3106,  3126,  3130,  3142,  3150,  3158,  3163,
+  3168,  3173,  3178,  3183,  3187,  3193,  3194,  3205,  3206,  3209,
+  3210,  3213,  3223,  3224,  3227,  3234,  3242,  3244,  3246,  3250,
+  3252,  3254,  3269,  3291,  3292,  3299,  3300,  3301,  3304,  3312,
+  3313,  3321,  3327,  3332,  3338,  3346,  3348,  3350,  3352,  3356,
+  3367,  3373,  3384,  3392,  3398,  3409,  3417,  3431,  3458,  3477,
+  3497,  3498,  3499,  3500,  3503,  3504,  3507,  3508,  3511,  3512,
+  3515,  3521,  3528,  3534,  3542,  3543,  3544,  3545,  3546,  3547,
+  3550,  3551,  3554,  3555,  3556,  3557,  3558,  3559,  3560,  3561,
+  3562,  3572,  3574,  3591,  3601,  3611,  3624,  3637,  3643,  3649,
+  3653,  3659,  3660,  3661,  3662,  3663,  3664,  3665,  3666,  3667,
+  3670,  3671,  3682,  3687,  3689,  3691,  3699,  3701,  3703,  3705,
+  3707,  3709,  3711,  3713,  3717,  3719,  3722,  3724,  3726,  3728,
+  3730,  3746,  3762,  3764,  3766,  3768,  3770,  3772,  3774,  3786,
+  3793,  3800,  3815,  3830,  3852,  3867,  3889,  3896,  3903,  3913,
+  3920,  3927,  3935,  3942,  3949,  3956,  3963,  3965,  3967,  3969,
+  3976,  3986,  3996,  4006,  4016,  4022,  4028,  4028,  4042,  4042,
+  4056,  4066,  4076,  4086,  4096,  4106,  4116,  4126,  4136,  4146,
+  4156,  4166,  4176,  4186,  4196,  4206,  4216,  4226,  4236,  4246,
+  4256,  4266,  4276,  4286,  4296,  4306,  4316,  4326,  4328,  4330,
+  4332,  4341,  4346,  4348,  4356,  4358,  4360,  4362,  4364,  4366,
+  4368,  4370,  4372,  4374,  4390,  4406,  4408,  4410,  4412,  4414,
+  4421,  4428,  4443,  4458,  4480,  4495,  4517,  4524,  4531,  4538,
+  4546,  4553,  4560,  4567,  4576,  4583,  4590,  4594,  4596,  4598,
+  4602,  4609,  4613,  4614,  4615,  4618,  4620,  4624,  4629,  4631,
+  4633,  4635,  4637,  4639,  4641,  4643,  4645,  4661,  4677,  4679,
+  4681,  4683,  4685,  4693,  4700,  4707,  4714,  4722,  4729,  4736,
+  4743,  4752,  4756,  4760,  4762,  4771,  4773,  4777,  4779,  4781,
+  4785,  4791,  4795,  4797,  4803,  4809,  4813,  4815,  4836,  4844,
+  4858,  4874,  4876,  4880,  4889,  4890,  4893,  4898,  4906,  4910,
+  4918,  4928,  4930,  4932,  4943,  4945,  4947,  4962,  4969,  4976,
+  4995,  4997,  5002,  5009,  5016,  5028,  5042,  5043,  5046,  5051,
+  5063,  5064,  5065,  5066,  5067,  5073,  5074,  5076,  5082,  5089,
+  5096,  5103,  5111,  5113,  5123,  5135,  5143,  5144,  5145,  5152,
+  5154,  5156,  5167,  5168,  5169,  5170,  5171,  5172,  5173,  5174,
+  5175,  5176,  5177,  5178,  5179,  5180,  5181,  5182,  5183,  5184,
+  5185,  5186,  5187,  5188,  5189,  5190,  5191,  5192,  5193,  5194,
+  5195,  5196,  5197,  5198,  5199,  5200,  5201,  5202,  5203,  5204,
+  5205,  5206,  5207,  5208,  5209,  5210,  5211,  5212,  5213,  5214,
+  5215,  5216,  5217,  5218,  5219,  5220,  5221,  5222,  5223,  5224,
+  5225,  5226,  5227,  5228,  5229,  5230,  5231,  5232,  5233,  5234,
+  5235,  5236,  5249,  5250,  5251,  5252,  5253,  5254,  5255,  5256,
+  5257,  5258,  5259,  5260,  5261,  5262,  5263,  5264,  5265,  5266,
+  5267,  5268,  5269,  5270,  5271,  5272,  5273,  5274,  5275,  5276,
+  5277,  5278,  5279,  5280,  5281,  5282,  5283,  5284,  5285,  5286,
+  5289,  5296
 };
 #endif
 
@@ -1516,7 +1516,7 @@ static const short yypact[] = {  3093,
    824,   825,-32768,  8564,  8564,  8564,  8564,  8564,  7907,   120,
    585,   828,-32768,   209,   830,-32768,    23,-32768,-32768,  1892,
   8564,-32768,  7907,   551,   832,   833,  7469,   313,   834,   840,
-   581,  7469,  1648,   847,   851,  7469,  3222,   852,   853,  7469,
+-32768,  7469,  1648,   847,   851,  7469,  3222,   852,   853,  7469,
   3222,   857,   864,  7469,   261,   865,   871,  7469,   261,   873,
    876,  7469,   675,   877,   879,  7469,   675,   881,   883,  7469,
    675,-32768,   169,-32768, 10523,   564,-32768,   818,-32768,-32768,
@@ -5338,23 +5338,23 @@ yyreduce:
   switch (yyn) {
 
 case 1:
-#line 358 "gram.y"
+#line 359 "gram.y"
 { parsetree = yyvsp[0].list; ;
     break;}
 case 2:
-#line 360 "gram.y"
+#line 361 "gram.y"
 { parsetree = lcons(yyvsp[0].node,NIL); ;
     break;}
 case 3:
-#line 364 "gram.y"
+#line 365 "gram.y"
 { yyval.list = lappend(yyvsp[-2].list, yyvsp[-1].node); ;
     break;}
 case 4:
-#line 373 "gram.y"
+#line 374 "gram.y"
 { yyval.list = lcons(yyvsp[-1].node,NIL); ;
     break;}
 case 47:
-#line 429 "gram.y"
+#line 430 "gram.y"
 {
                                        CreateUserStmt *n = makeNode(CreateUserStmt);
                                        n->user = yyvsp[-5].str;
@@ -5367,7 +5367,7 @@ case 47:
                                ;
     break;}
 case 48:
-#line 450 "gram.y"
+#line 451 "gram.y"
 {
                                        AlterUserStmt *n = makeNode(AlterUserStmt);
                                        n->user = yyvsp[-5].str;
@@ -5380,7 +5380,7 @@ case 48:
                                ;
     break;}
 case 49:
-#line 470 "gram.y"
+#line 471 "gram.y"
 {
                                        DropUserStmt *n = makeNode(DropUserStmt);
                                        n->user = yyvsp[0].str;
@@ -5388,15 +5388,15 @@ case 49:
                                ;
     break;}
 case 50:
-#line 477 "gram.y"
+#line 478 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 51:
-#line 478 "gram.y"
+#line 479 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 52:
-#line 482 "gram.y"
+#line 483 "gram.y"
 {
                                        bool*  b;
                                        yyval.pboolean = (b = (bool*)palloc(sizeof(bool)));
@@ -5404,7 +5404,7 @@ case 52:
                                ;
     break;}
 case 53:
-#line 488 "gram.y"
+#line 489 "gram.y"
 {
                                        bool*  b;
                                        yyval.pboolean = (b = (bool*)palloc(sizeof(bool)));
@@ -5412,11 +5412,11 @@ case 53:
                                ;
     break;}
 case 54:
-#line 493 "gram.y"
+#line 494 "gram.y"
 { yyval.pboolean = NULL; ;
     break;}
 case 55:
-#line 497 "gram.y"
+#line 498 "gram.y"
 {
                                        bool*  b;
                                        yyval.pboolean = (b = (bool*)palloc(sizeof(bool)));
@@ -5424,7 +5424,7 @@ case 55:
                                ;
     break;}
 case 56:
-#line 503 "gram.y"
+#line 504 "gram.y"
 {
                                        bool*  b;
                                        yyval.pboolean = (b = (bool*)palloc(sizeof(bool)));
@@ -5432,39 +5432,39 @@ case 56:
                                ;
     break;}
 case 57:
-#line 508 "gram.y"
+#line 509 "gram.y"
 { yyval.pboolean = NULL; ;
     break;}
 case 58:
-#line 512 "gram.y"
+#line 513 "gram.y"
 {
                                        yyval.list = lcons((void*)makeString(yyvsp[0].str), yyvsp[-2].list);
                                ;
     break;}
 case 59:
-#line 516 "gram.y"
+#line 517 "gram.y"
 {
                                        yyval.list = lcons((void*)makeString(yyvsp[0].str), NIL);
                                ;
     break;}
 case 60:
-#line 521 "gram.y"
+#line 522 "gram.y"
 { yyval.list = yyvsp[0].list; ;
     break;}
 case 61:
-#line 522 "gram.y"
+#line 523 "gram.y"
 { yyval.list = NULL; ;
     break;}
 case 62:
-#line 525 "gram.y"
+#line 526 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 63:
-#line 526 "gram.y"
+#line 527 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 64:
-#line 539 "gram.y"
+#line 540 "gram.y"
 {
                                        VariableSetStmt *n = makeNode(VariableSetStmt);
                                        n->name  = yyvsp[-2].str;
@@ -5473,7 +5473,7 @@ case 64:
                                ;
     break;}
 case 65:
-#line 546 "gram.y"
+#line 547 "gram.y"
 {
                                        VariableSetStmt *n = makeNode(VariableSetStmt);
                                        n->name  = yyvsp[-2].str;
@@ -5482,7 +5482,7 @@ case 65:
                                ;
     break;}
 case 66:
-#line 553 "gram.y"
+#line 554 "gram.y"
 {
                                        VariableSetStmt *n = makeNode(VariableSetStmt);
                                        n->name  = "timezone";
@@ -5491,7 +5491,7 @@ case 66:
                                ;
     break;}
 case 67:
-#line 560 "gram.y"
+#line 561 "gram.y"
 {
                                        VariableSetStmt *n = makeNode(VariableSetStmt);
                                        n->name  = "XactIsoLevel";
@@ -5502,7 +5502,7 @@ case 67:
                                ;
     break;}
 case 68:
-#line 569 "gram.y"
+#line 570 "gram.y"
 {
                                        VariableSetStmt *n = makeNode(VariableSetStmt);
                                        n->name  = "XactIsoLevel";
@@ -5513,7 +5513,7 @@ case 68:
                                ;
     break;}
 case 69:
-#line 578 "gram.y"
+#line 579 "gram.y"
 {
 #ifdef MB
                                        VariableSetStmt *n = makeNode(VariableSetStmt);
@@ -5526,27 +5526,27 @@ case 69:
                                ;
     break;}
 case 70:
-#line 590 "gram.y"
+#line 591 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 71:
-#line 591 "gram.y"
+#line 592 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 72:
-#line 594 "gram.y"
+#line 595 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 73:
-#line 595 "gram.y"
+#line 596 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 74:
-#line 596 "gram.y"
+#line 597 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 75:
-#line 600 "gram.y"
+#line 601 "gram.y"
 {
                                        VariableShowStmt *n = makeNode(VariableShowStmt);
                                        n->name  = yyvsp[0].str;
@@ -5554,7 +5554,7 @@ case 75:
                                ;
     break;}
 case 76:
-#line 606 "gram.y"
+#line 607 "gram.y"
 {
                                        VariableShowStmt *n = makeNode(VariableShowStmt);
                                        n->name  = "timezone";
@@ -5562,7 +5562,7 @@ case 76:
                                ;
     break;}
 case 77:
-#line 612 "gram.y"
+#line 613 "gram.y"
 {
                                        VariableShowStmt *n = makeNode(VariableShowStmt);
                                        n->name  = "XactIsoLevel";
@@ -5570,7 +5570,7 @@ case 77:
                                ;
     break;}
 case 78:
-#line 620 "gram.y"
+#line 621 "gram.y"
 {
                                        VariableResetStmt *n = makeNode(VariableResetStmt);
                                        n->name  = yyvsp[0].str;
@@ -5578,7 +5578,7 @@ case 78:
                                ;
     break;}
 case 79:
-#line 626 "gram.y"
+#line 627 "gram.y"
 {
                                        VariableResetStmt *n = makeNode(VariableResetStmt);
                                        n->name  = "timezone";
@@ -5586,7 +5586,7 @@ case 79:
                                ;
     break;}
 case 80:
-#line 632 "gram.y"
+#line 633 "gram.y"
 {
                                        VariableResetStmt *n = makeNode(VariableResetStmt);
                                        n->name  = "XactIsoLevel";
@@ -5594,7 +5594,7 @@ case 80:
                                ;
     break;}
 case 81:
-#line 648 "gram.y"
+#line 649 "gram.y"
 {
                                        AddAttrStmt *n = makeNode(AddAttrStmt);
                                        n->relname = yyvsp[-2].str;
@@ -5604,13 +5604,13 @@ case 81:
                                ;
     break;}
 case 82:
-#line 658 "gram.y"
+#line 659 "gram.y"
 {
                                        yyval.node = yyvsp[0].node;
                                ;
     break;}
 case 83:
-#line 662 "gram.y"
+#line 663 "gram.y"
 {
                                        Node *lp = lfirst(yyvsp[-1].list);
 
@@ -5620,23 +5620,23 @@ case 83:
                                ;
     break;}
 case 84:
-#line 670 "gram.y"
+#line 671 "gram.y"
 {      elog(ERROR,"ALTER TABLE/DROP COLUMN not yet implemented"); ;
     break;}
 case 85:
-#line 672 "gram.y"
+#line 673 "gram.y"
 {      elog(ERROR,"ALTER TABLE/ALTER COLUMN/SET DEFAULT not yet implemented"); ;
     break;}
 case 86:
-#line 674 "gram.y"
+#line 675 "gram.y"
 {      elog(ERROR,"ALTER TABLE/ALTER COLUMN/DROP DEFAULT not yet implemented"); ;
     break;}
 case 87:
-#line 676 "gram.y"
+#line 677 "gram.y"
 {      elog(ERROR,"ALTER TABLE/ADD CONSTRAINT not yet implemented"); ;
     break;}
 case 88:
-#line 688 "gram.y"
+#line 689 "gram.y"
 {
                                        ClosePortalStmt *n = makeNode(ClosePortalStmt);
                                        n->portalname = yyvsp[0].str;
@@ -5644,7 +5644,7 @@ case 88:
                                ;
     break;}
 case 89:
-#line 705 "gram.y"
+#line 706 "gram.y"
 {
                                        CopyStmt *n = makeNode(CopyStmt);
                                        n->binary = yyvsp[-5].boolean;
@@ -5657,51 +5657,51 @@ case 89:
                                ;
     break;}
 case 90:
-#line 718 "gram.y"
+#line 719 "gram.y"
 { yyval.ival = TO; ;
     break;}
 case 91:
-#line 720 "gram.y"
+#line 721 "gram.y"
 { yyval.ival = FROM; ;
     break;}
 case 92:
-#line 728 "gram.y"
+#line 729 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 93:
-#line 729 "gram.y"
+#line 730 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 94:
-#line 730 "gram.y"
+#line 731 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 95:
-#line 733 "gram.y"
+#line 734 "gram.y"
 { yyval.boolean = TRUE; ;
     break;}
 case 96:
-#line 734 "gram.y"
+#line 735 "gram.y"
 { yyval.boolean = FALSE; ;
     break;}
 case 97:
-#line 737 "gram.y"
+#line 738 "gram.y"
 { yyval.boolean = TRUE; ;
     break;}
 case 98:
-#line 738 "gram.y"
+#line 739 "gram.y"
 { yyval.boolean = FALSE; ;
     break;}
 case 99:
-#line 744 "gram.y"
+#line 745 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 100:
-#line 745 "gram.y"
+#line 746 "gram.y"
 { yyval.str = "\t"; ;
     break;}
 case 101:
-#line 758 "gram.y"
+#line 759 "gram.y"
 {
                                        CreateStmt *n = makeNode(CreateStmt);
                                        n->istemp = yyvsp[-6].boolean;
@@ -5713,15 +5713,15 @@ case 101:
                                ;
     break;}
 case 102:
-#line 769 "gram.y"
+#line 770 "gram.y"
 { yyval.boolean = TRUE; ;
     break;}
 case 103:
-#line 770 "gram.y"
+#line 771 "gram.y"
 { yyval.boolean = FALSE; ;
     break;}
 case 104:
-#line 774 "gram.y"
+#line 775 "gram.y"
 {
                                        if (yyvsp[0].node != NULL)
                                                yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node);
@@ -5730,7 +5730,7 @@ case 104:
                                ;
     break;}
 case 105:
-#line 781 "gram.y"
+#line 782 "gram.y"
 {
                                        if (yyvsp[0].node != NULL)
                                                yyval.list = lcons(yyvsp[0].node, NIL);
@@ -5739,19 +5739,19 @@ case 105:
                                ;
     break;}
 case 106:
-#line 787 "gram.y"
+#line 788 "gram.y"
 { yyval.list = NULL; ;
     break;}
 case 107:
-#line 790 "gram.y"
+#line 791 "gram.y"
 { yyval.node = yyvsp[0].node; ;
     break;}
 case 108:
-#line 791 "gram.y"
+#line 792 "gram.y"
 { yyval.node = yyvsp[0].node; ;
     break;}
 case 109:
-#line 795 "gram.y"
+#line 796 "gram.y"
 {
                                        ColumnDef *n = makeNode(ColumnDef);
                                        n->colname = yyvsp[-2].str;
@@ -5763,7 +5763,7 @@ case 109:
                                ;
     break;}
 case 110:
-#line 805 "gram.y"
+#line 806 "gram.y"
 {
                                        ColumnDef *n = makeNode(ColumnDef);
                                        n->colname = yyvsp[-2].str;
@@ -5778,15 +5778,15 @@ case 110:
                                ;
     break;}
 case 111:
-#line 819 "gram.y"
+#line 820 "gram.y"
 { yyval.list = yyvsp[0].list; ;
     break;}
 case 112:
-#line 820 "gram.y"
+#line 821 "gram.y"
 { yyval.list = NULL; ;
     break;}
 case 113:
-#line 824 "gram.y"
+#line 825 "gram.y"
 {
                                        if (yyvsp[0].node != NULL)
                                                yyval.list = lappend(yyvsp[-1].list, yyvsp[0].node);
@@ -5795,7 +5795,7 @@ case 113:
                                ;
     break;}
 case 114:
-#line 831 "gram.y"
+#line 832 "gram.y"
 {
                                        if (yyvsp[0].node != NULL)
                                                yyval.list = lcons(yyvsp[0].node, NIL);
@@ -5804,7 +5804,7 @@ case 114:
                                ;
     break;}
 case 115:
-#line 840 "gram.y"
+#line 841 "gram.y"
 {
                                        Constraint *n = makeNode(Constraint);
                                        n->contype = CONSTR_PRIMARY;
@@ -5815,11 +5815,11 @@ case 115:
                                ;
     break;}
 case 116:
-#line 848 "gram.y"
+#line 849 "gram.y"
 { yyval.list = NULL; ;
     break;}
 case 117:
-#line 853 "gram.y"
+#line 854 "gram.y"
 {
                                                Constraint *n = (Constraint *)yyvsp[0].node;
                                                if (n != NULL) n->name = fmtId(yyvsp[-1].str);
@@ -5827,11 +5827,11 @@ case 117:
                                ;
     break;}
 case 118:
-#line 859 "gram.y"
+#line 860 "gram.y"
 { yyval.node = yyvsp[0].node; ;
     break;}
 case 119:
-#line 873 "gram.y"
+#line 874 "gram.y"
 {
                                        Constraint *n = makeNode(Constraint);
                                        n->contype = CONSTR_CHECK;
@@ -5842,7 +5842,7 @@ case 119:
                                ;
     break;}
 case 120:
-#line 882 "gram.y"
+#line 883 "gram.y"
 {
                                        Constraint *n = makeNode(Constraint);
                                        n->contype = CONSTR_DEFAULT;
@@ -5853,7 +5853,7 @@ case 120:
                                ;
     break;}
 case 121:
-#line 891 "gram.y"
+#line 892 "gram.y"
 {
                                        Constraint *n = makeNode(Constraint);
                                        n->contype = CONSTR_DEFAULT;
@@ -5864,7 +5864,7 @@ case 121:
                                ;
     break;}
 case 122:
-#line 900 "gram.y"
+#line 901 "gram.y"
 {
                                        Constraint *n = makeNode(Constraint);
                                        n->contype = CONSTR_NOTNULL;
@@ -5875,7 +5875,7 @@ case 122:
                                ;
     break;}
 case 123:
-#line 909 "gram.y"
+#line 910 "gram.y"
 {
                                        Constraint *n = makeNode(Constraint);
                                        n->contype = CONSTR_UNIQUE;
@@ -5886,7 +5886,7 @@ case 123:
                                ;
     break;}
 case 124:
-#line 918 "gram.y"
+#line 919 "gram.y"
 {
                                        Constraint *n = makeNode(Constraint);
                                        n->contype = CONSTR_PRIMARY;
@@ -5897,104 +5897,104 @@ case 124:
                                ;
     break;}
 case 125:
-#line 927 "gram.y"
+#line 928 "gram.y"
 {
                                        elog(NOTICE,"CREATE TABLE/FOREIGN KEY clause ignored; not yet implemented");
                                        yyval.node = NULL;
                                ;
     break;}
 case 126:
-#line 934 "gram.y"
+#line 935 "gram.y"
 {
                                        yyval.list = lappend(yyvsp[-2].list,makeString(","));
                                        yyval.list = nconc(yyval.list, yyvsp[0].list);
                                ;
     break;}
 case 127:
-#line 939 "gram.y"
+#line 940 "gram.y"
 {
                                        yyval.list = yyvsp[0].list;
                                ;
     break;}
 case 128:
-#line 952 "gram.y"
+#line 953 "gram.y"
 {      yyval.list = makeConstantList((A_Const *) yyvsp[0].node); ;
     break;}
 case 129:
-#line 954 "gram.y"
+#line 955 "gram.y"
 {      yyval.list = lcons( makeString( "-"), yyvsp[0].list); ;
     break;}
 case 130:
-#line 956 "gram.y"
+#line 957 "gram.y"
 {      yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "+"), yyvsp[0].list)); ;
     break;}
 case 131:
-#line 958 "gram.y"
+#line 959 "gram.y"
 {      yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "-"), yyvsp[0].list)); ;
     break;}
 case 132:
-#line 960 "gram.y"
+#line 961 "gram.y"
 {      yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "/"), yyvsp[0].list)); ;
     break;}
 case 133:
-#line 962 "gram.y"
+#line 963 "gram.y"
 {      yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "%"), yyvsp[0].list)); ;
     break;}
 case 134:
-#line 964 "gram.y"
+#line 965 "gram.y"
 {      yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "*"), yyvsp[0].list)); ;
     break;}
 case 135:
-#line 966 "gram.y"
+#line 967 "gram.y"
 {      elog(ERROR,"boolean expressions not supported in DEFAULT"); ;
     break;}
 case 136:
-#line 968 "gram.y"
+#line 969 "gram.y"
 {      elog(ERROR,"boolean expressions not supported in DEFAULT"); ;
     break;}
 case 137:
-#line 970 "gram.y"
+#line 971 "gram.y"
 {      elog(ERROR,"boolean expressions not supported in DEFAULT"); ;
     break;}
 case 138:
-#line 972 "gram.y"
+#line 973 "gram.y"
 {      yyval.list = lcons( makeString( ":"), yyvsp[0].list); ;
     break;}
 case 139:
-#line 974 "gram.y"
+#line 975 "gram.y"
 {      yyval.list = lcons( makeString( ";"), yyvsp[0].list); ;
     break;}
 case 140:
-#line 976 "gram.y"
+#line 977 "gram.y"
 {      yyval.list = lcons( makeString( "|"), yyvsp[0].list); ;
     break;}
 case 141:
-#line 978 "gram.y"
+#line 979 "gram.y"
 {
                                        yyvsp[0].typnam->name = fmtId(yyvsp[0].typnam->name);
                                        yyval.list = nconc( lcons( makeString( "CAST"), yyvsp[-2].list), makeList( makeString("AS"), yyvsp[0].typnam, -1));
                                ;
     break;}
 case 142:
-#line 983 "gram.y"
+#line 984 "gram.y"
 {
                                        yyvsp[-1].typnam->name = fmtId(yyvsp[-1].typnam->name);
                                        yyval.list = nconc( lcons( makeString( "CAST"), yyvsp[-3].list), makeList( makeString("AS"), yyvsp[-1].typnam, -1));
                                ;
     break;}
 case 143:
-#line 988 "gram.y"
+#line 989 "gram.y"
 {      yyval.list = lappend( lcons( makeString( "("), yyvsp[-1].list), makeString( ")")); ;
     break;}
 case 144:
-#line 990 "gram.y"
+#line 991 "gram.y"
 {
                                        yyval.list = makeList( makeString(yyvsp[-2].str), makeString("("), -1);
                                        yyval.list = lappend( yyval.list, makeString(")"));
                                ;
     break;}
 case 145:
-#line 995 "gram.y"
+#line 996 "gram.y"
 {
                                        yyval.list = makeList( makeString(yyvsp[-3].str), makeString("("), -1);
                                        yyval.list = nconc( yyval.list, yyvsp[-1].list);
@@ -6002,7 +6002,7 @@ case 145:
                                ;
     break;}
 case 146:
-#line 1001 "gram.y"
+#line 1002 "gram.y"
 {
                                        if (!strcmp("<=", yyvsp[-1].str) || !strcmp(">=", yyvsp[-1].str))
                                                elog(ERROR,"boolean expressions not supported in DEFAULT");
@@ -6010,23 +6010,23 @@ case 146:
                                ;
     break;}
 case 147:
-#line 1007 "gram.y"
+#line 1008 "gram.y"
 {      yyval.list = lcons( makeString( yyvsp[-1].str), yyvsp[0].list); ;
     break;}
 case 148:
-#line 1009 "gram.y"
+#line 1010 "gram.y"
 {      yyval.list = lappend( yyvsp[-1].list, makeString( yyvsp[0].str)); ;
     break;}
 case 149:
-#line 1012 "gram.y"
+#line 1013 "gram.y"
 {      yyval.list = lcons( makeString( "date( 'current'::datetime + '0 sec')"), NIL); ;
     break;}
 case 150:
-#line 1014 "gram.y"
+#line 1015 "gram.y"
 {      yyval.list = lcons( makeString( "'now'::time"), NIL); ;
     break;}
 case 151:
-#line 1016 "gram.y"
+#line 1017 "gram.y"
 {
                                        if (yyvsp[-1].ival != 0)
                                                elog(NOTICE,"CURRENT_TIME(%d) precision not implemented; zero used instead",yyvsp[-1].ival);
@@ -6034,11 +6034,11 @@ case 151:
                                ;
     break;}
 case 152:
-#line 1022 "gram.y"
+#line 1023 "gram.y"
 {      yyval.list = lcons( makeString( "now()"), NIL); ;
     break;}
 case 153:
-#line 1024 "gram.y"
+#line 1025 "gram.y"
 {
                                        if (yyvsp[-1].ival != 0)
                                                elog(NOTICE,"CURRENT_TIMESTAMP(%d) precision not implemented; zero used instead",yyvsp[-1].ival);
@@ -6046,15 +6046,15 @@ case 153:
                                ;
     break;}
 case 154:
-#line 1030 "gram.y"
+#line 1031 "gram.y"
 {      yyval.list = lcons( makeString( "CURRENT_USER"), NIL); ;
     break;}
 case 155:
-#line 1032 "gram.y"
+#line 1033 "gram.y"
 {      yyval.list = lcons( makeString( "USER"), NIL); ;
     break;}
 case 156:
-#line 1040 "gram.y"
+#line 1041 "gram.y"
 {
                                                Constraint *n = (Constraint *)yyvsp[0].node;
                                                if (n != NULL) n->name = fmtId(yyvsp[-1].str);
@@ -6062,11 +6062,11 @@ case 156:
                                ;
     break;}
 case 157:
-#line 1046 "gram.y"
+#line 1047 "gram.y"
 { yyval.node = yyvsp[0].node; ;
     break;}
 case 158:
-#line 1050 "gram.y"
+#line 1051 "gram.y"
 {
                                        Constraint *n = makeNode(Constraint);
                                        n->contype = CONSTR_CHECK;
@@ -6076,7 +6076,7 @@ case 158:
                                ;
     break;}
 case 159:
-#line 1058 "gram.y"
+#line 1059 "gram.y"
 {
                                        Constraint *n = makeNode(Constraint);
                                        n->contype = CONSTR_UNIQUE;
@@ -6087,7 +6087,7 @@ case 159:
                                ;
     break;}
 case 160:
-#line 1067 "gram.y"
+#line 1068 "gram.y"
 {
                                        Constraint *n = makeNode(Constraint);
                                        n->contype = CONSTR_PRIMARY;
@@ -6098,114 +6098,114 @@ case 160:
                                ;
     break;}
 case 161:
-#line 1076 "gram.y"
+#line 1077 "gram.y"
 {
                                        elog(NOTICE,"CREATE TABLE/FOREIGN KEY clause ignored; not yet implemented");
                                        yyval.node = NULL;
                                ;
     break;}
 case 162:
-#line 1083 "gram.y"
+#line 1084 "gram.y"
 {
                                        yyval.list = lappend(yyvsp[-2].list,makeString(","));
                                        yyval.list = nconc(yyval.list, yyvsp[0].list);
                                ;
     break;}
 case 163:
-#line 1088 "gram.y"
+#line 1089 "gram.y"
 {
                                        yyval.list = yyvsp[0].list;
                                ;
     break;}
 case 164:
-#line 1094 "gram.y"
+#line 1095 "gram.y"
 {      yyval.list = makeConstantList((A_Const *) yyvsp[0].node); ;
     break;}
 case 165:
-#line 1096 "gram.y"
+#line 1097 "gram.y"
 {      yyval.list = lcons( makeString("NULL"), NIL); ;
     break;}
 case 166:
-#line 1098 "gram.y"
+#line 1099 "gram.y"
 {
                                        yyval.list = lcons( makeString(fmtId(yyvsp[0].str)), NIL);
                                ;
     break;}
 case 167:
-#line 1102 "gram.y"
+#line 1103 "gram.y"
 {      yyval.list = lcons( makeString( "-"), yyvsp[0].list); ;
     break;}
 case 168:
-#line 1104 "gram.y"
+#line 1105 "gram.y"
 {      yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "+"), yyvsp[0].list)); ;
     break;}
 case 169:
-#line 1106 "gram.y"
+#line 1107 "gram.y"
 {      yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "-"), yyvsp[0].list)); ;
     break;}
 case 170:
-#line 1108 "gram.y"
+#line 1109 "gram.y"
 {      yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "/"), yyvsp[0].list)); ;
     break;}
 case 171:
-#line 1110 "gram.y"
+#line 1111 "gram.y"
 {      yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "%"), yyvsp[0].list)); ;
     break;}
 case 172:
-#line 1112 "gram.y"
+#line 1113 "gram.y"
 {      yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "*"), yyvsp[0].list)); ;
     break;}
 case 173:
-#line 1114 "gram.y"
+#line 1115 "gram.y"
 {      yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "="), yyvsp[0].list)); ;
     break;}
 case 174:
-#line 1116 "gram.y"
+#line 1117 "gram.y"
 {      yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "<"), yyvsp[0].list)); ;
     break;}
 case 175:
-#line 1118 "gram.y"
+#line 1119 "gram.y"
 {      yyval.list = nconc( yyvsp[-2].list, lcons( makeString( ">"), yyvsp[0].list)); ;
     break;}
 case 176:
-#line 1120 "gram.y"
+#line 1121 "gram.y"
 {      yyval.list = lcons( makeString( ":"), yyvsp[0].list); ;
     break;}
 case 177:
-#line 1122 "gram.y"
+#line 1123 "gram.y"
 {      yyval.list = lcons( makeString( ";"), yyvsp[0].list); ;
     break;}
 case 178:
-#line 1124 "gram.y"
+#line 1125 "gram.y"
 {      yyval.list = lcons( makeString( "|"), yyvsp[0].list); ;
     break;}
 case 179:
-#line 1126 "gram.y"
+#line 1127 "gram.y"
 {
                                        yyvsp[0].typnam->name = fmtId(yyvsp[0].typnam->name);
                                        yyval.list = nconc( lcons( makeString( "CAST"), yyvsp[-2].list), makeList( makeString("AS"), yyvsp[0].typnam, -1));
                                ;
     break;}
 case 180:
-#line 1131 "gram.y"
+#line 1132 "gram.y"
 {
                                        yyvsp[-1].typnam->name = fmtId(yyvsp[-1].typnam->name);
                                        yyval.list = nconc( lcons( makeString( "CAST"), yyvsp[-3].list), makeList( makeString("AS"), yyvsp[-1].typnam, -1));
                                ;
     break;}
 case 181:
-#line 1136 "gram.y"
+#line 1137 "gram.y"
 {      yyval.list = lappend( lcons( makeString( "("), yyvsp[-1].list), makeString( ")")); ;
     break;}
 case 182:
-#line 1138 "gram.y"
+#line 1139 "gram.y"
 {
                                        yyval.list = makeList( makeString(yyvsp[-2].str), makeString("("), -1);
                                        yyval.list = lappend( yyval.list, makeString(")"));
                                ;
     break;}
 case 183:
-#line 1143 "gram.y"
+#line 1144 "gram.y"
 {
                                        yyval.list = makeList( makeString(yyvsp[-3].str), makeString("("), -1);
                                        yyval.list = nconc( yyval.list, yyvsp[-1].list);
@@ -6213,71 +6213,71 @@ case 183:
                                ;
     break;}
 case 184:
-#line 1149 "gram.y"
+#line 1150 "gram.y"
 {      yyval.list = nconc( yyvsp[-2].list, lcons( makeString( yyvsp[-1].str), yyvsp[0].list)); ;
     break;}
 case 185:
-#line 1151 "gram.y"
+#line 1152 "gram.y"
 {      yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "LIKE"), yyvsp[0].list)); ;
     break;}
 case 186:
-#line 1153 "gram.y"
+#line 1154 "gram.y"
 {      yyval.list = nconc( yyvsp[-3].list, lcons( makeString( "NOT LIKE"), yyvsp[0].list)); ;
     break;}
 case 187:
-#line 1155 "gram.y"
+#line 1156 "gram.y"
 {      yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "AND"), yyvsp[0].list)); ;
     break;}
 case 188:
-#line 1157 "gram.y"
+#line 1158 "gram.y"
 {      yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "OR"), yyvsp[0].list)); ;
     break;}
 case 189:
-#line 1159 "gram.y"
+#line 1160 "gram.y"
 {      yyval.list = lcons( makeString( "NOT"), yyvsp[0].list); ;
     break;}
 case 190:
-#line 1161 "gram.y"
+#line 1162 "gram.y"
 {      yyval.list = lcons( makeString( yyvsp[-1].str), yyvsp[0].list); ;
     break;}
 case 191:
-#line 1163 "gram.y"
+#line 1164 "gram.y"
 {      yyval.list = lappend( yyvsp[-1].list, makeString( yyvsp[0].str)); ;
     break;}
 case 192:
-#line 1165 "gram.y"
+#line 1166 "gram.y"
 {      yyval.list = lappend( yyvsp[-1].list, makeString( "IS NULL")); ;
     break;}
 case 193:
-#line 1167 "gram.y"
+#line 1168 "gram.y"
 {      yyval.list = lappend( yyvsp[-2].list, makeString( "IS NULL")); ;
     break;}
 case 194:
-#line 1169 "gram.y"
+#line 1170 "gram.y"
 {      yyval.list = lappend( yyvsp[-1].list, makeString( "IS NOT NULL")); ;
     break;}
 case 195:
-#line 1171 "gram.y"
+#line 1172 "gram.y"
 {      yyval.list = lappend( yyvsp[-3].list, makeString( "IS NOT NULL")); ;
     break;}
 case 196:
-#line 1173 "gram.y"
+#line 1174 "gram.y"
 {      yyval.list = lappend( yyvsp[-2].list, makeString( "IS TRUE")); ;
     break;}
 case 197:
-#line 1175 "gram.y"
+#line 1176 "gram.y"
 {      yyval.list = lappend( yyvsp[-2].list, makeString( "IS FALSE")); ;
     break;}
 case 198:
-#line 1177 "gram.y"
+#line 1178 "gram.y"
 {      yyval.list = lappend( yyvsp[-3].list, makeString( "IS NOT TRUE")); ;
     break;}
 case 199:
-#line 1179 "gram.y"
+#line 1180 "gram.y"
 {      yyval.list = lappend( yyvsp[-3].list, makeString( "IS NOT FALSE")); ;
     break;}
 case 200:
-#line 1181 "gram.y"
+#line 1182 "gram.y"
 {
                                        yyval.list = lappend( yyvsp[-4].list, makeString("IN"));
                                        yyval.list = lappend( yyval.list, makeString("("));
@@ -6286,7 +6286,7 @@ case 200:
                                ;
     break;}
 case 201:
-#line 1188 "gram.y"
+#line 1189 "gram.y"
 {
                                        yyval.list = lappend( yyvsp[-5].list, makeString("NOT IN"));
                                        yyval.list = lappend( yyval.list, makeString("("));
@@ -6295,7 +6295,7 @@ case 201:
                                ;
     break;}
 case 202:
-#line 1195 "gram.y"
+#line 1196 "gram.y"
 {
                                        yyval.list = lappend( yyvsp[-4].list, makeString("BETWEEN"));
                                        yyval.list = nconc( yyval.list, yyvsp[-2].list);
@@ -6304,7 +6304,7 @@ case 202:
                                ;
     break;}
 case 203:
-#line 1202 "gram.y"
+#line 1203 "gram.y"
 {
                                        yyval.list = lappend( yyvsp[-5].list, makeString("NOT BETWEEN"));
                                        yyval.list = nconc( yyval.list, yyvsp[-2].list);
@@ -6313,80 +6313,80 @@ case 203:
                                ;
     break;}
 case 204:
-#line 1211 "gram.y"
+#line 1212 "gram.y"
 {
                                        yyval.list = lappend(yyvsp[-2].list, makeString(","));
                                        yyval.list = nconc(yyval.list, yyvsp[0].list);
                                ;
     break;}
 case 205:
-#line 1216 "gram.y"
+#line 1217 "gram.y"
 {
                                        yyval.list = yyvsp[0].list;
                                ;
     break;}
 case 206:
-#line 1222 "gram.y"
+#line 1223 "gram.y"
 {      yyval.list = makeConstantList((A_Const *) yyvsp[0].node); ;
     break;}
 case 207:
-#line 1225 "gram.y"
+#line 1226 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 208:
-#line 1226 "gram.y"
+#line 1227 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 209:
-#line 1227 "gram.y"
+#line 1228 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 210:
-#line 1230 "gram.y"
+#line 1231 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 211:
-#line 1231 "gram.y"
+#line 1232 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 212:
-#line 1232 "gram.y"
+#line 1233 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 213:
-#line 1235 "gram.y"
+#line 1236 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 214:
-#line 1236 "gram.y"
+#line 1237 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 215:
-#line 1239 "gram.y"
+#line 1240 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 216:
-#line 1240 "gram.y"
+#line 1241 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 217:
-#line 1241 "gram.y"
+#line 1242 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 218:
-#line 1242 "gram.y"
+#line 1243 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 219:
-#line 1245 "gram.y"
+#line 1246 "gram.y"
 { yyval.list = yyvsp[-1].list; ;
     break;}
 case 220:
-#line 1246 "gram.y"
+#line 1247 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 221:
-#line 1250 "gram.y"
+#line 1251 "gram.y"
 {
                                        SelectStmt *n = (SelectStmt *)yyvsp[0].node;
                                        if (yyvsp[-2].list != NIL)
@@ -6397,23 +6397,23 @@ case 221:
                                ;
     break;}
 case 222:
-#line 1260 "gram.y"
+#line 1261 "gram.y"
 { yyval.list = yyvsp[-1].list; ;
     break;}
 case 223:
-#line 1261 "gram.y"
+#line 1262 "gram.y"
 { yyval.list = NULL; ;
     break;}
 case 224:
-#line 1264 "gram.y"
+#line 1265 "gram.y"
 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node); ;
     break;}
 case 225:
-#line 1265 "gram.y"
+#line 1266 "gram.y"
 { yyval.list = lcons(yyvsp[0].node, NIL); ;
     break;}
 case 226:
-#line 1269 "gram.y"
+#line 1270 "gram.y"
 {
                                        ColumnDef *n = makeNode(ColumnDef);
                                        n->colname = yyvsp[0].str;
@@ -6425,7 +6425,7 @@ case 226:
                                ;
     break;}
 case 227:
-#line 1289 "gram.y"
+#line 1290 "gram.y"
 {
                                        CreateSeqStmt *n = makeNode(CreateSeqStmt);
                                        n->seqname = yyvsp[-1].str;
@@ -6434,15 +6434,15 @@ case 227:
                                ;
     break;}
 case 228:
-#line 1298 "gram.y"
+#line 1299 "gram.y"
 { yyval.list = lappend(yyvsp[-1].list, yyvsp[0].defelt); ;
     break;}
 case 229:
-#line 1299 "gram.y"
+#line 1300 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 230:
-#line 1303 "gram.y"
+#line 1304 "gram.y"
 {
                                        yyval.defelt = makeNode(DefElem);
                                        yyval.defelt->defname = "cache";
@@ -6450,7 +6450,7 @@ case 230:
                                ;
     break;}
 case 231:
-#line 1309 "gram.y"
+#line 1310 "gram.y"
 {
                                        yyval.defelt = makeNode(DefElem);
                                        yyval.defelt->defname = "cycle";
@@ -6458,7 +6458,7 @@ case 231:
                                ;
     break;}
 case 232:
-#line 1315 "gram.y"
+#line 1316 "gram.y"
 {
                                        yyval.defelt = makeNode(DefElem);
                                        yyval.defelt->defname = "increment";
@@ -6466,7 +6466,7 @@ case 232:
                                ;
     break;}
 case 233:
-#line 1321 "gram.y"
+#line 1322 "gram.y"
 {
                                        yyval.defelt = makeNode(DefElem);
                                        yyval.defelt->defname = "maxvalue";
@@ -6474,7 +6474,7 @@ case 233:
                                ;
     break;}
 case 234:
-#line 1327 "gram.y"
+#line 1328 "gram.y"
 {
                                        yyval.defelt = makeNode(DefElem);
                                        yyval.defelt->defname = "minvalue";
@@ -6482,7 +6482,7 @@ case 234:
                                ;
     break;}
 case 235:
-#line 1333 "gram.y"
+#line 1334 "gram.y"
 {
                                        yyval.defelt = makeNode(DefElem);
                                        yyval.defelt->defname = "start";
@@ -6490,41 +6490,41 @@ case 235:
                                ;
     break;}
 case 236:
-#line 1340 "gram.y"
+#line 1341 "gram.y"
 { yyval.value = yyvsp[0].value; ;
     break;}
 case 237:
-#line 1341 "gram.y"
+#line 1342 "gram.y"
 { yyval.value = yyvsp[0].value; ;
     break;}
 case 238:
-#line 1344 "gram.y"
+#line 1345 "gram.y"
 {
                                        yyval.value = makeFloat(yyvsp[0].dval);
                                ;
     break;}
 case 239:
-#line 1348 "gram.y"
+#line 1349 "gram.y"
 {
                                        yyval.value = makeFloat(yyvsp[0].dval);
                                        yyval.value->val.dval = - yyval.value->val.dval;
                                ;
     break;}
 case 240:
-#line 1355 "gram.y"
+#line 1356 "gram.y"
 {
                                        yyval.value = makeInteger(yyvsp[0].ival);
                                ;
     break;}
 case 241:
-#line 1359 "gram.y"
+#line 1360 "gram.y"
 {
                                        yyval.value = makeInteger(yyvsp[0].ival);
                                        yyval.value->val.ival = - yyval.value->val.ival;
                                ;
     break;}
 case 242:
-#line 1375 "gram.y"
+#line 1376 "gram.y"
 {
                                CreatePLangStmt *n = makeNode(CreatePLangStmt);
                                n->plname = yyvsp[-4].str;
@@ -6535,15 +6535,15 @@ case 242:
                        ;
     break;}
 case 243:
-#line 1385 "gram.y"
+#line 1386 "gram.y"
 { yyval.boolean = TRUE; ;
     break;}
 case 244:
-#line 1386 "gram.y"
+#line 1387 "gram.y"
 { yyval.boolean = FALSE; ;
     break;}
 case 245:
-#line 1389 "gram.y"
+#line 1390 "gram.y"
 {
                                DropPLangStmt *n = makeNode(DropPLangStmt);
                                n->plname = yyvsp[0].str;
@@ -6551,7 +6551,7 @@ case 245:
                        ;
     break;}
 case 246:
-#line 1407 "gram.y"
+#line 1408 "gram.y"
 {
                                        CreateTrigStmt *n = makeNode(CreateTrigStmt);
                                        n->trigname = yyvsp[-11].str;
@@ -6565,29 +6565,29 @@ case 246:
                                ;
     break;}
 case 247:
-#line 1420 "gram.y"
+#line 1421 "gram.y"
 { yyval.boolean = TRUE; ;
     break;}
 case 248:
-#line 1421 "gram.y"
+#line 1422 "gram.y"
 { yyval.boolean = FALSE; ;
     break;}
 case 249:
-#line 1425 "gram.y"
+#line 1426 "gram.y"
 {
                                        char *e = palloc (4);
                                        e[0] = yyvsp[0].chr; e[1] = 0; yyval.str = e;
                                ;
     break;}
 case 250:
-#line 1430 "gram.y"
+#line 1431 "gram.y"
 {
                                        char *e = palloc (4);
                                        e[0] = yyvsp[-2].chr; e[1] = yyvsp[0].chr; e[2] = 0; yyval.str = e;
                                ;
     break;}
 case 251:
-#line 1435 "gram.y"
+#line 1436 "gram.y"
 {
                                        char *e = palloc (4);
                                        e[0] = yyvsp[-4].chr; e[1] = yyvsp[-2].chr; e[2] = yyvsp[0].chr; e[3] = 0;
@@ -6595,53 +6595,53 @@ case 251:
                                ;
     break;}
 case 252:
-#line 1442 "gram.y"
+#line 1443 "gram.y"
 { yyval.chr = 'i'; ;
     break;}
 case 253:
-#line 1443 "gram.y"
+#line 1444 "gram.y"
 { yyval.chr = 'd'; ;
     break;}
 case 254:
-#line 1444 "gram.y"
+#line 1445 "gram.y"
 { yyval.chr = 'u'; ;
     break;}
 case 255:
-#line 1448 "gram.y"
+#line 1449 "gram.y"
 {
                                        yyval.boolean = yyvsp[0].boolean;
                                ;
     break;}
 case 256:
-#line 1453 "gram.y"
+#line 1454 "gram.y"
 { yyval.boolean = TRUE; ;
     break;}
 case 257:
-#line 1454 "gram.y"
+#line 1455 "gram.y"
 { yyval.boolean = FALSE; ;
     break;}
 case 258:
-#line 1457 "gram.y"
+#line 1458 "gram.y"
 { yyval.boolean = TRUE; ;
     break;}
 case 259:
-#line 1458 "gram.y"
+#line 1459 "gram.y"
 { yyval.boolean = FALSE; ;
     break;}
 case 260:
-#line 1462 "gram.y"
+#line 1463 "gram.y"
 { yyval.list = lcons(yyvsp[0].str, NIL); ;
     break;}
 case 261:
-#line 1464 "gram.y"
+#line 1465 "gram.y"
 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].str); ;
     break;}
 case 262:
-#line 1466 "gram.y"
+#line 1467 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 263:
-#line 1470 "gram.y"
+#line 1471 "gram.y"
 {
                                        char *s = (char *) palloc (256);
                                        sprintf (s, "%d", yyvsp[0].ival);
@@ -6649,7 +6649,7 @@ case 263:
                                ;
     break;}
 case 264:
-#line 1476 "gram.y"
+#line 1477 "gram.y"
 {
                                        char *s = (char *) palloc (256);
                                        sprintf (s, "%g", yyvsp[0].dval);
@@ -6657,15 +6657,15 @@ case 264:
                                ;
     break;}
 case 265:
-#line 1481 "gram.y"
+#line 1482 "gram.y"
 {  yyval.str = yyvsp[0].str; ;
     break;}
 case 266:
-#line 1482 "gram.y"
+#line 1483 "gram.y"
 {  yyval.str = yyvsp[0].str; ;
     break;}
 case 267:
-#line 1486 "gram.y"
+#line 1487 "gram.y"
 {
                                        DropTrigStmt *n = makeNode(DropTrigStmt);
                                        n->trigname = yyvsp[-2].str;
@@ -6674,14 +6674,14 @@ case 267:
                                ;
     break;}
 case 268:
-#line 1503 "gram.y"
+#line 1504 "gram.y"
 {
                                        yyvsp[0].dstmt->defType = yyvsp[-1].ival;
                                        yyval.node = (Node *)yyvsp[0].dstmt;
                                ;
     break;}
 case 269:
-#line 1510 "gram.y"
+#line 1511 "gram.y"
 {
                                        yyval.dstmt = makeNode(DefineStmt);
                                        yyval.dstmt->defname = yyvsp[-1].str;
@@ -6689,51 +6689,51 @@ case 269:
                                ;
     break;}
 case 270:
-#line 1517 "gram.y"
+#line 1518 "gram.y"
 { yyval.ival = OPERATOR; ;
     break;}
 case 271:
-#line 1518 "gram.y"
+#line 1519 "gram.y"
 { yyval.ival = TYPE_P; ;
     break;}
 case 272:
-#line 1519 "gram.y"
+#line 1520 "gram.y"
 { yyval.ival = AGGREGATE; ;
     break;}
 case 273:
-#line 1522 "gram.y"
+#line 1523 "gram.y"
 { yyval.str = "procedure"; ;
     break;}
 case 274:
-#line 1523 "gram.y"
+#line 1524 "gram.y"
 { yyval.str = "join"; ;
     break;}
 case 275:
-#line 1524 "gram.y"
+#line 1525 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 276:
-#line 1525 "gram.y"
+#line 1526 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 277:
-#line 1526 "gram.y"
+#line 1527 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 278:
-#line 1529 "gram.y"
+#line 1530 "gram.y"
 { yyval.list = yyvsp[-1].list; ;
     break;}
 case 279:
-#line 1532 "gram.y"
+#line 1533 "gram.y"
 { yyval.list = lcons(yyvsp[0].defelt, NIL); ;
     break;}
 case 280:
-#line 1533 "gram.y"
+#line 1534 "gram.y"
 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].defelt); ;
     break;}
 case 281:
-#line 1537 "gram.y"
+#line 1538 "gram.y"
 {
                                        yyval.defelt = makeNode(DefElem);
                                        yyval.defelt->defname = yyvsp[-2].str;
@@ -6741,7 +6741,7 @@ case 281:
                                ;
     break;}
 case 282:
-#line 1543 "gram.y"
+#line 1544 "gram.y"
 {
                                        yyval.defelt = makeNode(DefElem);
                                        yyval.defelt->defname = yyvsp[0].str;
@@ -6749,7 +6749,7 @@ case 282:
                                ;
     break;}
 case 283:
-#line 1549 "gram.y"
+#line 1550 "gram.y"
 {
                                        yyval.defelt = makeNode(DefElem);
                                        yyval.defelt->defname = "default";
@@ -6757,23 +6757,23 @@ case 283:
                                ;
     break;}
 case 284:
-#line 1556 "gram.y"
+#line 1557 "gram.y"
 {  yyval.node = (Node *)makeString(yyvsp[0].str); ;
     break;}
 case 285:
-#line 1557 "gram.y"
+#line 1558 "gram.y"
 {  yyval.node = (Node *)makeString(yyvsp[0].str); ;
     break;}
 case 286:
-#line 1558 "gram.y"
+#line 1559 "gram.y"
 {  yyval.node = (Node *)yyvsp[0].value; ;
     break;}
 case 287:
-#line 1559 "gram.y"
+#line 1560 "gram.y"
 {  yyval.node = (Node *)makeString(yyvsp[0].str); ;
     break;}
 case 288:
-#line 1561 "gram.y"
+#line 1562 "gram.y"
 {
                                        TypeName *n = makeNode(TypeName);
                                        n->name = yyvsp[0].str;
@@ -6784,7 +6784,7 @@ case 288:
                                ;
     break;}
 case 289:
-#line 1580 "gram.y"
+#line 1581 "gram.y"
 {
                                        DestroyStmt *n = makeNode(DestroyStmt);
                                        n->relNames = yyvsp[0].list;
@@ -6793,7 +6793,7 @@ case 289:
                                ;
     break;}
 case 290:
-#line 1587 "gram.y"
+#line 1588 "gram.y"
 {
                                        DestroyStmt *n = makeNode(DestroyStmt);
                                        n->relNames = yyvsp[0].list;
@@ -6802,7 +6802,7 @@ case 290:
                                ;
     break;}
 case 291:
-#line 1606 "gram.y"
+#line 1607 "gram.y"
 {
                                        FetchStmt *n = makeNode(FetchStmt);
                                        if (yyvsp[-2].ival == RELATIVE)
@@ -6824,7 +6824,7 @@ case 291:
                                ;
     break;}
 case 292:
-#line 1626 "gram.y"
+#line 1627 "gram.y"
 {
                                        FetchStmt *n = makeNode(FetchStmt);
                                        if (yyvsp[-1].ival < 0)
@@ -6840,162 +6840,162 @@ case 292:
                                ;
     break;}
 case 293:
-#line 1641 "gram.y"
+#line 1642 "gram.y"
 { yyval.ival = FORWARD; ;
     break;}
 case 294:
-#line 1642 "gram.y"
+#line 1643 "gram.y"
 { yyval.ival = BACKWARD; ;
     break;}
 case 295:
-#line 1643 "gram.y"
+#line 1644 "gram.y"
 { yyval.ival = RELATIVE; ;
     break;}
 case 296:
-#line 1645 "gram.y"
+#line 1646 "gram.y"
 {
                                elog(NOTICE,"FETCH/ABSOLUTE not supported, using RELATIVE");
                                yyval.ival = RELATIVE;
                        ;
     break;}
 case 297:
-#line 1649 "gram.y"
+#line 1650 "gram.y"
 { yyval.ival = FORWARD; /* default */ ;
     break;}
 case 298:
-#line 1652 "gram.y"
+#line 1653 "gram.y"
 { yyval.ival = yyvsp[0].ival; ;
     break;}
 case 299:
-#line 1653 "gram.y"
+#line 1654 "gram.y"
 { yyval.ival = - yyvsp[0].ival; ;
     break;}
 case 300:
-#line 1654 "gram.y"
+#line 1655 "gram.y"
 { yyval.ival = 0; /* 0 means fetch all tuples*/ ;
     break;}
 case 301:
-#line 1655 "gram.y"
+#line 1656 "gram.y"
 { yyval.ival = 1; ;
     break;}
 case 302:
-#line 1656 "gram.y"
+#line 1657 "gram.y"
 { yyval.ival = -1; ;
     break;}
 case 303:
-#line 1657 "gram.y"
+#line 1658 "gram.y"
 { yyval.ival = 1; /*default*/ ;
     break;}
 case 304:
-#line 1660 "gram.y"
+#line 1661 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 305:
-#line 1661 "gram.y"
+#line 1662 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 306:
-#line 1662 "gram.y"
+#line 1663 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 307:
-#line 1674 "gram.y"
+#line 1675 "gram.y"
 {
                                        yyval.node = (Node*)makeAclStmt(yyvsp[-5].str,yyvsp[-3].list,yyvsp[-1].str,'+');
                                ;
     break;}
 case 308:
-#line 1680 "gram.y"
+#line 1681 "gram.y"
 {
                                 yyval.str = aclmakepriv("rwaR",0);
                                ;
     break;}
 case 309:
-#line 1684 "gram.y"
+#line 1685 "gram.y"
 {
                                 yyval.str = aclmakepriv("rwaR",0);
                                ;
     break;}
 case 310:
-#line 1688 "gram.y"
+#line 1689 "gram.y"
 {
                                 yyval.str = yyvsp[0].str;
                                ;
     break;}
 case 311:
-#line 1694 "gram.y"
+#line 1695 "gram.y"
 {
                                                yyval.str = aclmakepriv("",yyvsp[0].chr);
                                ;
     break;}
 case 312:
-#line 1698 "gram.y"
+#line 1699 "gram.y"
 {
                                                yyval.str = aclmakepriv(yyvsp[-2].str,yyvsp[0].chr);
                                ;
     break;}
 case 313:
-#line 1704 "gram.y"
+#line 1705 "gram.y"
 {
                                                yyval.chr = ACL_MODE_RD_CHR;
                                ;
     break;}
 case 314:
-#line 1708 "gram.y"
+#line 1709 "gram.y"
 {
                                                yyval.chr = ACL_MODE_AP_CHR;
                                ;
     break;}
 case 315:
-#line 1712 "gram.y"
+#line 1713 "gram.y"
 {
                                                yyval.chr = ACL_MODE_WR_CHR;
                                ;
     break;}
 case 316:
-#line 1716 "gram.y"
+#line 1717 "gram.y"
 {
                                                yyval.chr = ACL_MODE_WR_CHR;
                                ;
     break;}
 case 317:
-#line 1720 "gram.y"
+#line 1721 "gram.y"
 {
                                                yyval.chr = ACL_MODE_RU_CHR;
                                ;
     break;}
 case 318:
-#line 1726 "gram.y"
+#line 1727 "gram.y"
 {
                                                yyval.str = aclmakeuser("A","");
                                ;
     break;}
 case 319:
-#line 1730 "gram.y"
+#line 1731 "gram.y"
 {
                                                yyval.str = aclmakeuser("G",yyvsp[0].str);
                                ;
     break;}
 case 320:
-#line 1734 "gram.y"
+#line 1735 "gram.y"
 {
                                                yyval.str = aclmakeuser("U",yyvsp[0].str);
                                ;
     break;}
 case 321:
-#line 1740 "gram.y"
+#line 1741 "gram.y"
 {
                                        yyerror("WITH GRANT OPTION is not supported.  Only relation owners can set privileges");
                                 ;
     break;}
 case 323:
-#line 1755 "gram.y"
+#line 1756 "gram.y"
 {
                                        yyval.node = (Node*)makeAclStmt(yyvsp[-4].str,yyvsp[-2].list,yyvsp[0].str,'-');
                                ;
     break;}
 case 324:
-#line 1773 "gram.y"
+#line 1774 "gram.y"
 {
                                        /* should check that access_method is valid,
                                           etc ... but doesn't */
@@ -7011,39 +7011,39 @@ case 324:
                                ;
     break;}
 case 325:
-#line 1788 "gram.y"
+#line 1789 "gram.y"
 { yyval.boolean = TRUE; ;
     break;}
 case 326:
-#line 1789 "gram.y"
+#line 1790 "gram.y"
 { yyval.boolean = FALSE; ;
     break;}
 case 327:
-#line 1792 "gram.y"
+#line 1793 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 328:
-#line 1793 "gram.y"
+#line 1794 "gram.y"
 { yyval.str = "btree"; ;
     break;}
 case 329:
-#line 1796 "gram.y"
+#line 1797 "gram.y"
 { yyval.list = yyvsp[0].list; ;
     break;}
 case 330:
-#line 1797 "gram.y"
+#line 1798 "gram.y"
 { yyval.list = lcons(yyvsp[0].ielem,NIL); ;
     break;}
 case 331:
-#line 1800 "gram.y"
+#line 1801 "gram.y"
 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].ielem); ;
     break;}
 case 332:
-#line 1801 "gram.y"
+#line 1802 "gram.y"
 { yyval.list = lcons(yyvsp[0].ielem, NIL); ;
     break;}
 case 333:
-#line 1805 "gram.y"
+#line 1806 "gram.y"
 {
                                        yyval.ielem = makeNode(IndexElem);
                                        yyval.ielem->name = yyvsp[-5].str;
@@ -7053,7 +7053,7 @@ case 333:
                                ;
     break;}
 case 334:
-#line 1815 "gram.y"
+#line 1816 "gram.y"
 {
                                        yyval.ielem = makeNode(IndexElem);
                                        yyval.ielem->name = yyvsp[-2].str;
@@ -7063,31 +7063,31 @@ case 334:
                                ;
     break;}
 case 335:
-#line 1824 "gram.y"
+#line 1825 "gram.y"
 { yyval.typnam = yyvsp[0].typnam; ;
     break;}
 case 336:
-#line 1825 "gram.y"
+#line 1826 "gram.y"
 { yyval.typnam = yyvsp[0].typnam; ;
     break;}
 case 337:
-#line 1826 "gram.y"
+#line 1827 "gram.y"
 { yyval.typnam = NULL; ;
     break;}
 case 338:
-#line 1835 "gram.y"
+#line 1836 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 339:
-#line 1836 "gram.y"
+#line 1837 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 340:
-#line 1837 "gram.y"
+#line 1838 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 341:
-#line 1849 "gram.y"
+#line 1850 "gram.y"
 {
                                        ExtendStmt *n = makeNode(ExtendStmt);
                                        n->idxname = yyvsp[-1].str;
@@ -7096,7 +7096,7 @@ case 341:
                                ;
     break;}
 case 342:
-#line 1896 "gram.y"
+#line 1897 "gram.y"
 {
                                        ProcedureStmt *n = makeNode(ProcedureStmt);
                                        n->funcname = yyvsp[-8].str;
@@ -7109,31 +7109,31 @@ case 342:
                                ;
     break;}
 case 343:
-#line 1907 "gram.y"
+#line 1908 "gram.y"
 { yyval.list = yyvsp[0].list; ;
     break;}
 case 344:
-#line 1908 "gram.y"
+#line 1909 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 345:
-#line 1911 "gram.y"
+#line 1912 "gram.y"
 { yyval.list = yyvsp[-1].list; ;
     break;}
 case 346:
-#line 1912 "gram.y"
+#line 1913 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 347:
-#line 1916 "gram.y"
+#line 1917 "gram.y"
 {      yyval.list = lcons(makeString(yyvsp[0].str),NIL); ;
     break;}
 case 348:
-#line 1918 "gram.y"
+#line 1919 "gram.y"
 {      yyval.list = lappend(yyvsp[-2].list,makeString(yyvsp[0].str)); ;
     break;}
 case 349:
-#line 1922 "gram.y"
+#line 1923 "gram.y"
 {
                                        TypeName *n = makeNode(TypeName);
                                        n->name = yyvsp[0].str;
@@ -7143,15 +7143,15 @@ case 349:
                                ;
     break;}
 case 350:
-#line 1931 "gram.y"
+#line 1932 "gram.y"
 { yyval.boolean = TRUE; ;
     break;}
 case 351:
-#line 1932 "gram.y"
+#line 1933 "gram.y"
 { yyval.boolean = FALSE; ;
     break;}
 case 352:
-#line 1953 "gram.y"
+#line 1954 "gram.y"
 {
                                        RemoveStmt *n = makeNode(RemoveStmt);
                                        n->removeType = yyvsp[-1].ival;
@@ -7160,23 +7160,23 @@ case 352:
                                ;
     break;}
 case 353:
-#line 1961 "gram.y"
+#line 1962 "gram.y"
 {  yyval.ival = TYPE_P; ;
     break;}
 case 354:
-#line 1962 "gram.y"
+#line 1963 "gram.y"
 {  yyval.ival = INDEX; ;
     break;}
 case 355:
-#line 1963 "gram.y"
+#line 1964 "gram.y"
 {  yyval.ival = RULE; ;
     break;}
 case 356:
-#line 1964 "gram.y"
+#line 1965 "gram.y"
 {  yyval.ival = VIEW; ;
     break;}
 case 357:
-#line 1969 "gram.y"
+#line 1970 "gram.y"
 {
                                                RemoveAggrStmt *n = makeNode(RemoveAggrStmt);
                                                n->aggname = yyvsp[-1].str;
@@ -7185,15 +7185,15 @@ case 357:
                                ;
     break;}
 case 358:
-#line 1977 "gram.y"
+#line 1978 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 359:
-#line 1978 "gram.y"
+#line 1979 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 360:
-#line 1983 "gram.y"
+#line 1984 "gram.y"
 {
                                        RemoveFuncStmt *n = makeNode(RemoveFuncStmt);
                                        n->funcname = yyvsp[-1].str;
@@ -7202,7 +7202,7 @@ case 360:
                                ;
     break;}
 case 361:
-#line 1993 "gram.y"
+#line 1994 "gram.y"
 {
                                        RemoveOperStmt *n = makeNode(RemoveOperStmt);
                                        n->opname = yyvsp[-3].str;
@@ -7211,57 +7211,57 @@ case 361:
                                ;
     break;}
 case 364:
-#line 2003 "gram.y"
+#line 2004 "gram.y"
 { yyval.str = "+"; ;
     break;}
 case 365:
-#line 2004 "gram.y"
+#line 2005 "gram.y"
 { yyval.str = "-"; ;
     break;}
 case 366:
-#line 2005 "gram.y"
+#line 2006 "gram.y"
 { yyval.str = "*"; ;
     break;}
 case 367:
-#line 2006 "gram.y"
+#line 2007 "gram.y"
 { yyval.str = "/"; ;
     break;}
 case 368:
-#line 2007 "gram.y"
+#line 2008 "gram.y"
 { yyval.str = "%"; ;
     break;}
 case 369:
-#line 2008 "gram.y"
+#line 2009 "gram.y"
 { yyval.str = "<"; ;
     break;}
 case 370:
-#line 2009 "gram.y"
+#line 2010 "gram.y"
 { yyval.str = ">"; ;
     break;}
 case 371:
-#line 2010 "gram.y"
+#line 2011 "gram.y"
 { yyval.str = "="; ;
     break;}
 case 372:
-#line 2014 "gram.y"
+#line 2015 "gram.y"
 {
                                   elog(ERROR,"parser: argument type missing (use NONE for unary operators)");
                                ;
     break;}
 case 373:
-#line 2018 "gram.y"
+#line 2019 "gram.y"
 { yyval.list = makeList(makeString(yyvsp[-2].str), makeString(yyvsp[0].str), -1); ;
     break;}
 case 374:
-#line 2020 "gram.y"
+#line 2021 "gram.y"
 { yyval.list = makeList(NULL, makeString(yyvsp[0].str), -1); ;
     break;}
 case 375:
-#line 2022 "gram.y"
+#line 2023 "gram.y"
 { yyval.list = makeList(makeString(yyvsp[-2].str), NULL, -1); ;
     break;}
 case 376:
-#line 2036 "gram.y"
+#line 2037 "gram.y"
 {
                                        RenameStmt *n = makeNode(RenameStmt);
                                        n->relname = yyvsp[-6].str;
@@ -7272,27 +7272,27 @@ case 376:
                                ;
     break;}
 case 377:
-#line 2046 "gram.y"
+#line 2047 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 378:
-#line 2047 "gram.y"
+#line 2048 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 379:
-#line 2050 "gram.y"
+#line 2051 "gram.y"
 { yyval.ival = COLUMN; ;
     break;}
 case 380:
-#line 2051 "gram.y"
+#line 2052 "gram.y"
 { yyval.ival = 0; ;
     break;}
 case 381:
-#line 2065 "gram.y"
+#line 2066 "gram.y"
 { QueryIsRule=TRUE; ;
     break;}
 case 382:
-#line 2068 "gram.y"
+#line 2069 "gram.y"
 {
                                        RuleStmt *n = makeNode(RuleStmt);
                                        n->rulename = yyvsp[-10].str;
@@ -7305,47 +7305,47 @@ case 382:
                                ;
     break;}
 case 383:
-#line 2080 "gram.y"
+#line 2081 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 384:
-#line 2081 "gram.y"
+#line 2082 "gram.y"
 { yyval.list = lcons(yyvsp[0].node, NIL); ;
     break;}
 case 385:
-#line 2082 "gram.y"
+#line 2083 "gram.y"
 { yyval.list = lcons(yyvsp[0].node, NIL); ;
     break;}
 case 386:
-#line 2083 "gram.y"
+#line 2084 "gram.y"
 { yyval.list = yyvsp[-1].list; ;
     break;}
 case 387:
-#line 2084 "gram.y"
+#line 2085 "gram.y"
 { yyval.list = yyvsp[-1].list; ;
     break;}
 case 388:
-#line 2087 "gram.y"
+#line 2088 "gram.y"
 {  yyval.list = yyvsp[0].list; ;
     break;}
 case 389:
-#line 2088 "gram.y"
+#line 2089 "gram.y"
 { yyval.list = lcons(yyvsp[0].node, NIL); ;
     break;}
 case 390:
-#line 2092 "gram.y"
+#line 2093 "gram.y"
 {  yyval.list = lappend(yyvsp[-1].list, yyvsp[0].node); ;
     break;}
 case 391:
-#line 2094 "gram.y"
+#line 2095 "gram.y"
 {  yyval.list = lappend(yyvsp[-2].list, yyvsp[-1].node); ;
     break;}
 case 392:
-#line 2096 "gram.y"
+#line 2097 "gram.y"
 { yyval.list = lcons(yyvsp[-1].node, NIL); ;
     break;}
 case 397:
-#line 2106 "gram.y"
+#line 2107 "gram.y"
 {
                                        yyval.attr = makeNode(Attr);
                                        yyval.attr->relname = yyvsp[-2].str;
@@ -7355,7 +7355,7 @@ case 397:
                                ;
     break;}
 case 398:
-#line 2114 "gram.y"
+#line 2115 "gram.y"
 {
                                        yyval.attr = makeNode(Attr);
                                        yyval.attr->relname = yyvsp[0].str;
@@ -7365,31 +7365,31 @@ case 398:
                                ;
     break;}
 case 399:
-#line 2124 "gram.y"
+#line 2125 "gram.y"
 { yyval.ival = CMD_SELECT; ;
     break;}
 case 400:
-#line 2125 "gram.y"
+#line 2126 "gram.y"
 { yyval.ival = CMD_UPDATE; ;
     break;}
 case 401:
-#line 2126 "gram.y"
+#line 2127 "gram.y"
 { yyval.ival = CMD_DELETE; ;
     break;}
 case 402:
-#line 2127 "gram.y"
+#line 2128 "gram.y"
 { yyval.ival = CMD_INSERT; ;
     break;}
 case 403:
-#line 2130 "gram.y"
+#line 2131 "gram.y"
 { yyval.boolean = TRUE; ;
     break;}
 case 404:
-#line 2131 "gram.y"
+#line 2132 "gram.y"
 { yyval.boolean = FALSE; ;
     break;}
 case 405:
-#line 2144 "gram.y"
+#line 2145 "gram.y"
 {
                                        NotifyStmt *n = makeNode(NotifyStmt);
                                        n->relname = yyvsp[0].str;
@@ -7397,7 +7397,7 @@ case 405:
                                ;
     break;}
 case 406:
-#line 2152 "gram.y"
+#line 2153 "gram.y"
 {
                                        ListenStmt *n = makeNode(ListenStmt);
                                        n->relname = yyvsp[0].str;
@@ -7405,7 +7405,7 @@ case 406:
                                ;
     break;}
 case 407:
-#line 2160 "gram.y"
+#line 2161 "gram.y"
 {
                                        UnlistenStmt *n = makeNode(UnlistenStmt);
                                        n->relname = yyvsp[0].str;
@@ -7413,7 +7413,7 @@ case 407:
                                ;
     break;}
 case 408:
-#line 2166 "gram.y"
+#line 2167 "gram.y"
 {
                                        UnlistenStmt *n = makeNode(UnlistenStmt);
                                        n->relname = "*";
@@ -7421,7 +7421,7 @@ case 408:
                                ;
     break;}
 case 409:
-#line 2188 "gram.y"
+#line 2189 "gram.y"
 {
                                        TransactionStmt *n = makeNode(TransactionStmt);
                                        n->command = ABORT_TRANS;
@@ -7429,7 +7429,7 @@ case 409:
                                ;
     break;}
 case 410:
-#line 2194 "gram.y"
+#line 2195 "gram.y"
 {
                                        TransactionStmt *n = makeNode(TransactionStmt);
                                        n->command = BEGIN_TRANS;
@@ -7437,7 +7437,7 @@ case 410:
                                ;
     break;}
 case 411:
-#line 2200 "gram.y"
+#line 2201 "gram.y"
 {
                                        TransactionStmt *n = makeNode(TransactionStmt);
                                        n->command = END_TRANS;
@@ -7445,7 +7445,7 @@ case 411:
                                ;
     break;}
 case 412:
-#line 2206 "gram.y"
+#line 2207 "gram.y"
 {
                                        TransactionStmt *n = makeNode(TransactionStmt);
                                        n->command = END_TRANS;
@@ -7453,7 +7453,7 @@ case 412:
                                ;
     break;}
 case 413:
-#line 2212 "gram.y"
+#line 2213 "gram.y"
 {
                                        TransactionStmt *n = makeNode(TransactionStmt);
                                        n->command = ABORT_TRANS;
@@ -7461,19 +7461,19 @@ case 413:
                                ;
     break;}
 case 414:
-#line 2219 "gram.y"
+#line 2220 "gram.y"
 { yyval.boolean = TRUE; ;
     break;}
 case 415:
-#line 2220 "gram.y"
+#line 2221 "gram.y"
 { yyval.boolean = TRUE; ;
     break;}
 case 416:
-#line 2221 "gram.y"
+#line 2222 "gram.y"
 { yyval.boolean = TRUE; ;
     break;}
 case 417:
-#line 2233 "gram.y"
+#line 2234 "gram.y"
 {
                                        ViewStmt *n = makeNode(ViewStmt);
                                        n->viewname = yyvsp[-2].str;
@@ -7488,7 +7488,7 @@ case 417:
                                ;
     break;}
 case 418:
-#line 2256 "gram.y"
+#line 2257 "gram.y"
 {
                                        LoadStmt *n = makeNode(LoadStmt);
                                        n->filename = yyvsp[0].str;
@@ -7496,7 +7496,7 @@ case 418:
                                ;
     break;}
 case 419:
-#line 2272 "gram.y"
+#line 2273 "gram.y"
 {
                                        CreatedbStmt *n = makeNode(CreatedbStmt);
                                        if (yyvsp[-1].str == NULL && yyvsp[0].str == NULL) {
@@ -7522,7 +7522,7 @@ case 419:
                                ;
     break;}
 case 420:
-#line 2296 "gram.y"
+#line 2297 "gram.y"
 {
                                        CreatedbStmt *n = makeNode(CreatedbStmt);
                                        n->dbname = yyvsp[0].str;
@@ -7536,47 +7536,47 @@ case 420:
                                ;
     break;}
 case 421:
-#line 2309 "gram.y"
+#line 2310 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 422:
-#line 2310 "gram.y"
+#line 2311 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 423:
-#line 2313 "gram.y"
+#line 2314 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 424:
-#line 2314 "gram.y"
+#line 2315 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 425:
-#line 2317 "gram.y"
+#line 2318 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 426:
-#line 2318 "gram.y"
+#line 2319 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 427:
-#line 2319 "gram.y"
+#line 2320 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 428:
-#line 2322 "gram.y"
+#line 2323 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 429:
-#line 2323 "gram.y"
+#line 2324 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 430:
-#line 2324 "gram.y"
+#line 2325 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 431:
-#line 2335 "gram.y"
+#line 2336 "gram.y"
 {
                                        DestroydbStmt *n = makeNode(DestroydbStmt);
                                        n->dbname = yyvsp[0].str;
@@ -7584,7 +7584,7 @@ case 431:
                                ;
     break;}
 case 432:
-#line 2351 "gram.y"
+#line 2352 "gram.y"
 {
                                   ClusterStmt *n = makeNode(ClusterStmt);
                                   n->relname = yyvsp[0].str;
@@ -7593,7 +7593,7 @@ case 432:
                                ;
     break;}
 case 433:
-#line 2368 "gram.y"
+#line 2369 "gram.y"
 {
                                        VacuumStmt *n = makeNode(VacuumStmt);
                                        n->verbose = yyvsp[-1].boolean;
@@ -7604,7 +7604,7 @@ case 433:
                                ;
     break;}
 case 434:
-#line 2377 "gram.y"
+#line 2378 "gram.y"
 {
                                        VacuumStmt *n = makeNode(VacuumStmt);
                                        n->verbose = yyvsp[-3].boolean;
@@ -7617,39 +7617,39 @@ case 434:
                                ;
     break;}
 case 435:
-#line 2389 "gram.y"
+#line 2390 "gram.y"
 { yyval.boolean = TRUE; ;
     break;}
 case 436:
-#line 2390 "gram.y"
+#line 2391 "gram.y"
 { yyval.boolean = FALSE; ;
     break;}
 case 437:
-#line 2393 "gram.y"
+#line 2394 "gram.y"
 { yyval.boolean = TRUE; ;
     break;}
 case 438:
-#line 2394 "gram.y"
+#line 2395 "gram.y"
 { yyval.boolean = FALSE; ;
     break;}
 case 439:
-#line 2397 "gram.y"
+#line 2398 "gram.y"
 { yyval.list = yyvsp[-1].list; ;
     break;}
 case 440:
-#line 2398 "gram.y"
+#line 2399 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 441:
-#line 2402 "gram.y"
+#line 2403 "gram.y"
 { yyval.list=lcons(yyvsp[0].str,NIL); ;
     break;}
 case 442:
-#line 2404 "gram.y"
+#line 2405 "gram.y"
 { yyval.list=lappend(yyvsp[-2].list,yyvsp[0].str); ;
     break;}
 case 443:
-#line 2416 "gram.y"
+#line 2417 "gram.y"
 {
                                        ExplainStmt *n = makeNode(ExplainStmt);
                                        n->verbose = yyvsp[-1].boolean;
@@ -7658,14 +7658,14 @@ case 443:
                                ;
     break;}
 case 450:
-#line 2459 "gram.y"
+#line 2460 "gram.y"
 {
                                        yyvsp[0].astmt->relname = yyvsp[-1].str;
                                        yyval.node = (Node *)yyvsp[0].astmt;
                                ;
     break;}
 case 451:
-#line 2466 "gram.y"
+#line 2467 "gram.y"
 {
                                        yyval.astmt = makeNode(InsertStmt);
                                        yyval.astmt->cols = NULL;
@@ -7679,7 +7679,7 @@ case 451:
                                ;
     break;}
 case 452:
-#line 2478 "gram.y"
+#line 2479 "gram.y"
 {
                                        yyval.astmt = makeNode(InsertStmt);
                                        yyval.astmt->unique = NULL;
@@ -7694,7 +7694,7 @@ case 452:
                                ;
     break;}
 case 453:
-#line 2494 "gram.y"
+#line 2495 "gram.y"
 {
                                        SelectStmt *n;
 
@@ -7713,7 +7713,7 @@ case 453:
                                ;
     break;}
 case 454:
-#line 2511 "gram.y"
+#line 2512 "gram.y"
 {
                                        yyval.astmt = makeNode(InsertStmt);
                                        yyval.astmt->cols = yyvsp[-5].list;
@@ -7729,7 +7729,7 @@ case 454:
                                ;
     break;}
 case 455:
-#line 2525 "gram.y"
+#line 2526 "gram.y"
 {
                                        SelectStmt *n;
 
@@ -7747,23 +7747,23 @@ case 455:
                                ;
     break;}
 case 456:
-#line 2542 "gram.y"
+#line 2543 "gram.y"
 { yyval.list = yyvsp[-1].list; ;
     break;}
 case 457:
-#line 2543 "gram.y"
+#line 2544 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 458:
-#line 2548 "gram.y"
+#line 2549 "gram.y"
 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node); ;
     break;}
 case 459:
-#line 2550 "gram.y"
+#line 2551 "gram.y"
 { yyval.list = lcons(yyvsp[0].node, NIL); ;
     break;}
 case 460:
-#line 2554 "gram.y"
+#line 2555 "gram.y"
 {
                                        Ident *id = makeNode(Ident);
                                        id->name = yyvsp[-1].str;
@@ -7772,7 +7772,7 @@ case 460:
                                ;
     break;}
 case 461:
-#line 2572 "gram.y"
+#line 2573 "gram.y"
 {
                                        DeleteStmt *n = makeNode(DeleteStmt);
                                        n->relname = yyvsp[-1].str;
@@ -7781,7 +7781,7 @@ case 461:
                                ;
     break;}
 case 462:
-#line 2581 "gram.y"
+#line 2582 "gram.y"
 {
                                        LockStmt *n = makeNode(LockStmt);
 
@@ -7791,7 +7791,7 @@ case 462:
                                ;
     break;}
 case 463:
-#line 2589 "gram.y"
+#line 2590 "gram.y"
 {
                                        LockStmt *n = makeNode(LockStmt);
 
@@ -7819,7 +7819,7 @@ case 463:
                                ;
     break;}
 case 464:
-#line 2615 "gram.y"
+#line 2616 "gram.y"
 {
                                        LockStmt *n = makeNode(LockStmt);
 
@@ -7838,7 +7838,7 @@ case 464:
                                ;
     break;}
 case 465:
-#line 2632 "gram.y"
+#line 2633 "gram.y"
 {
                                        LockStmt *n = makeNode(LockStmt);
 
@@ -7855,15 +7855,15 @@ case 465:
                                ;
     break;}
 case 466:
-#line 2648 "gram.y"
+#line 2649 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 467:
-#line 2649 "gram.y"
+#line 2650 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 468:
-#line 2663 "gram.y"
+#line 2664 "gram.y"
 {
                                        UpdateStmt *n = makeNode(UpdateStmt);
                                        n->relname = yyvsp[-4].str;
@@ -7874,7 +7874,7 @@ case 468:
                                ;
     break;}
 case 469:
-#line 2682 "gram.y"
+#line 2683 "gram.y"
 {
                                        SelectStmt *n;
   
@@ -7896,39 +7896,39 @@ case 469:
                                ;
     break;}
 case 470:
-#line 2703 "gram.y"
+#line 2704 "gram.y"
 { yyval.boolean = TRUE; ;
     break;}
 case 471:
-#line 2704 "gram.y"
+#line 2705 "gram.y"
 { yyval.boolean = FALSE; ;
     break;}
 case 472:
-#line 2705 "gram.y"
+#line 2706 "gram.y"
 { yyval.boolean = FALSE; ;
     break;}
 case 473:
-#line 2706 "gram.y"
+#line 2707 "gram.y"
 { yyval.boolean = FALSE; ;
     break;}
 case 474:
-#line 2707 "gram.y"
+#line 2708 "gram.y"
 { yyval.boolean = FALSE; ;
     break;}
 case 475:
-#line 2710 "gram.y"
+#line 2711 "gram.y"
 { yyval.boolean = yyvsp[0].boolean; ;
     break;}
 case 476:
-#line 2711 "gram.y"
+#line 2712 "gram.y"
 { yyval.boolean = FALSE; ;
     break;}
 case 477:
-#line 2714 "gram.y"
+#line 2715 "gram.y"
 { yyval.boolean = TRUE; ;
     break;}
 case 478:
-#line 2716 "gram.y"
+#line 2717 "gram.y"
 {
                                elog(ERROR,"DECLARE/UPDATE not supported;"
                                         " Cursors must be READ ONLY.");
@@ -7936,13 +7936,13 @@ case 478:
                        ;
     break;}
 case 479:
-#line 2724 "gram.y"
+#line 2725 "gram.y"
 {
                                yyval.boolean = FALSE;
                        ;
     break;}
 case 480:
-#line 2743 "gram.y"
+#line 2744 "gram.y"
 {
                                /* There were no set operations, so just attach the sortClause */
                                if IsA(yyvsp[-3].node, SelectStmt)
@@ -8019,26 +8019,26 @@ case 480:
                        ;
     break;}
 case 481:
-#line 2834 "gram.y"
+#line 2835 "gram.y"
 {
                                yyval.node = yyvsp[-1].node; 
                        ;
     break;}
 case 482:
-#line 2838 "gram.y"
+#line 2839 "gram.y"
 {
                                yyval.node = yyvsp[0].node; 
                        ;
     break;}
 case 483:
-#line 2842 "gram.y"
+#line 2843 "gram.y"
 {
                                yyval.node = (Node *)makeA_Expr(AND,NULL,yyvsp[-2].node,
                                                        makeA_Expr(NOT,NULL,NULL,yyvsp[0].node));
                        ;
     break;}
 case 484:
-#line 2847 "gram.y"
+#line 2848 "gram.y"
 {      
                                if (IsA(yyvsp[0].node, SelectStmt))
                                  {
@@ -8049,13 +8049,13 @@ case 484:
                        ;
     break;}
 case 485:
-#line 2856 "gram.y"
+#line 2857 "gram.y"
 {
                                yyval.node = (Node *)makeA_Expr(AND,NULL,yyvsp[-2].node,yyvsp[0].node);
                        ;
     break;}
 case 486:
-#line 2865 "gram.y"
+#line 2866 "gram.y"
 {
                                        SelectStmt *n = makeNode(SelectStmt);
                                        n->unique = yyvsp[-6].str;
@@ -8081,63 +8081,63 @@ case 486:
                                ;
     break;}
 case 487:
-#line 2891 "gram.y"
+#line 2892 "gram.y"
 { yyval.list = lcons(makeInteger(yyvsp[-2].boolean), (List *)yyvsp[0].str); ;
     break;}
 case 488:
-#line 2892 "gram.y"
+#line 2893 "gram.y"
 { yyval.list = lcons(makeInteger(false), NIL); ;
     break;}
 case 489:
-#line 2895 "gram.y"
+#line 2896 "gram.y"
 { yyval.boolean = TRUE; ;
     break;}
 case 490:
-#line 2896 "gram.y"
+#line 2897 "gram.y"
 { yyval.boolean = FALSE; ;
     break;}
 case 491:
-#line 2899 "gram.y"
+#line 2900 "gram.y"
 { yyval.boolean = TRUE; ;
     break;}
 case 492:
-#line 2900 "gram.y"
+#line 2901 "gram.y"
 { yyval.boolean = FALSE; ;
     break;}
 case 493:
-#line 2903 "gram.y"
+#line 2904 "gram.y"
 { yyval.str = "*"; ;
     break;}
 case 494:
-#line 2904 "gram.y"
+#line 2905 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 495:
-#line 2905 "gram.y"
+#line 2906 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 496:
-#line 2906 "gram.y"
+#line 2907 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 497:
-#line 2909 "gram.y"
+#line 2910 "gram.y"
 { yyval.list = yyvsp[0].list; ;
     break;}
 case 498:
-#line 2910 "gram.y"
+#line 2911 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 499:
-#line 2913 "gram.y"
+#line 2914 "gram.y"
 { yyval.list = lcons(yyvsp[0].sortgroupby, NIL); ;
     break;}
 case 500:
-#line 2914 "gram.y"
+#line 2915 "gram.y"
 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].sortgroupby); ;
     break;}
 case 501:
-#line 2918 "gram.y"
+#line 2919 "gram.y"
 {
                                        yyval.sortgroupby = makeNode(SortGroupBy);
                                        yyval.sortgroupby->node = yyvsp[-1].node;
@@ -8145,55 +8145,55 @@ case 501:
                                ;
     break;}
 case 502:
-#line 2925 "gram.y"
+#line 2926 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 503:
-#line 2926 "gram.y"
+#line 2927 "gram.y"
 { yyval.str = "<"; ;
     break;}
 case 504:
-#line 2927 "gram.y"
+#line 2928 "gram.y"
 { yyval.str = ">"; ;
     break;}
 case 505:
-#line 2928 "gram.y"
+#line 2929 "gram.y"
 { yyval.str = "<"; ;
     break;}
 case 506:
-#line 2929 "gram.y"
+#line 2930 "gram.y"
 { yyval.str = ">"; ;
     break;}
 case 507:
-#line 2930 "gram.y"
+#line 2931 "gram.y"
 { yyval.str = "<"; /*default*/ ;
     break;}
 case 508:
-#line 2935 "gram.y"
+#line 2936 "gram.y"
 { yyval.list = lappend(lappend(NIL, yyvsp[0].node), yyvsp[-2].node); ;
     break;}
 case 509:
-#line 2937 "gram.y"
+#line 2938 "gram.y"
 { yyval.list = lappend(lappend(NIL, yyvsp[0].node), yyvsp[-2].node); ;
     break;}
 case 510:
-#line 2939 "gram.y"
+#line 2940 "gram.y"
 { yyval.list = lappend(lappend(NIL, NULL), yyvsp[0].node); ;
     break;}
 case 511:
-#line 2941 "gram.y"
+#line 2942 "gram.y"
 { yyval.list = lappend(lappend(NIL, yyvsp[-2].node), yyvsp[0].node); ;
     break;}
 case 512:
-#line 2943 "gram.y"
+#line 2944 "gram.y"
 { yyval.list = lappend(lappend(NIL, yyvsp[0].node), NULL); ;
     break;}
 case 513:
-#line 2945 "gram.y"
+#line 2946 "gram.y"
 { yyval.list = lappend(lappend(NIL, NULL), NULL); ;
     break;}
 case 514:
-#line 2949 "gram.y"
+#line 2950 "gram.y"
 {
                                Const   *n = makeNode(Const);
 
@@ -8211,7 +8211,7 @@ case 514:
                        ;
     break;}
 case 515:
-#line 2965 "gram.y"
+#line 2966 "gram.y"
 {
                                Const   *n = makeNode(Const);
 
@@ -8226,7 +8226,7 @@ case 515:
                        ;
     break;}
 case 516:
-#line 2978 "gram.y"
+#line 2979 "gram.y"
 {
                                Param   *n = makeNode(Param);
 
@@ -8237,7 +8237,7 @@ case 516:
                        ;
     break;}
 case 517:
-#line 2989 "gram.y"
+#line 2990 "gram.y"
 {
                                Const   *n = makeNode(Const);
 
@@ -8252,7 +8252,7 @@ case 517:
                        ;
     break;}
 case 518:
-#line 3002 "gram.y"
+#line 3003 "gram.y"
 {
                                Param   *n = makeNode(Param);
 
@@ -8263,85 +8263,85 @@ case 518:
                        ;
     break;}
 case 519:
-#line 3018 "gram.y"
+#line 3019 "gram.y"
 { yyval.boolean = TRUE; ;
     break;}
 case 520:
-#line 3019 "gram.y"
+#line 3020 "gram.y"
 { yyval.boolean = FALSE; ;
     break;}
 case 522:
-#line 3025 "gram.y"
+#line 3026 "gram.y"
 {      yyval.list = lcons(makeString(yyvsp[0].str),NIL); ;
     break;}
 case 523:
-#line 3027 "gram.y"
+#line 3028 "gram.y"
 {      yyval.list = lappend(yyvsp[-2].list,makeString(yyvsp[0].str)); ;
     break;}
 case 524:
-#line 3030 "gram.y"
+#line 3031 "gram.y"
 { yyval.list = yyvsp[0].list; ;
     break;}
 case 525:
-#line 3031 "gram.y"
+#line 3032 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 526:
-#line 3035 "gram.y"
+#line 3036 "gram.y"
 {
                                        yyval.node = yyvsp[0].node;
                                ;
     break;}
 case 527:
-#line 3038 "gram.y"
+#line 3039 "gram.y"
 { yyval.node = NULL; ;
     break;}
 case 528:
-#line 3041 "gram.y"
+#line 3042 "gram.y"
 { yyval.list = yyvsp[0].list; ;
     break;}
 case 529:
-#line 3042 "gram.y"
+#line 3043 "gram.y"
 { yyval.list = NULL; ;
     break;}
 case 530:
-#line 3045 "gram.y"
+#line 3046 "gram.y"
 { yyval.list = yyvsp[0].list; ;
     break;}
 case 531:
-#line 3046 "gram.y"
+#line 3047 "gram.y"
 { yyval.list = lcons(NULL, NULL); ;
     break;}
 case 532:
-#line 3057 "gram.y"
+#line 3058 "gram.y"
 { yyval.list = yyvsp[0].list; ;
     break;}
 case 533:
-#line 3058 "gram.y"
+#line 3059 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 534:
-#line 3062 "gram.y"
+#line 3063 "gram.y"
 { yyval.list = yyvsp[-1].list; ;
     break;}
 case 535:
-#line 3064 "gram.y"
+#line 3065 "gram.y"
 { yyval.list = yyvsp[0].list; ;
     break;}
 case 536:
-#line 3066 "gram.y"
+#line 3067 "gram.y"
 { yyval.list = yyvsp[0].list; ;
     break;}
 case 537:
-#line 3070 "gram.y"
+#line 3071 "gram.y"
 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].range); ;
     break;}
 case 538:
-#line 3072 "gram.y"
+#line 3073 "gram.y"
 { yyval.list = lcons(yyvsp[0].range, NIL); ;
     break;}
 case 539:
-#line 3076 "gram.y"
+#line 3077 "gram.y"
 {
                                        yyval.range = makeNode(RangeVar);
                                        yyval.range->relExpr = yyvsp[-2].relexp;
@@ -8349,7 +8349,7 @@ case 539:
                                ;
     break;}
 case 540:
-#line 3082 "gram.y"
+#line 3083 "gram.y"
 {
                                        yyval.range = makeNode(RangeVar);
                                        yyval.range->relExpr = yyvsp[-1].relexp;
@@ -8357,7 +8357,7 @@ case 540:
                                ;
     break;}
 case 541:
-#line 3088 "gram.y"
+#line 3089 "gram.y"
 {
                                        yyval.range = makeNode(RangeVar);
                                        yyval.range->relExpr = yyvsp[0].relexp;
@@ -8365,15 +8365,15 @@ case 541:
                                ;
     break;}
 case 542:
-#line 3100 "gram.y"
+#line 3101 "gram.y"
 {      yyval.list = yyvsp[0].list; ;
     break;}
 case 543:
-#line 3102 "gram.y"
+#line 3103 "gram.y"
 {      elog(ERROR,"UNION JOIN not yet implemented"); ;
     break;}
 case 544:
-#line 3106 "gram.y"
+#line 3107 "gram.y"
 {
                                        Node *n = lfirst(yyvsp[0].list);
 
@@ -8393,19 +8393,19 @@ case 544:
                                ;
     break;}
 case 545:
-#line 3126 "gram.y"
+#line 3127 "gram.y"
 {
                                        yyval.list = lappend(yyvsp[-1].list, yyvsp[0].node);
                                ;
     break;}
 case 546:
-#line 3130 "gram.y"
+#line 3131 "gram.y"
 {
                                        yyval.list = lcons(yyvsp[0].node, NIL);
                                ;
     break;}
 case 547:
-#line 3142 "gram.y"
+#line 3143 "gram.y"
 {
                                        JoinExpr *n = makeNode(JoinExpr);
                                        n->jointype = yyvsp[-3].ival;
@@ -8415,7 +8415,7 @@ case 547:
                                ;
     break;}
 case 548:
-#line 3150 "gram.y"
+#line 3151 "gram.y"
 {
                                        JoinExpr *n = makeNode(JoinExpr);
                                        n->jointype = yyvsp[-2].ival;
@@ -8425,75 +8425,75 @@ case 548:
                                ;
     break;}
 case 549:
-#line 3158 "gram.y"
+#line 3159 "gram.y"
 { yyval.node = (Node *)yyvsp[0].range; ;
     break;}
 case 550:
-#line 3163 "gram.y"
+#line 3164 "gram.y"
 {
                                        yyval.ival = FULL;
                                        elog(NOTICE,"FULL OUTER JOIN not yet implemented");
                                ;
     break;}
 case 551:
-#line 3168 "gram.y"
+#line 3169 "gram.y"
 {
                                        yyval.ival = LEFT;
                                        elog(NOTICE,"LEFT OUTER JOIN not yet implemented");
                                ;
     break;}
 case 552:
-#line 3173 "gram.y"
+#line 3174 "gram.y"
 {
                                        yyval.ival = RIGHT;
                                        elog(NOTICE,"RIGHT OUTER JOIN not yet implemented");
                                ;
     break;}
 case 553:
-#line 3178 "gram.y"
+#line 3179 "gram.y"
 {
                                        yyval.ival = LEFT;
                                        elog(NOTICE,"OUTER JOIN not yet implemented");
                                ;
     break;}
 case 554:
-#line 3183 "gram.y"
+#line 3184 "gram.y"
 {
                                        yyval.ival = INNER_P;
                                ;
     break;}
 case 555:
-#line 3187 "gram.y"
+#line 3188 "gram.y"
 {
                                        yyval.ival = INNER_P;
                                ;
     break;}
 case 556:
-#line 3192 "gram.y"
+#line 3193 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 557:
-#line 3193 "gram.y"
+#line 3194 "gram.y"
 { yyval.str = NULL;  /* no qualifiers */ ;
     break;}
 case 558:
-#line 3204 "gram.y"
+#line 3205 "gram.y"
 { yyval.list = yyvsp[-1].list; ;
     break;}
 case 559:
-#line 3205 "gram.y"
+#line 3206 "gram.y"
 { yyval.list = lcons(yyvsp[0].node, NIL); ;
     break;}
 case 560:
-#line 3208 "gram.y"
+#line 3209 "gram.y"
 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node); ;
     break;}
 case 561:
-#line 3209 "gram.y"
+#line 3210 "gram.y"
 { yyval.list = lcons(yyvsp[0].node, NIL); ;
     break;}
 case 562:
-#line 3213 "gram.y"
+#line 3214 "gram.y"
 {
                                        /* could be a column name or a relation_name */
                                        Ident *n = makeNode(Ident);
@@ -8503,15 +8503,15 @@ case 562:
                                ;
     break;}
 case 563:
-#line 3222 "gram.y"
+#line 3223 "gram.y"
 { yyval.node = yyvsp[0].node; ;
     break;}
 case 564:
-#line 3223 "gram.y"
+#line 3224 "gram.y"
 { yyval.node = NULL;  /* no qualifiers */ ;
     break;}
 case 565:
-#line 3227 "gram.y"
+#line 3228 "gram.y"
 {
                                        /* normal relations */
                                        yyval.relexp = makeNode(RelExpr);
@@ -8520,7 +8520,7 @@ case 565:
                                ;
     break;}
 case 566:
-#line 3234 "gram.y"
+#line 3235 "gram.y"
 {
                                        /* inheritance query */
                                        yyval.relexp = makeNode(RelExpr);
@@ -8529,31 +8529,31 @@ case 566:
                                ;
     break;}
 case 567:
-#line 3242 "gram.y"
+#line 3243 "gram.y"
 {  yyval.list = lcons(makeInteger(-1), yyvsp[0].list); ;
     break;}
 case 568:
-#line 3244 "gram.y"
+#line 3245 "gram.y"
 {  yyval.list = lcons(makeInteger(yyvsp[-2].ival), yyvsp[0].list); ;
     break;}
 case 569:
-#line 3246 "gram.y"
+#line 3247 "gram.y"
 {  yyval.list = NIL; ;
     break;}
 case 570:
-#line 3250 "gram.y"
+#line 3251 "gram.y"
 {  yyval.list = lcons(makeInteger(-1), yyvsp[0].list); ;
     break;}
 case 571:
-#line 3252 "gram.y"
+#line 3253 "gram.y"
 {  yyval.list = lcons(makeInteger(yyvsp[-2].ival), yyvsp[0].list); ;
     break;}
 case 572:
-#line 3254 "gram.y"
+#line 3255 "gram.y"
 {  yyval.list = NIL; ;
     break;}
 case 573:
-#line 3269 "gram.y"
+#line 3270 "gram.y"
 {
                                        yyval.typnam = yyvsp[-1].typnam;
                                        yyval.typnam->arrayBounds = yyvsp[0].list;
@@ -8577,14 +8577,14 @@ case 573:
                                ;
     break;}
 case 575:
-#line 3292 "gram.y"
+#line 3293 "gram.y"
 {
                                        yyval.typnam = yyvsp[0].typnam;
                                        yyval.typnam->setof = TRUE;
                                ;
     break;}
 case 579:
-#line 3304 "gram.y"
+#line 3305 "gram.y"
 {
                                        yyval.typnam = makeNode(TypeName);
                                        yyval.typnam->name = xlateSqlType(yyvsp[0].str);
@@ -8592,15 +8592,15 @@ case 579:
                                ;
     break;}
 case 580:
-#line 3311 "gram.y"
+#line 3312 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 581:
-#line 3312 "gram.y"
+#line 3313 "gram.y"
 { yyval.str = xlateSqlType("type"); ;
     break;}
 case 582:
-#line 3321 "gram.y"
+#line 3322 "gram.y"
 {
                                        yyval.typnam = makeNode(TypeName);
                                        yyval.typnam->name = xlateSqlType(yyvsp[0].str);
@@ -8608,14 +8608,14 @@ case 582:
                                ;
     break;}
 case 583:
-#line 3327 "gram.y"
+#line 3328 "gram.y"
 {
                                        yyval.typnam = makeNode(TypeName);
                                        yyval.typnam->name = xlateSqlType("float");
                                ;
     break;}
 case 584:
-#line 3332 "gram.y"
+#line 3333 "gram.y"
 {
                                        yyval.typnam = makeNode(TypeName);
                                        yyval.typnam->name = xlateSqlType("numeric");
@@ -8623,7 +8623,7 @@ case 584:
                                ;
     break;}
 case 585:
-#line 3338 "gram.y"
+#line 3339 "gram.y"
 {
                                        yyval.typnam = makeNode(TypeName);
                                        yyval.typnam->name = xlateSqlType("numeric");
@@ -8631,23 +8631,23 @@ case 585:
                                ;
     break;}
 case 586:
-#line 3346 "gram.y"
+#line 3347 "gram.y"
 {      yyval.str = xlateSqlType("float8"); ;
     break;}
 case 587:
-#line 3348 "gram.y"
+#line 3349 "gram.y"
 {      yyval.str = xlateSqlType("float8"); ;
     break;}
 case 588:
-#line 3350 "gram.y"
+#line 3351 "gram.y"
 {      yyval.str = xlateSqlType("numeric"); ;
     break;}
 case 589:
-#line 3352 "gram.y"
+#line 3353 "gram.y"
 {      yyval.str = xlateSqlType("numeric"); ;
     break;}
 case 590:
-#line 3356 "gram.y"
+#line 3357 "gram.y"
 {
                                        if (yyvsp[-1].ival < 1)
                                                elog(ERROR,"precision for FLOAT must be at least 1");
@@ -8660,13 +8660,13 @@ case 590:
                                ;
     break;}
 case 591:
-#line 3367 "gram.y"
+#line 3368 "gram.y"
 {
                                        yyval.str = xlateSqlType("float8");
                                ;
     break;}
 case 592:
-#line 3373 "gram.y"
+#line 3374 "gram.y"
 {
                                        if (yyvsp[-3].ival < 1 || yyvsp[-3].ival > NUMERIC_MAX_PRECISION)
                                                elog(ERROR,"NUMERIC precision %d must be beween 1 and %d",
@@ -8679,7 +8679,7 @@ case 592:
                                ;
     break;}
 case 593:
-#line 3384 "gram.y"
+#line 3385 "gram.y"
 {
                                        if (yyvsp[-1].ival < 1 || yyvsp[-1].ival > NUMERIC_MAX_PRECISION)
                                                elog(ERROR,"NUMERIC precision %d must be beween 1 and %d",
@@ -8689,13 +8689,13 @@ case 593:
                                ;
     break;}
 case 594:
-#line 3392 "gram.y"
+#line 3393 "gram.y"
 {
                                        yyval.ival = ((NUMERIC_DEFAULT_PRECISION << 16) | NUMERIC_DEFAULT_SCALE) + VARHDRSZ;
                                ;
     break;}
 case 595:
-#line 3398 "gram.y"
+#line 3399 "gram.y"
 {
                                        if (yyvsp[-3].ival < 1 || yyvsp[-3].ival > NUMERIC_MAX_PRECISION)
                                                elog(ERROR,"DECIMAL precision %d must be beween 1 and %d",
@@ -8708,7 +8708,7 @@ case 595:
                                ;
     break;}
 case 596:
-#line 3409 "gram.y"
+#line 3410 "gram.y"
 {
                                        if (yyvsp[-1].ival < 1 || yyvsp[-1].ival > NUMERIC_MAX_PRECISION)
                                                elog(ERROR,"DECIMAL precision %d must be beween 1 and %d",
@@ -8718,13 +8718,13 @@ case 596:
                                ;
     break;}
 case 597:
-#line 3417 "gram.y"
+#line 3418 "gram.y"
 {
                                        yyval.ival = ((NUMERIC_DEFAULT_PRECISION << 16) | NUMERIC_DEFAULT_SCALE) + VARHDRSZ;
                                ;
     break;}
 case 598:
-#line 3431 "gram.y"
+#line 3432 "gram.y"
 {
                                        yyval.typnam = makeNode(TypeName);
                                        if (strcasecmp(yyvsp[-3].str, "char") == 0)
@@ -8753,7 +8753,7 @@ case 598:
                                ;
     break;}
 case 599:
-#line 3458 "gram.y"
+#line 3459 "gram.y"
 {
                                        yyval.typnam = makeNode(TypeName);
                                        /* Let's try to make all single-character types into bpchar(1)
@@ -8772,7 +8772,7 @@ case 599:
                                ;
     break;}
 case 600:
-#line 3477 "gram.y"
+#line 3478 "gram.y"
 {
                                        char *type, *c;
                                        if ((yyvsp[-1].str == NULL) || (strcasecmp(yyvsp[-1].str, "sql_text") == 0)) {
@@ -8794,47 +8794,47 @@ case 600:
                                ;
     break;}
 case 601:
-#line 3496 "gram.y"
+#line 3497 "gram.y"
 { yyval.str = xlateSqlType(yyvsp[0].boolean? "varchar": "char"); ;
     break;}
 case 602:
-#line 3497 "gram.y"
+#line 3498 "gram.y"
 { yyval.str = xlateSqlType("varchar"); ;
     break;}
 case 603:
-#line 3498 "gram.y"
+#line 3499 "gram.y"
 { yyval.str = xlateSqlType(yyvsp[0].boolean? "varchar": "char"); ;
     break;}
 case 604:
-#line 3499 "gram.y"
+#line 3500 "gram.y"
 { yyval.str = xlateSqlType(yyvsp[0].boolean? "varchar": "char"); ;
     break;}
 case 605:
-#line 3502 "gram.y"
+#line 3503 "gram.y"
 { yyval.boolean = TRUE; ;
     break;}
 case 606:
-#line 3503 "gram.y"
+#line 3504 "gram.y"
 { yyval.boolean = FALSE; ;
     break;}
 case 607:
-#line 3506 "gram.y"
+#line 3507 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 608:
-#line 3507 "gram.y"
+#line 3508 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 609:
-#line 3510 "gram.y"
+#line 3511 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 610:
-#line 3511 "gram.y"
+#line 3512 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 611:
-#line 3515 "gram.y"
+#line 3516 "gram.y"
 {
                                        yyval.typnam = makeNode(TypeName);
                                        yyval.typnam->name = xlateSqlType(yyvsp[0].str);
@@ -8842,7 +8842,7 @@ case 611:
                                ;
     break;}
 case 612:
-#line 3521 "gram.y"
+#line 3522 "gram.y"
 {
                                        yyval.typnam = makeNode(TypeName);
                                        yyval.typnam->name = xlateSqlType("timestamp");
@@ -8851,7 +8851,7 @@ case 612:
                                ;
     break;}
 case 613:
-#line 3528 "gram.y"
+#line 3529 "gram.y"
 {
                                        yyval.typnam = makeNode(TypeName);
                                        yyval.typnam->name = xlateSqlType("time");
@@ -8859,7 +8859,7 @@ case 613:
                                ;
     break;}
 case 614:
-#line 3534 "gram.y"
+#line 3535 "gram.y"
 {
                                        yyval.typnam = makeNode(TypeName);
                                        yyval.typnam->name = xlateSqlType("interval");
@@ -8867,79 +8867,79 @@ case 614:
                                ;
     break;}
 case 615:
-#line 3541 "gram.y"
+#line 3542 "gram.y"
 { yyval.str = "year"; ;
     break;}
 case 616:
-#line 3542 "gram.y"
+#line 3543 "gram.y"
 { yyval.str = "month"; ;
     break;}
 case 617:
-#line 3543 "gram.y"
+#line 3544 "gram.y"
 { yyval.str = "day"; ;
     break;}
 case 618:
-#line 3544 "gram.y"
+#line 3545 "gram.y"
 { yyval.str = "hour"; ;
     break;}
 case 619:
-#line 3545 "gram.y"
+#line 3546 "gram.y"
 { yyval.str = "minute"; ;
     break;}
 case 620:
-#line 3546 "gram.y"
+#line 3547 "gram.y"
 { yyval.str = "second"; ;
     break;}
 case 621:
-#line 3549 "gram.y"
+#line 3550 "gram.y"
 { yyval.boolean = TRUE; ;
     break;}
 case 622:
-#line 3550 "gram.y"
+#line 3551 "gram.y"
 { yyval.boolean = FALSE; ;
     break;}
 case 623:
-#line 3553 "gram.y"
+#line 3554 "gram.y"
 { yyval.list = lcons(yyvsp[0].str, NIL); ;
     break;}
 case 624:
-#line 3554 "gram.y"
+#line 3555 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 625:
-#line 3555 "gram.y"
+#line 3556 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 626:
-#line 3556 "gram.y"
+#line 3557 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 627:
-#line 3557 "gram.y"
+#line 3558 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 628:
-#line 3558 "gram.y"
+#line 3559 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 629:
-#line 3559 "gram.y"
+#line 3560 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 630:
-#line 3560 "gram.y"
+#line 3561 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 631:
-#line 3561 "gram.y"
+#line 3562 "gram.y"
 { yyval.list = NIL; ;
     break;}
 case 632:
-#line 3572 "gram.y"
+#line 3573 "gram.y"
 { yyval.node = yyvsp[0].node; ;
     break;}
 case 633:
-#line 3574 "gram.y"
+#line 3575 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        n->val.type = T_Null;
@@ -8947,7 +8947,7 @@ case 633:
                                ;
     break;}
 case 634:
-#line 3591 "gram.y"
+#line 3592 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = yyvsp[-5].list;
@@ -8959,7 +8959,7 @@ case 634:
                                ;
     break;}
 case 635:
-#line 3601 "gram.y"
+#line 3602 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = yyvsp[-6].list;
@@ -8971,7 +8971,7 @@ case 635:
                                ;
     break;}
 case 636:
-#line 3611 "gram.y"
+#line 3612 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = yyvsp[-6].list;
@@ -8986,7 +8986,7 @@ case 636:
                                ;
     break;}
 case 637:
-#line 3624 "gram.y"
+#line 3625 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = yyvsp[-5].list;
@@ -9001,90 +9001,90 @@ case 637:
                                ;
     break;}
 case 638:
-#line 3637 "gram.y"
+#line 3638 "gram.y"
 {
                                        yyval.node = makeRowExpr(yyvsp[-3].str, yyvsp[-5].list, yyvsp[-1].list);
                                ;
     break;}
 case 639:
-#line 3643 "gram.y"
+#line 3644 "gram.y"
 {
                                        yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node);
                                ;
     break;}
 case 640:
-#line 3649 "gram.y"
+#line 3650 "gram.y"
 {
                                        yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node);
                                ;
     break;}
 case 641:
-#line 3653 "gram.y"
+#line 3654 "gram.y"
 {
                                        yyval.list = lcons(yyvsp[0].node, NIL);
                                ;
     break;}
 case 642:
-#line 3658 "gram.y"
+#line 3659 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 643:
-#line 3659 "gram.y"
+#line 3660 "gram.y"
 { yyval.str = "<"; ;
     break;}
 case 644:
-#line 3660 "gram.y"
+#line 3661 "gram.y"
 { yyval.str = "="; ;
     break;}
 case 645:
-#line 3661 "gram.y"
+#line 3662 "gram.y"
 { yyval.str = ">"; ;
     break;}
 case 646:
-#line 3662 "gram.y"
+#line 3663 "gram.y"
 { yyval.str = "+"; ;
     break;}
 case 647:
-#line 3663 "gram.y"
+#line 3664 "gram.y"
 { yyval.str = "-"; ;
     break;}
 case 648:
-#line 3664 "gram.y"
+#line 3665 "gram.y"
 { yyval.str = "*"; ;
     break;}
 case 649:
-#line 3665 "gram.y"
+#line 3666 "gram.y"
 { yyval.str = "/"; ;
     break;}
 case 650:
-#line 3666 "gram.y"
+#line 3667 "gram.y"
 { yyval.str = "%"; ;
     break;}
 case 651:
-#line 3669 "gram.y"
+#line 3670 "gram.y"
 { yyval.ival = ANY_SUBLINK; ;
     break;}
 case 652:
-#line 3670 "gram.y"
+#line 3671 "gram.y"
 { yyval.ival = ALL_SUBLINK; ;
     break;}
 case 653:
-#line 3682 "gram.y"
+#line 3683 "gram.y"
 {
                                        yyvsp[-1].attr->indirection = yyvsp[0].list;
                                        yyval.node = (Node *)yyvsp[-1].attr;
                                ;
     break;}
 case 654:
-#line 3687 "gram.y"
+#line 3688 "gram.y"
 {      yyval.node = yyvsp[0].node;  ;
     break;}
 case 655:
-#line 3689 "gram.y"
+#line 3690 "gram.y"
 {      yyval.node = yyvsp[0].node;  ;
     break;}
 case 656:
-#line 3691 "gram.y"
+#line 3692 "gram.y"
 {
                                        /* could be a column name or a relation_name */
                                        Ident *n = makeNode(Ident);
@@ -9094,63 +9094,63 @@ case 656:
                                ;
     break;}
 case 657:
-#line 3699 "gram.y"
+#line 3700 "gram.y"
 {      yyval.node = doNegate(yyvsp[0].node); ;
     break;}
 case 658:
-#line 3701 "gram.y"
+#line 3702 "gram.y"
 {      yyval.node = makeA_Expr(OP, "+", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 659:
-#line 3703 "gram.y"
+#line 3704 "gram.y"
 {      yyval.node = makeA_Expr(OP, "-", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 660:
-#line 3705 "gram.y"
+#line 3706 "gram.y"
 {      yyval.node = makeA_Expr(OP, "/", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 661:
-#line 3707 "gram.y"
+#line 3708 "gram.y"
 {      yyval.node = makeA_Expr(OP, "%", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 662:
-#line 3709 "gram.y"
+#line 3710 "gram.y"
 {      yyval.node = makeA_Expr(OP, "*", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 663:
-#line 3711 "gram.y"
+#line 3712 "gram.y"
 {      yyval.node = makeA_Expr(OP, "<", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 664:
-#line 3713 "gram.y"
+#line 3714 "gram.y"
 {      yyval.node = makeA_Expr(OP, ">", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 665:
-#line 3717 "gram.y"
+#line 3718 "gram.y"
 {      yyval.node = makeA_Expr(ISNULL, NULL, yyvsp[-2].node, NULL); ;
     break;}
 case 666:
-#line 3719 "gram.y"
+#line 3720 "gram.y"
 {      yyval.node = makeA_Expr(ISNULL, NULL, yyvsp[0].node, NULL); ;
     break;}
 case 667:
-#line 3722 "gram.y"
+#line 3723 "gram.y"
 {      yyval.node = makeA_Expr(OP, "=", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 668:
-#line 3724 "gram.y"
+#line 3725 "gram.y"
 {      yyval.node = makeA_Expr(OP, ":", NULL, yyvsp[0].node); ;
     break;}
 case 669:
-#line 3726 "gram.y"
+#line 3727 "gram.y"
 {      yyval.node = makeA_Expr(OP, ";", NULL, yyvsp[0].node); ;
     break;}
 case 670:
-#line 3728 "gram.y"
+#line 3729 "gram.y"
 {      yyval.node = makeA_Expr(OP, "|", NULL, yyvsp[0].node); ;
     break;}
 case 671:
-#line 3730 "gram.y"
+#line 3731 "gram.y"
 {
                                        yyval.node = (Node *)yyvsp[-2].node;
                                        /* AexprConst can be either A_Const or ParamNo */
@@ -9168,7 +9168,7 @@ case 671:
                                ;
     break;}
 case 672:
-#line 3746 "gram.y"
+#line 3747 "gram.y"
 {
                                        yyval.node = (Node *)yyvsp[-3].node;
                                        /* AexprConst can be either A_Const or ParamNo */
@@ -9186,31 +9186,31 @@ case 672:
                                ;
     break;}
 case 673:
-#line 3762 "gram.y"
+#line 3763 "gram.y"
 {      yyval.node = yyvsp[-1].node; ;
     break;}
 case 674:
-#line 3764 "gram.y"
+#line 3765 "gram.y"
 {      yyval.node = makeIndexable(yyvsp[-1].str,yyvsp[-2].node,yyvsp[0].node); ;
     break;}
 case 675:
-#line 3766 "gram.y"
+#line 3767 "gram.y"
 {      yyval.node = makeIndexable("~~", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 676:
-#line 3768 "gram.y"
+#line 3769 "gram.y"
 {      yyval.node = makeA_Expr(OP, "!~~", yyvsp[-3].node, yyvsp[0].node); ;
     break;}
 case 677:
-#line 3770 "gram.y"
+#line 3771 "gram.y"
 {      yyval.node = makeA_Expr(OP, yyvsp[-1].str, NULL, yyvsp[0].node); ;
     break;}
 case 678:
-#line 3772 "gram.y"
+#line 3773 "gram.y"
 {      yyval.node = makeA_Expr(OP, yyvsp[0].str, yyvsp[-1].node, NULL); ;
     break;}
 case 679:
-#line 3774 "gram.y"
+#line 3775 "gram.y"
 {
                                        /* cheap hack for aggregate (eg. count) */
                                        FuncCall *n = makeNode(FuncCall);
@@ -9224,7 +9224,7 @@ case 679:
                                ;
     break;}
 case 680:
-#line 3786 "gram.y"
+#line 3787 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = yyvsp[-2].str;
@@ -9233,7 +9233,7 @@ case 680:
                                ;
     break;}
 case 681:
-#line 3793 "gram.y"
+#line 3794 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = yyvsp[-3].str;
@@ -9242,7 +9242,7 @@ case 681:
                                ;
     break;}
 case 682:
-#line 3800 "gram.y"
+#line 3801 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        TypeName *t = makeNode(TypeName);
@@ -9259,7 +9259,7 @@ case 682:
                                ;
     break;}
 case 683:
-#line 3815 "gram.y"
+#line 3816 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        TypeName *t = makeNode(TypeName);
@@ -9276,7 +9276,7 @@ case 683:
                                ;
     break;}
 case 684:
-#line 3830 "gram.y"
+#line 3831 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        A_Const *s = makeNode(A_Const);
@@ -9300,7 +9300,7 @@ case 684:
                                ;
     break;}
 case 685:
-#line 3852 "gram.y"
+#line 3853 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        TypeName *t = makeNode(TypeName);
@@ -9317,7 +9317,7 @@ case 685:
                                ;
     break;}
 case 686:
-#line 3867 "gram.y"
+#line 3868 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        A_Const *s = makeNode(A_Const);
@@ -9341,7 +9341,7 @@ case 686:
                                ;
     break;}
 case 687:
-#line 3889 "gram.y"
+#line 3890 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "getpgusername";
@@ -9350,7 +9350,7 @@ case 687:
                                ;
     break;}
 case 688:
-#line 3896 "gram.y"
+#line 3897 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "getpgusername";
@@ -9359,7 +9359,7 @@ case 688:
                                ;
     break;}
 case 689:
-#line 3903 "gram.y"
+#line 3904 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = NIL;
@@ -9371,7 +9371,7 @@ case 689:
                                ;
     break;}
 case 690:
-#line 3913 "gram.y"
+#line 3914 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "date_part";
@@ -9380,7 +9380,7 @@ case 690:
                                ;
     break;}
 case 691:
-#line 3920 "gram.y"
+#line 3921 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "strpos";
@@ -9389,7 +9389,7 @@ case 691:
                                ;
     break;}
 case 692:
-#line 3927 "gram.y"
+#line 3928 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "substr";
@@ -9398,7 +9398,7 @@ case 692:
                                ;
     break;}
 case 693:
-#line 3935 "gram.y"
+#line 3936 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "btrim";
@@ -9407,7 +9407,7 @@ case 693:
                                ;
     break;}
 case 694:
-#line 3942 "gram.y"
+#line 3943 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "ltrim";
@@ -9416,7 +9416,7 @@ case 694:
                                ;
     break;}
 case 695:
-#line 3949 "gram.y"
+#line 3950 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "rtrim";
@@ -9425,7 +9425,7 @@ case 695:
                                ;
     break;}
 case 696:
-#line 3956 "gram.y"
+#line 3957 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "btrim";
@@ -9434,23 +9434,23 @@ case 696:
                                ;
     break;}
 case 697:
-#line 3963 "gram.y"
+#line 3964 "gram.y"
 {      yyval.node = makeA_Expr(ISNULL, NULL, yyvsp[-1].node, NULL); ;
     break;}
 case 698:
-#line 3965 "gram.y"
+#line 3966 "gram.y"
 {      yyval.node = makeA_Expr(ISNULL, NULL, yyvsp[-2].node, NULL); ;
     break;}
 case 699:
-#line 3967 "gram.y"
+#line 3968 "gram.y"
 {      yyval.node = makeA_Expr(NOTNULL, NULL, yyvsp[-1].node, NULL); ;
     break;}
 case 700:
-#line 3969 "gram.y"
+#line 3970 "gram.y"
 {      yyval.node = makeA_Expr(NOTNULL, NULL, yyvsp[-3].node, NULL); ;
     break;}
 case 701:
-#line 3976 "gram.y"
+#line 3977 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        n->val.type = T_String;
@@ -9462,7 +9462,7 @@ case 701:
                                ;
     break;}
 case 702:
-#line 3986 "gram.y"
+#line 3987 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        n->val.type = T_String;
@@ -9474,7 +9474,7 @@ case 702:
                                ;
     break;}
 case 703:
-#line 3996 "gram.y"
+#line 3997 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        n->val.type = T_String;
@@ -9486,7 +9486,7 @@ case 703:
                                ;
     break;}
 case 704:
-#line 4006 "gram.y"
+#line 4007 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        n->val.type = T_String;
@@ -9498,7 +9498,7 @@ case 704:
                                ;
     break;}
 case 705:
-#line 4016 "gram.y"
+#line 4017 "gram.y"
 {
                                        yyval.node = makeA_Expr(AND, NULL,
                                                makeA_Expr(OP, ">=", yyvsp[-4].node, yyvsp[-2].node),
@@ -9506,7 +9506,7 @@ case 705:
                                ;
     break;}
 case 706:
-#line 4022 "gram.y"
+#line 4023 "gram.y"
 {
                                        yyval.node = makeA_Expr(OR, NULL,
                                                makeA_Expr(OP, "<", yyvsp[-5].node, yyvsp[-2].node),
@@ -9514,11 +9514,11 @@ case 706:
                                ;
     break;}
 case 707:
-#line 4027 "gram.y"
+#line 4028 "gram.y"
 { saved_In_Expr = lcons(yyvsp[-1].node,saved_In_Expr); ;
     break;}
 case 708:
-#line 4028 "gram.y"
+#line 4029 "gram.y"
 {
                                        saved_In_Expr = lnext(saved_In_Expr);
                                        if (nodeTag(yyvsp[-1].node) == T_SubLink)
@@ -9534,11 +9534,11 @@ case 708:
                                ;
     break;}
 case 709:
-#line 4041 "gram.y"
+#line 4042 "gram.y"
 { saved_In_Expr = lcons(yyvsp[-2].node,saved_In_Expr); ;
     break;}
 case 710:
-#line 4042 "gram.y"
+#line 4043 "gram.y"
 {
                                        saved_In_Expr = lnext(saved_In_Expr);
                                        if (nodeTag(yyvsp[-1].node) == T_SubLink)
@@ -9554,7 +9554,7 @@ case 710:
                                ;
     break;}
 case 711:
-#line 4056 "gram.y"
+#line 4057 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-4].node, NULL);
@@ -9566,7 +9566,7 @@ case 711:
                                ;
     break;}
 case 712:
-#line 4066 "gram.y"
+#line 4067 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-4].node, NULL);
@@ -9578,7 +9578,7 @@ case 712:
                                ;
     break;}
 case 713:
-#line 4076 "gram.y"
+#line 4077 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-4].node, NULL);
@@ -9590,7 +9590,7 @@ case 713:
                                ;
     break;}
 case 714:
-#line 4086 "gram.y"
+#line 4087 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-4].node, NULL);
@@ -9602,7 +9602,7 @@ case 714:
                                ;
     break;}
 case 715:
-#line 4096 "gram.y"
+#line 4097 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-4].node, NULL);
@@ -9614,7 +9614,7 @@ case 715:
                                ;
     break;}
 case 716:
-#line 4106 "gram.y"
+#line 4107 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-4].node, NULL);
@@ -9626,7 +9626,7 @@ case 716:
                                ;
     break;}
 case 717:
-#line 4116 "gram.y"
+#line 4117 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-4].node, NULL);
@@ -9638,7 +9638,7 @@ case 717:
                                ;
     break;}
 case 718:
-#line 4126 "gram.y"
+#line 4127 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-4].node, NULL);
@@ -9650,7 +9650,7 @@ case 718:
                                ;
     break;}
 case 719:
-#line 4136 "gram.y"
+#line 4137 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-4].node, NULL);
@@ -9662,7 +9662,7 @@ case 719:
                                ;
     break;}
 case 720:
-#line 4146 "gram.y"
+#line 4147 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node,NIL);
@@ -9674,7 +9674,7 @@ case 720:
                                ;
     break;}
 case 721:
-#line 4156 "gram.y"
+#line 4157 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node,NIL);
@@ -9686,7 +9686,7 @@ case 721:
                                ;
     break;}
 case 722:
-#line 4166 "gram.y"
+#line 4167 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node,NIL);
@@ -9698,7 +9698,7 @@ case 722:
                                ;
     break;}
 case 723:
-#line 4176 "gram.y"
+#line 4177 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node,NIL);
@@ -9710,7 +9710,7 @@ case 723:
                                ;
     break;}
 case 724:
-#line 4186 "gram.y"
+#line 4187 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node,NIL);
@@ -9722,7 +9722,7 @@ case 724:
                                ;
     break;}
 case 725:
-#line 4196 "gram.y"
+#line 4197 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node,NIL);
@@ -9734,7 +9734,7 @@ case 725:
                                ;
     break;}
 case 726:
-#line 4206 "gram.y"
+#line 4207 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node,NIL);
@@ -9746,7 +9746,7 @@ case 726:
                                ;
     break;}
 case 727:
-#line 4216 "gram.y"
+#line 4217 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node,NIL);
@@ -9758,7 +9758,7 @@ case 727:
                                ;
     break;}
 case 728:
-#line 4226 "gram.y"
+#line 4227 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node,NIL);
@@ -9770,7 +9770,7 @@ case 728:
                                ;
     break;}
 case 729:
-#line 4236 "gram.y"
+#line 4237 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node, NULL);
@@ -9782,7 +9782,7 @@ case 729:
                                ;
     break;}
 case 730:
-#line 4246 "gram.y"
+#line 4247 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node, NULL);
@@ -9794,7 +9794,7 @@ case 730:
                                ;
     break;}
 case 731:
-#line 4256 "gram.y"
+#line 4257 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node, NULL);
@@ -9806,7 +9806,7 @@ case 731:
                                ;
     break;}
 case 732:
-#line 4266 "gram.y"
+#line 4267 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node, NULL);
@@ -9818,7 +9818,7 @@ case 732:
                                ;
     break;}
 case 733:
-#line 4276 "gram.y"
+#line 4277 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node, NULL);
@@ -9830,7 +9830,7 @@ case 733:
                                ;
     break;}
 case 734:
-#line 4286 "gram.y"
+#line 4287 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node, NULL);
@@ -9842,7 +9842,7 @@ case 734:
                                ;
     break;}
 case 735:
-#line 4296 "gram.y"
+#line 4297 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node, NULL);
@@ -9854,7 +9854,7 @@ case 735:
                                ;
     break;}
 case 736:
-#line 4306 "gram.y"
+#line 4307 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node, NULL);
@@ -9866,7 +9866,7 @@ case 736:
                                ;
     break;}
 case 737:
-#line 4316 "gram.y"
+#line 4317 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->lefthand = lcons(yyvsp[-5].node, NULL);
@@ -9878,34 +9878,34 @@ case 737:
                                ;
     break;}
 case 738:
-#line 4326 "gram.y"
+#line 4327 "gram.y"
 {      yyval.node = makeA_Expr(AND, NULL, yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 739:
-#line 4328 "gram.y"
+#line 4329 "gram.y"
 {      yyval.node = makeA_Expr(OR, NULL, yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 740:
-#line 4330 "gram.y"
+#line 4331 "gram.y"
 {      yyval.node = makeA_Expr(NOT, NULL, NULL, yyvsp[0].node); ;
     break;}
 case 741:
-#line 4332 "gram.y"
+#line 4333 "gram.y"
 {      yyval.node = yyvsp[0].node; ;
     break;}
 case 742:
-#line 4341 "gram.y"
+#line 4342 "gram.y"
 {
                                        yyvsp[-1].attr->indirection = yyvsp[0].list;
                                        yyval.node = (Node *)yyvsp[-1].attr;
                                ;
     break;}
 case 743:
-#line 4346 "gram.y"
+#line 4347 "gram.y"
 {      yyval.node = yyvsp[0].node;  ;
     break;}
 case 744:
-#line 4348 "gram.y"
+#line 4349 "gram.y"
 {
                                        /* could be a column name or a relation_name */
                                        Ident *n = makeNode(Ident);
@@ -9915,43 +9915,43 @@ case 744:
                                ;
     break;}
 case 745:
-#line 4356 "gram.y"
+#line 4357 "gram.y"
 {      yyval.node = doNegate(yyvsp[0].node); ;
     break;}
 case 746:
-#line 4358 "gram.y"
+#line 4359 "gram.y"
 {      yyval.node = makeA_Expr(OP, "+", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 747:
-#line 4360 "gram.y"
+#line 4361 "gram.y"
 {      yyval.node = makeA_Expr(OP, "-", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 748:
-#line 4362 "gram.y"
+#line 4363 "gram.y"
 {      yyval.node = makeA_Expr(OP, "/", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 749:
-#line 4364 "gram.y"
+#line 4365 "gram.y"
 {      yyval.node = makeA_Expr(OP, "%", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 750:
-#line 4366 "gram.y"
+#line 4367 "gram.y"
 {      yyval.node = makeA_Expr(OP, "*", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 751:
-#line 4368 "gram.y"
+#line 4369 "gram.y"
 {      yyval.node = makeA_Expr(OP, ":", NULL, yyvsp[0].node); ;
     break;}
 case 752:
-#line 4370 "gram.y"
+#line 4371 "gram.y"
 {      yyval.node = makeA_Expr(OP, ";", NULL, yyvsp[0].node); ;
     break;}
 case 753:
-#line 4372 "gram.y"
+#line 4373 "gram.y"
 {      yyval.node = makeA_Expr(OP, "|", NULL, yyvsp[0].node); ;
     break;}
 case 754:
-#line 4374 "gram.y"
+#line 4375 "gram.y"
 {
                                        yyval.node = (Node *)yyvsp[-2].node;
                                        /* AexprConst can be either A_Const or ParamNo */
@@ -9969,7 +9969,7 @@ case 754:
                                ;
     break;}
 case 755:
-#line 4390 "gram.y"
+#line 4391 "gram.y"
 {
                                        yyval.node = (Node *)yyvsp[-3].node;
                                        /* AexprConst can be either A_Const or ParamNo */
@@ -9987,23 +9987,23 @@ case 755:
                                ;
     break;}
 case 756:
-#line 4406 "gram.y"
+#line 4407 "gram.y"
 {      yyval.node = yyvsp[-1].node; ;
     break;}
 case 757:
-#line 4408 "gram.y"
+#line 4409 "gram.y"
 {      yyval.node = makeIndexable(yyvsp[-1].str,yyvsp[-2].node,yyvsp[0].node); ;
     break;}
 case 758:
-#line 4410 "gram.y"
+#line 4411 "gram.y"
 {      yyval.node = makeA_Expr(OP, yyvsp[-1].str, NULL, yyvsp[0].node); ;
     break;}
 case 759:
-#line 4412 "gram.y"
+#line 4413 "gram.y"
 {      yyval.node = makeA_Expr(OP, yyvsp[0].str, yyvsp[-1].node, NULL); ;
     break;}
 case 760:
-#line 4414 "gram.y"
+#line 4415 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = yyvsp[-2].str;
@@ -10012,7 +10012,7 @@ case 760:
                                ;
     break;}
 case 761:
-#line 4421 "gram.y"
+#line 4422 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = yyvsp[-3].str;
@@ -10021,7 +10021,7 @@ case 761:
                                ;
     break;}
 case 762:
-#line 4428 "gram.y"
+#line 4429 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        TypeName *t = makeNode(TypeName);
@@ -10038,7 +10038,7 @@ case 762:
                                ;
     break;}
 case 763:
-#line 4443 "gram.y"
+#line 4444 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        TypeName *t = makeNode(TypeName);
@@ -10055,7 +10055,7 @@ case 763:
                                ;
     break;}
 case 764:
-#line 4458 "gram.y"
+#line 4459 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        A_Const *s = makeNode(A_Const);
@@ -10079,7 +10079,7 @@ case 764:
                                ;
     break;}
 case 765:
-#line 4480 "gram.y"
+#line 4481 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        TypeName *t = makeNode(TypeName);
@@ -10096,7 +10096,7 @@ case 765:
                                ;
     break;}
 case 766:
-#line 4495 "gram.y"
+#line 4496 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        A_Const *s = makeNode(A_Const);
@@ -10120,7 +10120,7 @@ case 766:
                                ;
     break;}
 case 767:
-#line 4517 "gram.y"
+#line 4518 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "getpgusername";
@@ -10129,7 +10129,7 @@ case 767:
                                ;
     break;}
 case 768:
-#line 4524 "gram.y"
+#line 4525 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "getpgusername";
@@ -10138,7 +10138,7 @@ case 768:
                                ;
     break;}
 case 769:
-#line 4531 "gram.y"
+#line 4532 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "strpos";
@@ -10147,7 +10147,7 @@ case 769:
                                ;
     break;}
 case 770:
-#line 4538 "gram.y"
+#line 4539 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "substr";
@@ -10156,7 +10156,7 @@ case 770:
                                ;
     break;}
 case 771:
-#line 4546 "gram.y"
+#line 4547 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "btrim";
@@ -10165,7 +10165,7 @@ case 771:
                                ;
     break;}
 case 772:
-#line 4553 "gram.y"
+#line 4554 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "ltrim";
@@ -10174,7 +10174,7 @@ case 772:
                                ;
     break;}
 case 773:
-#line 4560 "gram.y"
+#line 4561 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "rtrim";
@@ -10183,7 +10183,7 @@ case 773:
                                ;
     break;}
 case 774:
-#line 4567 "gram.y"
+#line 4568 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "btrim";
@@ -10192,7 +10192,7 @@ case 774:
                                ;
     break;}
 case 775:
-#line 4576 "gram.y"
+#line 4577 "gram.y"
 {
                                        A_Indices *ai = makeNode(A_Indices);
                                        ai->lidx = NULL;
@@ -10201,7 +10201,7 @@ case 775:
                                ;
     break;}
 case 776:
-#line 4583 "gram.y"
+#line 4584 "gram.y"
 {
                                        A_Indices *ai = makeNode(A_Indices);
                                        ai->lidx = yyvsp[-4].node;
@@ -10210,23 +10210,23 @@ case 776:
                                ;
     break;}
 case 777:
-#line 4590 "gram.y"
+#line 4591 "gram.y"
 {      yyval.list = NIL; ;
     break;}
 case 778:
-#line 4594 "gram.y"
+#line 4595 "gram.y"
 { yyval.list = lcons(yyvsp[0].node, NIL); ;
     break;}
 case 779:
-#line 4596 "gram.y"
+#line 4597 "gram.y"
 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node); ;
     break;}
 case 780:
-#line 4598 "gram.y"
+#line 4599 "gram.y"
 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node); ;
     break;}
 case 781:
-#line 4602 "gram.y"
+#line 4603 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        n->val.type = T_String;
@@ -10235,70 +10235,70 @@ case 781:
                                ;
     break;}
 case 782:
-#line 4609 "gram.y"
+#line 4610 "gram.y"
 {      yyval.list = NIL; ;
     break;}
 case 783:
-#line 4612 "gram.y"
+#line 4613 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 784:
-#line 4613 "gram.y"
+#line 4614 "gram.y"
 { yyval.str = "tz_hour"; ;
     break;}
 case 785:
-#line 4614 "gram.y"
+#line 4615 "gram.y"
 { yyval.str = "tz_minute"; ;
     break;}
 case 786:
-#line 4618 "gram.y"
+#line 4619 "gram.y"
 {      yyval.list = makeList(yyvsp[0].node, yyvsp[-2].node, -1); ;
     break;}
 case 787:
-#line 4620 "gram.y"
+#line 4621 "gram.y"
 {      yyval.list = NIL; ;
     break;}
 case 788:
-#line 4624 "gram.y"
+#line 4625 "gram.y"
 {
                                        yyvsp[-1].attr->indirection = yyvsp[0].list;
                                        yyval.node = (Node *)yyvsp[-1].attr;
                                ;
     break;}
 case 789:
-#line 4629 "gram.y"
+#line 4630 "gram.y"
 {      yyval.node = yyvsp[0].node;  ;
     break;}
 case 790:
-#line 4631 "gram.y"
+#line 4632 "gram.y"
 {      yyval.node = makeA_Expr(OP, "-", NULL, yyvsp[0].node); ;
     break;}
 case 791:
-#line 4633 "gram.y"
+#line 4634 "gram.y"
 {      yyval.node = makeA_Expr(OP, "+", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 792:
-#line 4635 "gram.y"
+#line 4636 "gram.y"
 {      yyval.node = makeA_Expr(OP, "-", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 793:
-#line 4637 "gram.y"
+#line 4638 "gram.y"
 {      yyval.node = makeA_Expr(OP, "/", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 794:
-#line 4639 "gram.y"
+#line 4640 "gram.y"
 {      yyval.node = makeA_Expr(OP, "%", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 795:
-#line 4641 "gram.y"
+#line 4642 "gram.y"
 {      yyval.node = makeA_Expr(OP, "*", yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 796:
-#line 4643 "gram.y"
+#line 4644 "gram.y"
 {      yyval.node = makeA_Expr(OP, "|", NULL, yyvsp[0].node); ;
     break;}
 case 797:
-#line 4645 "gram.y"
+#line 4646 "gram.y"
 {
                                        yyval.node = (Node *)yyvsp[-2].node;
                                        /* AexprConst can be either A_Const or ParamNo */
@@ -10316,7 +10316,7 @@ case 797:
                                ;
     break;}
 case 798:
-#line 4661 "gram.y"
+#line 4662 "gram.y"
 {
                                        yyval.node = (Node *)yyvsp[-3].node;
                                        /* AexprConst can be either A_Const or ParamNo */
@@ -10334,23 +10334,23 @@ case 798:
                                ;
     break;}
 case 799:
-#line 4677 "gram.y"
+#line 4678 "gram.y"
 {      yyval.node = yyvsp[-1].node; ;
     break;}
 case 800:
-#line 4679 "gram.y"
+#line 4680 "gram.y"
 {      yyval.node = makeA_Expr(OP, yyvsp[-1].str, yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 801:
-#line 4681 "gram.y"
+#line 4682 "gram.y"
 {      yyval.node = makeA_Expr(OP, yyvsp[-1].str, NULL, yyvsp[0].node); ;
     break;}
 case 802:
-#line 4683 "gram.y"
+#line 4684 "gram.y"
 {      yyval.node = makeA_Expr(OP, yyvsp[0].str, yyvsp[-1].node, NULL); ;
     break;}
 case 803:
-#line 4685 "gram.y"
+#line 4686 "gram.y"
 {
                                        /* could be a column name or a relation_name */
                                        Ident *n = makeNode(Ident);
@@ -10360,7 +10360,7 @@ case 803:
                                ;
     break;}
 case 804:
-#line 4693 "gram.y"
+#line 4694 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = yyvsp[-2].str;
@@ -10369,7 +10369,7 @@ case 804:
                                ;
     break;}
 case 805:
-#line 4700 "gram.y"
+#line 4701 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = yyvsp[-3].str;
@@ -10378,7 +10378,7 @@ case 805:
                                ;
     break;}
 case 806:
-#line 4707 "gram.y"
+#line 4708 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "strpos";
@@ -10387,7 +10387,7 @@ case 806:
                                ;
     break;}
 case 807:
-#line 4714 "gram.y"
+#line 4715 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "substr";
@@ -10396,7 +10396,7 @@ case 807:
                                ;
     break;}
 case 808:
-#line 4722 "gram.y"
+#line 4723 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "btrim";
@@ -10405,7 +10405,7 @@ case 808:
                                ;
     break;}
 case 809:
-#line 4729 "gram.y"
+#line 4730 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "ltrim";
@@ -10414,7 +10414,7 @@ case 809:
                                ;
     break;}
 case 810:
-#line 4736 "gram.y"
+#line 4737 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "rtrim";
@@ -10423,7 +10423,7 @@ case 810:
                                ;
     break;}
 case 811:
-#line 4743 "gram.y"
+#line 4744 "gram.y"
 {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = "btrim";
@@ -10432,21 +10432,21 @@ case 811:
                                ;
     break;}
 case 812:
-#line 4752 "gram.y"
+#line 4753 "gram.y"
 {
                                        yyval.list = nconc(nconc(yyvsp[-2].list,yyvsp[-1].list),yyvsp[0].list);
                                ;
     break;}
 case 813:
-#line 4756 "gram.y"
+#line 4757 "gram.y"
 {      yyval.list = NIL; ;
     break;}
 case 814:
-#line 4760 "gram.y"
+#line 4761 "gram.y"
 {      yyval.list = yyvsp[0].list; ;
     break;}
 case 815:
-#line 4762 "gram.y"
+#line 4763 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        n->val.type = T_Integer;
@@ -10455,27 +10455,27 @@ case 815:
                                ;
     break;}
 case 816:
-#line 4771 "gram.y"
+#line 4772 "gram.y"
 {      yyval.list = yyvsp[0].list; ;
     break;}
 case 817:
-#line 4773 "gram.y"
+#line 4774 "gram.y"
 {      yyval.list = NIL; ;
     break;}
 case 818:
-#line 4777 "gram.y"
+#line 4778 "gram.y"
 { yyval.list = lappend(yyvsp[0].list, yyvsp[-2].node); ;
     break;}
 case 819:
-#line 4779 "gram.y"
+#line 4780 "gram.y"
 { yyval.list = yyvsp[0].list; ;
     break;}
 case 820:
-#line 4781 "gram.y"
+#line 4782 "gram.y"
 { yyval.list = yyvsp[0].list; ;
     break;}
 case 821:
-#line 4785 "gram.y"
+#line 4786 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->subselect = yyvsp[0].node;
@@ -10483,21 +10483,21 @@ case 821:
                                ;
     break;}
 case 822:
-#line 4791 "gram.y"
+#line 4792 "gram.y"
 {      yyval.node = yyvsp[0].node; ;
     break;}
 case 823:
-#line 4795 "gram.y"
+#line 4796 "gram.y"
 {      yyval.node = makeA_Expr(OP, "=", lfirst(saved_In_Expr), yyvsp[0].node); ;
     break;}
 case 824:
-#line 4797 "gram.y"
+#line 4798 "gram.y"
 {      yyval.node = makeA_Expr(OR, NULL, yyvsp[-2].node,
                                                makeA_Expr(OP, "=", lfirst(saved_In_Expr), yyvsp[0].node));
                                ;
     break;}
 case 825:
-#line 4803 "gram.y"
+#line 4804 "gram.y"
 {
                                        SubLink *n = makeNode(SubLink);
                                        n->subselect = yyvsp[0].node;
@@ -10505,21 +10505,21 @@ case 825:
                                ;
     break;}
 case 826:
-#line 4809 "gram.y"
+#line 4810 "gram.y"
 {      yyval.node = yyvsp[0].node; ;
     break;}
 case 827:
-#line 4813 "gram.y"
+#line 4814 "gram.y"
 {      yyval.node = makeA_Expr(OP, "<>", lfirst(saved_In_Expr), yyvsp[0].node); ;
     break;}
 case 828:
-#line 4815 "gram.y"
+#line 4816 "gram.y"
 {      yyval.node = makeA_Expr(AND, NULL, yyvsp[-2].node,
                                                makeA_Expr(OP, "<>", lfirst(saved_In_Expr), yyvsp[0].node));
                                ;
     break;}
 case 829:
-#line 4836 "gram.y"
+#line 4837 "gram.y"
 {
                                        CaseExpr *c = makeNode(CaseExpr);
                                        c->arg = yyvsp[-3].node;
@@ -10529,7 +10529,7 @@ case 829:
                                ;
     break;}
 case 830:
-#line 4844 "gram.y"
+#line 4845 "gram.y"
 {
                                        CaseExpr *c = makeNode(CaseExpr);
                                        CaseWhen *w = makeNode(CaseWhen);
@@ -10545,7 +10545,7 @@ case 830:
                                ;
     break;}
 case 831:
-#line 4858 "gram.y"
+#line 4859 "gram.y"
 {
                                        CaseExpr *c = makeNode(CaseExpr);
                                        CaseWhen *w;
@@ -10561,15 +10561,15 @@ case 831:
                                ;
     break;}
 case 832:
-#line 4874 "gram.y"
+#line 4875 "gram.y"
 { yyval.list = lappend(yyvsp[-1].list, yyvsp[0].node); ;
     break;}
 case 833:
-#line 4876 "gram.y"
+#line 4877 "gram.y"
 { yyval.list = lcons(yyvsp[0].node, NIL); ;
     break;}
 case 834:
-#line 4880 "gram.y"
+#line 4881 "gram.y"
 {
                                        CaseWhen *w = makeNode(CaseWhen);
                                        w->expr = yyvsp[-2].node;
@@ -10578,22 +10578,22 @@ case 834:
                                ;
     break;}
 case 835:
-#line 4888 "gram.y"
+#line 4889 "gram.y"
 { yyval.node = yyvsp[0].node; ;
     break;}
 case 836:
-#line 4889 "gram.y"
+#line 4890 "gram.y"
 { yyval.node = NULL; ;
     break;}
 case 837:
-#line 4893 "gram.y"
+#line 4894 "gram.y"
 {
                                        yyvsp[-1].attr->indirection = yyvsp[0].list;
                                        yyval.node = (Node *)yyvsp[-1].attr;
                                ;
     break;}
 case 838:
-#line 4898 "gram.y"
+#line 4899 "gram.y"
 {
                                        /* could be a column name or a relation_name */
                                        Ident *n = makeNode(Ident);
@@ -10603,11 +10603,11 @@ case 838:
                                ;
     break;}
 case 839:
-#line 4906 "gram.y"
+#line 4907 "gram.y"
 {      yyval.node = NULL; ;
     break;}
 case 840:
-#line 4910 "gram.y"
+#line 4911 "gram.y"
 {
                                        yyval.attr = makeNode(Attr);
                                        yyval.attr->relname = yyvsp[-2].str;
@@ -10617,7 +10617,7 @@ case 840:
                                ;
     break;}
 case 841:
-#line 4918 "gram.y"
+#line 4919 "gram.y"
 {
                                        yyval.attr = makeNode(Attr);
                                        yyval.attr->relname = NULL;
@@ -10627,27 +10627,27 @@ case 841:
                                ;
     break;}
 case 842:
-#line 4928 "gram.y"
+#line 4929 "gram.y"
 { yyval.list = lcons(makeString(yyvsp[0].str), NIL); ;
     break;}
 case 843:
-#line 4930 "gram.y"
+#line 4931 "gram.y"
 { yyval.list = lappend(yyvsp[-2].list, makeString(yyvsp[0].str)); ;
     break;}
 case 844:
-#line 4932 "gram.y"
+#line 4933 "gram.y"
 { yyval.list = lappend(yyvsp[-2].list, makeString("*")); ;
     break;}
 case 845:
-#line 4943 "gram.y"
+#line 4944 "gram.y"
 {      yyval.list = lappend(yyvsp[-2].list,yyvsp[0].target);  ;
     break;}
 case 846:
-#line 4945 "gram.y"
+#line 4946 "gram.y"
 {      yyval.list = lcons(yyvsp[0].target, NIL);  ;
     break;}
 case 847:
-#line 4947 "gram.y"
+#line 4948 "gram.y"
 {
                                        ResTarget *rt = makeNode(ResTarget);
                                        Attr *att = makeNode(Attr);
@@ -10662,7 +10662,7 @@ case 847:
                                ;
     break;}
 case 848:
-#line 4962 "gram.y"
+#line 4963 "gram.y"
 {
                                        yyval.target = makeNode(ResTarget);
                                        yyval.target->name = yyvsp[-3].str;
@@ -10671,7 +10671,7 @@ case 848:
                                ;
     break;}
 case 849:
-#line 4969 "gram.y"
+#line 4970 "gram.y"
 {
                                        yyval.target = makeNode(ResTarget);
                                        yyval.target->name = NULL;
@@ -10680,7 +10680,7 @@ case 849:
                                ;
     break;}
 case 850:
-#line 4976 "gram.y"
+#line 4977 "gram.y"
 {
                                        Attr *att = makeNode(Attr);
                                        att->relname = yyvsp[-2].str;
@@ -10694,15 +10694,15 @@ case 850:
                                ;
     break;}
 case 851:
-#line 4995 "gram.y"
+#line 4996 "gram.y"
 {      yyval.list = lappend(yyvsp[-2].list, yyvsp[0].target);  ;
     break;}
 case 852:
-#line 4997 "gram.y"
+#line 4998 "gram.y"
 {      yyval.list = lcons(yyvsp[0].target, NIL);  ;
     break;}
 case 853:
-#line 5002 "gram.y"
+#line 5003 "gram.y"
 {
                                        yyval.target = makeNode(ResTarget);
                                        yyval.target->name = yyvsp[0].str;
@@ -10711,7 +10711,7 @@ case 853:
                                ;
     break;}
 case 854:
-#line 5009 "gram.y"
+#line 5010 "gram.y"
 {
                                        yyval.target = makeNode(ResTarget);
                                        yyval.target->name = NULL;
@@ -10720,7 +10720,7 @@ case 854:
                                ;
     break;}
 case 855:
-#line 5016 "gram.y"
+#line 5017 "gram.y"
 {
                                        Attr *att = makeNode(Attr);
                                        att->relname = yyvsp[-2].str;
@@ -10734,7 +10734,7 @@ case 855:
                                ;
     break;}
 case 856:
-#line 5028 "gram.y"
+#line 5029 "gram.y"
 {
                                        Attr *att = makeNode(Attr);
                                        att->relname = "*";
@@ -10748,22 +10748,22 @@ case 856:
                                ;
     break;}
 case 857:
-#line 5041 "gram.y"
+#line 5042 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 858:
-#line 5042 "gram.y"
+#line 5043 "gram.y"
 { yyval.str = NULL; ;
     break;}
 case 859:
-#line 5046 "gram.y"
+#line 5047 "gram.y"
 {
                                        yyval.str = yyvsp[0].str;
                                        StrNCpy(saved_relname, yyvsp[0].str, NAMEDATALEN);
                                ;
     break;}
 case 860:
-#line 5051 "gram.y"
+#line 5052 "gram.y"
 {
                                        /* disallow refs to variable system tables */
                                        if (strcmp(LogRelationName, yyvsp[0].str) == 0
@@ -10775,39 +10775,39 @@ case 860:
                                ;
     break;}
 case 861:
-#line 5062 "gram.y"
+#line 5063 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 862:
-#line 5063 "gram.y"
+#line 5064 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 863:
-#line 5064 "gram.y"
+#line 5065 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 864:
-#line 5065 "gram.y"
+#line 5066 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 865:
-#line 5066 "gram.y"
+#line 5067 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 866:
-#line 5072 "gram.y"
+#line 5073 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 867:
-#line 5073 "gram.y"
+#line 5074 "gram.y"
 { yyval.str = xlateSqlFunc(yyvsp[0].str); ;
     break;}
 case 868:
-#line 5075 "gram.y"
+#line 5076 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 869:
-#line 5082 "gram.y"
+#line 5083 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        n->val.type = T_Integer;
@@ -10816,7 +10816,7 @@ case 869:
                                ;
     break;}
 case 870:
-#line 5089 "gram.y"
+#line 5090 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        n->val.type = T_Float;
@@ -10825,7 +10825,7 @@ case 870:
                                ;
     break;}
 case 871:
-#line 5096 "gram.y"
+#line 5097 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        n->val.type = T_String;
@@ -10834,7 +10834,7 @@ case 871:
                                ;
     break;}
 case 872:
-#line 5103 "gram.y"
+#line 5104 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        n->typename = yyvsp[-1].typnam;
@@ -10844,11 +10844,11 @@ case 872:
                                ;
     break;}
 case 873:
-#line 5111 "gram.y"
+#line 5112 "gram.y"
 {      yyval.node = (Node *)yyvsp[0].paramno;  ;
     break;}
 case 874:
-#line 5113 "gram.y"
+#line 5114 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        n->val.type = T_String;
@@ -10860,7 +10860,7 @@ case 874:
                                ;
     break;}
 case 875:
-#line 5123 "gram.y"
+#line 5124 "gram.y"
 {
                                        A_Const *n = makeNode(A_Const);
                                        n->val.type = T_String;
@@ -10872,7 +10872,7 @@ case 875:
                                ;
     break;}
 case 876:
-#line 5135 "gram.y"
+#line 5136 "gram.y"
 {
                                        yyval.paramno = makeNode(ParamNo);
                                        yyval.paramno->number = yyvsp[-1].ival;
@@ -10880,463 +10880,463 @@ case 876:
                                ;
     break;}
 case 877:
-#line 5142 "gram.y"
+#line 5143 "gram.y"
 { yyval.ival = yyvsp[0].ival; ;
     break;}
 case 878:
-#line 5143 "gram.y"
+#line 5144 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 879:
-#line 5144 "gram.y"
+#line 5145 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 880:
-#line 5152 "gram.y"
+#line 5153 "gram.y"
 {      yyval.str = xlateSqlType(yyvsp[0].str); ;
     break;}
 case 881:
-#line 5154 "gram.y"
+#line 5155 "gram.y"
 {      yyval.str = xlateSqlType(yyvsp[0].str); ;
     break;}
 case 882:
-#line 5156 "gram.y"
+#line 5157 "gram.y"
 {      yyval.str = xlateSqlType(yyvsp[0].str); ;
     break;}
 case 883:
-#line 5166 "gram.y"
+#line 5167 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 884:
-#line 5167 "gram.y"
+#line 5168 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 885:
-#line 5168 "gram.y"
+#line 5169 "gram.y"
 { yyval.str = "absolute"; ;
     break;}
 case 886:
-#line 5169 "gram.y"
+#line 5170 "gram.y"
 { yyval.str = "action"; ;
     break;}
 case 887:
-#line 5170 "gram.y"
+#line 5171 "gram.y"
 { yyval.str = "after"; ;
     break;}
 case 888:
-#line 5171 "gram.y"
+#line 5172 "gram.y"
 { yyval.str = "aggregate"; ;
     break;}
 case 889:
-#line 5172 "gram.y"
+#line 5173 "gram.y"
 { yyval.str = "backward"; ;
     break;}
 case 890:
-#line 5173 "gram.y"
+#line 5174 "gram.y"
 { yyval.str = "before"; ;
     break;}
 case 891:
-#line 5174 "gram.y"
+#line 5175 "gram.y"
 { yyval.str = "cache"; ;
     break;}
 case 892:
-#line 5175 "gram.y"
+#line 5176 "gram.y"
 { yyval.str = "createdb"; ;
     break;}
 case 893:
-#line 5176 "gram.y"
+#line 5177 "gram.y"
 { yyval.str = "createuser"; ;
     break;}
 case 894:
-#line 5177 "gram.y"
+#line 5178 "gram.y"
 { yyval.str = "cycle"; ;
     break;}
 case 895:
-#line 5178 "gram.y"
+#line 5179 "gram.y"
 { yyval.str = "database"; ;
     break;}
 case 896:
-#line 5179 "gram.y"
+#line 5180 "gram.y"
 { yyval.str = "delimiters"; ;
     break;}
 case 897:
-#line 5180 "gram.y"
+#line 5181 "gram.y"
 { yyval.str = "double"; ;
     break;}
 case 898:
-#line 5181 "gram.y"
+#line 5182 "gram.y"
 { yyval.str = "each"; ;
     break;}
 case 899:
-#line 5182 "gram.y"
+#line 5183 "gram.y"
 { yyval.str = "encoding"; ;
     break;}
 case 900:
-#line 5183 "gram.y"
+#line 5184 "gram.y"
 { yyval.str = "forward"; ;
     break;}
 case 901:
-#line 5184 "gram.y"
+#line 5185 "gram.y"
 { yyval.str = "function"; ;
     break;}
 case 902:
-#line 5185 "gram.y"
+#line 5186 "gram.y"
 { yyval.str = "handler"; ;
     break;}
 case 903:
-#line 5186 "gram.y"
+#line 5187 "gram.y"
 { yyval.str = "increment"; ;
     break;}
 case 904:
-#line 5187 "gram.y"
+#line 5188 "gram.y"
 { yyval.str = "index"; ;
     break;}
 case 905:
-#line 5188 "gram.y"
+#line 5189 "gram.y"
 { yyval.str = "inherits"; ;
     break;}
 case 906:
-#line 5189 "gram.y"
+#line 5190 "gram.y"
 { yyval.str = "insensitive"; ;
     break;}
 case 907:
-#line 5190 "gram.y"
+#line 5191 "gram.y"
 { yyval.str = "instead"; ;
     break;}
 case 908:
-#line 5191 "gram.y"
+#line 5192 "gram.y"
 { yyval.str = "isnull"; ;
     break;}
 case 909:
-#line 5192 "gram.y"
+#line 5193 "gram.y"
 { yyval.str = "key"; ;
     break;}
 case 910:
-#line 5193 "gram.y"
+#line 5194 "gram.y"
 { yyval.str = "language"; ;
     break;}
 case 911:
-#line 5194 "gram.y"
+#line 5195 "gram.y"
 { yyval.str = "lancompiler"; ;
     break;}
 case 912:
-#line 5195 "gram.y"
+#line 5196 "gram.y"
 { yyval.str = "location"; ;
     break;}
 case 913:
-#line 5196 "gram.y"
+#line 5197 "gram.y"
 { yyval.str = "match"; ;
     break;}
 case 914:
-#line 5197 "gram.y"
+#line 5198 "gram.y"
 { yyval.str = "maxvalue"; ;
     break;}
 case 915:
-#line 5198 "gram.y"
+#line 5199 "gram.y"
 { yyval.str = "minvalue"; ;
     break;}
 case 916:
-#line 5199 "gram.y"
+#line 5200 "gram.y"
 { yyval.str = "next"; ;
     break;}
 case 917:
-#line 5200 "gram.y"
+#line 5201 "gram.y"
 { yyval.str = "nocreatedb"; ;
     break;}
 case 918:
-#line 5201 "gram.y"
+#line 5202 "gram.y"
 { yyval.str = "nocreateuser"; ;
     break;}
 case 919:
-#line 5202 "gram.y"
+#line 5203 "gram.y"
 { yyval.str = "nothing"; ;
     break;}
 case 920:
-#line 5203 "gram.y"
+#line 5204 "gram.y"
 { yyval.str = "notnull"; ;
     break;}
 case 921:
-#line 5204 "gram.y"
+#line 5205 "gram.y"
 { yyval.str = "of"; ;
     break;}
 case 922:
-#line 5205 "gram.y"
+#line 5206 "gram.y"
 { yyval.str = "oids"; ;
     break;}
 case 923:
-#line 5206 "gram.y"
+#line 5207 "gram.y"
 { yyval.str = "only"; ;
     break;}
 case 924:
-#line 5207 "gram.y"
+#line 5208 "gram.y"
 { yyval.str = "operator"; ;
     break;}
 case 925:
-#line 5208 "gram.y"
+#line 5209 "gram.y"
 { yyval.str = "option"; ;
     break;}
 case 926:
-#line 5209 "gram.y"
+#line 5210 "gram.y"
 { yyval.str = "password"; ;
     break;}
 case 927:
-#line 5210 "gram.y"
+#line 5211 "gram.y"
 { yyval.str = "prior"; ;
     break;}
 case 928:
-#line 5211 "gram.y"
+#line 5212 "gram.y"
 { yyval.str = "privileges"; ;
     break;}
 case 929:
-#line 5212 "gram.y"
+#line 5213 "gram.y"
 { yyval.str = "procedural"; ;
     break;}
 case 930:
-#line 5213 "gram.y"
+#line 5214 "gram.y"
 { yyval.str = "read"; ;
     break;}
 case 931:
-#line 5214 "gram.y"
+#line 5215 "gram.y"
 { yyval.str = "relative"; ;
     break;}
 case 932:
-#line 5215 "gram.y"
+#line 5216 "gram.y"
 { yyval.str = "rename"; ;
     break;}
 case 933:
-#line 5216 "gram.y"
+#line 5217 "gram.y"
 { yyval.str = "returns"; ;
     break;}
 case 934:
-#line 5217 "gram.y"
+#line 5218 "gram.y"
 { yyval.str = "row"; ;
     break;}
 case 935:
-#line 5218 "gram.y"
+#line 5219 "gram.y"
 { yyval.str = "rule"; ;
     break;}
 case 936:
-#line 5219 "gram.y"
+#line 5220 "gram.y"
 { yyval.str = "scroll"; ;
     break;}
 case 937:
-#line 5220 "gram.y"
+#line 5221 "gram.y"
 { yyval.str = "sequence"; ;
     break;}
 case 938:
-#line 5221 "gram.y"
+#line 5222 "gram.y"
 { yyval.str = "serial"; ;
     break;}
 case 939:
-#line 5222 "gram.y"
+#line 5223 "gram.y"
 { yyval.str = "start"; ;
     break;}
 case 940:
-#line 5223 "gram.y"
+#line 5224 "gram.y"
 { yyval.str = "statement"; ;
     break;}
 case 941:
-#line 5224 "gram.y"
+#line 5225 "gram.y"
 { yyval.str = "stdin"; ;
     break;}
 case 942:
-#line 5225 "gram.y"
+#line 5226 "gram.y"
 { yyval.str = "stdout"; ;
     break;}
 case 943:
-#line 5226 "gram.y"
+#line 5227 "gram.y"
 { yyval.str = "time"; ;
     break;}
 case 944:
-#line 5227 "gram.y"
+#line 5228 "gram.y"
 { yyval.str = "timestamp"; ;
     break;}
 case 945:
-#line 5228 "gram.y"
+#line 5229 "gram.y"
 { yyval.str = "timezone_hour"; ;
     break;}
 case 946:
-#line 5229 "gram.y"
+#line 5230 "gram.y"
 { yyval.str = "timezone_minute"; ;
     break;}
 case 947:
-#line 5230 "gram.y"
+#line 5231 "gram.y"
 { yyval.str = "trigger"; ;
     break;}
 case 948:
-#line 5231 "gram.y"
+#line 5232 "gram.y"
 { yyval.str = "trusted"; ;
     break;}
 case 949:
-#line 5232 "gram.y"
+#line 5233 "gram.y"
 { yyval.str = "type"; ;
     break;}
 case 950:
-#line 5233 "gram.y"
+#line 5234 "gram.y"
 { yyval.str = "valid"; ;
     break;}
 case 951:
-#line 5234 "gram.y"
+#line 5235 "gram.y"
 { yyval.str = "version"; ;
     break;}
 case 952:
-#line 5235 "gram.y"
+#line 5236 "gram.y"
 { yyval.str = "zone"; ;
     break;}
 case 953:
-#line 5248 "gram.y"
+#line 5249 "gram.y"
 { yyval.str = yyvsp[0].str; ;
     break;}
 case 954:
-#line 5249 "gram.y"
+#line 5250 "gram.y"
 { yyval.str = "abort"; ;
     break;}
 case 955:
-#line 5250 "gram.y"
+#line 5251 "gram.y"
 { yyval.str = "analyze"; ;
     break;}
 case 956:
-#line 5251 "gram.y"
+#line 5252 "gram.y"
 { yyval.str = "binary"; ;
     break;}
 case 957:
-#line 5252 "gram.y"
+#line 5253 "gram.y"
 { yyval.str = "case"; ;
     break;}
 case 958:
-#line 5253 "gram.y"
+#line 5254 "gram.y"
 { yyval.str = "cluster"; ;
     break;}
 case 959:
-#line 5254 "gram.y"
+#line 5255 "gram.y"
 { yyval.str = "coalesce"; ;
     break;}
 case 960:
-#line 5255 "gram.y"
+#line 5256 "gram.y"
 { yyval.str = "constraint"; ;
     break;}
 case 961:
-#line 5256 "gram.y"
+#line 5257 "gram.y"
 { yyval.str = "copy"; ;
     break;}
 case 962:
-#line 5257 "gram.y"
+#line 5258 "gram.y"
 { yyval.str = "current"; ;
     break;}
 case 963:
-#line 5258 "gram.y"
+#line 5259 "gram.y"
 { yyval.str = "do"; ;
     break;}
 case 964:
-#line 5259 "gram.y"
+#line 5260 "gram.y"
 { yyval.str = "else"; ;
     break;}
 case 965:
-#line 5260 "gram.y"
+#line 5261 "gram.y"
 { yyval.str = "end"; ;
     break;}
 case 966:
-#line 5261 "gram.y"
+#line 5262 "gram.y"
 { yyval.str = "explain"; ;
     break;}
 case 967:
-#line 5262 "gram.y"
+#line 5263 "gram.y"
 { yyval.str = "extend"; ;
     break;}
 case 968:
-#line 5263 "gram.y"
+#line 5264 "gram.y"
 { yyval.str = "false"; ;
     break;}
 case 969:
-#line 5264 "gram.y"
+#line 5265 "gram.y"
 { yyval.str = "foreign"; ;
     break;}
 case 970:
-#line 5265 "gram.y"
+#line 5266 "gram.y"
 { yyval.str = "group"; ;
     break;}
 case 971:
-#line 5266 "gram.y"
+#line 5267 "gram.y"
 { yyval.str = "listen"; ;
     break;}
 case 972:
-#line 5267 "gram.y"
+#line 5268 "gram.y"
 { yyval.str = "load"; ;
     break;}
 case 973:
-#line 5268 "gram.y"
+#line 5269 "gram.y"
 { yyval.str = "lock"; ;
     break;}
 case 974:
-#line 5269 "gram.y"
+#line 5270 "gram.y"
 { yyval.str = "move"; ;
     break;}
 case 975:
-#line 5270 "gram.y"
+#line 5271 "gram.y"
 { yyval.str = "new"; ;
     break;}
 case 976:
-#line 5271 "gram.y"
+#line 5272 "gram.y"
 { yyval.str = "none"; ;
     break;}
 case 977:
-#line 5272 "gram.y"
+#line 5273 "gram.y"
 { yyval.str = "nullif"; ;
     break;}
 case 978:
-#line 5273 "gram.y"
+#line 5274 "gram.y"
 { yyval.str = "order"; ;
     break;}
 case 979:
-#line 5274 "gram.y"
+#line 5275 "gram.y"
 { yyval.str = "position"; ;
     break;}
 case 980:
-#line 5275 "gram.y"
+#line 5276 "gram.y"
 { yyval.str = "precision"; ;
     break;}
 case 981:
-#line 5276 "gram.y"
+#line 5277 "gram.y"
 { yyval.str = "reset"; ;
     break;}
 case 982:
-#line 5277 "gram.y"
+#line 5278 "gram.y"
 { yyval.str = "setof"; ;
     break;}
 case 983:
-#line 5278 "gram.y"
+#line 5279 "gram.y"
 { yyval.str = "show"; ;
     break;}
 case 984:
-#line 5279 "gram.y"
+#line 5280 "gram.y"
 { yyval.str = "table"; ;
     break;}
 case 985:
-#line 5280 "gram.y"
+#line 5281 "gram.y"
 { yyval.str = "then"; ;
     break;}
 case 986:
-#line 5281 "gram.y"
+#line 5282 "gram.y"
 { yyval.str = "transaction"; ;
     break;}
 case 987:
-#line 5282 "gram.y"
+#line 5283 "gram.y"
 { yyval.str = "true"; ;
     break;}
 case 988:
-#line 5283 "gram.y"
+#line 5284 "gram.y"
 { yyval.str = "vacuum"; ;
     break;}
 case 989:
-#line 5284 "gram.y"
+#line 5285 "gram.y"
 { yyval.str = "verbose"; ;
     break;}
 case 990:
-#line 5285 "gram.y"
+#line 5286 "gram.y"
 { yyval.str = "when"; ;
     break;}
 case 991:
-#line 5289 "gram.y"
+#line 5290 "gram.y"
 {
                                        if (QueryIsRule)
                                                yyval.str = "*CURRENT*";
@@ -11345,7 +11345,7 @@ case 991:
                                ;
     break;}
 case 992:
-#line 5296 "gram.y"
+#line 5297 "gram.y"
 {
                                        if (QueryIsRule)
                                                yyval.str = "*NEW*";
@@ -11551,7 +11551,7 @@ yyerrhandle:
   yystate = yyn;
   goto yynewstate;
 }
-#line 5304 "gram.y"
+#line 5305 "gram.y"
 
 
 static Node *
index 5cd7f792e59bc69e2e6c7bad163a5f58e5fcd985..5b6e1ff6661838f381157cfc66d9d605d7da18a7 100644 (file)
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.65 1999/03/18 22:03:59 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.66 1999/03/19 23:48:50 momjian Exp $
  *
  * HISTORY
  *       AUTHOR                        DATE                    MAJOR EVENT
@@ -340,6 +340,7 @@ Oid param_type(int t); /* used in parse_expr.c */
 %left          Op                              /* multi-character ops and user-defined operators */
 %nonassoc      NOTNULL
 %nonassoc      ISNULL
+%nonassoc      NULL_P
 %nonassoc      IS
 %left          '+' '-'
 %left          '*' '/' '%'