preproc.c
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:764k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. case 383:
  2. #line 2259 "preproc.y"
  3. {
  4. yyval.str = cat3_str(make1_str("drop aggregate"), yyvsp[-1].str, yyvsp[0].str);
  5. ;
  6.     break;}
  7. case 384:
  8. #line 2264 "preproc.y"
  9. { yyval.str = yyvsp[0].str; ;
  10.     break;}
  11. case 385:
  12. #line 2265 "preproc.y"
  13. { yyval.str = make1_str("*"); ;
  14.     break;}
  15. case 386:
  16. #line 2270 "preproc.y"
  17. {
  18. yyval.str = cat3_str(make1_str("drop function"), yyvsp[-1].str, yyvsp[0].str);
  19. ;
  20.     break;}
  21. case 387:
  22. #line 2277 "preproc.y"
  23. {
  24. yyval.str = cat3_str(make1_str("drop operator"), yyvsp[-3].str, make3_str(make1_str("("), yyvsp[-1].str, make1_str(")")));
  25. ;
  26.     break;}
  27. case 390:
  28. #line 2284 "preproc.y"
  29. { yyval.str = make1_str("+"); ;
  30.     break;}
  31. case 391:
  32. #line 2285 "preproc.y"
  33. { yyval.str = make1_str("-"); ;
  34.     break;}
  35. case 392:
  36. #line 2286 "preproc.y"
  37. { yyval.str = make1_str("*"); ;
  38.     break;}
  39. case 393:
  40. #line 2287 "preproc.y"
  41. { yyval.str = make1_str("%"); ;
  42.     break;}
  43. case 394:
  44. #line 2288 "preproc.y"
  45. { yyval.str = make1_str("/"); ;
  46.     break;}
  47. case 395:
  48. #line 2289 "preproc.y"
  49. { yyval.str = make1_str("<"); ;
  50.     break;}
  51. case 396:
  52. #line 2290 "preproc.y"
  53. { yyval.str = make1_str(">"); ;
  54.     break;}
  55. case 397:
  56. #line 2291 "preproc.y"
  57. { yyval.str = make1_str("="); ;
  58.     break;}
  59. case 398:
  60. #line 2295 "preproc.y"
  61. {
  62.    yyerror("parser: argument type missing (use NONE for unary operators)");
  63. ;
  64.     break;}
  65. case 399:
  66. #line 2299 "preproc.y"
  67. { yyval.str = cat3_str(yyvsp[-2].str, make1_str(","), yyvsp[0].str); ;
  68.     break;}
  69. case 400:
  70. #line 2301 "preproc.y"
  71. { yyval.str = cat2_str(make1_str("none,"), yyvsp[0].str); ;
  72.     break;}
  73. case 401:
  74. #line 2303 "preproc.y"
  75. { yyval.str = cat2_str(yyvsp[-2].str, make1_str(", none")); ;
  76.     break;}
  77. case 402:
  78. #line 2317 "preproc.y"
  79. {
  80. yyval.str = cat4_str(cat5_str(make1_str("alter table"), yyvsp[-6].str, yyvsp[-5].str, make1_str("rename"), yyvsp[-3].str), yyvsp[-2].str, make1_str("to"), yyvsp[0].str);
  81. ;
  82.     break;}
  83. case 403:
  84. #line 2322 "preproc.y"
  85. { yyval.str = yyvsp[0].str; ;
  86.     break;}
  87. case 404:
  88. #line 2323 "preproc.y"
  89. { yyval.str = make1_str(""); ;
  90.     break;}
  91. case 405:
  92. #line 2326 "preproc.y"
  93. { yyval.str = make1_str("colmunn"); ;
  94.     break;}
  95. case 406:
  96. #line 2327 "preproc.y"
  97. { yyval.str = make1_str(""); ;
  98.     break;}
  99. case 407:
  100. #line 2341 "preproc.y"
  101. { QueryIsRule=1; ;
  102.     break;}
  103. case 408:
  104. #line 2344 "preproc.y"
  105. {
  106. yyval.str = cat2_str(cat5_str(cat5_str(make1_str("create rule"), yyvsp[-10].str, make1_str("as on"), yyvsp[-6].str, make1_str("to")), yyvsp[-4].str, yyvsp[-3].str, make1_str("do"), yyvsp[-1].str), yyvsp[0].str);
  107. ;
  108.     break;}
  109. case 409:
  110. #line 2349 "preproc.y"
  111. { yyval.str = make1_str("nothing"); ;
  112.     break;}
  113. case 410:
  114. #line 2350 "preproc.y"
  115. { yyval.str = yyvsp[0].str; ;
  116.     break;}
  117. case 411:
  118. #line 2351 "preproc.y"
  119. { yyval.str = yyvsp[0].str; ;
  120.     break;}
  121. case 412:
  122. #line 2352 "preproc.y"
  123. { yyval.str = cat3_str(make1_str("["), yyvsp[-1].str, make1_str("]")); ;
  124.     break;}
  125. case 413:
  126. #line 2353 "preproc.y"
  127. { yyval.str = cat3_str(make1_str("("), yyvsp[-1].str, make1_str(")")); ;
  128.     break;}
  129. case 414:
  130. #line 2356 "preproc.y"
  131. {  yyval.str = yyvsp[0].str; ;
  132.     break;}
  133. case 415:
  134. #line 2357 "preproc.y"
  135. {  yyval.str = yyvsp[0].str; ;
  136.     break;}
  137. case 416:
  138. #line 2361 "preproc.y"
  139. {  yyval.str = cat2_str(yyvsp[-1].str, yyvsp[0].str); ;
  140.     break;}
  141. case 417:
  142. #line 2363 "preproc.y"
  143. {  yyval.str = cat3_str(yyvsp[-2].str, yyvsp[-1].str, make1_str(";")); ;
  144.     break;}
  145. case 418:
  146. #line 2365 "preproc.y"
  147. { yyval.str = cat2_str(yyvsp[-1].str, make1_str(";")); ;
  148.     break;}
  149. case 423:
  150. #line 2375 "preproc.y"
  151. {
  152. yyval.str = make3_str(yyvsp[-2].str, make1_str("."), yyvsp[0].str);
  153. ;
  154.     break;}
  155. case 424:
  156. #line 2379 "preproc.y"
  157. {
  158. yyval.str = yyvsp[0].str;
  159. ;
  160.     break;}
  161. case 425:
  162. #line 2385 "preproc.y"
  163. { yyval.str = make1_str("select"); ;
  164.     break;}
  165. case 426:
  166. #line 2386 "preproc.y"
  167. { yyval.str = make1_str("update"); ;
  168.     break;}
  169. case 427:
  170. #line 2387 "preproc.y"
  171. { yyval.str = make1_str("delete"); ;
  172.     break;}
  173. case 428:
  174. #line 2388 "preproc.y"
  175. { yyval.str = make1_str("insert"); ;
  176.     break;}
  177. case 429:
  178. #line 2391 "preproc.y"
  179. { yyval.str = make1_str("instead"); ;
  180.     break;}
  181. case 430:
  182. #line 2392 "preproc.y"
  183. { yyval.str = make1_str(""); ;
  184.     break;}
  185. case 431:
  186. #line 2405 "preproc.y"
  187. {
  188. yyval.str = cat2_str(make1_str("notify"), yyvsp[0].str);
  189. ;
  190.     break;}
  191. case 432:
  192. #line 2411 "preproc.y"
  193. {
  194. yyval.str = cat2_str(make1_str("listen"), yyvsp[0].str);
  195.                                 ;
  196.     break;}
  197. case 433:
  198. #line 2417 "preproc.y"
  199. {
  200. yyval.str = cat2_str(make1_str("unlisten"), yyvsp[0].str);
  201.                                 ;
  202.     break;}
  203. case 434:
  204. #line 2421 "preproc.y"
  205. {
  206. yyval.str = make1_str("unlisten *");
  207.                                 ;
  208.     break;}
  209. case 435:
  210. #line 2438 "preproc.y"
  211. { yyval.str = make1_str("rollback"); ;
  212.     break;}
  213. case 436:
  214. #line 2439 "preproc.y"
  215. { yyval.str = make1_str("begin transaction"); ;
  216.     break;}
  217. case 437:
  218. #line 2440 "preproc.y"
  219. { yyval.str = make1_str("commit"); ;
  220.     break;}
  221. case 438:
  222. #line 2441 "preproc.y"
  223. { yyval.str = make1_str("commit"); ;
  224.     break;}
  225. case 439:
  226. #line 2442 "preproc.y"
  227. { yyval.str = make1_str("rollback"); ;
  228.     break;}
  229. case 440:
  230. #line 2444 "preproc.y"
  231. { yyval.str = ""; ;
  232.     break;}
  233. case 441:
  234. #line 2445 "preproc.y"
  235. { yyval.str = ""; ;
  236.     break;}
  237. case 442:
  238. #line 2446 "preproc.y"
  239. { yyval.str = ""; ;
  240.     break;}
  241. case 443:
  242. #line 2457 "preproc.y"
  243. {
  244. yyval.str = cat4_str(make1_str("create view"), yyvsp[-2].str, make1_str("as"), yyvsp[0].str);
  245. ;
  246.     break;}
  247. case 444:
  248. #line 2471 "preproc.y"
  249. {
  250. yyval.str = cat2_str(make1_str("load"), yyvsp[0].str);
  251. ;
  252.     break;}
  253. case 445:
  254. #line 2485 "preproc.y"
  255. {
  256. if (strlen(yyvsp[-1].str) == 0 || strlen(yyvsp[0].str) == 0) 
  257. yyerror("CREATE DATABASE WITH requires at least an option");
  258. #ifndef MULTIBYTE
  259. if (strlen(yyvsp[0].str) != 0)
  260. yyerror("WITH ENCODING is not supported");
  261. #endif
  262. yyval.str = cat5_str(make1_str("create database"), yyvsp[-3].str, make1_str("with"), yyvsp[-1].str, yyvsp[0].str);
  263. ;
  264.     break;}
  265. case 446:
  266. #line 2495 "preproc.y"
  267. {
  268. yyval.str = cat2_str(make1_str("create database"), yyvsp[0].str);
  269. ;
  270.     break;}
  271. case 447:
  272. #line 2500 "preproc.y"
  273. { yyval.str = cat2_str(make1_str("location ="), yyvsp[0].str); ;
  274.     break;}
  275. case 448:
  276. #line 2501 "preproc.y"
  277. { yyval.str = make1_str(""); ;
  278.     break;}
  279. case 449:
  280. #line 2504 "preproc.y"
  281. { yyval.str = cat2_str(make1_str("encoding ="), yyvsp[0].str); ;
  282.     break;}
  283. case 450:
  284. #line 2505 "preproc.y"
  285. { yyval.str = NULL; ;
  286.     break;}
  287. case 451:
  288. #line 2508 "preproc.y"
  289. { yyval.str = yyvsp[0].str; ;
  290.     break;}
  291. case 452:
  292. #line 2509 "preproc.y"
  293. { yyval.str = make1_str("default"); ;
  294.     break;}
  295. case 453:
  296. #line 2510 "preproc.y"
  297. { yyval.str = make1_str(""); ;
  298.     break;}
  299. case 454:
  300. #line 2513 "preproc.y"
  301. { yyval.str = yyvsp[0].str; ;
  302.     break;}
  303. case 455:
  304. #line 2514 "preproc.y"
  305. { yyval.str = make1_str("default"); ;
  306.     break;}
  307. case 456:
  308. #line 2515 "preproc.y"
  309. { yyval.str = make1_str(""); ;
  310.     break;}
  311. case 457:
  312. #line 2526 "preproc.y"
  313. {
  314. yyval.str = cat2_str(make1_str("drop database"), yyvsp[0].str);
  315. ;
  316.     break;}
  317. case 458:
  318. #line 2540 "preproc.y"
  319. {
  320.    yyval.str = cat4_str(make1_str("cluster"), yyvsp[-2].str, make1_str("on"), yyvsp[0].str);
  321. ;
  322.     break;}
  323. case 459:
  324. #line 2554 "preproc.y"
  325. {
  326. yyval.str = cat3_str(make1_str("vacuum"), yyvsp[-1].str, yyvsp[0].str);
  327. ;
  328.     break;}
  329. case 460:
  330. #line 2558 "preproc.y"
  331. {
  332. if ( strlen(yyvsp[0].str) > 0 && strlen(yyvsp[-1].str) == 0 )
  333. yyerror("parser: syntax error at or near "("");
  334. yyval.str = cat5_str(make1_str("vacuum"), yyvsp[-3].str, yyvsp[-2].str, yyvsp[-1].str, yyvsp[0].str);
  335. ;
  336.     break;}
  337. case 461:
  338. #line 2565 "preproc.y"
  339. { yyval.str = make1_str("verbose"); ;
  340.     break;}
  341. case 462:
  342. #line 2566 "preproc.y"
  343. { yyval.str = make1_str(""); ;
  344.     break;}
  345. case 463:
  346. #line 2569 "preproc.y"
  347. { yyval.str = make1_str("analyse"); ;
  348.     break;}
  349. case 464:
  350. #line 2570 "preproc.y"
  351. { yyval.str = make1_str(""); ;
  352.     break;}
  353. case 465:
  354. #line 2573 "preproc.y"
  355. { yyval.str = make3_str(make1_str("("), yyvsp[-1].str, make1_str(")")); ;
  356.     break;}
  357. case 466:
  358. #line 2574 "preproc.y"
  359. { yyval.str = make1_str(""); ;
  360.     break;}
  361. case 467:
  362. #line 2578 "preproc.y"
  363. { yyval.str=yyvsp[0].str; ;
  364.     break;}
  365. case 468:
  366. #line 2580 "preproc.y"
  367. { yyval.str=cat3_str(yyvsp[-2].str, make1_str(","), yyvsp[0].str); ;
  368.     break;}
  369. case 469:
  370. #line 2592 "preproc.y"
  371. {
  372. yyval.str = cat3_str(make1_str("explain"), yyvsp[-1].str, yyvsp[0].str);
  373. ;
  374.     break;}
  375. case 476:
  376. #line 2632 "preproc.y"
  377. {
  378. yyval.str = cat3_str(make1_str("insert into"), yyvsp[-1].str, yyvsp[0].str);
  379. ;
  380.     break;}
  381. case 477:
  382. #line 2638 "preproc.y"
  383. {
  384. yyval.str = make3_str(make1_str("values("), yyvsp[-1].str, make1_str(")"));
  385. ;
  386.     break;}
  387. case 478:
  388. #line 2642 "preproc.y"
  389. {
  390. yyval.str = make1_str("default values");
  391. ;
  392.     break;}
  393. case 479:
  394. #line 2646 "preproc.y"
  395. {
  396. yyval.str = yyvsp[0].str;
  397. ;
  398.     break;}
  399. case 480:
  400. #line 2650 "preproc.y"
  401. {
  402. yyval.str = make5_str(make1_str("("), yyvsp[-5].str, make1_str(") values ("), yyvsp[-1].str, make1_str(")"));
  403. ;
  404.     break;}
  405. case 481:
  406. #line 2654 "preproc.y"
  407. {
  408. yyval.str = make4_str(make1_str("("), yyvsp[-2].str, make1_str(")"), yyvsp[0].str);
  409. ;
  410.     break;}
  411. case 482:
  412. #line 2659 "preproc.y"
  413. { yyval.str = make3_str(make1_str("("), yyvsp[-1].str, make1_str(")")); ;
  414.     break;}
  415. case 483:
  416. #line 2660 "preproc.y"
  417. { yyval.str = make1_str(""); ;
  418.     break;}
  419. case 484:
  420. #line 2665 "preproc.y"
  421. { yyval.str = cat3_str(yyvsp[-2].str, make1_str(","), yyvsp[0].str); ;
  422.     break;}
  423. case 485:
  424. #line 2667 "preproc.y"
  425. { yyval.str = yyvsp[0].str; ;
  426.     break;}
  427. case 486:
  428. #line 2671 "preproc.y"
  429. {
  430. yyval.str = cat2_str(yyvsp[-1].str, yyvsp[0].str);
  431. ;
  432.     break;}
  433. case 487:
  434. #line 2686 "preproc.y"
  435. {
  436. yyval.str = cat3_str(make1_str("delete from"), yyvsp[-1].str, yyvsp[0].str);
  437. ;
  438.     break;}
  439. case 488:
  440. #line 2692 "preproc.y"
  441. {
  442. yyval.str = cat4_str(make1_str("lock"), yyvsp[-2].str, yyvsp[-1].str, yyvsp[0].str);
  443. ;
  444.     break;}
  445. case 489:
  446. #line 2697 "preproc.y"
  447. { yyval.str = cat3_str(make1_str("in"), yyvsp[-1].str, make1_str("mode")); ;
  448.     break;}
  449. case 490:
  450. #line 2698 "preproc.y"
  451. { yyval.str = make1_str("");;
  452.     break;}
  453. case 491:
  454. #line 2701 "preproc.y"
  455. { yyval.str = make1_str("share row exclusive"); ;
  456.     break;}
  457. case 492:
  458. #line 2702 "preproc.y"
  459. { yyval.str = cat2_str(make1_str("row"), yyvsp[0].str);;
  460.     break;}
  461. case 493:
  462. #line 2703 "preproc.y"
  463. { yyval.str = cat2_str(make1_str("access"), yyvsp[0].str);;
  464.     break;}
  465. case 494:
  466. #line 2704 "preproc.y"
  467. { yyval.str = yyvsp[0].str; ;
  468.     break;}
  469. case 495:
  470. #line 2707 "preproc.y"
  471. { yyval.str = make1_str("share"); ;
  472.     break;}
  473. case 496:
  474. #line 2708 "preproc.y"
  475. { yyval.str = make1_str("exclusive"); ;
  476.     break;}
  477. case 497:
  478. #line 2722 "preproc.y"
  479. {
  480. yyval.str = cat2_str(cat5_str(make1_str("update"), yyvsp[-4].str, make1_str("set"), yyvsp[-2].str, yyvsp[-1].str), yyvsp[0].str);
  481. ;
  482.     break;}
  483. case 498:
  484. #line 2735 "preproc.y"
  485. { ForUpdateNotAllowed = 1; ;
  486.     break;}
  487. case 499:
  488. #line 2737 "preproc.y"
  489. {
  490. struct cursor *ptr, *this;
  491. for (ptr = cur; ptr != NULL; ptr = ptr->next)
  492. {
  493. if (strcmp(yyvsp[-5].str, ptr->name) == 0)
  494. {
  495.         /* re-definition is a bug */
  496. sprintf(errortext, "cursor %s already defined", yyvsp[-5].str);
  497. yyerror(errortext);
  498.                 }
  499.          }
  500.                         
  501.          this = (struct cursor *) mm_alloc(sizeof(struct cursor));
  502.          /* initial definition */
  503.         this->next = cur;
  504.         this->name = yyvsp[-5].str;
  505. this->connection = connection;
  506.         this->command =  cat5_str(make1_str("declare"), mm_strdup(yyvsp[-5].str), yyvsp[-4].str, make1_str("cursor for"), yyvsp[0].str);
  507. this->argsinsert = argsinsert;
  508. this->argsresult = argsresult;
  509. argsinsert = argsresult = NULL;
  510.          cur = this;
  511. yyval.str = cat3_str(make1_str("/*"), mm_strdup(this->command), make1_str("*/"));
  512. ;
  513.     break;}
  514. case 500:
  515. #line 2767 "preproc.y"
  516. { yyval.str = make1_str("binary"); ;
  517.     break;}
  518. case 501:
  519. #line 2768 "preproc.y"
  520. { yyval.str = make1_str("insensitive"); ;
  521.     break;}
  522. case 502:
  523. #line 2769 "preproc.y"
  524. { yyval.str = make1_str("scroll"); ;
  525.     break;}
  526. case 503:
  527. #line 2770 "preproc.y"
  528. { yyval.str = make1_str("insensitive scroll"); ;
  529.     break;}
  530. case 504:
  531. #line 2771 "preproc.y"
  532. { yyval.str = make1_str(""); ;
  533.     break;}
  534. case 505:
  535. #line 2789 "preproc.y"
  536. {
  537. if (strlen(yyvsp[-1].str) > 0 && ForUpdateNotAllowed != 0)
  538. yyerror("FOR UPDATE is not allowed in this context");
  539. ForUpdateNotAllowed = 0;
  540. yyval.str = cat4_str(yyvsp[-3].str, yyvsp[-2].str, yyvsp[-1].str, yyvsp[0].str);
  541. ;
  542.     break;}
  543. case 506:
  544. #line 2806 "preproc.y"
  545. {
  546.                                yyval.str = make3_str(make1_str("("), yyvsp[-1].str, make1_str(")")); 
  547.                         ;
  548.     break;}
  549. case 507:
  550. #line 2810 "preproc.y"
  551. {
  552.                                yyval.str = yyvsp[0].str; 
  553.                         ;
  554.     break;}
  555. case 508:
  556. #line 2814 "preproc.y"
  557. {
  558. yyval.str = cat3_str(yyvsp[-2].str, make1_str("except"), yyvsp[0].str);
  559. ForUpdateNotAllowed = 1;
  560. ;
  561.     break;}
  562. case 509:
  563. #line 2819 "preproc.y"
  564. {
  565. yyval.str = cat4_str(yyvsp[-3].str, make1_str("union"), yyvsp[-1].str, yyvsp[0].str);
  566. ForUpdateNotAllowed = 1;
  567. ;
  568.     break;}
  569. case 510:
  570. #line 2824 "preproc.y"
  571. {
  572. yyval.str = cat3_str(yyvsp[-3].str, make1_str("intersect"), yyvsp[-1].str);
  573. ForUpdateNotAllowed = 1;
  574. ;
  575.     break;}
  576. case 511:
  577. #line 2834 "preproc.y"
  578. {
  579. yyval.str = cat4_str(cat5_str(make1_str("select"), yyvsp[-6].str, yyvsp[-5].str, yyvsp[-4].str, yyvsp[-3].str), yyvsp[-2].str, yyvsp[-1].str, yyvsp[0].str);
  580. if (strlen(yyvsp[-1].str) > 0 || strlen(yyvsp[0].str) > 0)
  581. ForUpdateNotAllowed = 1;
  582. ;
  583.     break;}
  584. case 512:
  585. #line 2841 "preproc.y"
  586. { yyval.str= cat4_str(make1_str("into"), yyvsp[-2].str, yyvsp[-1].str, yyvsp[0].str); ;
  587.     break;}
  588. case 513:
  589. #line 2842 "preproc.y"
  590. { yyval.str = make1_str(""); ;
  591.     break;}
  592. case 514:
  593. #line 2843 "preproc.y"
  594. { yyval.str = make1_str(""); ;
  595.     break;}
  596. case 515:
  597. #line 2846 "preproc.y"
  598. { yyval.str = make1_str("table"); ;
  599.     break;}
  600. case 516:
  601. #line 2847 "preproc.y"
  602. { yyval.str = make1_str(""); ;
  603.     break;}
  604. case 517:
  605. #line 2850 "preproc.y"
  606. { yyval.str = make1_str("all"); ;
  607.     break;}
  608. case 518:
  609. #line 2851 "preproc.y"
  610. { yyval.str = make1_str(""); ;
  611.     break;}
  612. case 519:
  613. #line 2854 "preproc.y"
  614. { yyval.str = make1_str("distinct"); ;
  615.     break;}
  616. case 520:
  617. #line 2855 "preproc.y"
  618. { yyval.str = cat2_str(make1_str("distinct on"), yyvsp[0].str); ;
  619.     break;}
  620. case 521:
  621. #line 2856 "preproc.y"
  622. { yyval.str = make1_str("all"); ;
  623.     break;}
  624. case 522:
  625. #line 2857 "preproc.y"
  626. { yyval.str = make1_str(""); ;
  627.     break;}
  628. case 523:
  629. #line 2860 "preproc.y"
  630. { yyval.str = cat2_str(make1_str("order by"), yyvsp[0].str); ;
  631.     break;}
  632. case 524:
  633. #line 2861 "preproc.y"
  634. { yyval.str = make1_str(""); ;
  635.     break;}
  636. case 525:
  637. #line 2864 "preproc.y"
  638. { yyval.str = yyvsp[0].str; ;
  639.     break;}
  640. case 526:
  641. #line 2865 "preproc.y"
  642. { yyval.str = cat3_str(yyvsp[-2].str, make1_str(","), yyvsp[0].str); ;
  643.     break;}
  644. case 527:
  645. #line 2869 "preproc.y"
  646. {
  647.  yyval.str = cat2_str(yyvsp[-1].str, yyvsp[0].str);
  648.                                 ;
  649.     break;}
  650. case 528:
  651. #line 2874 "preproc.y"
  652. { yyval.str = cat2_str(make1_str("using"), yyvsp[0].str); ;
  653.     break;}
  654. case 529:
  655. #line 2875 "preproc.y"
  656. { yyval.str = make1_str("using <"); ;
  657.     break;}
  658. case 530:
  659. #line 2876 "preproc.y"
  660. { yyval.str = make1_str("using >"); ;
  661.     break;}
  662. case 531:
  663. #line 2877 "preproc.y"
  664. { yyval.str = make1_str("asc"); ;
  665.     break;}
  666. case 532:
  667. #line 2878 "preproc.y"
  668. { yyval.str = make1_str("desc"); ;
  669.     break;}
  670. case 533:
  671. #line 2879 "preproc.y"
  672. { yyval.str = make1_str(""); ;
  673.     break;}
  674. case 534:
  675. #line 2883 "preproc.y"
  676. { yyval.str = cat4_str(make1_str("limit"), yyvsp[-2].str, make1_str(","), yyvsp[0].str); ;
  677.     break;}
  678. case 535:
  679. #line 2885 "preproc.y"
  680. { yyval.str = cat4_str(make1_str("limit"), yyvsp[-2].str, make1_str("offset"), yyvsp[0].str); ;
  681.     break;}
  682. case 536:
  683. #line 2887 "preproc.y"
  684. { yyval.str = cat2_str(make1_str("limit"), yyvsp[0].str); ;
  685.     break;}
  686. case 537:
  687. #line 2889 "preproc.y"
  688. { yyval.str = cat4_str(make1_str("offset"), yyvsp[-2].str, make1_str("limit"), yyvsp[0].str); ;
  689.     break;}
  690. case 538:
  691. #line 2891 "preproc.y"
  692. { yyval.str = cat2_str(make1_str("offset"), yyvsp[0].str); ;
  693.     break;}
  694. case 539:
  695. #line 2893 "preproc.y"
  696. { yyval.str = make1_str(""); ;
  697.     break;}
  698. case 540:
  699. #line 2896 "preproc.y"
  700. { yyval.str = yyvsp[0].str; ;
  701.     break;}
  702. case 541:
  703. #line 2897 "preproc.y"
  704. { yyval.str = make1_str("all"); ;
  705.     break;}
  706. case 542:
  707. #line 2898 "preproc.y"
  708. { yyval.str = make_name(); ;
  709.     break;}
  710. case 543:
  711. #line 2901 "preproc.y"
  712. { yyval.str = yyvsp[0].str; ;
  713.     break;}
  714. case 544:
  715. #line 2902 "preproc.y"
  716. { yyval.str = make_name(); ;
  717.     break;}
  718. case 545:
  719. #line 2912 "preproc.y"
  720. { yyval.str = make1_str("*"); ;
  721.     break;}
  722. case 546:
  723. #line 2913 "preproc.y"
  724. { yyval.str = make1_str(""); ;
  725.     break;}
  726. case 547:
  727. #line 2916 "preproc.y"
  728. { yyval.str = yyvsp[0].str; ;
  729.     break;}
  730. case 548:
  731. #line 2919 "preproc.y"
  732. { yyval.str = yyvsp[0].str; ;
  733.     break;}
  734. case 549:
  735. #line 2921 "preproc.y"
  736. { yyval.str = cat3_str(yyvsp[-2].str, make1_str(","), yyvsp[0].str); ;
  737.     break;}
  738. case 550:
  739. #line 2924 "preproc.y"
  740. { yyval.str = cat2_str(make1_str("group by"), yyvsp[0].str); ;
  741.     break;}
  742. case 551:
  743. #line 2925 "preproc.y"
  744. { yyval.str = make1_str(""); ;
  745.     break;}
  746. case 552:
  747. #line 2929 "preproc.y"
  748. {
  749. yyval.str = cat2_str(make1_str("having"), yyvsp[0].str);
  750. ;
  751.     break;}
  752. case 553:
  753. #line 2932 "preproc.y"
  754. { yyval.str = make1_str(""); ;
  755.     break;}
  756. case 554:
  757. #line 2936 "preproc.y"
  758. {
  759.                  yyval.str = make1_str("for update"); 
  760. ;
  761.     break;}
  762. case 555:
  763. #line 2940 "preproc.y"
  764. {
  765. yyval.str = make1_str("for read only");
  766. ;
  767.     break;}
  768. case 556:
  769. #line 2944 "preproc.y"
  770. {
  771.                         yyval.str = make1_str("");
  772.                 ;
  773.     break;}
  774. case 557:
  775. #line 2949 "preproc.y"
  776. {
  777. yyval.str = cat2_str(make1_str("of"), yyvsp[0].str);
  778.       ;
  779.     break;}
  780. case 558:
  781. #line 2953 "preproc.y"
  782. {
  783.                         yyval.str = make1_str("");
  784.               ;
  785.     break;}
  786. case 559:
  787. #line 2967 "preproc.y"
  788. {
  789. yyval.str = cat2_str(make1_str("from"), yyvsp[0].str);
  790. ;
  791.     break;}
  792. case 560:
  793. #line 2971 "preproc.y"
  794. {
  795. yyval.str = make1_str("");
  796. ;
  797.     break;}
  798. case 561:
  799. #line 2977 "preproc.y"
  800. { yyval.str = make3_str(make1_str("("), yyvsp[-1].str, make1_str(")")); ;
  801.     break;}
  802. case 562:
  803. #line 2979 "preproc.y"
  804. { yyval.str = yyvsp[0].str; ;
  805.     break;}
  806. case 563:
  807. #line 2981 "preproc.y"
  808. { yyval.str = yyvsp[0].str; ;
  809.     break;}
  810. case 564:
  811. #line 2985 "preproc.y"
  812. { yyval.str = make3_str(yyvsp[-2].str, make1_str(","), yyvsp[0].str); ;
  813.     break;}
  814. case 565:
  815. #line 2987 "preproc.y"
  816. { yyval.str = yyvsp[0].str; ;
  817.     break;}
  818. case 566:
  819. #line 2991 "preproc.y"
  820. {
  821.                                         yyval.str = cat3_str(yyvsp[-2].str, make1_str("as"), yyvsp[0].str);
  822.                                 ;
  823.     break;}
  824. case 567:
  825. #line 2995 "preproc.y"
  826. {
  827.                                         yyval.str = cat2_str(yyvsp[-1].str, yyvsp[0].str);
  828.                                 ;
  829.     break;}
  830. case 568:
  831. #line 2999 "preproc.y"
  832. {
  833.                                         yyval.str = yyvsp[0].str;
  834.                                 ;
  835.     break;}
  836. case 569:
  837. #line 3009 "preproc.y"
  838. {       yyval.str = yyvsp[0].str; ;
  839.     break;}
  840. case 570:
  841. #line 3011 "preproc.y"
  842. {       yyerror("UNION JOIN not yet implemented"); ;
  843.     break;}
  844. case 571:
  845. #line 3015 "preproc.y"
  846. {
  847. yyval.str = cat2_str(yyvsp[-1].str, yyvsp[0].str);
  848.                                 ;
  849.     break;}
  850. case 572:
  851. #line 3021 "preproc.y"
  852. {
  853.                                         yyval.str = cat2_str(yyvsp[-1].str, yyvsp[0].str);
  854.                                 ;
  855.     break;}
  856. case 573:
  857. #line 3025 "preproc.y"
  858. {
  859.                                         yyval.str = yyvsp[0].str;
  860.                                 ;
  861.     break;}
  862. case 574:
  863. #line 3038 "preproc.y"
  864. {
  865. yyval.str = cat4_str(yyvsp[-3].str, make1_str("join"), yyvsp[-1].str, yyvsp[0].str);
  866.                                 ;
  867.     break;}
  868. case 575:
  869. #line 3042 "preproc.y"
  870. {
  871. yyval.str = cat4_str(make1_str("natural"), yyvsp[-2].str, make1_str("join"), yyvsp[0].str);
  872.                                 ;
  873.     break;}
  874. case 576:
  875. #line 3046 "preproc.y"
  876. {  yyval.str = cat2_str(make1_str("cross join"), yyvsp[0].str); ;
  877.     break;}
  878. case 577:
  879. #line 3051 "preproc.y"
  880. {
  881.                                         yyval.str = cat2_str(make1_str("full"), yyvsp[0].str);
  882.                                         fprintf(stderr,"FULL OUTER JOIN not yet implementedn");
  883.                                 ;
  884.     break;}
  885. case 578:
  886. #line 3056 "preproc.y"
  887. {
  888.                                         yyval.str = cat2_str(make1_str("left"), yyvsp[0].str);
  889.                                         fprintf(stderr,"LEFT OUTER JOIN not yet implementedn");
  890.                                 ;
  891.     break;}
  892. case 579:
  893. #line 3061 "preproc.y"
  894. {
  895.                                         yyval.str = cat2_str(make1_str("right"), yyvsp[0].str);
  896.                                         fprintf(stderr,"RIGHT OUTER JOIN not yet implementedn");
  897.                                 ;
  898.     break;}
  899. case 580:
  900. #line 3066 "preproc.y"
  901. {
  902.                                         yyval.str = make1_str("outer");
  903.                                         fprintf(stderr,"OUTER JOIN not yet implementedn");
  904.                                 ;
  905.     break;}
  906. case 581:
  907. #line 3071 "preproc.y"
  908. {
  909.                                         yyval.str = make1_str("inner");
  910. ;
  911.     break;}
  912. case 582:
  913. #line 3075 "preproc.y"
  914. {
  915.                                         yyval.str = make1_str("");
  916. ;
  917.     break;}
  918. case 583:
  919. #line 3080 "preproc.y"
  920. { yyval.str = make1_str("outer"); ;
  921.     break;}
  922. case 584:
  923. #line 3081 "preproc.y"
  924. { yyval.str = make1_str("");  /* no qualifiers */ ;
  925.     break;}
  926. case 585:
  927. #line 3092 "preproc.y"
  928. { yyval.str = make3_str(make1_str("using ("), yyvsp[-1].str, make1_str(")")); ;
  929.     break;}
  930. case 586:
  931. #line 3093 "preproc.y"
  932. { yyval.str = cat2_str(make1_str("on"), yyvsp[0].str); ;
  933.     break;}
  934. case 587:
  935. #line 3096 "preproc.y"
  936. { yyval.str = make3_str(yyvsp[-2].str, make1_str(","), yyvsp[0].str); ;
  937.     break;}
  938. case 588:
  939. #line 3097 "preproc.y"
  940. { yyval.str = yyvsp[0].str; ;
  941.     break;}
  942. case 589:
  943. #line 3101 "preproc.y"
  944. {
  945. yyval.str = yyvsp[0].str;
  946. ;
  947.     break;}
  948. case 590:
  949. #line 3106 "preproc.y"
  950. { yyval.str = cat2_str(make1_str("where"), yyvsp[0].str); ;
  951.     break;}
  952. case 591:
  953. #line 3107 "preproc.y"
  954. { yyval.str = make1_str("");  /* no qualifiers */ ;
  955.     break;}
  956. case 592:
  957. #line 3111 "preproc.y"
  958. {
  959. /* normal relations */
  960. yyval.str = yyvsp[0].str;
  961. ;
  962.     break;}
  963. case 593:
  964. #line 3116 "preproc.y"
  965. {
  966. /* inheritance query */
  967. yyval.str = cat2_str(yyvsp[-1].str, make1_str("*"));
  968. ;
  969.     break;}
  970. case 594:
  971. #line 3122 "preproc.y"
  972. {
  973.                             yyval.index.index1 = 0;
  974.                             yyval.index.index2 = yyvsp[0].index.index1;
  975.                             yyval.index.str = cat2_str(make1_str("[]"), yyvsp[0].index.str);
  976.                         ;
  977.     break;}
  978. case 595:
  979. #line 3128 "preproc.y"
  980. {
  981.     char *txt = mm_alloc(20L);
  982.     sprintf (txt, "%d", yyvsp[-2].ival);
  983.                             yyval.index.index1 = yyvsp[-2].ival;
  984.                             yyval.index.index2 = yyvsp[0].index.index1;
  985.                             yyval.index.str = cat4_str(make1_str("["), txt, make1_str("]"), yyvsp[0].index.str);
  986.                         ;
  987.     break;}
  988. case 596:
  989. #line 3137 "preproc.y"
  990. {
  991.                             yyval.index.index1 = -1;
  992.                             yyval.index.index2 = -1;
  993.                             yyval.index.str= make1_str("");
  994.                         ;
  995.     break;}
  996. case 597:
  997. #line 3145 "preproc.y"
  998. {
  999.                             yyval.index.index1 = 0;
  1000.                             yyval.index.index2 = yyvsp[0].index.index1;
  1001.                             yyval.index.str = cat2_str(make1_str("[]"), yyvsp[0].index.str);
  1002.                         ;
  1003.     break;}
  1004. case 598:
  1005. #line 3151 "preproc.y"
  1006. {
  1007.     char *txt = mm_alloc(20L);
  1008.     sprintf (txt, "%d", yyvsp[-2].ival);
  1009.                             yyval.index.index1 = yyvsp[-2].ival;
  1010.                             yyval.index.index2 = yyvsp[0].index.index1;
  1011.                             yyval.index.str = cat4_str(make1_str("["), txt, make1_str("]"), yyvsp[0].index.str);
  1012.                         ;
  1013.     break;}
  1014. case 599:
  1015. #line 3160 "preproc.y"
  1016. {
  1017.                             yyval.index.index1 = -1;
  1018.                             yyval.index.index2 = -1;
  1019.                             yyval.index.str= make1_str("");
  1020.                         ;
  1021.     break;}
  1022. case 600:
  1023. #line 3167 "preproc.y"
  1024. { yyval.ival = atol(yyvsp[0].str); ;
  1025.     break;}
  1026. case 601:
  1027. #line 3168 "preproc.y"
  1028. { yyval.ival = yyvsp[-1].ival; ;
  1029.     break;}
  1030. case 602:
  1031. #line 3169 "preproc.y"
  1032. { yyval.ival = yyvsp[-2].ival + yyvsp[0].ival; ;
  1033.     break;}
  1034. case 603:
  1035. #line 3170 "preproc.y"
  1036. { yyval.ival = yyvsp[-2].ival - yyvsp[0].ival; ;
  1037.     break;}
  1038. case 604:
  1039. #line 3171 "preproc.y"
  1040. { yyval.ival = yyvsp[-2].ival * yyvsp[0].ival; ;
  1041.     break;}
  1042. case 605:
  1043. #line 3172 "preproc.y"
  1044. { yyval.ival = yyvsp[-2].ival / yyvsp[0].ival; ;
  1045.     break;}
  1046. case 606:
  1047. #line 3173 "preproc.y"
  1048. { yyval.ival = yyvsp[-2].ival % yyvsp[0].ival; ;
  1049.     break;}
  1050. case 607:
  1051. #line 3188 "preproc.y"
  1052. {
  1053. yyval.str = cat2_str(yyvsp[-1].str, yyvsp[0].index.str);
  1054. ;
  1055.     break;}
  1056. case 608:
  1057. #line 3192 "preproc.y"
  1058. {
  1059. yyval.str = cat2_str(make1_str("setof"), yyvsp[0].str);
  1060. ;
  1061.     break;}
  1062. case 609:
  1063. #line 3197 "preproc.y"
  1064. { yyval.str = yyvsp[0].str; ;
  1065.     break;}
  1066. case 610:
  1067. #line 3198 "preproc.y"
  1068. { yyval.str = yyvsp[0].str; ;
  1069.     break;}
  1070. case 611:
  1071. #line 3199 "preproc.y"
  1072. { yyval.str = yyvsp[0].str; ;
  1073.     break;}
  1074. case 612:
  1075. #line 3200 "preproc.y"
  1076. { yyval.str = yyvsp[0].str; ;
  1077.     break;}
  1078. case 613:
  1079. #line 3204 "preproc.y"
  1080. {
  1081. yyval.str = yyvsp[0].str;
  1082. ;
  1083.     break;}
  1084. case 614:
  1085. #line 3209 "preproc.y"
  1086. { yyval.str = yyvsp[0].str; ;
  1087.     break;}
  1088. case 615:
  1089. #line 3210 "preproc.y"
  1090. { yyval.str = make1_str("type"); ;
  1091.     break;}
  1092. case 616:
  1093. #line 3211 "preproc.y"
  1094. { yyval.str = make1_str("at"); ;
  1095.     break;}
  1096. case 617:
  1097. #line 3212 "preproc.y"
  1098. { yyval.str = make1_str("autocommit"); ;
  1099.     break;}
  1100. case 618:
  1101. #line 3213 "preproc.y"
  1102. { yyval.str = make1_str("bool"); ;
  1103.     break;}
  1104. case 619:
  1105. #line 3214 "preproc.y"
  1106. { yyval.str = make1_str("break"); ;
  1107.     break;}
  1108. case 620:
  1109. #line 3215 "preproc.y"
  1110. { yyval.str = make1_str("call"); ;
  1111.     break;}
  1112. case 621:
  1113. #line 3216 "preproc.y"
  1114. { yyval.str = make1_str("connect"); ;
  1115.     break;}
  1116. case 622:
  1117. #line 3217 "preproc.y"
  1118. { yyval.str = make1_str("connection"); ;
  1119.     break;}
  1120. case 623:
  1121. #line 3218 "preproc.y"
  1122. { yyval.str = make1_str("continue"); ;
  1123.     break;}
  1124. case 624:
  1125. #line 3219 "preproc.y"
  1126. { yyval.str = make1_str("deallocate"); ;
  1127.     break;}
  1128. case 625:
  1129. #line 3220 "preproc.y"
  1130. { yyval.str = make1_str("disconnect"); ;
  1131.     break;}
  1132. case 626:
  1133. #line 3221 "preproc.y"
  1134. { yyval.str = make1_str("found"); ;
  1135.     break;}
  1136. case 627:
  1137. #line 3222 "preproc.y"
  1138. { yyval.str = make1_str("go"); ;
  1139.     break;}
  1140. case 628:
  1141. #line 3223 "preproc.y"
  1142. { yyval.str = make1_str("goto"); ;
  1143.     break;}
  1144. case 629:
  1145. #line 3224 "preproc.y"
  1146. { yyval.str = make1_str("identified"); ;
  1147.     break;}
  1148. case 630:
  1149. #line 3225 "preproc.y"
  1150. { yyval.str = make1_str("immediate"); ;
  1151.     break;}
  1152. case 631:
  1153. #line 3226 "preproc.y"
  1154. { yyval.str = make1_str("indicator"); ;
  1155.     break;}
  1156. case 632:
  1157. #line 3227 "preproc.y"
  1158. { yyval.str = make1_str("int"); ;
  1159.     break;}
  1160. case 633:
  1161. #line 3228 "preproc.y"
  1162. { yyval.str = make1_str("long"); ;
  1163.     break;}
  1164. case 634:
  1165. #line 3229 "preproc.y"
  1166. { yyval.str = make1_str("off"); ;
  1167.     break;}
  1168. case 635:
  1169. #line 3230 "preproc.y"
  1170. { yyval.str = make1_str("open"); ;
  1171.     break;}
  1172. case 636:
  1173. #line 3231 "preproc.y"
  1174. { yyval.str = make1_str("prepare"); ;
  1175.     break;}
  1176. case 637:
  1177. #line 3232 "preproc.y"
  1178. { yyval.str = make1_str("release"); ;
  1179.     break;}
  1180. case 638:
  1181. #line 3233 "preproc.y"
  1182. { yyval.str = make1_str("section"); ;
  1183.     break;}
  1184. case 639:
  1185. #line 3234 "preproc.y"
  1186. { yyval.str = make1_str("short"); ;
  1187.     break;}
  1188. case 640:
  1189. #line 3235 "preproc.y"
  1190. { yyval.str = make1_str("signed"); ;
  1191.     break;}
  1192. case 641:
  1193. #line 3236 "preproc.y"
  1194. { yyval.str = make1_str("sqlerror"); ;
  1195.     break;}
  1196. case 642:
  1197. #line 3237 "preproc.y"
  1198. { yyval.str = make1_str("sqlprint"); ;
  1199.     break;}
  1200. case 643:
  1201. #line 3238 "preproc.y"
  1202. { yyval.str = make1_str("sqlwarning"); ;
  1203.     break;}
  1204. case 644:
  1205. #line 3239 "preproc.y"
  1206. { yyval.str = make1_str("stop"); ;
  1207.     break;}
  1208. case 645:
  1209. #line 3240 "preproc.y"
  1210. { yyval.str = make1_str("struct"); ;
  1211.     break;}
  1212. case 646:
  1213. #line 3241 "preproc.y"
  1214. { yyval.str = make1_str("unsigned"); ;
  1215.     break;}
  1216. case 647:
  1217. #line 3242 "preproc.y"
  1218. { yyval.str = make1_str("var"); ;
  1219.     break;}
  1220. case 648:
  1221. #line 3243 "preproc.y"
  1222. { yyval.str = make1_str("whenever"); ;
  1223.     break;}
  1224. case 649:
  1225. #line 3252 "preproc.y"
  1226. {
  1227. yyval.str = cat2_str(make1_str("float"), yyvsp[0].str);
  1228. ;
  1229.     break;}
  1230. case 650:
  1231. #line 3256 "preproc.y"
  1232. {
  1233. yyval.str = make1_str("double precision");
  1234. ;
  1235.     break;}
  1236. case 651:
  1237. #line 3260 "preproc.y"
  1238. {
  1239. yyval.str = cat2_str(make1_str("decimal"), yyvsp[0].str);
  1240. ;
  1241.     break;}
  1242. case 652:
  1243. #line 3264 "preproc.y"
  1244. {
  1245. yyval.str = cat2_str(make1_str("numeric"), yyvsp[0].str);
  1246. ;
  1247.     break;}
  1248. case 653:
  1249. #line 3270 "preproc.y"
  1250. { yyval.str = make1_str("float"); ;
  1251.     break;}
  1252. case 654:
  1253. #line 3272 "preproc.y"
  1254. { yyval.str = make1_str("double precision"); ;
  1255.     break;}
  1256. case 655:
  1257. #line 3274 "preproc.y"
  1258. { yyval.str = make1_str("decimal"); ;
  1259.     break;}
  1260. case 656:
  1261. #line 3276 "preproc.y"
  1262. { yyval.str = make1_str("numeric"); ;
  1263.     break;}
  1264. case 657:
  1265. #line 3280 "preproc.y"
  1266. {
  1267. if (atol(yyvsp[-1].str) < 1)
  1268. yyerror("precision for FLOAT must be at least 1");
  1269. else if (atol(yyvsp[-1].str) >= 16)
  1270. yyerror("precision for FLOAT must be less than 16");
  1271. yyval.str = make3_str(make1_str("("), yyvsp[-1].str, make1_str(")"));
  1272. ;
  1273.     break;}
  1274. case 658:
  1275. #line 3288 "preproc.y"
  1276. {
  1277. yyval.str = make1_str("");
  1278. ;
  1279.     break;}
  1280. case 659:
  1281. #line 3294 "preproc.y"
  1282. {
  1283. if (atol(yyvsp[-3].str) < 1 || atol(yyvsp[-3].str) > NUMERIC_MAX_PRECISION) {
  1284. sprintf(errortext, "NUMERIC precision %s must be between 1 and %d", yyvsp[-3].str, NUMERIC_MAX_PRECISION);
  1285. yyerror(errortext);
  1286. }
  1287. if (atol(yyvsp[-1].str) < 0 || atol(yyvsp[-1].str) > atol(yyvsp[-3].str)) {
  1288. sprintf(errortext, "NUMERIC scale %s must be between 0 and precision %s", yyvsp[-1].str, yyvsp[-3].str);
  1289. yyerror(errortext);
  1290. }
  1291. yyval.str = cat3_str(make2_str(make1_str("("), yyvsp[-3].str), make1_str(","), make2_str(yyvsp[-1].str, make1_str(")")));
  1292. ;
  1293.     break;}
  1294. case 660:
  1295. #line 3306 "preproc.y"
  1296. {
  1297. if (atol(yyvsp[-1].str) < 1 || atol(yyvsp[-1].str) > NUMERIC_MAX_PRECISION) {
  1298. sprintf(errortext, "NUMERIC precision %s must be between 1 and %d", yyvsp[-1].str, NUMERIC_MAX_PRECISION);
  1299. yyerror(errortext);
  1300. }
  1301. yyval.str = make3_str(make1_str("("), yyvsp[-1].str, make1_str(")"));
  1302. ;
  1303.     break;}
  1304. case 661:
  1305. #line 3314 "preproc.y"
  1306. {
  1307. yyval.str = make1_str("");
  1308. ;
  1309.     break;}
  1310. case 662:
  1311. #line 3320 "preproc.y"
  1312. {
  1313. if (atol(yyvsp[-3].str) < 1 || atol(yyvsp[-3].str) > NUMERIC_MAX_PRECISION) {
  1314. sprintf(errortext, "NUMERIC precision %s must be between 1 and %d", yyvsp[-3].str, NUMERIC_MAX_PRECISION);
  1315. yyerror(errortext);
  1316. }
  1317. if (atol(yyvsp[-1].str) < 0 || atol(yyvsp[-1].str) > atol(yyvsp[-3].str)) {
  1318. sprintf(errortext, "NUMERIC scale %s must be between 0 and precision %s", yyvsp[-1].str, yyvsp[-3].str);
  1319. yyerror(errortext);
  1320. }
  1321. yyval.str = cat3_str(make2_str(make1_str("("), yyvsp[-3].str), make1_str(","), make2_str(yyvsp[-1].str, make1_str(")")));
  1322. ;
  1323.     break;}
  1324. case 663:
  1325. #line 3332 "preproc.y"
  1326. {
  1327. if (atol(yyvsp[-1].str) < 1 || atol(yyvsp[-1].str) > NUMERIC_MAX_PRECISION) {
  1328. sprintf(errortext, "NUMERIC precision %s must be between 1 and %d", yyvsp[-1].str, NUMERIC_MAX_PRECISION);
  1329. yyerror(errortext);
  1330. }
  1331. yyval.str = make3_str(make1_str("("), yyvsp[-1].str, make1_str(")"));
  1332. ;
  1333.     break;}
  1334. case 664:
  1335. #line 3340 "preproc.y"
  1336. {
  1337. yyval.str = make1_str("");
  1338. ;
  1339.     break;}
  1340. case 665:
  1341. #line 3350 "preproc.y"
  1342. {
  1343. if (strncasecmp(yyvsp[-3].str, "char", strlen("char")) && strncasecmp(yyvsp[-3].str, "varchar", strlen("varchar")))
  1344. yyerror("internal parsing error; unrecognized character type");
  1345. if (atol(yyvsp[-1].str) < 1) {
  1346. sprintf(errortext, "length for '%s' type must be at least 1",yyvsp[-3].str);
  1347. yyerror(errortext);
  1348. }
  1349. else if (atol(yyvsp[-1].str) > MaxAttrSize) {
  1350. sprintf(errortext, "length for type '%s' cannot exceed %ld",yyvsp[-3].str,(long) MaxAttrSize);
  1351. yyerror(errortext);
  1352. }
  1353. yyval.str = cat2_str(yyvsp[-3].str, make3_str(make1_str("("), yyvsp[-1].str, make1_str(")")));
  1354. ;
  1355.     break;}
  1356. case 666:
  1357. #line 3365 "preproc.y"
  1358. {
  1359. yyval.str = yyvsp[0].str;
  1360. ;
  1361.     break;}
  1362. case 667:
  1363. #line 3371 "preproc.y"
  1364. {
  1365. if (strlen(yyvsp[0].str) > 0) 
  1366. fprintf(stderr, "COLLATE %s not yet implemented",yyvsp[0].str);
  1367. yyval.str = cat4_str(make1_str("character"), yyvsp[-2].str, yyvsp[-1].str, yyvsp[0].str);
  1368. ;
  1369.     break;}
  1370. case 668:
  1371. #line 3377 "preproc.y"
  1372. { yyval.str = cat2_str(make1_str("char"), yyvsp[0].str); ;
  1373.     break;}
  1374. case 669:
  1375. #line 3378 "preproc.y"
  1376. { yyval.str = make1_str("varchar"); ;
  1377.     break;}
  1378. case 670:
  1379. #line 3379 "preproc.y"
  1380. { yyval.str = cat2_str(make1_str("national character"), yyvsp[0].str); ;
  1381.     break;}
  1382. case 671:
  1383. #line 3380 "preproc.y"
  1384. { yyval.str = cat2_str(make1_str("nchar"), yyvsp[0].str); ;
  1385.     break;}
  1386. case 672:
  1387. #line 3383 "preproc.y"
  1388. { yyval.str = make1_str("varying"); ;
  1389.     break;}
  1390. case 673:
  1391. #line 3384 "preproc.y"
  1392. { yyval.str = make1_str(""); ;
  1393.     break;}
  1394. case 674:
  1395. #line 3387 "preproc.y"
  1396. { yyval.str = cat2_str(make1_str("character set"), yyvsp[0].str); ;
  1397.     break;}
  1398. case 675:
  1399. #line 3388 "preproc.y"
  1400. { yyval.str = make1_str(""); ;
  1401.     break;}
  1402. case 676:
  1403. #line 3391 "preproc.y"
  1404. { yyval.str = cat2_str(make1_str("collate"), yyvsp[0].str); ;
  1405.     break;}
  1406. case 677:
  1407. #line 3392 "preproc.y"
  1408. { yyval.str = make1_str(""); ;
  1409.     break;}
  1410. case 678:
  1411. #line 3396 "preproc.y"
  1412. {
  1413. yyval.str = yyvsp[0].str;
  1414. ;
  1415.     break;}
  1416. case 679:
  1417. #line 3400 "preproc.y"
  1418. {
  1419. yyval.str = cat2_str(make1_str("timestamp"), yyvsp[0].str);
  1420. ;
  1421.     break;}
  1422. case 680:
  1423. #line 3404 "preproc.y"
  1424. {
  1425. yyval.str = make1_str("time");
  1426. ;
  1427.     break;}
  1428. case 681:
  1429. #line 3408 "preproc.y"
  1430. {
  1431. yyval.str = cat2_str(make1_str("interval"), yyvsp[0].str);
  1432. ;
  1433.     break;}
  1434. case 682:
  1435. #line 3413 "preproc.y"
  1436. { yyval.str = make1_str("year"); ;
  1437.     break;}
  1438. case 683:
  1439. #line 3414 "preproc.y"
  1440. { yyval.str = make1_str("month"); ;
  1441.     break;}
  1442. case 684:
  1443. #line 3415 "preproc.y"
  1444. { yyval.str = make1_str("day"); ;
  1445.     break;}
  1446. case 685:
  1447. #line 3416 "preproc.y"
  1448. { yyval.str = make1_str("hour"); ;
  1449.     break;}
  1450. case 686:
  1451. #line 3417 "preproc.y"
  1452. { yyval.str = make1_str("minute"); ;
  1453.     break;}
  1454. case 687:
  1455. #line 3418 "preproc.y"
  1456. { yyval.str = make1_str("second"); ;
  1457.     break;}
  1458. case 688:
  1459. #line 3421 "preproc.y"
  1460. { yyval.str = make1_str("with time zone"); ;
  1461.     break;}
  1462. case 689:
  1463. #line 3422 "preproc.y"
  1464. { yyval.str = make1_str(""); ;
  1465.     break;}
  1466. case 690:
  1467. #line 3425 "preproc.y"
  1468. { yyval.str = yyvsp[0].str; ;
  1469.     break;}
  1470. case 691:
  1471. #line 3426 "preproc.y"
  1472. { yyval.str = make1_str("year to #month"); ;
  1473.     break;}
  1474. case 692:
  1475. #line 3427 "preproc.y"
  1476. { yyval.str = make1_str("day to hour"); ;
  1477.     break;}
  1478. case 693:
  1479. #line 3428 "preproc.y"
  1480. { yyval.str = make1_str("day to minute"); ;
  1481.     break;}
  1482. case 694:
  1483. #line 3429 "preproc.y"
  1484. { yyval.str = make1_str("day to second"); ;
  1485.     break;}
  1486. case 695:
  1487. #line 3430 "preproc.y"
  1488. { yyval.str = make1_str("hour to minute"); ;
  1489.     break;}
  1490. case 696:
  1491. #line 3431 "preproc.y"
  1492. { yyval.str = make1_str("minute to second"); ;
  1493.     break;}
  1494. case 697:
  1495. #line 3432 "preproc.y"
  1496. { yyval.str = make1_str("hour to second"); ;
  1497.     break;}
  1498. case 698:
  1499. #line 3433 "preproc.y"
  1500. { yyval.str = make1_str(""); ;
  1501.     break;}
  1502. case 699:
  1503. #line 3444 "preproc.y"
  1504. { yyval.str = yyvsp[0].str; ;
  1505.     break;}
  1506. case 700:
  1507. #line 3446 "preproc.y"
  1508. {
  1509. yyval.str = make1_str("null");
  1510. ;
  1511.     break;}
  1512. case 701:
  1513. #line 3461 "preproc.y"
  1514. {
  1515. yyval.str = make5_str(make1_str("("), yyvsp[-5].str, make1_str(") in ("), yyvsp[-1].str, make1_str(")"));
  1516. ;
  1517.     break;}
  1518. case 702:
  1519. #line 3465 "preproc.y"
  1520. {
  1521. yyval.str = make5_str(make1_str("("), yyvsp[-6].str, make1_str(") not in ("), yyvsp[-1].str, make1_str(")"));
  1522. ;
  1523.     break;}
  1524. case 703:
  1525. #line 3469 "preproc.y"
  1526. {
  1527. yyval.str = make4_str(make5_str(make1_str("("), yyvsp[-6].str, make1_str(")"), yyvsp[-4].str, yyvsp[-3].str), make1_str("("), yyvsp[-1].str, make1_str(")"));
  1528. ;
  1529.     break;}
  1530. case 704:
  1531. #line 3473 "preproc.y"
  1532. {
  1533. yyval.str = make3_str(make5_str(make1_str("("), yyvsp[-5].str, make1_str(")"), yyvsp[-3].str, make1_str("(")), yyvsp[-1].str, make1_str(")"));
  1534. ;
  1535.     break;}
  1536. case 705:
  1537. #line 3477 "preproc.y"
  1538. {
  1539. yyval.str = cat3_str(make3_str(make1_str("("), yyvsp[-5].str, make1_str(")")), yyvsp[-3].str, make3_str(make1_str("("), yyvsp[-1].str, make1_str(")")));
  1540. ;
  1541.     break;}
  1542. case 706:
  1543. #line 3483 "preproc.y"
  1544. {
  1545. yyval.str = cat3_str(yyvsp[-2].str, make1_str(","), yyvsp[0].str);
  1546. ;
  1547.     break;}
  1548. case 707:
  1549. #line 3488 "preproc.y"
  1550. { yyval.str = yyvsp[0].str; ;
  1551.     break;}
  1552. case 708:
  1553. #line 3489 "preproc.y"
  1554. { yyval.str = "<"; ;
  1555.     break;}
  1556. case 709:
  1557. #line 3490 "preproc.y"
  1558. { yyval.str = "="; ;
  1559.     break;}
  1560. case 710:
  1561. #line 3491 "preproc.y"
  1562. { yyval.str = ">"; ;
  1563.     break;}
  1564. case 711:
  1565. #line 3492 "preproc.y"
  1566. { yyval.str = "+"; ;
  1567.     break;}
  1568. case 712:
  1569. #line 3493 "preproc.y"
  1570. { yyval.str = "-"; ;
  1571.     break;}
  1572. case 713:
  1573. #line 3494 "preproc.y"
  1574. { yyval.str = "*"; ;
  1575.     break;}
  1576. case 714:
  1577. #line 3495 "preproc.y"
  1578. { yyval.str = "%"; ;
  1579.     break;}
  1580. case 715:
  1581. #line 3496 "preproc.y"
  1582. { yyval.str = "/"; ;
  1583.     break;}
  1584. case 716:
  1585. #line 3499 "preproc.y"
  1586. { yyval.str = make1_str("ANY"); ;
  1587.     break;}
  1588. case 717:
  1589. #line 3500 "preproc.y"
  1590. { yyval.str = make1_str("ALL"); ;
  1591.     break;}
  1592. case 718:
  1593. #line 3505 "preproc.y"
  1594. {
  1595. yyval.str = cat3_str(yyvsp[-2].str, make1_str(","), yyvsp[0].str);
  1596. ;
  1597.     break;}
  1598. case 719:
  1599. #line 3509 "preproc.y"
  1600. {
  1601. yyval.str = yyvsp[0].str;
  1602. ;
  1603.     break;}
  1604. case 720:
  1605. #line 3524 "preproc.y"
  1606. {
  1607. yyval.str = cat2_str(yyvsp[-1].str, yyvsp[0].str);
  1608. ;
  1609.     break;}
  1610. case 721:
  1611. #line 3528 "preproc.y"
  1612. { yyval.str = yyvsp[0].str;  ;
  1613.     break;}
  1614. case 722:
  1615. #line 3530 "preproc.y"
  1616. { yyval.str = yyvsp[0].str;  ;
  1617.     break;}
  1618. case 723:
  1619. #line 3532 "preproc.y"
  1620. {
  1621. yyval.str = yyvsp[0].str;
  1622. ;
  1623.     break;}
  1624. case 724:
  1625. #line 3536 "preproc.y"
  1626. { yyval.str = cat2_str(make1_str("-"), yyvsp[0].str); ;
  1627.     break;}
  1628. case 725:
  1629. #line 3538 "preproc.y"
  1630. {       yyval.str = cat2_str(make1_str("%"), yyvsp[0].str); ;
  1631.     break;}
  1632. case 726:
  1633. #line 3540 "preproc.y"
  1634. {       yyval.str = cat2_str(yyvsp[-1].str, make1_str("%")); ;
  1635.     break;}
  1636. case 727:
  1637. #line 3542 "preproc.y"
  1638. { yyval.str = cat3_str(yyvsp[-2].str, make1_str("+"), yyvsp[0].str); ;
  1639.     break;}
  1640. case 728:
  1641. #line 3544 "preproc.y"
  1642. { yyval.str = cat3_str(yyvsp[-2].str, make1_str("-"), yyvsp[0].str); ;
  1643.     break;}
  1644. case 729:
  1645. #line 3546 "preproc.y"
  1646. { yyval.str = cat3_str(yyvsp[-2].str, make1_str("/"), yyvsp[0].str); ;
  1647.     break;}
  1648. case 730:
  1649. #line 3548 "preproc.y"
  1650. { yyval.str = cat3_str(yyvsp[-2].str, make1_str("%"), yyvsp[0].str); ;
  1651.     break;}
  1652. case 731:
  1653. #line 3550 "preproc.y"
  1654. { yyval.str = cat3_str(yyvsp[-2].str, make1_str("*"), yyvsp[0].str); ;
  1655.     break;}
  1656. case 732:
  1657. #line 3552 "preproc.y"
  1658. { yyval.str = cat3_str(yyvsp[-2].str, make1_str("<"), yyvsp[0].str); ;
  1659.     break;}
  1660. case 733:
  1661. #line 3554 "preproc.y"
  1662. { yyval.str = cat3_str(yyvsp[-2].str, make1_str(">"), yyvsp[0].str); ;
  1663.     break;}
  1664. case 734:
  1665. #line 3556 "preproc.y"
  1666. {       yyval.str = cat2_str(yyvsp[-2].str, make1_str("= NULL")); ;
  1667.     break;}
  1668. case 735:
  1669. #line 3558 "preproc.y"
  1670. {       yyval.str = cat2_str(make1_str("= NULL"), yyvsp[0].str); ;
  1671.     break;}
  1672. case 736:
  1673. #line 3560 "preproc.y"
  1674. { yyval.str = cat3_str(yyvsp[-2].str, make1_str("="), yyvsp[0].str); ;
  1675.     break;}
  1676. case 737:
  1677. #line 3565 "preproc.y"
  1678. { yyval.str = cat2_str(make1_str(";"), yyvsp[0].str); ;
  1679.     break;}
  1680. case 738:
  1681. #line 3567 "preproc.y"
  1682. { yyval.str = cat2_str(make1_str("|"), yyvsp[0].str); ;
  1683.     break;}
  1684. case 739:
  1685. #line 3569 "preproc.y"
  1686. {
  1687. yyval.str = cat3_str(yyvsp[-2].str, make1_str("::"), yyvsp[0].str);
  1688. ;
  1689.     break;}
  1690. case 740:
  1691. #line 3573 "preproc.y"
  1692. {
  1693. yyval.str = cat3_str(make2_str(make1_str("cast("), yyvsp[-3].str), make1_str("as"), make2_str(yyvsp[-1].str, make1_str(")")));
  1694. ;
  1695.     break;}
  1696. case 741:
  1697. #line 3577 "preproc.y"
  1698. { yyval.str = make3_str(make1_str("("), yyvsp[-1].str, make1_str(")")); ;
  1699.     break;}
  1700. case 742:
  1701. #line 3579 "preproc.y"
  1702. { yyval.str = cat3_str(yyvsp[-2].str, yyvsp[-1].str, yyvsp[0].str); ;
  1703.     break;}
  1704. case 743:
  1705. #line 3581 "preproc.y"
  1706. { yyval.str = cat3_str(yyvsp[-2].str, make1_str("like"), yyvsp[0].str); ;
  1707.     break;}
  1708. case 744:
  1709. #line 3583 "preproc.y"
  1710. { yyval.str = cat3_str(yyvsp[-3].str, make1_str("not like"), yyvsp[0].str); ;
  1711.     break;}
  1712. case 745:
  1713. #line 3585 "preproc.y"
  1714. { yyval.str = cat2_str(yyvsp[-1].str, yyvsp[0].str); ;
  1715.     break;}
  1716. case 746:
  1717. #line 3587 "preproc.y"
  1718. { yyval.str = cat2_str(yyvsp[-1].str, yyvsp[0].str); ;
  1719.     break;}
  1720. case 747:
  1721. #line 3589 "preproc.y"
  1722. {
  1723. yyval.str = cat2_str(yyvsp[-3].str, make1_str("(*)")); 
  1724. ;
  1725.     break;}
  1726. case 748:
  1727. #line 3593 "preproc.y"
  1728. {
  1729. yyval.str = cat2_str(yyvsp[-2].str, make1_str("()")); 
  1730. ;
  1731.     break;}
  1732. case 749:
  1733. #line 3597 "preproc.y"
  1734. {
  1735. yyval.str = make4_str(yyvsp[-3].str, make1_str("("), yyvsp[-1].str, make1_str(")")); 
  1736. ;
  1737.     break;}
  1738. case 750:
  1739. #line 3601 "preproc.y"
  1740. {
  1741. yyval.str = make1_str("current_date");
  1742. ;
  1743.     break;}
  1744. case 751:
  1745. #line 3605 "preproc.y"
  1746. {
  1747. yyval.str = make1_str("current_time");
  1748. ;
  1749.     break;}
  1750. case 752:
  1751. #line 3609 "preproc.y"
  1752. {
  1753. if (atol(yyvsp[-1].str) != 0)
  1754. fprintf(stderr,"CURRENT_TIME(%s) precision not implemented; zero used instead", yyvsp[-1].str);
  1755. yyval.str = make1_str("current_time");
  1756. ;
  1757.     break;}
  1758. case 753:
  1759. #line 3615 "preproc.y"
  1760. {
  1761. yyval.str = make1_str("current_timestamp");
  1762. ;
  1763.     break;}
  1764. case 754:
  1765. #line 3619 "preproc.y"
  1766. {
  1767. if (atol(yyvsp[-1].str) != 0)
  1768. fprintf(stderr,"CURRENT_TIMESTAMP(%s) precision not implemented; zero used instead",yyvsp[-1].str);
  1769. yyval.str = make1_str("current_timestamp");
  1770. ;
  1771.     break;}
  1772. case 755:
  1773. #line 3625 "preproc.y"
  1774. {
  1775. yyval.str = make1_str("current_user");
  1776. ;
  1777.     break;}
  1778. case 756:
  1779. #line 3629 "preproc.y"
  1780. {
  1781.                  yyval.str = make1_str("user");
  1782.       ;
  1783.     break;}
  1784. case 757:
  1785. #line 3633 "preproc.y"
  1786. {
  1787. yyval.str = make3_str(make1_str("exists("), yyvsp[-1].str, make1_str(")"));
  1788. ;
  1789.     break;}
  1790. case 758:
  1791. #line 3637 "preproc.y"
  1792. {
  1793. yyval.str = make3_str(make1_str("extract("), yyvsp[-1].str, make1_str(")"));
  1794. ;
  1795.     break;}
  1796. case 759:
  1797. #line 3641 "preproc.y"
  1798. {
  1799. yyval.str = make3_str(make1_str("position("), yyvsp[-1].str, make1_str(")"));
  1800. ;
  1801.     break;}
  1802. case 760:
  1803. #line 3645 "preproc.y"
  1804. {
  1805. yyval.str = make3_str(make1_str("substring("), yyvsp[-1].str, make1_str(")"));
  1806. ;
  1807.     break;}
  1808. case 761:
  1809. #line 3650 "preproc.y"
  1810. {
  1811. yyval.str = make3_str(make1_str("trim(both"), yyvsp[-1].str, make1_str(")"));
  1812. ;
  1813.     break;}
  1814. case 762:
  1815. #line 3654 "preproc.y"
  1816. {
  1817. yyval.str = make3_str(make1_str("trim(leading"), yyvsp[-1].str, make1_str(")"));
  1818. ;
  1819.     break;}
  1820. case 763:
  1821. #line 3658 "preproc.y"
  1822. {
  1823. yyval.str = make3_str(make1_str("trim(trailing"), yyvsp[-1].str, make1_str(")"));
  1824. ;
  1825.     break;}
  1826. case 764:
  1827. #line 3662 "preproc.y"
  1828. {
  1829. yyval.str = make3_str(make1_str("trim("), yyvsp[-1].str, make1_str(")"));
  1830. ;
  1831.     break;}
  1832. case 765:
  1833. #line 3666 "preproc.y"
  1834. { yyval.str = cat2_str(yyvsp[-1].str, make1_str("isnull")); ;
  1835.     break;}
  1836. case 766:
  1837. #line 3668 "preproc.y"
  1838. { yyval.str = cat2_str(yyvsp[-2].str, make1_str("is null")); ;
  1839.     break;}
  1840. case 767:
  1841. #line 3670 "preproc.y"
  1842. { yyval.str = cat2_str(yyvsp[-1].str, make1_str("notnull")); ;
  1843.     break;}
  1844. case 768:
  1845. #line 3672 "preproc.y"
  1846. { yyval.str = cat2_str(yyvsp[-3].str, make1_str("is not null")); ;
  1847.     break;}
  1848. case 769:
  1849. #line 3679 "preproc.y"
  1850. {
  1851. { yyval.str = cat2_str(yyvsp[-2].str, make1_str("is true")); }
  1852. ;
  1853.     break;}
  1854. case 770:
  1855. #line 3683 "preproc.y"
  1856. {
  1857. { yyval.str = cat2_str(yyvsp[-3].str, make1_str("is not false")); }
  1858. ;
  1859.     break;}
  1860. case 771:
  1861. #line 3687 "preproc.y"
  1862. {
  1863. { yyval.str = cat2_str(yyvsp[-2].str, make1_str("is false")); }
  1864. ;
  1865.     break;}
  1866. case 772:
  1867. #line 3691 "preproc.y"
  1868. {
  1869. { yyval.str = cat2_str(yyvsp[-3].str, make1_str("is not true")); }
  1870. ;
  1871.     break;}
  1872. case 773:
  1873. #line 3695 "preproc.y"
  1874. {
  1875. yyval.str = cat5_str(yyvsp[-4].str, make1_str("between"), yyvsp[-2].str, make1_str("and"), yyvsp[0].str); 
  1876. ;
  1877.     break;}
  1878. case 774:
  1879. #line 3699 "preproc.y"
  1880. {
  1881. yyval.str = cat5_str(yyvsp[-5].str, make1_str("not between"), yyvsp[-2].str, make1_str("and"), yyvsp[0].str); 
  1882. ;
  1883.     break;}
  1884. case 775:
  1885. #line 3703 "preproc.y"
  1886. {
  1887. yyval.str = make4_str(yyvsp[-4].str, make1_str(" in ("), yyvsp[-1].str, make1_str(")")); 
  1888. ;
  1889.     break;}
  1890. case 776:
  1891. #line 3707 "preproc.y"
  1892. {
  1893. yyval.str = make4_str(yyvsp[-5].str, make1_str(" not in ("), yyvsp[-1].str, make1_str(")")); 
  1894. ;
  1895.     break;}
  1896. case 777:
  1897. #line 3711 "preproc.y"
  1898. {
  1899. yyval.str = cat3_str(yyvsp[-4].str, yyvsp[-3].str, make3_str(make1_str("("), yyvsp[-1].str, make1_str(")"))); 
  1900. ;
  1901.     break;}
  1902. case 778:
  1903. #line 3715 "preproc.y"
  1904. {
  1905. yyval.str = make4_str(yyvsp[-4].str, make1_str("+("), yyvsp[-1].str, make1_str(")")); 
  1906. ;
  1907.     break;}
  1908. case 779:
  1909. #line 3719 "preproc.y"
  1910. {
  1911. yyval.str = make4_str(yyvsp[-4].str, make1_str("-("), yyvsp[-1].str, make1_str(")")); 
  1912. ;
  1913.     break;}
  1914. case 780:
  1915. #line 3723 "preproc.y"
  1916. {
  1917. yyval.str = make4_str(yyvsp[-4].str, make1_str("/("), yyvsp[-1].str, make1_str(")")); 
  1918. ;
  1919.     break;}
  1920. case 781:
  1921. #line 3727 "preproc.y"
  1922. {
  1923. yyval.str = make4_str(yyvsp[-4].str, make1_str("%("), yyvsp[-1].str, make1_str(")")); 
  1924. ;
  1925.     break;}
  1926. case 782:
  1927. #line 3731 "preproc.y"
  1928. {
  1929. yyval.str = make4_str(yyvsp[-4].str, make1_str("*("), yyvsp[-1].str, make1_str(")")); 
  1930. ;
  1931.     break;}
  1932. case 783:
  1933. #line 3735 "preproc.y"
  1934. {
  1935. yyval.str = make4_str(yyvsp[-4].str, make1_str("<("), yyvsp[-1].str, make1_str(")")); 
  1936. ;
  1937.     break;}
  1938. case 784:
  1939. #line 3739 "preproc.y"
  1940. {
  1941. yyval.str = make4_str(yyvsp[-4].str, make1_str(">("), yyvsp[-1].str, make1_str(")")); 
  1942. ;
  1943.     break;}
  1944. case 785:
  1945. #line 3743 "preproc.y"
  1946. {
  1947. yyval.str = make4_str(yyvsp[-4].str, make1_str("=("), yyvsp[-1].str, make1_str(")")); 
  1948. ;
  1949.     break;}
  1950. case 786:
  1951. #line 3747 "preproc.y"
  1952. {
  1953. yyval.str = cat3_str(yyvsp[-5].str, yyvsp[-4].str, make3_str(make1_str("any("), yyvsp[-1].str, make1_str(")"))); 
  1954. ;
  1955.     break;}
  1956. case 787:
  1957. #line 3751 "preproc.y"
  1958. {
  1959. yyval.str = make4_str(yyvsp[-5].str, make1_str("+ any("), yyvsp[-1].str, make1_str(")")); 
  1960. ;
  1961.     break;}
  1962. case 788:
  1963. #line 3755 "preproc.y"
  1964. {
  1965. yyval.str = make4_str(yyvsp[-5].str, make1_str("- any("), yyvsp[-1].str, make1_str(")")); 
  1966. ;
  1967.     break;}
  1968. case 789:
  1969. #line 3759 "preproc.y"
  1970. {
  1971. yyval.str = make4_str(yyvsp[-5].str, make1_str("/ any("), yyvsp[-1].str, make1_str(")")); 
  1972. ;
  1973.     break;}
  1974. case 790:
  1975. #line 3763 "preproc.y"
  1976. {
  1977. yyval.str = make4_str(yyvsp[-5].str, make1_str("% any("), yyvsp[-1].str, make1_str(")")); 
  1978. ;
  1979.     break;}
  1980. case 791:
  1981. #line 3767 "preproc.y"
  1982. {
  1983. yyval.str = make4_str(yyvsp[-5].str, make1_str("* any("), yyvsp[-1].str, make1_str(")")); 
  1984. ;
  1985.     break;}
  1986. case 792:
  1987. #line 3771 "preproc.y"
  1988. {
  1989. yyval.str = make4_str(yyvsp[-5].str, make1_str("< any("), yyvsp[-1].str, make1_str(")")); 
  1990. ;
  1991.     break;}
  1992. case 793:
  1993. #line 3775 "preproc.y"
  1994. {
  1995. yyval.str = make4_str(yyvsp[-5].str, make1_str("> any("), yyvsp[-1].str, make1_str(")")); 
  1996. ;
  1997.     break;}
  1998. case 794:
  1999. #line 3779 "preproc.y"
  2000. {
  2001. yyval.str = make4_str(yyvsp[-5].str, make1_str("= any("), yyvsp[-1].str, make1_str(")")); 
  2002. ;
  2003.     break;}
  2004. case 795:
  2005. #line 3783 "preproc.y"
  2006. {
  2007. yyval.str = cat3_str(yyvsp[-5].str, yyvsp[-4].str, make3_str(make1_str("all ("), yyvsp[-1].str, make1_str(")"))); 
  2008. ;
  2009.     break;}
  2010. case 796:
  2011. #line 3787 "preproc.y"
  2012. {
  2013. yyval.str = make4_str(yyvsp[-5].str, make1_str("+ all("), yyvsp[-1].str, make1_str(")")); 
  2014. ;
  2015.     break;}
  2016. case 797:
  2017. #line 3791 "preproc.y"
  2018. {
  2019. yyval.str = make4_str(yyvsp[-5].str, make1_str("- all("), yyvsp[-1].str, make1_str(")")); 
  2020. ;
  2021.     break;}
  2022. case 798:
  2023. #line 3795 "preproc.y"
  2024. {
  2025. yyval.str = make4_str(yyvsp[-5].str, make1_str("/ all("), yyvsp[-1].str, make1_str(")")); 
  2026. ;
  2027.     break;}
  2028. case 799:
  2029. #line 3799 "preproc.y"
  2030. {
  2031. yyval.str = make4_str(yyvsp[-5].str, make1_str("% all("), yyvsp[-1].str, make1_str(")")); 
  2032. ;
  2033.     break;}
  2034. case 800:
  2035. #line 3803 "preproc.y"
  2036. {
  2037. yyval.str = make4_str(yyvsp[-5].str, make1_str("* all("), yyvsp[-1].str, make1_str(")")); 
  2038. ;
  2039.     break;}
  2040. case 801:
  2041. #line 3807 "preproc.y"
  2042. {
  2043. yyval.str = make4_str(yyvsp[-5].str, make1_str("< all("), yyvsp[-1].str, make1_str(")")); 
  2044. ;
  2045.     break;}
  2046. case 802:
  2047. #line 3811 "preproc.y"
  2048. {
  2049. yyval.str = make4_str(yyvsp[-5].str, make1_str("> all("), yyvsp[-1].str, make1_str(")")); 
  2050. ;
  2051.     break;}
  2052. case 803:
  2053. #line 3815 "preproc.y"
  2054. {
  2055. yyval.str = make4_str(yyvsp[-5].str, make1_str("= all("), yyvsp[-1].str, make1_str(")")); 
  2056. ;
  2057.     break;}
  2058. case 804:
  2059. #line 3819 "preproc.y"
  2060. { yyval.str = cat3_str(yyvsp[-2].str, make1_str("and"), yyvsp[0].str); ;
  2061.     break;}
  2062. case 805:
  2063. #line 3821 "preproc.y"
  2064. { yyval.str = cat3_str(yyvsp[-2].str, make1_str("or"), yyvsp[0].str); ;
  2065.     break;}
  2066. case 806:
  2067. #line 3823 "preproc.y"
  2068. { yyval.str = cat2_str(make1_str("not"), yyvsp[0].str); ;
  2069.     break;}
  2070. case 807:
  2071. #line 3825 "preproc.y"
  2072. {       yyval.str = yyvsp[0].str; ;
  2073.     break;}
  2074. case 808:
  2075. #line 3827 "preproc.y"
  2076. { yyval.str = make1_str("?"); ;
  2077.     break;}
  2078. case 809:
  2079. #line 3836 "preproc.y"
  2080. {
  2081. yyval.str = cat2_str(yyvsp[-1].str, yyvsp[0].str);
  2082. ;
  2083.     break;}
  2084. case 810:
  2085. #line 3840 "preproc.y"
  2086. { yyval.str = yyvsp[0].str;  ;
  2087.     break;}
  2088. case 811:
  2089. #line 3842 "preproc.y"
  2090. {
  2091. yyval.str = yyvsp[0].str;
  2092. ;
  2093.     break;}
  2094. case 812:
  2095. #line 3846 "preproc.y"
  2096. { yyval.str = cat2_str(make1_str("-"), yyvsp[0].str); ;
  2097.     break;}
  2098. case 813:
  2099. #line 3848 "preproc.y"
  2100. {       yyval.str = cat2_str(make1_str("%"), yyvsp[0].str); ;
  2101.     break;}
  2102. case 814:
  2103. #line 3850 "preproc.y"
  2104. {       yyval.str = cat2_str(yyvsp[-1].str, make1_str("%")); ;
  2105.     break;}
  2106. case 815:
  2107. #line 3852 "preproc.y"
  2108. { yyval.str = cat3_str(yyvsp[-2].str, make1_str("+"), yyvsp[0].str); ;
  2109.     break;}
  2110. case 816:
  2111. #line 3854 "preproc.y"
  2112. { yyval.str = cat3_str(yyvsp[-2].str, make1_str("-"), yyvsp[0].str); ;
  2113.     break;}
  2114. case 817:
  2115. #line 3856 "preproc.y"
  2116. { yyval.str = cat3_str(yyvsp[-2].str, make1_str("/"), yyvsp[0].str); ;
  2117.     break;}
  2118. case 818:
  2119. #line 3858 "preproc.y"
  2120. { yyval.str = cat3_str(yyvsp[-2].str, make1_str("%"), yyvsp[0].str); ;
  2121.     break;}
  2122. case 819:
  2123. #line 3860 "preproc.y"
  2124. { yyval.str = cat3_str(yyvsp[-2].str, make1_str("*"), yyvsp[0].str); ;
  2125.     break;}
  2126. case 820:
  2127. #line 3865 "preproc.y"
  2128. { yyval.str = cat2_str(make1_str(";"), yyvsp[0].str); ;
  2129.     break;}
  2130. case 821:
  2131. #line 3867 "preproc.y"
  2132. { yyval.str = cat2_str(make1_str("|"), yyvsp[0].str); ;
  2133.     break;}
  2134. case 822:
  2135. #line 3869 "preproc.y"
  2136. {
  2137. yyval.str = cat3_str(yyvsp[-2].str, make1_str("::"), yyvsp[0].str);
  2138. ;
  2139.     break;}
  2140. case 823:
  2141. #line 3873 "preproc.y"
  2142. {
  2143. yyval.str = cat3_str(make2_str(make1_str("cast("), yyvsp[-3].str), make1_str("as"), make2_str(yyvsp[-1].str, make1_str(")")));
  2144. ;
  2145.     break;}
  2146. case 824:
  2147. #line 3877 "preproc.y"
  2148. { yyval.str = make3_str(make1_str("("), yyvsp[-1].str, make1_str(")")); ;
  2149.     break;}
  2150. case 825:
  2151. #line 3879 "preproc.y"
  2152. { yyval.str = cat3_str(yyvsp[-2].str, yyvsp[-1].str, yyvsp[0].str); ;
  2153.     break;}
  2154. case 826:
  2155. #line 3881 "preproc.y"
  2156. { yyval.str = cat2_str(yyvsp[-1].str, yyvsp[0].str); ;
  2157.     break;}
  2158. case 827:
  2159. #line 3883 "preproc.y"
  2160. { yyval.str = cat2_str(yyvsp[-1].str, yyvsp[0].str); ;
  2161.     break;}
  2162. case 828:
  2163. #line 3885 "preproc.y"
  2164. {
  2165. yyval.str = cat2_str(yyvsp[-2].str, make1_str("()")); 
  2166. ;
  2167.     break;}
  2168. case 829:
  2169. #line 3889 "preproc.y"
  2170. {
  2171. yyval.str = make4_str(yyvsp[-3].str, make1_str("("), yyvsp[-1].str, make1_str(")")); 
  2172. ;
  2173.     break;}
  2174. case 830:
  2175. #line 3893 "preproc.y"
  2176. {
  2177. yyval.str = make1_str("current_date");
  2178. ;
  2179.     break;}
  2180. case 831:
  2181. #line 3897 "preproc.y"
  2182. {
  2183. yyval.str = make1_str("current_time");
  2184. ;
  2185.     break;}
  2186. case 832:
  2187. #line 3901 "preproc.y"
  2188. {
  2189. if (yyvsp[-1].str != 0)
  2190. fprintf(stderr,"CURRENT_TIME(%s) precision not implemented; zero used instead", yyvsp[-1].str);
  2191. yyval.str = make1_str("current_time");
  2192. ;
  2193.     break;}
  2194. case 833:
  2195. #line 3907 "preproc.y"
  2196. {
  2197. yyval.str = make1_str("current_timestamp");
  2198. ;
  2199.     break;}
  2200. case 834:
  2201. #line 3911 "preproc.y"
  2202. {
  2203. if (atol(yyvsp[-1].str) != 0)
  2204. fprintf(stderr,"CURRENT_TIMESTAMP(%s) precision not implemented; zero used instead",yyvsp[-1].str);
  2205. yyval.str = make1_str("current_timestamp");
  2206. ;
  2207.     break;}
  2208. case 835:
  2209. #line 3917 "preproc.y"
  2210. {
  2211. yyval.str = make1_str("current_user");
  2212. ;
  2213.     break;}
  2214. case 836:
  2215. #line 3921 "preproc.y"
  2216. {
  2217. yyval.str = make1_str("user");
  2218. ;
  2219.     break;}
  2220. case 837:
  2221. #line 3925 "preproc.y"
  2222. {
  2223. yyval.str = make3_str(make1_str("position ("), yyvsp[-1].str, make1_str(")"));
  2224. ;
  2225.     break;}
  2226. case 838:
  2227. #line 3929 "preproc.y"
  2228. {
  2229. yyval.str = make3_str(make1_str("substring ("), yyvsp[-1].str, make1_str(")"));
  2230. ;
  2231.     break;}
  2232. case 839:
  2233. #line 3934 "preproc.y"
  2234. {
  2235. yyval.str = make3_str(make1_str("trim(both"), yyvsp[-1].str, make1_str(")"));
  2236. ;
  2237.     break;}
  2238. case 840:
  2239. #line 3938 "preproc.y"
  2240. {
  2241. yyval.str = make3_str(make1_str("trim(leading"), yyvsp[-1].str, make1_str(")"));
  2242. ;
  2243.     break;}
  2244. case 841:
  2245. #line 3942 "preproc.y"
  2246. {
  2247. yyval.str = make3_str(make1_str("trim(trailing"), yyvsp[-1].str, make1_str(")"));
  2248. ;
  2249.     break;}
  2250. case 842:
  2251. #line 3946 "preproc.y"
  2252. {
  2253. yyval.str = make3_str(make1_str("trim("), yyvsp[-1].str, make1_str(")"));
  2254. ;
  2255.     break;}
  2256. case 843:
  2257. #line 3950 "preproc.y"
  2258. {  yyval.str = yyvsp[0].str; ;
  2259.     break;}
  2260. case 844:
  2261. #line 3954 "preproc.y"
  2262. {
  2263. yyval.str = cat4_str(make1_str("["), yyvsp[-2].str, make1_str("]"), yyvsp[0].str);
  2264. ;
  2265.     break;}
  2266. case 845:
  2267. #line 3958 "preproc.y"
  2268. {
  2269. yyval.str = cat2_str(cat5_str(make1_str("["), yyvsp[-4].str, make1_str(":"), yyvsp[-2].str, make1_str("]")), yyvsp[0].str);
  2270. ;
  2271.     break;}
  2272. case 846:
  2273. #line 3962 "preproc.y"
  2274. { yyval.str = make1_str(""); ;
  2275.     break;}
  2276. case 847:
  2277. #line 3966 "preproc.y"
  2278. { yyval.str = yyvsp[0].str; ;
  2279.     break;}
  2280. case 848:
  2281. #line 3968 "preproc.y"
  2282. { yyval.str = cat3_str(yyvsp[-2].str, make1_str(","), yyvsp[0].str); ;
  2283.     break;}
  2284. case 849:
  2285. #line 3970 "preproc.y"
  2286. { yyval.str = cat3_str(yyvsp[-2].str, make1_str("using"), yyvsp[0].str); ;
  2287.     break;}
  2288. case 850:
  2289. #line 3974 "preproc.y"
  2290. {
  2291. yyval.str = cat3_str(yyvsp[-2].str, make1_str("from"), yyvsp[0].str);
  2292. ;
  2293.     break;}
  2294. case 851:
  2295. #line 3978 "preproc.y"
  2296. { yyval.str = make1_str(""); ;
  2297.     break;}
  2298. case 852:
  2299. #line 3980 "preproc.y"
  2300. { yyval.str = make1_str("?"); ;
  2301.     break;}
  2302. case 853:
  2303. #line 3983 "preproc.y"
  2304. { yyval.str = yyvsp[0].str; ;
  2305.     break;}
  2306. case 854:
  2307. #line 3984 "preproc.y"
  2308. { yyval.str = make1_str("timezone_hour"); ;
  2309.     break;}
  2310. case 855:
  2311. #line 3985 "preproc.y"
  2312. { yyval.str = make1_str("timezone_minute"); ;
  2313.     break;}
  2314. case 856:
  2315. #line 3989 "preproc.y"
  2316. { yyval.str = cat3_str(yyvsp[-2].str, make1_str("in"), yyvsp[0].str); ;
  2317.     break;}
  2318. case 857:
  2319. #line 3991 "preproc.y"
  2320. { yyval.str = make1_str(""); ;
  2321.     break;}
  2322. case 858:
  2323. #line 3995 "preproc.y"
  2324. {
  2325. yyval.str = cat2_str(yyvsp[-1].str, yyvsp[0].str);
  2326. ;
  2327.     break;}
  2328. case 859:
  2329. #line 3999 "preproc.y"
  2330. { yyval.str = yyvsp[0].str;  ;
  2331.     break;}
  2332. case 860:
  2333. #line 4001 "preproc.y"
  2334. { yyval.str = cat2_str(make1_str("-"), yyvsp[0].str); ;
  2335.     break;}
  2336. case 861:
  2337. #line 4003 "preproc.y"
  2338. { yyval.str = cat3_str(yyvsp[-2].str, make1_str("+"), yyvsp[0].str); ;
  2339.     break;}
  2340. case 862:
  2341. #line 4005 "preproc.y"
  2342. { yyval.str = cat3_str(yyvsp[-2].str, make1_str("-"), yyvsp[0].str); ;
  2343.     break;}
  2344. case 863:
  2345. #line 4007 "preproc.y"
  2346. { yyval.str = cat3_str(yyvsp[-2].str, make1_str("/"), yyvsp[0].str); ;
  2347.     break;}
  2348. case 864:
  2349. #line 4009 "preproc.y"
  2350. { yyval.str = cat3_str(yyvsp[-2].str, make1_str("%"), yyvsp[0].str); ;
  2351.     break;}
  2352. case 865:
  2353. #line 4011 "preproc.y"
  2354. { yyval.str = cat3_str(yyvsp[-2].str, make1_str("*"), yyvsp[0].str); ;
  2355.     break;}
  2356. case 866:
  2357. #line 4013 "preproc.y"
  2358. { yyval.str = cat2_str(make1_str("|"), yyvsp[0].str); ;
  2359.     break;}
  2360. case 867:
  2361. #line 4015 "preproc.y"
  2362. {
  2363. yyval.str = cat3_str(yyvsp[-2].str, make1_str("::"), yyvsp[0].str);
  2364. ;
  2365.     break;}
  2366. case 868:
  2367. #line 4019 "preproc.y"
  2368. {
  2369. yyval.str = cat3_str(make2_str(make1_str("cast("), yyvsp[-3].str), make1_str("as"), make2_str(yyvsp[-1].str, make1_str(")")));
  2370. ;
  2371.     break;}
  2372. case 869:
  2373. #line 4023 "preproc.y"
  2374. { yyval.str = make3_str(make1_str("("), yyvsp[-1].str, make1_str(")")); ;
  2375.     break;}
  2376. case 870:
  2377. #line 4025 "preproc.y"
  2378. { yyval.str = cat3_str(yyvsp[-2].str, yyvsp[-1].str, yyvsp[0].str); ;
  2379.     break;}
  2380. case 871:
  2381. #line 4027 "preproc.y"
  2382. { yyval.str = cat2_str(yyvsp[-1].str, yyvsp[0].str); ;
  2383.     break;}
  2384. case 872:
  2385. #line 4029 "preproc.y"
  2386. { yyval.str = cat2_str(yyvsp[-1].str, yyvsp[0].str); ;
  2387.     break;}
  2388. case 873:
  2389. #line 4031 "preproc.y"
  2390. {
  2391. yyval.str = yyvsp[0].str;
  2392. ;
  2393.     break;}
  2394. case 874:
  2395. #line 4035 "preproc.y"
  2396. {
  2397. yyval.str = cat2_str(yyvsp[-2].str, make1_str("()"));
  2398. ;
  2399.     break;}
  2400. case 875:
  2401. #line 4039 "preproc.y"
  2402. {
  2403. yyval.str = make4_str(yyvsp[-3].str, make1_str("("), yyvsp[-1].str, make1_str(")"));
  2404. ;
  2405.     break;}
  2406. case 876:
  2407. #line 4043 "preproc.y"
  2408. {
  2409. yyval.str = make3_str(make1_str("position("), yyvsp[-1].str, make1_str(")"));
  2410. ;
  2411.     break;}
  2412. case 877:
  2413. #line 4047 "preproc.y"
  2414. {
  2415. yyval.str = make3_str(make1_str("substring("), yyvsp[-1].str, make1_str(")"));
  2416. ;
  2417.     break;}
  2418. case 878:
  2419. #line 4052 "preproc.y"
  2420. {
  2421. yyval.str = make3_str(make1_str("trim(both"), yyvsp[-1].str, make1_str(")"));
  2422. ;
  2423.     break;}
  2424. case 879:
  2425. #line 4056 "preproc.y"
  2426. {
  2427. yyval.str = make3_str(make1_str("trim(leading"), yyvsp[-1].str, make1_str(")"));
  2428. ;
  2429.     break;}
  2430. case 880:
  2431. #line 4060 "preproc.y"
  2432. {
  2433. yyval.str = make3_str(make1_str("trim(trailing"), yyvsp[-1].str, make1_str(")"));
  2434. ;
  2435.     break;}
  2436. case 881:
  2437. #line 4064 "preproc.y"
  2438. {
  2439. yyval.str = make3_str(make1_str("trim("), yyvsp[-1].str, make1_str(")"));
  2440. ;
  2441.     break;}
  2442. case 882:
  2443. #line 4070 "preproc.y"
  2444. {
  2445. yyval.str = cat3_str(yyvsp[-2].str, yyvsp[-1].str, yyvsp[0].str);
  2446. ;
  2447.     break;}
  2448. case 883:
  2449. #line 4074 "preproc.y"
  2450. { yyval.str = make1_str(""); ;
  2451.     break;}
  2452. case 884:
  2453. #line 4078 "preproc.y"
  2454. { yyval.str = cat2_str(make1_str("from"), yyvsp[0].str); ;
  2455.     break;}
  2456. case 885:
  2457. #line 4080 "preproc.y"
  2458. {
  2459. yyval.str = make1_str("");
  2460. ;
  2461.     break;}
  2462. case 886:
  2463. #line 4086 "preproc.y"
  2464. { yyval.str = cat2_str(make1_str("for"), yyvsp[0].str); ;
  2465.     break;}
  2466. case 887:
  2467. #line 4088 "preproc.y"
  2468. { yyval.str = make1_str(""); ;
  2469.     break;}
  2470. case 888:
  2471. #line 4092 "preproc.y"
  2472. { yyval.str = cat3_str(yyvsp[-2].str, make1_str("from"), yyvsp[0].str); ;
  2473.     break;}
  2474. case 889:
  2475. #line 4094 "preproc.y"
  2476. { yyval.str = cat2_str(make1_str("from"), yyvsp[0].str); ;
  2477.     break;}
  2478. case 890:
  2479. #line 4096 "preproc.y"
  2480. { yyval.str = yyvsp[0].str; ;
  2481.     break;}
  2482. case 891:
  2483. #line 4100 "preproc.y"
  2484. {
  2485. yyval.str = yyvsp[0].str;
  2486. ;
  2487.     break;}
  2488. case 892:
  2489. #line 4104 "preproc.y"
  2490. { yyval.str = yyvsp[0].str; ;
  2491.     break;}
  2492. case 893:
  2493. #line 4108 "preproc.y"
  2494. { yyval.str = yyvsp[0].str; ;
  2495.     break;}
  2496. case 894:
  2497. #line 4110 "preproc.y"
  2498. { yyval.str = cat3_str(yyvsp[-2].str, make1_str(","), yyvsp[0].str);;
  2499.     break;}
  2500. case 895:
  2501. #line 4114 "preproc.y"
  2502. {
  2503. yyval.str = yyvsp[0].str; 
  2504. ;
  2505.     break;}
  2506. case 896:
  2507. #line 4118 "preproc.y"
  2508. { yyval.str = yyvsp[0].str; ;
  2509.     break;}
  2510. case 897:
  2511. #line 4122 "preproc.y"
  2512. { yyval.str = yyvsp[0].str; ;
  2513.     break;}
  2514. case 898:
  2515. #line 4124 "preproc.y"
  2516. { yyval.str = cat3_str(yyvsp[-2].str, make1_str(","), yyvsp[0].str);;
  2517.     break;}
  2518. case 899:
  2519. #line 4143 "preproc.y"
  2520. { yyval.str = cat5_str(make1_str("case"), yyvsp[-3].str, yyvsp[-2].str, yyvsp[-1].str, make1_str("end")); ;
  2521.     break;}
  2522. case 900:
  2523. #line 4145 "preproc.y"
  2524. {
  2525. yyval.str = cat5_str(make1_str("nullif("), yyvsp[-3].str, make1_str(","), yyvsp[-1].str, make1_str(")"));
  2526. fprintf(stderr, "NULLIF() not yet fully implemented");
  2527.                                 ;
  2528.     break;}
  2529. case 901:
  2530. #line 4151 "preproc.y"
  2531. {
  2532. yyval.str = cat3_str(make1_str("coalesce("), yyvsp[-1].str, make1_str(")"));
  2533. ;
  2534.     break;}
  2535. case 902:
  2536. #line 4157 "preproc.y"
  2537. { yyval.str = cat2_str(yyvsp[-1].str, yyvsp[0].str); ;
  2538.     break;}
  2539. case 903:
  2540. #line 4159 "preproc.y"
  2541. { yyval.str = yyvsp[0].str; ;
  2542.     break;}
  2543. case 904:
  2544. #line 4163 "preproc.y"
  2545. {
  2546. yyval.str = cat4_str(make1_str("when"), yyvsp[-2].str, make1_str("then"), yyvsp[0].str);
  2547.                                ;
  2548.     break;}
  2549. case 905:
  2550. #line 4168 "preproc.y"
  2551. { yyval.str = cat2_str(make1_str("else"), yyvsp[0].str); ;
  2552.     break;}
  2553. case 906:
  2554. #line 4169 "preproc.y"
  2555. { yyval.str = make1_str(""); ;
  2556.     break;}
  2557. case 907:
  2558. #line 4173 "preproc.y"
  2559. {
  2560.                                        yyval.str = cat2_str(yyvsp[-1].str, yyvsp[0].str);
  2561.                                ;
  2562.     break;}
  2563. case 908:
  2564. #line 4177 "preproc.y"
  2565. {
  2566.                                        yyval.str = yyvsp[0].str;
  2567.                                ;
  2568.     break;}
  2569. case 909:
  2570. #line 4181 "preproc.y"
  2571. {       yyval.str = make1_str(""); ;
  2572.     break;}
  2573. case 910:
  2574. #line 4185 "preproc.y"
  2575. {
  2576. yyval.str = make3_str(yyvsp[-2].str, make1_str("."), yyvsp[0].str);
  2577. ;
  2578.     break;}
  2579. case 911:
  2580. #line 4189 "preproc.y"
  2581. {
  2582. yyval.str = make3_str(yyvsp[-2].str, make1_str("."), yyvsp[0].str);
  2583. ;
  2584.     break;}
  2585. case 912:
  2586. #line 4195 "preproc.y"
  2587. { yyval.str = yyvsp[0].str; ;
  2588.     break;}
  2589. case 913:
  2590. #line 4197 "preproc.y"
  2591. { yyval.str = make3_str(yyvsp[-2].str, make1_str("."), yyvsp[0].str); ;
  2592.     break;}
  2593. case 914:
  2594. #line 4199 "preproc.y"
  2595. { yyval.str = make2_str(yyvsp[-2].str, make1_str(".*")); ;
  2596.     break;}
  2597. case 915:
  2598. #line 4210 "preproc.y"
  2599. { yyval.str = cat3_str(yyvsp[-2].str, make1_str(","),yyvsp[0].str);  ;
  2600.     break;}
  2601. case 916:
  2602. #line 4212 "preproc.y"
  2603. { yyval.str = yyvsp[0].str;  ;
  2604.     break;}
  2605. case 917:
  2606. #line 4213 "preproc.y"
  2607. { yyval.str = make1_str("*"); ;
  2608.     break;}
  2609. case 918:
  2610. #line 4217 "preproc.y"
  2611. {
  2612. yyval.str = cat4_str(yyvsp[-3].str, yyvsp[-2].str, make1_str("="), yyvsp[0].str);
  2613. ;
  2614.     break;}
  2615. case 919:
  2616. #line 4221 "preproc.y"
  2617. {
  2618. yyval.str = cat2_str(yyvsp[-1].str, yyvsp[0].str);
  2619. ;
  2620.     break;}
  2621. case 920:
  2622. #line 4225 "preproc.y"
  2623. {
  2624. yyval.str = make2_str(yyvsp[-2].str, make1_str(".*"));
  2625. ;
  2626.     break;}
  2627. case 921:
  2628. #line 4236 "preproc.y"
  2629. { yyval.str = cat3_str(yyvsp[-2].str, make1_str(","), yyvsp[0].str);  ;
  2630.     break;}
  2631. case 922:
  2632. #line 4238 "preproc.y"
  2633. { yyval.str = yyvsp[0].str;  ;
  2634.     break;}
  2635. case 923:
  2636. #line 4243 "preproc.y"
  2637. {
  2638. yyval.str = cat3_str(yyvsp[-2].str, make1_str("as"), yyvsp[0].str);
  2639. ;
  2640.     break;}
  2641. case 924:
  2642. #line 4247 "preproc.y"
  2643. {
  2644. yyval.str = yyvsp[0].str;
  2645. ;
  2646.     break;}
  2647. case 925:
  2648. #line 4251 "preproc.y"
  2649. {
  2650. yyval.str = make2_str(yyvsp[-2].str, make1_str(".*"));
  2651. ;
  2652.     break;}
  2653. case 926:
  2654. #line 4255 "preproc.y"
  2655. {
  2656. yyval.str = make1_str("*");
  2657. ;
  2658.     break;}
  2659. case 927:
  2660. #line 4260 "preproc.y"
  2661. { yyval.str = yyvsp[0].str; ;
  2662.     break;}
  2663. case 928:
  2664. #line 4261 "preproc.y"
  2665. { yyval.str = make1_str(""); ;
  2666.     break;}
  2667. case 929:
  2668. #line 4265 "preproc.y"
  2669. {
  2670. yyval.str = yyvsp[0].str;
  2671. ;
  2672.     break;}
  2673. case 930:
  2674. #line 4269 "preproc.y"
  2675. {
  2676. /* disallow refs to variable system tables */
  2677. if (strcmp(LogRelationName, yyvsp[0].str) == 0
  2678.    || strcmp(VariableRelationName, yyvsp[0].str) == 0) {
  2679. sprintf(errortext, make1_str("%s cannot be accessed by users"),yyvsp[0].str);
  2680. yyerror(errortext);
  2681. }
  2682. else
  2683. yyval.str = yyvsp[0].str;
  2684. ;
  2685.     break;}
  2686. case 931:
  2687. #line 4281 "preproc.y"
  2688. { yyval.str = yyvsp[0].str; ;
  2689.     break;}
  2690. case 932:
  2691. #line 4282 "preproc.y"
  2692. { yyval.str = yyvsp[0].str; ;
  2693.     break;}
  2694. case 933:
  2695. #line 4283 "preproc.y"
  2696. { yyval.str = yyvsp[0].str; ;
  2697.     break;}
  2698. case 934:
  2699. #line 4284 "preproc.y"
  2700. { yyval.str = yyvsp[0].str; ;
  2701.     break;}
  2702. case 935:
  2703. #line 4285 "preproc.y"
  2704. { yyval.str = yyvsp[0].str; ;
  2705.     break;}
  2706. case 936:
  2707. #line 4291 "preproc.y"
  2708. { yyval.str = yyvsp[0].str; ;
  2709.     break;}
  2710. case 937:
  2711. #line 4292 "preproc.y"
  2712. { yyval.str = yyvsp[0].str; ;
  2713.     break;}
  2714. case 938:
  2715. #line 4294 "preproc.y"
  2716. { yyval.str = yyvsp[0].str; ;
  2717.     break;}
  2718. case 939:
  2719. #line 4301 "preproc.y"
  2720. {
  2721. yyval.str = yyvsp[0].str;
  2722. ;
  2723.     break;}
  2724. case 940:
  2725. #line 4305 "preproc.y"
  2726. {
  2727. yyval.str = yyvsp[0].str;
  2728. ;
  2729.     break;}
  2730. case 941:
  2731. #line 4309 "preproc.y"
  2732. {
  2733. yyval.str = yyvsp[0].str;
  2734. ;
  2735.     break;}
  2736. case 942:
  2737. #line 4313 "preproc.y"
  2738. {
  2739. yyval.str = cat2_str(yyvsp[-1].str, yyvsp[0].str);
  2740. ;
  2741.     break;}
  2742. case 943:
  2743. #line 4317 "preproc.y"
  2744. { yyval.str = yyvsp[0].str;  ;
  2745.     break;}
  2746. case 944:
  2747. #line 4319 "preproc.y"
  2748. {
  2749. yyval.str = make1_str("true");
  2750. ;
  2751.     break;}
  2752. case 945:
  2753. #line 4323 "preproc.y"
  2754. {
  2755. yyval.str = make1_str("false");
  2756. ;
  2757.     break;}
  2758. case 946:
  2759. #line 4329 "preproc.y"
  2760. {
  2761. yyval.str = cat2_str(make_name(), yyvsp[0].str);
  2762. ;
  2763.     break;}
  2764. case 947:
  2765. #line 4334 "preproc.y"
  2766. { yyval.str = make_name();;
  2767.     break;}
  2768. case 948:
  2769. #line 4335 "preproc.y"
  2770. { yyval.str = make_name();;
  2771.     break;}
  2772. case 949:
  2773. #line 4336 "preproc.y"
  2774. {
  2775. yyval.str = (char *)mm_alloc(strlen(yyvsp[0].str) + 3);
  2776. yyval.str[0]=''';
  2777.               strcpy(yyval.str+1, yyvsp[0].str);
  2778. yyval.str[strlen(yyvsp[0].str)+2]='';
  2779. yyval.str[strlen(yyvsp[0].str)+1]=''';
  2780. free(yyvsp[0].str);
  2781. ;
  2782.     break;}
  2783. case 950:
  2784. #line 4344 "preproc.y"
  2785. { yyval.str = yyvsp[0].str;;
  2786.     break;}
  2787. case 951:
  2788. #line 4352 "preproc.y"
  2789. { yyval.str = yyvsp[0].str; ;
  2790.     break;}
  2791. case 952:
  2792. #line 4354 "preproc.y"
  2793. { yyval.str = yyvsp[0].str; ;
  2794.     break;}
  2795. case 953:
  2796. #line 4356 "preproc.y"
  2797. { yyval.str = yyvsp[0].str; ;
  2798.     break;}
  2799. case 954:
  2800. #line 4366 "preproc.y"
  2801. { yyval.str = yyvsp[0].str; ;
  2802.     break;}
  2803. case 955:
  2804. #line 4367 "preproc.y"
  2805. { yyval.str = yyvsp[0].str; ;
  2806.     break;}
  2807. case 956:
  2808. #line 4368 "preproc.y"
  2809. { yyval.str = make1_str("absolute"); ;
  2810.     break;}
  2811. case 957:
  2812. #line 4369 "preproc.y"
  2813. { yyval.str = make1_str("access"); ;
  2814.     break;}
  2815. case 958:
  2816. #line 4370 "preproc.y"
  2817. { yyval.str = make1_str("action"); ;
  2818.     break;}
  2819. case 959:
  2820. #line 4371 "preproc.y"
  2821. { yyval.str = make1_str("after"); ;
  2822.     break;}
  2823. case 960:
  2824. #line 4372 "preproc.y"
  2825. { yyval.str = make1_str("aggregate"); ;
  2826.     break;}
  2827. case 961:
  2828. #line 4373 "preproc.y"
  2829. { yyval.str = make1_str("backward"); ;
  2830.     break;}
  2831. case 962:
  2832. #line 4374 "preproc.y"
  2833. { yyval.str = make1_str("before"); ;
  2834.     break;}