1 3 package com.quadcap.sql; 4 5 import antlr.TokenBuffer; 6 import antlr.TokenStreamException; 7 import antlr.TokenStreamIOException; 8 import antlr.ANTLRException; 9 import antlr.LLkParser; 10 import antlr.Token; 11 import antlr.TokenStream; 12 import antlr.RecognitionException; 13 import antlr.NoViableAltException; 14 import antlr.MismatchedTokenException; 15 import antlr.SemanticException; 16 import antlr.ParserSharedInputState; 17 import antlr.collections.impl.BitSet; 18 19 import java.io.*; 20 import java.sql.ResultSet ; 21 import java.sql.SQLException ; 22 import java.sql.Types ; 23 import java.util.Vector ; 24 import com.quadcap.sql.types.Type; 25 import com.quadcap.sql.types.TypeReal; 26 import com.quadcap.sql.types.*; 27 28 public class SQLParser extends antlr.LLkParser 29 implements SQLTokenTypes 30 { 31 32 Vector parameters = new Vector (); 33 Session session = null; 34 Connection qConn = null; 35 void addParameter(ParameterExpression e) { 36 parameters.addElement(e); 37 } 38 public Vector getParameters() { 39 return parameters; 40 } 41 public SQLParser(Session session, String cmd, boolean esc) { 42 super((esc 43 ? (TokenStream)(new JdbcEscapeTokenStream( 44 new SQLLexer(new StringReader(cmd)))) 45 : (TokenStream)(new SQLLexer(new StringReader(cmd)))), 2); 46 this.session = session; 47 this.qConn = session.getConnection(); 48 tokenNames = _tokenNames; 49 } 50 51 String fixIdTerm(String s) { 52 if (s.charAt(0) == '"') { 53 boolean bad = false; 54 for (int i = 1; !bad && i < s.length() - 1; i++) { 55 char c = s.charAt(i); 56 if (Character.isUpperCase(c) || (i > 1 && Character.isDigit(c) || c == '_')) { 57 } else { 58 bad = true; 59 } 60 } 61 if (bad) { 62 return s; 63 } else { 64 return s.substring(1, s.length()-1).toUpperCase(); 65 } 66 } else { 67 return s.toUpperCase(); 68 } 69 } 70 71 protected SQLParser(TokenBuffer tokenBuf, int k) { 72 super(tokenBuf,k); 73 tokenNames = _tokenNames; 74 } 75 76 public SQLParser(TokenBuffer tokenBuf) { 77 this(tokenBuf,2); 78 } 79 80 protected SQLParser(TokenStream lexer, int k) { 81 super(lexer,k); 82 tokenNames = _tokenNames; 83 } 84 85 public SQLParser(TokenStream lexer) { 86 this(lexer,2); 87 } 88 89 public SQLParser(ParserSharedInputState state) { 90 super(state,2); 91 tokenNames = _tokenNames; 92 } 93 94 public final Stmt statement() throws RecognitionException, TokenStreamException { 95 Stmt s; 96 97 98 s = null; 99 parameters.clear(); 100 101 102 switch ( LA(1)) { 103 case LITERAL_alter: 104 { 105 s=alterTableStmt(); 106 break; 107 } 108 case LITERAL_delete: 109 { 110 s=deleteStmt(); 111 break; 112 } 113 case LITERAL_grant: 114 { 115 s=grantStmt(); 116 break; 117 } 118 case LITERAL_insert: 119 { 120 s=insertStmt(); 121 break; 122 } 123 case LITERAL_table: 124 case LPAREN: 125 case LITERAL_select: 126 case LITERAL_values: 127 case ID: 128 { 129 s=selectStmt(); 130 break; 131 } 132 case LITERAL_update: 133 { 134 s=updateStmt(); 135 break; 136 } 137 case LITERAL_commit: 138 { 139 s=commitStmt(); 140 break; 141 } 142 case LITERAL_rollback: 143 { 144 s=rollbackStmt(); 145 break; 146 } 147 default: 148 boolean synPredMatched4 = false; 149 if (((LA(1)==LITERAL_create) && (LA(2)==LITERAL_unique||LA(2)==LITERAL_index))) { 150 int _m4 = mark(); 151 synPredMatched4 = true; 152 inputState.guessing++; 153 try { 154 { 155 match(LITERAL_create); 156 { 157 switch ( LA(1)) { 158 case LITERAL_unique: 159 { 160 match(LITERAL_unique); 161 break; 162 } 163 case LITERAL_index: 164 { 165 break; 166 } 167 default: 168 { 169 throw new NoViableAltException(LT(1), getFilename()); 170 } 171 } 172 } 173 match(LITERAL_index); 174 } 175 } 176 catch (RecognitionException pe) { 177 synPredMatched4 = false; 178 } 179 rewind(_m4); 180 inputState.guessing--; 181 } 182 if ( synPredMatched4 ) { 183 s=createIndexStmt(); 184 } 185 else { 186 boolean synPredMatched6 = false; 187 if (((LA(1)==LITERAL_create) && (LA(2)==LITERAL_schema))) { 188 int _m6 = mark(); 189 synPredMatched6 = true; 190 inputState.guessing++; 191 try { 192 { 193 match(LITERAL_create); 194 match(LITERAL_schema); 195 } 196 } 197 catch (RecognitionException pe) { 198 synPredMatched6 = false; 199 } 200 rewind(_m6); 201 inputState.guessing--; 202 } 203 if ( synPredMatched6 ) { 204 s=createSchemaStmt(); 205 } 206 else { 207 boolean synPredMatched9 = false; 208 if (((LA(1)==LITERAL_create) && (LA(2)==LITERAL_temporary||LA(2)==LITERAL_table||LA(2)==LITERAL_global||LA(2)==LITERAL_local))) { 209 int _m9 = mark(); 210 synPredMatched9 = true; 211 inputState.guessing++; 212 try { 213 { 214 match(LITERAL_create); 215 { 216 switch ( LA(1)) { 217 case LITERAL_temporary: 218 { 219 match(LITERAL_temporary); 220 break; 221 } 222 case LITERAL_table: 223 { 224 break; 225 } 226 default: 227 { 228 throw new NoViableAltException(LT(1), getFilename()); 229 } 230 } 231 } 232 match(LITERAL_table); 233 } 234 } 235 catch (RecognitionException pe) { 236 synPredMatched9 = false; 237 } 238 rewind(_m9); 239 inputState.guessing--; 240 } 241 if ( synPredMatched9 ) { 242 s=createTableStmt(); 243 } 244 else { 245 boolean synPredMatched11 = false; 246 if (((LA(1)==LITERAL_create) && (LA(2)==LITERAL_view))) { 247 int _m11 = mark(); 248 synPredMatched11 = true; 249 inputState.guessing++; 250 try { 251 { 252 match(LITERAL_create); 253 match(LITERAL_view); 254 } 255 } 256 catch (RecognitionException pe) { 257 synPredMatched11 = false; 258 } 259 rewind(_m11); 260 inputState.guessing--; 261 } 262 if ( synPredMatched11 ) { 263 s=createViewStmt(); 264 } 265 else { 266 boolean synPredMatched14 = false; 267 if (((LA(1)==LITERAL_drop) && (LA(2)==LITERAL_table||LA(2)==LITERAL_view))) { 268 int _m14 = mark(); 269 synPredMatched14 = true; 270 inputState.guessing++; 271 try { 272 { 273 match(LITERAL_drop); 274 { 275 switch ( LA(1)) { 276 case LITERAL_table: 277 { 278 match(LITERAL_table); 279 break; 280 } 281 case LITERAL_view: 282 { 283 match(LITERAL_view); 284 break; 285 } 286 default: 287 { 288 throw new NoViableAltException(LT(1), getFilename()); 289 } 290 } 291 } 292 } 293 } 294 catch (RecognitionException pe) { 295 synPredMatched14 = false; 296 } 297 rewind(_m14); 298 inputState.guessing--; 299 } 300 if ( synPredMatched14 ) { 301 s=dropTableStmt(); 302 } 303 else { 304 boolean synPredMatched16 = false; 305 if (((LA(1)==LITERAL_drop) && (LA(2)==LITERAL_index))) { 306 int _m16 = mark(); 307 synPredMatched16 = true; 308 inputState.guessing++; 309 try { 310 { 311 match(LITERAL_drop); 312 match(LITERAL_index); 313 } 314 } 315 catch (RecognitionException pe) { 316 synPredMatched16 = false; 317 } 318 rewind(_m16); 319 inputState.guessing--; 320 } 321 if ( synPredMatched16 ) { 322 s=dropIndexStmt(); 323 } 324 else { 325 throw new NoViableAltException(LT(1), getFilename()); 326 } 327 }}}}}} 328 return s; 329 } 330 331 public final Stmt alterTableStmt() throws RecognitionException, TokenStreamException { 332 Stmt s; 333 334 335 s = null; 336 String id = null; 337 338 339 match(LITERAL_alter); 340 match(LITERAL_table); 341 id=sqlId(); 342 if ( inputState.guessing==0 ) { 343 id = qConn.resolveName(id); 344 } 345 { 346 switch ( LA(1)) { 347 case LITERAL_alter: 348 { 349 s=alterColumn(id); 350 break; 351 } 352 case LITERAL_rename: 353 { 354 s=renameTable(id); 355 break; 356 } 357 default: 358 boolean synPredMatched28 = false; 359 if (((LA(1)==LITERAL_add) && (LA(2)==LITERAL_unique||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_foreign||LA(2)==LITERAL_check))) { 360 int _m28 = mark(); 361 synPredMatched28 = true; 362 inputState.guessing++; 363 try { 364 { 365 match(LITERAL_add); 366 { 367 switch ( LA(1)) { 368 case LITERAL_constraint: 369 { 370 match(LITERAL_constraint); 371 break; 372 } 373 case LITERAL_primary: 374 { 375 match(LITERAL_primary); 376 break; 377 } 378 case LITERAL_unique: 379 { 380 match(LITERAL_unique); 381 break; 382 } 383 case LITERAL_foreign: 384 { 385 match(LITERAL_foreign); 386 break; 387 } 388 case LITERAL_check: 389 { 390 match(LITERAL_check); 391 break; 392 } 393 default: 394 { 395 throw new NoViableAltException(LT(1), getFilename()); 396 } 397 } 398 } 399 } 400 } 401 catch (RecognitionException pe) { 402 synPredMatched28 = false; 403 } 404 rewind(_m28); 405 inputState.guessing--; 406 } 407 if ( synPredMatched28 ) { 408 s=addConstraint(id); 409 } 410 else { 411 boolean synPredMatched30 = false; 412 if (((LA(1)==LITERAL_add) && (LA(2)==LITERAL_column||LA(2)==ID))) { 413 int _m30 = mark(); 414 synPredMatched30 = true; 415 inputState.guessing++; 416 try { 417 { 418 match(LITERAL_add); 419 } 420 } 421 catch (RecognitionException pe) { 422 synPredMatched30 = false; 423 } 424 rewind(_m30); 425 inputState.guessing--; 426 } 427 if ( synPredMatched30 ) { 428 s=addColumn(id); 429 } 430 else { 431 boolean synPredMatched32 = false; 432 if (((LA(1)==LITERAL_drop) && (LA(2)==LITERAL_constraint))) { 433 int _m32 = mark(); 434 synPredMatched32 = true; 435 inputState.guessing++; 436 try { 437 { 438 match(LITERAL_drop); 439 match(LITERAL_constraint); 440 } 441 } 442 catch (RecognitionException pe) { 443 synPredMatched32 = false; 444 } 445 rewind(_m32); 446 inputState.guessing--; 447 } 448 if ( synPredMatched32 ) { 449 s=dropConstraint(id); 450 } 451 else { 452 boolean synPredMatched34 = false; 453 if (((LA(1)==LITERAL_drop) && (LA(2)==LITERAL_column||LA(2)==ID))) { 454 int _m34 = mark(); 455 synPredMatched34 = true; 456 inputState.guessing++; 457 try { 458 { 459 match(LITERAL_drop); 460 } 461 } 462 catch (RecognitionException pe) { 463 synPredMatched34 = false; 464 } 465 rewind(_m34); 466 inputState.guessing--; 467 } 468 if ( synPredMatched34 ) { 469 s=dropColumn(id); 470 } 471 else { 472 throw new NoViableAltException(LT(1), getFilename()); 473 } 474 }}}} 475 } 476 return s; 477 } 478 479 public final Stmt createIndexStmt() throws RecognitionException, TokenStreamException { 480 Stmt s; 481 482 483 s = null; 484 String indexName = null; 485 String tableName = null; 486 Vector columns; 487 boolean unique = false; 488 boolean text = false; 489 490 491 match(LITERAL_create); 492 { 493 switch ( LA(1)) { 494 case LITERAL_unique: 495 { 496 match(LITERAL_unique); 497 if ( inputState.guessing==0 ) { 498 unique = true; 499 } 500 break; 501 } 502 case LITERAL_index: 503 { 504 break; 505 } 506 default: 507 { 508 throw new NoViableAltException(LT(1), getFilename()); 509 } 510 } 511 } 512 match(LITERAL_index); 513 indexName=sqlId(); 514 match(LITERAL_on); 515 tableName=sqlId(); 516 match(LPAREN); 517 columns=idList(); 518 match(RPAREN); 519 if ( inputState.guessing==0 ) { 520 521 tableName = qConn.resolveName(tableName); 522 indexName = qConn.resolveName(indexName); 523 s = new StmtCreateIndex(indexName, tableName, 524 columns, unique, text); 525 526 } 527 return s; 528 } 529 530 public final StmtCreateSchema createSchemaStmt() throws RecognitionException, TokenStreamException { 531 StmtCreateSchema s; 532 533 534 s = null; 535 String name = null; 536 String auth = null; 537 Stmt s1 = null; 538 539 540 match(LITERAL_create); 541 match(LITERAL_schema); 542 { 543 switch ( LA(1)) { 544 case ID: 545 { 546 name=sqlId(); 547 { 548 switch ( LA(1)) { 549 case LITERAL_authorization: 550 { 551 match(LITERAL_authorization); 552 auth=sqlId(); 553 break; 554 } 555 case EOF: 556 case LITERAL_create: 557 case LITERAL_grant: 558 { 559 break; 560 } 561 default: 562 { 563 throw new NoViableAltException(LT(1), getFilename()); 564 } 565 } 566 } 567 break; 568 } 569 case LITERAL_authorization: 570 { 571 match(LITERAL_authorization); 572 name=sqlId(); 573 if ( inputState.guessing==0 ) { 574 auth = name; 575 } 576 break; 577 } 578 default: 579 { 580 throw new NoViableAltException(LT(1), getFilename()); 581 } 582 } 583 } 584 if ( inputState.guessing==0 ) { 585 586 try { 587 s = new StmtCreateSchema(name, auth); 588 qConn.setAuth(name, null); 589 } catch (SQLException ex) { 590 throw new RecognitionException("Bad auth"); 591 } 592 593 } 594 { 595 _loop71: 596 do { 597 if ((LA(1)==LITERAL_create||LA(1)==LITERAL_grant)) { 598 s1=schemaStatement(); 599 if ( inputState.guessing==0 ) { 600 s.addStatement(s1); 601 } 602 } 603 else { 604 break _loop71; 605 } 606 607 } while (true); 608 } 609 return s; 610 } 611 612 public final Stmt createTableStmt() throws RecognitionException, TokenStreamException { 613 Stmt s; 614 615 616 s = null; 617 Column col = null; 618 Constraint con = null; 619 Vector constraints = new Vector (); 620 Table t = null; 621 String id = null; 622 int modifiers = 0; 623 624 625 match(LITERAL_create); 626 { 627 switch ( LA(1)) { 628 case LITERAL_global: 629 { 630 match(LITERAL_global); 631 if ( inputState.guessing==0 ) { 632 modifiers |= Table.GLOBAL; 633 } 634 break; 635 } 636 case LITERAL_local: 637 { 638 match(LITERAL_local); 639 if ( inputState.guessing==0 ) { 640 modifiers |= Table.LOCAL; 641 } 642 break; 643 } 644 case LITERAL_temporary: 645 case LITERAL_table: 646 { 647 break; 648 } 649 default: 650 { 651 throw new NoViableAltException(LT(1), getFilename()); 652 } 653 } 654 } 655 { 656 switch ( LA(1)) { 657 case LITERAL_temporary: 658 { 659 match(LITERAL_temporary); 660 if ( inputState.guessing==0 ) { 661 modifiers |= Table.TEMPORARY; 662 } 663 break; 664 } 665 case LITERAL_table: 666 { 667 break; 668 } 669 default: 670 { 671 throw new NoViableAltException(LT(1), getFilename()); 672 } 673 } 674 } 675 match(LITERAL_table); 676 id=sqlId(); 677 match(LPAREN); 678 if ( inputState.guessing==0 ) { 679 680 t = new Table(qConn.resolveName(id), modifiers); 681 682 } 683 { 684 switch ( LA(1)) { 685 case ID: 686 { 687 col=columnDefinition(); 688 if ( inputState.guessing==0 ) { 689 690 try { 691 t.addColumn(col); 692 } catch (SQLException e) { 693 throw new DbException(e); 694 } 695 696 } 697 break; 698 } 699 case LITERAL_unique: 700 case LITERAL_constraint: 701 case LITERAL_primary: 702 case LITERAL_foreign: 703 case LITERAL_check: 704 { 705 con=tableConstraint(); 706 if ( inputState.guessing==0 ) { 707 708 constraints.addElement(con); 709 710 } 711 break; 712 } 713 case RPAREN: 714 case COMMA: 715 { 716 break; 717 } 718 default: 719 { 720 throw new NoViableAltException(LT(1), getFilename()); 721 } 722 } 723 } 724 { 725 _loop87: 726 do { 727 if ((LA(1)==COMMA)) { 728 match(COMMA); 729 { 730 switch ( LA(1)) { 731 case ID: 732 { 733 col=columnDefinition(); 734 if ( inputState.guessing==0 ) { 735 736 try { 737 t.addColumn(col); 738 } catch (SQLException e) { 739 throw new DbException(e); 740 } 741 742 } 743 break; 744 } 745 case LITERAL_unique: 746 case LITERAL_constraint: 747 case LITERAL_primary: 748 case LITERAL_foreign: 749 case LITERAL_check: 750 { 751 con=tableConstraint(); 752 if ( inputState.guessing==0 ) { 753 754 constraints.addElement(con); 755 756 } 757 break; 758 } 759 default: 760 { 761 throw new NoViableAltException(LT(1), getFilename()); 762 } 763 } 764 } 765 } 766 else { 767 break _loop87; 768 } 769 770 } while (true); 771 } 772 match(RPAREN); 773 if ( inputState.guessing==0 ) { 774 775 s = new StmtCreateTable(t, constraints); 776 777 } 778 return s; 779 } 780 781 public final StmtCreateView createViewStmt() throws RecognitionException, TokenStreamException { 782 StmtCreateView s; 783 784 785 s = null; 786 Vector columns = null; 787 TableExpression te = null; 788 int check = View.NOCHECK; 789 String id = null; 790 791 792 match(LITERAL_create); 793 match(LITERAL_view); 794 id=sqlId(); 795 { 796 switch ( LA(1)) { 797 case LPAREN: 798 { 799 match(LPAREN); 800 columns=idList(); 801 match(RPAREN); 802 break; 803 } 804 case LITERAL_as: 805 { 806 break; 807 } 808 default: 809 { 810 throw new NoViableAltException(LT(1), getFilename()); 811 } 812 } 813 } 814 match(LITERAL_as); 815 te=queryExpression(); 816 { 817 switch ( LA(1)) { 818 case LITERAL_with: 819 { 820 match(LITERAL_with); 821 if ( inputState.guessing==0 ) { 822 check = View.CASCADED; 823 } 824 { 825 switch ( LA(1)) { 826 case LITERAL_cascaded: 827 { 828 match(LITERAL_cascaded); 829 break; 830 } 831 case LITERAL_check: 832 { 833 break; 834 } 835 default: 836 { 837 throw new NoViableAltException(LT(1), getFilename()); 838 } 839 } 840 } 841 match(LITERAL_check); 842 match(LITERAL_option); 843 break; 844 } 845 case EOF: 846 case LITERAL_create: 847 case LITERAL_grant: 848 { 849 break; 850 } 851 default: 852 { 853 throw new NoViableAltException(LT(1), getFilename()); 854 } 855 } 856 } 857 if ( inputState.guessing==0 ) { 858 859 String name = qConn.resolveName(id); 860 View view = new View(name, columns, te, check); 861 s = new StmtCreateView(session, view); 862 863 } 864 return s; 865 } 866 867 public final Stmt deleteStmt() throws RecognitionException, TokenStreamException { 868 Stmt s; 869 870 871 s = null; 872 Expression e = null; 873 String id = null; 874 875 876 match(LITERAL_delete); 877 match(LITERAL_from); 878 id=sqlId(); 879 e=whereExpression(); 880 if ( inputState.guessing==0 ) { 881 882 String n = qConn.resolveName(id); 883 s = new StmtDelete(n, e); 884 885 } 886 return s; 887 } 888 889 public final Stmt dropTableStmt() throws RecognitionException, TokenStreamException { 890 Stmt s; 891 892 893 s = null; 894 boolean restrict = true; 895 boolean view = false; 896 String id; 897 String n; 898 899 900 match(LITERAL_drop); 901 { 902 switch ( LA(1)) { 903 case LITERAL_table: 904 { 905 match(LITERAL_table); 906 break; 907 } 908 case LITERAL_view: 909 { 910 match(LITERAL_view); 911 if ( inputState.guessing==0 ) { 912 view = true; 913 } 914 break; 915 } 916 default: 917 { 918 throw new NoViableAltException(LT(1), getFilename()); 919 } 920 } 921 } 922 id=sqlId(); 923 { 924 switch ( LA(1)) { 925 case LITERAL_cascade: 926 { 927 match(LITERAL_cascade); 928 if ( inputState.guessing==0 ) { 929 restrict = false; 930 } 931 break; 932 } 933 case LITERAL_restrict: 934 { 935 match(LITERAL_restrict); 936 if ( inputState.guessing==0 ) { 937 restrict = true; 938 } 939 break; 940 } 941 case EOF: 942 { 943 break; 944 } 945 default: 946 { 947 throw new NoViableAltException(LT(1), getFilename()); 948 } 949 } 950 } 951 if ( inputState.guessing==0 ) { 952 953 n = qConn.resolveName(id); 954 s = new StmtDropTable(n, view, restrict); 955 956 } 957 return s; 958 } 959 960 public final Stmt dropIndexStmt() throws RecognitionException, TokenStreamException { 961 Stmt s; 962 963 964 s = null; 965 String indexName = null; 966 967 968 match(LITERAL_drop); 969 match(LITERAL_index); 970 indexName=sqlId(); 971 if ( inputState.guessing==0 ) { 972 973 indexName = qConn.resolveName(indexName); 974 s = new StmtDropIndex(indexName); 975 976 } 977 return s; 978 } 979 980 public final Stmt grantStmt() throws RecognitionException, TokenStreamException { 981 Stmt s; 982 983 984 s = null; 985 String id = null; 986 987 988 match(LITERAL_grant); 989 privilege(); 990 { 991 _loop90: 992 do { 993 if ((LA(1)==COMMA)) { 994 match(COMMA); 995 privilege(); 996 } 997 else { 998 break _loop90; 999 } 1000 1001 } while (true); 1002 } 1003 match(LITERAL_on); 1004 { 1005 switch ( LA(1)) { 1006 case LITERAL_table: 1007 { 1008 match(LITERAL_table); 1009 break; 1010 } 1011 case ID: 1012 { 1013 break; 1014 } 1015 default: 1016 { 1017 throw new NoViableAltException(LT(1), getFilename()); 1018 } 1019 } 1020 } 1021 id=sqlId(); 1022 match(LITERAL_to); 1023 { 1024 switch ( LA(1)) { 1025 case ID: 1026 { 1027 id=sqlId(); 1028 { 1029 _loop94: 1030 do { 1031 if ((LA(1)==COMMA)) { 1032 match(COMMA); 1033 id=sqlId(); 1034 } 1035 else { 1036 break _loop94; 1037 } 1038 1039 } while (true); 1040 } 1041 break; 1042 } 1043 case LITERAL_public: 1044 { 1045 match(LITERAL_public); 1046 break; 1047 } 1048 default: 1049 { 1050 throw new NoViableAltException(LT(1), getFilename()); 1051 } 1052 } 1053 } 1054 { 1055 switch ( LA(1)) { 1056 case LITERAL_with: 1057 { 1058 match(LITERAL_with); 1059 match(LITERAL_grant); 1060 match(LITERAL_option); 1061 break; 1062 } 1063 case EOF: 1064 case LITERAL_create: 1065 case LITERAL_grant: 1066 { 1067 break; 1068 } 1069 default: 1070 { 1071 throw new NoViableAltException(LT(1), getFilename()); 1072 } 1073 } 1074 } 1075 if ( inputState.guessing==0 ) { 1076 s = new StmtNull(); 1077 } 1078 return s; 1079 } 1080 1081 public final StmtInsert insertStmt() throws RecognitionException, TokenStreamException { 1082 StmtInsert s; 1083 1084 1085 s = null; 1086 ResultSet rs = null; 1087 Vector columns = null; 1088 Expression query = null; 1089 String n = null; 1090 String id = null; 1091 1092 1093 match(LITERAL_insert); 1094 match(LITERAL_into); 1095 id=sqlId(); 1096 if ( inputState.guessing==0 ) { 1097 1098 n = qConn.resolveName(id); 1099 s = new StmtInsert(n); 1100 1101 } 1102 { 1103 if ((LA(1)==LPAREN) && (LA(2)==ID)) { 1104 match(LPAREN); 1105 columns=idList(); 1106 if ( inputState.guessing==0 ) { 1107 s.setColumns(columns); 1108 } 1109 match(RPAREN); 1110 } 1111 else if ((LA(1)==LITERAL_table||LA(1)==LPAREN||LA(1)==LITERAL_default||LA(1)==LITERAL_select||LA(1)==LITERAL_values||LA(1)==ID) && (LA(2)==EOF||LA(2)==LITERAL_unique||LA(2)==LITERAL_table||LA(2)==LPAREN||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_all||LA(2)==LITERAL_select||LA(2)==LITERAL_insert||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_full||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_distinct||LA(2)==STAR||LA(2)==LITERAL_values||LA(2)==LITERAL_exists||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) { 1112 } 1113 else { 1114 throw new NoViableAltException(LT(1), getFilename()); 1115 } 1116 1117 } 1118 { 1119 switch ( LA(1)) { 1120 case LITERAL_table: 1121 case LPAREN: 1122 case LITERAL_select: 1123 case LITERAL_values: 1124 case ID: 1125 { 1126 query=queryExpression(); 1127 if ( inputState.guessing==0 ) { 1128 s.setValues(query); 1129 } 1130 break; 1131 } 1132 case LITERAL_default: 1133 { 1134 match(LITERAL_default); 1135 match(LITERAL_values); 1136 if ( inputState.guessing==0 ) { 1137 s.setDefaultValue(); 1138 } 1139 break; 1140 } 1141 default: 1142 { 1143 throw new NoViableAltException(LT(1), getFilename()); 1144 } 1145 } 1146 } 1147 return s; 1148 } 1149 1150 public final SelectStmt selectStmt() throws RecognitionException, TokenStreamException { 1151 SelectStmt s; 1152 1153 1154 s = null; 1155 TableExpression te = null; 1156 Vector ob = null; 1157 1158 1159 te=queryExpression(); 1160 if ( inputState.guessing==0 ) { 1161 s = new SelectStmt(te); 1162 } 1163 { 1164 switch ( LA(1)) { 1165 case LITERAL_order: 1166 { 1167 ob=orderBy(); 1168 if ( inputState.guessing==0 ) { 1169 s.setOrder(ob); 1170 } 1171 break; 1172 } 1173 case LITERAL_for: 1174 { 1175 match(LITERAL_for); 1176 { 1177 switch ( LA(1)) { 1178 case LITERAL_update: 1179 { 1180 match(LITERAL_update); 1181 break; 1182 } 1183 case LITERAL_read: 1184 { 1185 match(LITERAL_read); 1186 match(LITERAL_only); 1187 break; 1188 } 1189 default: 1190 { 1191 throw new NoViableAltException(LT(1), getFilename()); 1192 } 1193 } 1194 } 1195 break; 1196 } 1197 case EOF: 1198 { 1199 break; 1200 } 1201 default: 1202 { 1203 throw new NoViableAltException(LT(1), getFilename()); 1204 } 1205 } 1206 } 1207 return s; 1208 } 1209 1210 public final StmtUpdate updateStmt() throws RecognitionException, TokenStreamException { 1211 StmtUpdate s; 1212 1213 1214 s = null; 1215 String n = null; 1216 UpdateItem item = null; 1217 Expression we = null; 1218 String id = null; 1219 1220 1221 match(LITERAL_update); 1222 id=sqlId(); 1223 if ( inputState.guessing==0 ) { 1224 1225 n = qConn.resolveName(id); 1226 s = new StmtUpdate(n); 1227 1228 } 1229 match(LITERAL_set); 1230 { 1231 switch ( LA(1)) { 1232 case ID: 1233 { 1234 item=updateItem(); 1235 if ( inputState.guessing==0 ) { 1236 1237 s.addItem(item); 1238 1239 } 1240 { 1241 _loop62: 1242 do { 1243 if ((LA(1)==COMMA)) { 1244 match(COMMA); 1245 item=updateItem(); 1246 if ( inputState.guessing==0 ) { 1247 1248 s.addItem(item); 1249 1250 } 1251 } 1252 else { 1253 break _loop62; 1254 } 1255 1256 } while (true); 1257 } 1258 break; 1259 } 1260 case EOF: 1261 case LITERAL_where: 1262 { 1263 break; 1264 } 1265 default: 1266 { 1267 throw new NoViableAltException(LT(1), getFilename()); 1268 } 1269 } 1270 } 1271 we=whereExpression(); 1272 if ( inputState.guessing==0 ) { 1273 s.addWhere(we); 1274 } 1275 return s; 1276 } 1277 1278 public final Stmt commitStmt() throws RecognitionException, TokenStreamException { 1279 Stmt s; 1280 1281 1282 s = null; 1283 1284 1285 match(LITERAL_commit); 1286 { 1287 switch ( LA(1)) { 1288 case LITERAL_work: 1289 { 1290 match(LITERAL_work); 1291 break; 1292 } 1293 case EOF: 1294 { 1295 break; 1296 } 1297 default: 1298 { 1299 throw new NoViableAltException(LT(1), getFilename()); 1300 } 1301 } 1302 } 1303 if ( inputState.guessing==0 ) { 1304 s = new StmtCommit(); 1305 } 1306 return s; 1307 } 1308 1309 public final Stmt rollbackStmt() throws RecognitionException, TokenStreamException { 1310 Stmt s; 1311 1312 1313 s = null; 1314 1315 1316 match(LITERAL_rollback); 1317 { 1318 switch ( LA(1)) { 1319 case LITERAL_transaction: 1320 { 1321 match(LITERAL_transaction); 1322 break; 1323 } 1324 case EOF: 1325 { 1326 break; 1327 } 1328 default: 1329 { 1330 throw new NoViableAltException(LT(1), getFilename()); 1331 } 1332 } 1333 } 1334 if ( inputState.guessing==0 ) { 1335 s = new StmtRollback(); 1336 } 1337 return s; 1338 } 1339 1340 public final String sqlId() throws RecognitionException, TokenStreamException { 1341 String s; 1342 1343 Token id = null; 1344 1345 s = null; 1346 StringBuffer sb = new StringBuffer (); 1347 1348 1349 id = LT(1); 1350 match(ID); 1351 if ( inputState.guessing==0 ) { 1352 1353 String n = id.getText(); 1354 int idx = TupleImpl.nextUnquotedPeriod(n); 1355 if (idx > 0) { 1356 sb.append(fixIdTerm(n.substring(0, idx))); 1357 sb.append('.'); 1358 n = n.substring(idx+1); 1359 idx = TupleImpl.nextUnquotedPeriod(n); 1360 if (idx > 0) { 1361 sb.append(fixIdTerm(n.substring(0, idx))); 1362 sb.append('.'); 1363 n = n.substring(idx+1); 1364 } 1365 } 1366 sb.append(fixIdTerm(n)); 1367 s = sb.toString(); 1368 1369 } 1370 return s; 1371 } 1372 1373 public final Vector idList() throws RecognitionException, TokenStreamException { 1374 Vector v ; 1375 1376 1377 v = new Vector (); 1378 String id = null; 1379 1380 1381 id=sqlId(); 1382 if ( inputState.guessing==0 ) { 1383 v.addElement(id); 1384 } 1385 { 1386 _loop332: 1387 do { 1388 if ((LA(1)==COMMA) && (LA(2)==ID)) { 1389 match(COMMA); 1390 id=sqlId(); 1391 if ( inputState.guessing==0 ) { 1392 v.addElement(id); 1393 } 1394 } 1395 else { 1396 break _loop332; 1397 } 1398 1399 } while (true); 1400 } 1401 return v ; 1402 } 1403 1404 public final Stmt addConstraint( 1405 String id 1406 ) throws RecognitionException, TokenStreamException { 1407 Stmt s; 1408 1409 1410 s = null; 1411 Constraint con = null; 1412 1413 1414 match(LITERAL_add); 1415 con=tableConstraint(); 1416 if ( inputState.guessing==0 ) { 1417 s = new StmtAddConstraint(id, con); 1418 } 1419 return s; 1420 } 1421 1422 public final Stmt addColumn( 1423 String id 1424 ) throws RecognitionException, TokenStreamException { 1425 Stmt s; 1426 1427 1428 s = null; 1429 Column col = null; 1430 String aname = null; 1431 1432 1433 match(LITERAL_add); 1434 { 1435 switch ( LA(1)) { 1436 case LITERAL_column: 1437 { 1438 match(LITERAL_column); 1439 break; 1440 } 1441 case ID: 1442 { 1443 break; 1444 } 1445 default: 1446 { 1447 throw new NoViableAltException(LT(1), getFilename()); 1448 } 1449 } 1450 } 1451 col=columnDefinition(); 1452 { 1453 switch ( LA(1)) { 1454 case LITERAL_first: 1455 { 1456 match(LITERAL_first); 1457 if ( inputState.guessing==0 ) { 1458 aname = ""; 1459 } 1460 break; 1461 } 1462 case LITERAL_after: 1463 { 1464 match(LITERAL_after); 1465 aname=sqlId(); 1466 break; 1467 } 1468 case EOF: 1469 { 1470 break; 1471 } 1472 default: 1473 { 1474 throw new NoViableAltException(LT(1), getFilename()); 1475 } 1476 } 1477 } 1478 if ( inputState.guessing==0 ) { 1479 s = new StmtAddColumn(id, col, aname); 1480 } 1481 return s; 1482 } 1483 1484 public final Stmt dropConstraint( 1485 String id 1486 ) throws RecognitionException, TokenStreamException { 1487 Stmt s; 1488 1489 1490 s = null; 1491 String conName = null; 1492 boolean restrict = true; 1493 1494 1495 match(LITERAL_drop); 1496 match(LITERAL_constraint); 1497 conName=sqlId(); 1498 { 1499 switch ( LA(1)) { 1500 case LITERAL_restrict: 1501 { 1502 match(LITERAL_restrict); 1503 break; 1504 } 1505 case LITERAL_cascade: 1506 { 1507 match(LITERAL_cascade); 1508 if ( inputState.guessing==0 ) { 1509 restrict = false; 1510 } 1511 break; 1512 } 1513 case EOF: 1514 { 1515 break; 1516 } 1517 default: 1518 { 1519 throw new NoViableAltException(LT(1), getFilename()); 1520 } 1521 } 1522 } 1523 if ( inputState.guessing==0 ) { 1524 s = new StmtDropConstraint(id, conName, restrict); 1525 } 1526 return s; 1527 } 1528 1529 public final Stmt dropColumn( 1530 String id 1531 ) throws RecognitionException, TokenStreamException { 1532 Stmt s; 1533 1534 1535 s = null; 1536 String colName = null; 1537 1538 1539 match(LITERAL_drop); 1540 { 1541 switch ( LA(1)) { 1542 case LITERAL_column: 1543 { 1544 match(LITERAL_column); 1545 break; 1546 } 1547 case ID: 1548 { 1549 break; 1550 } 1551 default: 1552 { 1553 throw new NoViableAltException(LT(1), getFilename()); 1554 } 1555 } 1556 } 1557 colName=sqlId(); 1558 { 1559 switch ( LA(1)) { 1560 case LITERAL_restrict: 1561 { 1562 match(LITERAL_restrict); 1563 break; 1564 } 1565 case LITERAL_cascade: 1566 { 1567 match(LITERAL_cascade); 1568 break; 1569 } 1570 case EOF: 1571 { 1572 break; 1573 } 1574 default: 1575 { 1576 throw new NoViableAltException(LT(1), getFilename()); 1577 } 1578 } 1579 } 1580 if ( inputState.guessing==0 ) { 1581 s = new StmtDropColumn(id, colName); 1582 } 1583 return s; 1584 } 1585 1586 public final Stmt alterColumn( 1587 String id 1588 ) throws RecognitionException, TokenStreamException { 1589 Stmt s; 1590 1591 1592 s = null; 1593 String colName = null; 1594 Expression def = null; 1595 1596 1597 match(LITERAL_alter); 1598 { 1599 switch ( LA(1)) { 1600 case LITERAL_column: 1601 { 1602 match(LITERAL_column); 1603 break; 1604 } 1605 case ID: 1606 { 1607 break; 1608 } 1609 default: 1610 { 1611 throw new NoViableAltException(LT(1), getFilename()); 1612 } 1613 } 1614 } 1615 colName=sqlId(); 1616 { 1617 switch ( LA(1)) { 1618 case LITERAL_set: 1619 { 1620 match(LITERAL_set); 1621 match(LITERAL_default); 1622 def=expression(); 1623 break; 1624 } 1625 case LITERAL_drop: 1626 { 1627 match(LITERAL_drop); 1628 match(LITERAL_default); 1629 break; 1630 } 1631 default: 1632 { 1633 throw new NoViableAltException(LT(1), getFilename()); 1634 } 1635 } 1636 } 1637 if ( inputState.guessing==0 ) { 1638 s = new StmtAlterColumn(id, colName, def); 1639 } 1640 return s; 1641 } 1642 1643 public final Stmt renameTable( 1644 String id 1645 ) throws RecognitionException, TokenStreamException { 1646 Stmt s; 1647 1648 1649 s = null; 1650 Constraint con = null; 1651 String id2 = null; 1652 1653 1654 match(LITERAL_rename); 1655 match(LITERAL_to); 1656 id2=sqlId(); 1657 if ( inputState.guessing==0 ) { 1658 1659 id2 = qConn.resolveName(id2); 1660 s = new StmtRenameTable(id, id2); 1661 1662 } 1663 return s; 1664 } 1665 1666 public final Constraint tableConstraint() throws RecognitionException, TokenStreamException { 1667 Constraint con; 1668 1669 1670 con = null; 1671 String name = null; 1672 Vector v = null; 1673 Vector v2 = null; 1674 int ref = 0; 1675 String n = null; 1676 String id = null; 1677 Expression predicate = null; 1678 1679 1680 { 1681 switch ( LA(1)) { 1682 case LITERAL_constraint: 1683 { 1684 match(LITERAL_constraint); 1685 name=sqlId(); 1686 break; 1687 } 1688 case LITERAL_unique: 1689 case LITERAL_primary: 1690 case LITERAL_foreign: 1691 case LITERAL_check: 1692 { 1693 break; 1694 } 1695 default: 1696 { 1697 throw new NoViableAltException(LT(1), getFilename()); 1698 } 1699 } 1700 } 1701 { 1702 switch ( LA(1)) { 1703 case LITERAL_primary: 1704 { 1705 match(LITERAL_primary); 1706 match(LITERAL_key); 1707 match(LPAREN); 1708 v=idList(); 1709 match(RPAREN); 1710 if ( inputState.guessing==0 ) { 1711 con = new PrimaryKeyConstraint(name, v); 1712 } 1713 break; 1714 } 1715 case LITERAL_unique: 1716 { 1717 match(LITERAL_unique); 1718 match(LPAREN); 1719 v=idList(); 1720 match(RPAREN); 1721 if ( inputState.guessing==0 ) { 1722 con = new UniqueConstraint(name, v); 1723 } 1724 break; 1725 } 1726 case LITERAL_foreign: 1727 { 1728 match(LITERAL_foreign); 1729 match(LITERAL_key); 1730 match(LPAREN); 1731 v=idList(); 1732 match(RPAREN); 1733 match(LITERAL_references); 1734 id=sqlId(); 1735 { 1736 switch ( LA(1)) { 1737 case LPAREN: 1738 { 1739 match(LPAREN); 1740 v2=idList(); 1741 match(RPAREN); 1742 break; 1743 } 1744 case EOF: 1745 case LITERAL_on: 1746 case RPAREN: 1747 case COMMA: 1748 case LITERAL_match: 1749 { 1750 break; 1751 } 1752 default: 1753 { 1754 throw new NoViableAltException(LT(1), getFilename()); 1755 } 1756 } 1757 } 1758 ref=referentialSpec(); 1759 if ( inputState.guessing==0 ) { 1760 1761 n = qConn.resolveName(id); 1762 con = new ImportedKeyConstraint(name, v, n, v2); 1763 con.setRefSpec(ref); 1764 1765 } 1766 break; 1767 } 1768 case LITERAL_check: 1769 { 1770 match(LITERAL_check); 1771 predicate=expression(); 1772 if ( inputState.guessing==0 ) { 1773 con = new CheckConstraint(name, predicate); 1774 } 1775 break; 1776 } 1777 default: 1778 { 1779 throw new NoViableAltException(LT(1), getFilename()); 1780 } 1781 } 1782 } 1783 return con; 1784 } 1785 1786 public final Column columnDefinition() throws RecognitionException, TokenStreamException { 1787 Column def; 1788 1789 1790 def = null; 1791 Type t = null; 1792 Constraint constraint = null; 1793 String id = null; 1794 Expression p = null; 1795 1796 1797 id=sqlId(); 1798 t=type(); 1799 if ( inputState.guessing==0 ) { 1800 def = new Column(id, t); 1801 } 1802 { 1803 _loop101: 1804 do { 1805 switch ( LA(1)) { 1806 case LITERAL_unique: 1807 case LITERAL_constraint: 1808 case LITERAL_primary: 1809 case LITERAL_check: 1810 case LITERAL_with: 1811 case LITERAL_references: 1812 case LITERAL_not: 1813 { 1814 constraint=columnConstraint(); 1815 if ( inputState.guessing==0 ) { 1816 def.addConstraint(constraint); 1817 } 1818 break; 1819 } 1820 case LITERAL_default: 1821 { 1822 match(LITERAL_default); 1823 p=expression(); 1824 if ( inputState.guessing==0 ) { 1825 def.setDefault(p); 1826 } 1827 break; 1828 } 1829 default: 1830 { 1831 break _loop101; 1832 } 1833 } 1834 } while (true); 1835 } 1836 return def; 1837 } 1838 1839 public final Expression expression() throws RecognitionException, TokenStreamException { 1840 Expression e; 1841 1842 e = null; 1843 1844 e=scalarExpression(); 1845 return e; 1846 } 1847 1848 public final TableExpression queryExpression() throws RecognitionException, TokenStreamException { 1849 TableExpression item; 1850 1851 1852 item = null; 1853 int op = 0; 1854 boolean all = false; 1855 boolean corr = false; 1856 Vector columns = null; 1857 TableExpression item2 = null; 1858 String id = null; 1859 1860 1861 item=queryExpressionHead(); 1862 { 1863 _loop203: 1864 do { 1865 if ((LA(1)==LITERAL_union||LA(1)==LITERAL_intersect||LA(1)==LITERAL_except) && (LA(2)==LITERAL_table||LA(2)==LPAREN||LA(2)==LITERAL_all||LA(2)==LITERAL_select||LA(2)==LITERAL_corresponding||LA(2)==LITERAL_values||LA(2)==ID)) { 1866 op=combine(); 1867 if ( inputState.guessing==0 ) { 1868 1869 all = false; 1870 corr = false; 1871 columns = null; 1872 item2 = null; 1873 1874 } 1875 { 1876 switch ( LA(1)) { 1877 case LITERAL_all: 1878 { 1879 match(LITERAL_all); 1880 if ( inputState.guessing==0 ) { 1881 all = true; 1882 } 1883 break; 1884 } 1885 case LITERAL_table: 1886 case LPAREN: 1887 case LITERAL_select: 1888 case LITERAL_corresponding: 1889 case LITERAL_values: 1890 case ID: 1891 { 1892 break; 1893 } 1894 default: 1895 { 1896 throw new NoViableAltException(LT(1), getFilename()); 1897 } 1898 } 1899 } 1900 { 1901 switch ( LA(1)) { 1902 case LITERAL_corresponding: 1903 { 1904 match(LITERAL_corresponding); 1905 if ( inputState.guessing==0 ) { 1906 1907 corr = true; 1908 1909 } 1910 { 1911 switch ( LA(1)) { 1912 case LITERAL_by: 1913 { 1914 match(LITERAL_by); 1915 match(LPAREN); 1916 columns=idList(); 1917 match(RPAREN); 1918 break; 1919 } 1920 case LITERAL_table: 1921 case LPAREN: 1922 case LITERAL_select: 1923 case LITERAL_values: 1924 case ID: 1925 { 1926 break; 1927 } 1928 default: 1929 { 1930 throw new NoViableAltException(LT(1), getFilename()); 1931 } 1932 } 1933 } 1934 break; 1935 } 1936 case LITERAL_table: 1937 case LPAREN: 1938 case LITERAL_select: 1939 case LITERAL_values: 1940 case ID: 1941 { 1942 break; 1943 } 1944 default: 1945 { 1946 throw new NoViableAltException(LT(1), getFilename()); 1947 } 1948 } 1949 } 1950 item2=queryExpressionHead(); 1951 if ( inputState.guessing==0 ) { 1952 1953 item = new MergeExpression(op, all, item, 1954 item2, columns, 1955 corr); 1956 1957 } 1958 } 1959 else { 1960 break _loop203; 1961 } 1962 1963 } while (true); 1964 } 1965 return item; 1966 } 1967 1968 public final UpdateItem updateItem() throws RecognitionException, TokenStreamException { 1969 UpdateItem item; 1970 1971 1972 item = null; 1973 Expression e = null; 1974 String id = null; 1975 1976 1977 id=sqlId(); 1978 match(EQ); 1979 e=expression(); 1980 if ( inputState.guessing==0 ) { 1981 1982 item = new UpdateItem(id, e); 1983 1984 } 1985 return item; 1986 } 1987 1988 public final Expression whereExpression() throws RecognitionException, TokenStreamException { 1989 Expression e; 1990 1991 1992 e = null; 1993 1994 1995 { 1996 if ((LA(1)==LITERAL_where) && (LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==LITERAL_default||LA(2)==LITERAL_insert||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_exists||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==ID)) { 1997 match(LITERAL_where); 1998 e=expression(); 1999 } 2000 else if ((LA(1)==EOF||LA(1)==LITERAL_create||LA(1)==LITERAL_unique||LA(1)==LITERAL_on||LA(1)==RPAREN||LA(1)==LITERAL_constraint||LA(1)==LITERAL_primary||LA(1)==LITERAL_check||LA(1)==LITERAL_first||LA(1)==LITERAL_after||LA(1)==LITERAL_default||LA(1)==LITERAL_as||LA(1)==LITERAL_with||LA(1)==COMMA||LA(1)==LITERAL_where||LA(1)==LITERAL_from||LA(1)==LITERAL_grant||LA(1)==LITERAL_references||LA(1)==LITERAL_not||LA(1)==LITERAL_full||LA(1)==LITERAL_initially||LA(1)==LITERAL_deferrable||LA(1)==LITERAL_for||LA(1)==LITERAL_order||LA(1)==LITERAL_having||LA(1)==LITERAL_using||LA(1)==LITERAL_group||LA(1)==CONCAT||LA(1)==LITERAL_or||LA(1)==LITERAL_and||LA(1)==LITERAL_when||LA(1)==LITERAL_then||LA(1)==LITERAL_else||LA(1)==LITERAL_end||LA(1)==LITERAL_left||LA(1)==LITERAL_right||LA(1)==LITERAL_cross||LA(1)==LITERAL_join||LA(1)==LITERAL_natural||LA(1)==LITERAL_union||LA(1)==LITERAL_inner||LA(1)==LITERAL_intersect||LA(1)==LITERAL_except||LA(1)==ID) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_index||LA(2)==LITERAL_temporary||LA(2)==LITERAL_table||LA(2)==LITERAL_view||LA(2)==LITERAL_on||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_foreign||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==LITERAL_cascaded||LA(2)==LITERAL_update||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==EQ||LA(2)==LITERAL_delete||LA(2)==LITERAL_from||LA(2)==LITERAL_global||LA(2)==LITERAL_local||LA(2)==LITERAL_grant||LA(2)==LITERAL_all||LA(2)==LITERAL_select||LA(2)==LITERAL_insert||LA(2)==LITERAL_references||LA(2)==LITERAL_usage||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_key||LA(2)==LITERAL_identity||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferred||LA(2)==LITERAL_immediate||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_bit||LA(2)==LITERAL_varbinary||LA(2)==LITERAL_binary||LA(2)==LITERAL_blob||LA(2)==LITERAL_clob||LA(2)==LITERAL_character||LA(2)==LITERAL_char||LA(2)==LITERAL_varchar||LA(2)==LITERAL_int||LA(2)==LITERAL_integer||LA(2)==LITERAL_smallint||LA(2)==LITERAL_tinyint||LA(2)==LITERAL_bigint||LA(2)==LITERAL_dec||LA(2)==LITERAL_decimal||LA(2)==LITERAL_numeric||LA(2)==LITERAL_real||LA(2)==LITERAL_double||LA(2)==LITERAL_float||LA(2)==LITERAL_boolean||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_for||LA(2)==LITERAL_read||LA(2)==LITERAL_order||LA(2)==LITERAL_by||LA(2)==STAR||LA(2)==LITERAL_having||LA(2)==LITERAL_corresponding||LA(2)==LITERAL_values||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_is||LA(2)==LITERAL_like||LA(2)==LITERAL_between||LA(2)==LITERAL_in||LA(2)==LITERAL_exists||LA(2)==LITERAL_escape||LA(2)==120||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==LT||LA(2)==LE||LA(2)==GT||LA(2)==GE||LA(2)==NE||LA(2)==SLASH||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_outer||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) { 2001 } 2002 else { 2003 throw new NoViableAltException(LT(1), getFilename()); 2004 } 2005 2006 } 2007 return e; 2008 } 2009 2010 public final Stmt schemaStatement() throws RecognitionException, TokenStreamException { 2011 Stmt s; 2012 2013 2014 s = null; 2015 2016 2017 boolean synPredMatched75 = false; 2018 if (((LA(1)==LITERAL_create) && (LA(2)==LITERAL_unique||LA(2)==LITERAL_index))) { 2019 int _m75 = mark(); 2020 synPredMatched75 = true; 2021 inputState.guessing++; 2022 try { 2023 { 2024 match(LITERAL_create); 2025 { 2026 switch ( LA(1)) { 2027 case LITERAL_unique: 2028 { 2029 match(LITERAL_unique); 2030 break; 2031 } 2032 case LITERAL_index: 2033 { 2034 break; 2035 } 2036 default: 2037 { 2038 throw new NoViableAltException(LT(1), getFilename()); 2039 } 2040 } 2041 } 2042 match(LITERAL_index); 2043 } 2044 } 2045 catch (RecognitionException pe) { 2046 synPredMatched75 = false; 2047 } 2048 rewind(_m75); 2049 inputState.guessing--; 2050 } 2051 if ( synPredMatched75 ) { 2052 s=createIndexStmt(); 2053 } 2054 else { 2055 boolean synPredMatched78 = false; 2056 if (((LA(1)==LITERAL_create) && (LA(2)==LITERAL_temporary||LA(2)==LITERAL_table||LA(2)==LITERAL_global||LA(2)==LITERAL_local))) { 2057 int _m78 = mark(); 2058 synPredMatched78 = true; 2059 inputState.guessing++; 2060 try { 2061 { 2062 match(LITERAL_create); 2063 { 2064 switch ( LA(1)) { 2065 case LITERAL_temporary: 2066 { 2067 match(LITERAL_temporary); 2068 break; 2069 } 2070 case LITERAL_table: 2071 { 2072 break; 2073 } 2074 default: 2075 { 2076 throw new NoViableAltException(LT(1), getFilename()); 2077 } 2078 } 2079 } 2080 match(LITERAL_table); 2081 } 2082 } 2083 catch (RecognitionException pe) { 2084 synPredMatched78 = false; 2085 } 2086 rewind(_m78); 2087 inputState.guessing--; 2088 } 2089 if ( synPredMatched78 ) { 2090 s=createTableStmt(); 2091 } 2092 else { 2093 boolean synPredMatched80 = false; 2094 if (((LA(1)==LITERAL_create) && (LA(2)==LITERAL_view))) { 2095 int _m80 = mark(); 2096 synPredMatched80 = true; 2097 inputState.guessing++; 2098 try { 2099 { 2100 match(LITERAL_create); 2101 match(LITERAL_view); 2102 } 2103 } 2104 catch (RecognitionException pe) { 2105 synPredMatched80 = false; 2106 } 2107 rewind(_m80); 2108 inputState.guessing--; 2109 } 2110 if ( synPredMatched80 ) { 2111 s=createViewStmt(); 2112 } 2113 else if ((LA(1)==LITERAL_grant)) { 2114 s=grantStmt(); 2115 } 2116 else { 2117 throw new NoViableAltException(LT(1), getFilename()); 2118 } 2119 }} 2120 return s; 2121 } 2122 2123 public final void privilege() throws RecognitionException, TokenStreamException { 2124 2125 2126 Vector v = null; 2127 2128 2129 switch ( LA(1)) { 2130 case LITERAL_all: 2131 { 2132 match(LITERAL_all); 2133 match(LITERAL_privileges); 2134 break; 2135 } 2136 case LITERAL_select: 2137 { 2138 match(LITERAL_select); 2139 break; 2140 } 2141 case LITERAL_delete: 2142 { 2143 match(LITERAL_delete); 2144 break; 2145 } 2146 case LITERAL_update: 2147 case LITERAL_insert: 2148 case LITERAL_references: 2149 { 2150 { 2151 switch ( LA(1)) { 2152 case LITERAL_insert: 2153 { 2154 match(LITERAL_insert); 2155 break; 2156 } 2157 case LITERAL_update: 2158 { 2159 match(LITERAL_update); 2160 break; 2161 } 2162 case LITERAL_references: 2163 { 2164 match(LITERAL_references); 2165 break; 2166 } 2167 default: 2168 { 2169 throw new NoViableAltException(LT(1), getFilename()); 2170 } 2171 } 2172 } 2173 { 2174 switch ( LA(1)) { 2175 case LPAREN: 2176 { 2177 match(LPAREN); 2178 v=idList(); 2179 match(RPAREN); 2180 break; 2181 } 2182 case LITERAL_on: 2183 case COMMA: 2184 { 2185 break; 2186 } 2187 default: 2188 { 2189 throw new NoViableAltException(LT(1), getFilename()); 2190 } 2191 } 2192 } 2193 break; 2194 } 2195 case LITERAL_usage: 2196 { 2197 match(LITERAL_usage); 2198 break; 2199 } 2200 default: 2201 { 2202 throw new NoViableAltException(LT(1), getFilename()); 2203 } 2204 } 2205 } 2206 2207 public final Type type() throws RecognitionException, TokenStreamException { 2208 Type t; 2209 2210 2211 t = null; 2212 int max = -1; 2213 int scale = 0; 2214 int precision = 0; 2215 boolean tz = false; 2216 2217 2218 switch ( LA(1)) { 2219 case LITERAL_int: 2220 case LITERAL_integer: 2221 { 2222 t=typeInt(); 2223 break; 2224 } 2225 case LITERAL_tinyint: 2226 { 2227 t=typeTinyInt(); 2228 break; 2229 } 2230 case LITERAL_smallint: 2231 { 2232 t=typeSmallInt(); 2233 break; 2234 } 2235 case LITERAL_bigint: 2236 { 2237 t=typeBigInt(); 2238 break; 2239 } 2240 case LITERAL_dec: 2241 case LITERAL_decimal: 2242 case LITERAL_numeric: 2243 { 2244 t=typeDecimal(); 2245 break; 2246 } 2247 case LITERAL_real: 2248 { 2249 t=typeReal(); 2250 break; 2251 } 2252 case LITERAL_double: 2253 { 2254 t=typeDouble(); 2255 break; 2256 } 2257 case LITERAL_float: 2258 { 2259 t=typeFloat(); 2260 break; 2261 } 2262 case LITERAL_boolean: 2263 { 2264 t=typeBoolean(); 2265 break; 2266 } 2267 case LITERAL_date: 2268 { 2269 t=typeDate(); 2270 break; 2271 } 2272 case LITERAL_time: 2273 { 2274 t=typeTime(); 2275 break; 2276 } 2277 case LITERAL_timestamp: 2278 { 2279 t=typeTimestamp(); 2280 break; 2281 } 2282 case LITERAL_interval: 2283 { 2284 t=typeInterval(); 2285 break; 2286 } 2287 default: 2288 boolean synPredMatched127 = false; 2289 if (((LA(1)==LITERAL_bit||LA(1)==LITERAL_varbinary) && (LA(2)==EOF||LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_references||LA(2)==LITERAL_not||LA(2)==LITERAL_varying))) { 2290 int _m127 = mark(); 2291 synPredMatched127 = true; 2292 inputState.guessing++; 2293 try { 2294 { 2295 switch ( LA(1)) { 2296 case LITERAL_bit: 2297 { 2298 match(LITERAL_bit); 2299 match(LITERAL_varying); 2300 break; 2301 } 2302 case LITERAL_varbinary: 2303 { 2304 match(LITERAL_varbinary); 2305 break; 2306 } 2307 default: 2308 { 2309 throw new NoViableAltException(LT(1), getFilename()); 2310 } 2311 } 2312 } 2313 } 2314 catch (RecognitionException pe) { 2315 synPredMatched127 = false; 2316 } 2317 rewind(_m127); 2318 inputState.guessing--; 2319 } 2320 if ( synPredMatched127 ) { 2321 t=typeVarBinary(); 2322 } 2323 else { 2324 boolean synPredMatched129 = false; 2325 if (((LA(1)==LITERAL_bit||LA(1)==LITERAL_binary) && (LA(2)==EOF||LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_references||LA(2)==LITERAL_not))) { 2326 int _m129 = mark(); 2327 synPredMatched129 = true; 2328 inputState.guessing++; 2329 try { 2330 { 2331 switch ( LA(1)) { 2332 case LITERAL_bit: 2333 { 2334 match(LITERAL_bit); 2335 break; 2336 } 2337 case LITERAL_binary: 2338 { 2339 match(LITERAL_binary); 2340 break; 2341 } 2342 default: 2343 { 2344 throw new NoViableAltException(LT(1), getFilename()); 2345 } 2346 } 2347 } 2348 } 2349 catch (RecognitionException pe) { 2350 synPredMatched129 = false; 2351 } 2352 rewind(_m129); 2353 inputState.guessing--; 2354 } 2355 if ( synPredMatched129 ) { 2356 t=typeBit(); 2357 } 2358 else { 2359 boolean synPredMatched131 = false; 2360 if (((LA(1)==LITERAL_binary||LA(1)==LITERAL_blob) && (LA(2)==EOF||LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_references||LA(2)==LITERAL_not||LA(2)==LITERAL_large))) { 2361 int _m131 = mark(); 2362 synPredMatched131 = true; 2363 inputState.guessing++; 2364 try { 2365 { 2366 switch ( LA(1)) { 2367 case LITERAL_blob: 2368 { 2369 match(LITERAL_blob); 2370 break; 2371 } 2372 case LITERAL_binary: 2373 { 2374 match(LITERAL_binary); 2375 match(LITERAL_large); 2376 match(LITERAL_object); 2377 break; 2378 } 2379 default: 2380 { 2381 throw new NoViableAltException(LT(1), getFilename()); 2382 } 2383 } 2384 } 2385 } 2386 catch (RecognitionException pe) { 2387 synPredMatched131 = false; 2388 } 2389 rewind(_m131); 2390 inputState.guessing--; 2391 } 2392 if ( synPredMatched131 ) { 2393 t=typeBlob(); 2394 } 2395 else { 2396 boolean synPredMatched133 = false; 2397 if (((LA(1)==LITERAL_clob||LA(1)==LITERAL_character) && (LA(2)==EOF||LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_references||LA(2)==LITERAL_not||LA(2)==LITERAL_large))) { 2398 int _m133 = mark(); 2399 synPredMatched133 = true; 2400 inputState.guessing++; 2401 try { 2402 { 2403 switch ( LA(1)) { 2404 case LITERAL_clob: 2405 { 2406 match(LITERAL_clob); 2407 break; 2408 } 2409 case LITERAL_character: 2410 { 2411 match(LITERAL_character); 2412 match(LITERAL_large); 2413 match(LITERAL_object); 2414 break; 2415 } 2416 default: 2417 { 2418 throw new NoViableAltException(LT(1), getFilename()); 2419 } 2420 } 2421 } 2422 } 2423 catch (RecognitionException pe) { 2424 synPredMatched133 = false; 2425 } 2426 rewind(_m133); 2427 inputState.guessing--; 2428 } 2429 if ( synPredMatched133 ) { 2430 t=typeClob(); 2431 } 2432 else { 2433 boolean synPredMatched135 = false; 2434 if ((((LA(1) >= LITERAL_character && LA(1) <= LITERAL_varchar)) && (LA(2)==EOF||LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_references||LA(2)==LITERAL_not||LA(2)==LITERAL_varying))) { 2435 int _m135 = mark(); 2436 synPredMatched135 = true; 2437 inputState.guessing++; 2438 try { 2439 { 2440 switch ( LA(1)) { 2441 case LITERAL_char: 2442 { 2443 match(LITERAL_char); 2444 match(LITERAL_varying); 2445 break; 2446 } 2447 case LITERAL_character: 2448 { 2449 match(LITERAL_character); 2450 match(LITERAL_varying); 2451 break; 2452 } 2453 case LITERAL_varchar: 2454 { 2455 match(LITERAL_varchar); 2456 break; 2457 } 2458 default: 2459 { 2460 throw new NoViableAltException(LT(1), getFilename()); 2461 } 2462 } 2463 } 2464 } 2465 catch (RecognitionException pe) { 2466 synPredMatched135 = false; 2467 } 2468 rewind(_m135); 2469 inputState.guessing--; 2470 } 2471 if ( synPredMatched135 ) { 2472 t=typeVarChar(); 2473 } 2474 else { 2475 boolean synPredMatched137 = false; 2476 if (((LA(1)==LITERAL_character||LA(1)==LITERAL_char) && (LA(2)==EOF||LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_references||LA(2)==LITERAL_not))) { 2477 int _m137 = mark(); 2478 synPredMatched137 = true; 2479 inputState.guessing++; 2480 try { 2481 { 2482 switch ( LA(1)) { 2483 case LITERAL_char: 2484 { 2485 match(LITERAL_char); 2486 break; 2487 } 2488 case LITERAL_character: 2489 { 2490 match(LITERAL_character); 2491 break; 2492 } 2493 default: 2494 { 2495 throw new NoViableAltException(LT(1), getFilename()); 2496 } 2497 } 2498 } 2499 } 2500 catch (RecognitionException pe) { 2501 synPredMatched137 = false; 2502 } 2503 rewind(_m137); 2504 inputState.guessing--; 2505 } 2506 if ( synPredMatched137 ) { 2507 t=typeChar(); 2508 } 2509 else { 2510 throw new NoViableAltException(LT(1), getFilename()); 2511 } 2512 }}}}}} 2513 return t; 2514 } 2515 2516 public final Constraint columnConstraint() throws RecognitionException, TokenStreamException { 2517 Constraint con; 2518 2519 2520 con = null; 2521 String name = null; 2522 int ref = 0; 2523 int def = 0; 2524 ImportedKeyConstraint fk = null; 2525 Expression predicate = null; 2526 String n; 2527 String id = null; 2528 2529 2530 { 2531 switch ( LA(1)) { 2532 case LITERAL_constraint: 2533 { 2534 match(LITERAL_constraint); 2535 name=sqlId(); 2536 break; 2537 } 2538 case LITERAL_unique: 2539 case LITERAL_primary: 2540 case LITERAL_check: 2541 case LITERAL_with: 2542 case LITERAL_references: 2543 case LITERAL_not: 2544 { 2545 break; 2546 } 2547 default: 2548 { 2549 throw new NoViableAltException(LT(1), getFilename()); 2550 } 2551 } 2552 } 2553 { 2554 switch ( LA(1)) { 2555 case LITERAL_not: 2556 { 2557 match(LITERAL_not); 2558 match(LITERAL_null); 2559 if ( inputState.guessing==0 ) { 2560 con = new NotNullConstraint(name); 2561 } 2562 break; 2563 } 2564 case LITERAL_unique: 2565 { 2566 match(LITERAL_unique); 2567 if ( inputState.guessing==0 ) { 2568 con = new UniqueConstraint(name); 2569 } 2570 break; 2571 } 2572 case LITERAL_primary: 2573 { 2574 match(LITERAL_primary); 2575 match(LITERAL_key); 2576 if ( inputState.guessing==0 ) { 2577 con = new PrimaryKeyConstraint(name); 2578 } 2579 break; 2580 } 2581 case LITERAL_references: 2582 { 2583 match(LITERAL_references); 2584 id=sqlId(); 2585 if ( inputState.guessing==0 ) { 2586 2587 n = qConn.resolveName(id); 2588 con = fk = new ImportedKeyConstraint(name, n); 2589 2590 } 2591 { 2592 switch ( LA(1)) { 2593 case LPAREN: 2594 { 2595 match(LPAREN); 2596 id=sqlId(); 2597 if ( inputState.guessing==0 ) { 2598 fk.setForeignColumn(id); 2599 } 2600 match(RPAREN); 2601 break; 2602 } 2603 case EOF: 2604 case LITERAL_unique: 2605 case LITERAL_on: 2606 case RPAREN: 2607 case LITERAL_constraint: 2608 case LITERAL_primary: 2609 case LITERAL_check: 2610 case LITERAL_first: 2611 case LITERAL_after: 2612 case LITERAL_default: 2613 case LITERAL_with: 2614 case COMMA: 2615 case LITERAL_references: 2616 case LITERAL_not: 2617 case LITERAL_match: 2618 case LITERAL_initially: 2619 case LITERAL_deferrable: 2620 { 2621 break; 2622 } 2623 default: 2624 { 2625 throw new NoViableAltException(LT(1), getFilename()); 2626 } 2627 } 2628 } 2629 ref=referentialSpec(); 2630 if ( inputState.guessing==0 ) { 2631 con.setRefSpec(ref); 2632 } 2633 break; 2634 } 2635 case LITERAL_check: 2636 { 2637 match(LITERAL_check); 2638 predicate=expression(); 2639 if ( inputState.guessing==0 ) { 2640 con = new CheckConstraint(name, predicate); 2641 } 2642 break; 2643 } 2644 case LITERAL_with: 2645 { 2646 match(LITERAL_with); 2647 match(LITERAL_identity); 2648 if ( inputState.guessing==0 ) { 2649 con = new AutoNumberConstraint(name); 2650 } 2651 break; 2652 } 2653 default: 2654 { 2655 throw new NoViableAltException(LT(1), getFilename()); 2656 } 2657 } 2658 } 2659 { 2660 boolean synPredMatched108 = false; 2661 if (((LA(1)==EOF||LA(1)==LITERAL_unique||LA(1)==RPAREN||LA(1)==LITERAL_constraint||LA(1)==LITERAL_primary||LA(1)==LITERAL_check||LA(1)==LITERAL_first||LA(1)==LITERAL_after||LA(1)==LITERAL_default||LA(1)==LITERAL_with||LA(1)==COMMA||LA(1)==LITERAL_references||LA(1)==LITERAL_not) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_foreign||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_grant||LA(2)==LITERAL_insert||LA(2)==LITERAL_references||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_key||LA(2)==LITERAL_identity||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_exists||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==ID))) { 2662 int _m108 = mark(); 2663 synPredMatched108 = true; 2664 inputState.guessing++; 2665 try { 2666 { 2667 match(LITERAL_not); 2668 match(LITERAL_null); 2669 } 2670 } 2671 catch (RecognitionException pe) { 2672 synPredMatched108 = false; 2673 } 2674 rewind(_m108); 2675 inputState.guessing--; 2676 } 2677 if ( synPredMatched108 ) { 2678 } 2679 else if ((LA(1)==EOF||LA(1)==LITERAL_unique||LA(1)==RPAREN||LA(1)==LITERAL_constraint||LA(1)==LITERAL_primary||LA(1)==LITERAL_check||LA(1)==LITERAL_first||LA(1)==LITERAL_after||LA(1)==LITERAL_default||LA(1)==LITERAL_with||LA(1)==COMMA||LA(1)==LITERAL_references||LA(1)==LITERAL_not||LA(1)==LITERAL_initially||LA(1)==LITERAL_deferrable) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_foreign||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_grant||LA(2)==LITERAL_insert||LA(2)==LITERAL_references||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_key||LA(2)==LITERAL_identity||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferred||LA(2)==LITERAL_immediate||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_exists||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==ID)) { 2680 def=deferrableSpec(); 2681 if ( inputState.guessing==0 ) { 2682 con.setDeferrable(def); 2683 } 2684 } 2685 else { 2686 throw new NoViableAltException(LT(1), getFilename()); 2687 } 2688 2689 } 2690 return con; 2691 } 2692 2693 public final int referentialSpec() throws RecognitionException, TokenStreamException { 2694 int ref; 2695 2696 2697 ref = 0; 2698 int type = 0; 2699 2700 2701 { 2702 _loop119: 2703 do { 2704 switch ( LA(1)) { 2705 case LITERAL_match: 2706 { 2707 match(LITERAL_match); 2708 { 2709 switch ( LA(1)) { 2710 case LITERAL_full: 2711 { 2712 match(LITERAL_full); 2713 if ( inputState.guessing==0 ) { 2714 ref |= Constraint.FULL; 2715 } 2716 break; 2717 } 2718 case LITERAL_partial: 2719 { 2720 match(LITERAL_partial); 2721 if ( inputState.guessing==0 ) { 2722 ref |= Constraint.PARTIAL; 2723 } 2724 break; 2725 } 2726 default: 2727 { 2728 throw new NoViableAltException(LT(1), getFilename()); 2729 } 2730 } 2731 } 2732 break; 2733 } 2734 case LITERAL_on: 2735 { 2736 match(LITERAL_on); 2737 { 2738 switch ( LA(1)) { 2739 case LITERAL_update: 2740 { 2741 match(LITERAL_update); 2742 if ( inputState.guessing==0 ) { 2743 type = Constraint.UPDATE; 2744 } 2745 break; 2746 } 2747 case LITERAL_delete: 2748 { 2749 match(LITERAL_delete); 2750 if ( inputState.guessing==0 ) { 2751 type = Constraint.DELETE; 2752 } 2753 break; 2754 } 2755 default: 2756 { 2757 throw new NoViableAltException(LT(1), getFilename()); 2758 } 2759 } 2760 } 2761 { 2762 switch ( LA(1)) { 2763 case LITERAL_cascade: 2764 { 2765 match(LITERAL_cascade); 2766 if ( inputState.guessing==0 ) { 2767 ref |= (Constraint.CASCADE << type); 2768 } 2769 break; 2770 } 2771 case LITERAL_set: 2772 { 2773 match(LITERAL_set); 2774 { 2775 switch ( LA(1)) { 2776 case LITERAL_null: 2777 { 2778 match(LITERAL_null); 2779 if ( inputState.guessing==0 ) { 2780 ref |= (Constraint.SETNULL << type); 2781 } 2782 break; 2783 } 2784 case LITERAL_default: 2785 { 2786 match(LITERAL_default); 2787 if ( inputState.guessing==0 ) { 2788 ref |= (Constraint.SETDEFAULT << type); 2789 } 2790 break; 2791 } 2792 default: 2793 { 2794 throw new NoViableAltException(LT(1), getFilename()); 2795 } 2796 } 2797 } 2798 break; 2799 } 2800 case LITERAL_no: 2801 { 2802 match(LITERAL_no); 2803 match(LITERAL_action); 2804 if ( inputState.guessing==0 ) { 2805 ref |= (Constraint.NOACTION << type); 2806 } 2807 break; 2808 } 2809 default: 2810 { 2811 throw new NoViableAltException(LT(1), getFilename()); 2812 } 2813 } 2814 } 2815 break; 2816 } 2817 default: 2818 { 2819 break _loop119; 2820 } 2821 } 2822 } while (true); 2823 } 2824 return ref; 2825 } 2826 2827 public final int deferrableSpec() throws RecognitionException, TokenStreamException { 2828 int def; 2829 2830 2831 def = 0; 2832 2833 2834 { 2835 switch ( LA(1)) { 2836 case LITERAL_initially: 2837 { 2838 match(LITERAL_initially); 2839 { 2840 switch ( LA(1)) { 2841 case LITERAL_deferred: 2842 { 2843 match(LITERAL_deferred); 2844 if ( inputState.guessing==0 ) { 2845 def |= Constraint.INIT_DEFERRED; 2846 } 2847 break; 2848 } 2849 case LITERAL_immediate: 2850 { 2851 match(LITERAL_immediate); 2852 break; 2853 } 2854 default: 2855 { 2856 throw new NoViableAltException(LT(1), getFilename()); 2857 } 2858 } 2859 } 2860 break; 2861 } 2862 case LITERAL_deferrable: 2863 { 2864 match(LITERAL_deferrable); 2865 if ( inputState.guessing==0 ) { 2866 def |= Constraint.DEFERRABLE; 2867 } 2868 break; 2869 } 2870 default: 2871 boolean synPredMatched124 = false; 2872 if (((LA(1)==LITERAL_not) && (LA(2)==LITERAL_deferrable))) { 2873 int _m124 = mark(); 2874 synPredMatched124 = true; 2875 inputState.guessing++; 2876 try { 2877 { 2878 match(LITERAL_not); 2879 match(LITERAL_deferrable); 2880 } 2881 } 2882 catch (RecognitionException pe) { 2883 synPredMatched124 = false; 2884 } 2885 rewind(_m124); 2886 inputState.guessing--; 2887 } 2888 if ( synPredMatched124 ) { 2889 match(LITERAL_not); 2890 match(LITERAL_deferrable); 2891 } 2892 else if ((LA(1)==EOF||LA(1)==LITERAL_unique||LA(1)==RPAREN||LA(1)==LITERAL_constraint||LA(1)==LITERAL_primary||LA(1)==LITERAL_check||LA(1)==LITERAL_first||LA(1)==LITERAL_after||LA(1)==LITERAL_default||LA(1)==LITERAL_with||LA(1)==COMMA||LA(1)==LITERAL_references||LA(1)==LITERAL_not) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_foreign||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_grant||LA(2)==LITERAL_insert||LA(2)==LITERAL_references||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_key||LA(2)==LITERAL_identity||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_exists||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==ID)) { 2893 } 2894 else { 2895 throw new NoViableAltException(LT(1), getFilename()); 2896 } 2897 } 2898 } 2899 return def; 2900 } 2901 2902 public final Type typeInt() throws RecognitionException, TokenStreamException { 2903 Type t; 2904 2905 2906 t = null; 2907 2908 2909 { 2910 switch ( LA(1)) { 2911 case LITERAL_int: 2912 { 2913 match(LITERAL_int); 2914 break; 2915 } 2916 case LITERAL_integer: 2917 { 2918 match(LITERAL_integer); 2919 break; 2920 } 2921 default: 2922 { 2923 throw new NoViableAltException(LT(1), getFilename()); 2924 } 2925 } 2926 } 2927 if ( inputState.guessing==0 ) { 2928 t = TypeInt.typeInt; 2929 } 2930 return t; 2931 } 2932 2933 public final Type typeTinyInt() throws RecognitionException, TokenStreamException { 2934 Type t; 2935 2936 2937 t = null; 2938 2939 2940 match(LITERAL_tinyint); 2941 if ( inputState.guessing==0 ) { 2942 t = TypeTinyInt.typeTinyInt; 2943 } 2944 return t; 2945 } 2946 2947 public final Type typeSmallInt() throws RecognitionException, TokenStreamException { 2948 Type t; 2949 2950 2951 t = null; 2952 2953 2954 match(LITERAL_smallint); 2955 if ( inputState.guessing==0 ) { 2956 t = TypeSmallInt.typeSmallInt; 2957 } 2958 return t; 2959 } 2960 2961 public final Type typeBigInt() throws RecognitionException, TokenStreamException { 2962 Type t; 2963 2964 2965 t = null; 2966 2967 2968 match(LITERAL_bigint); 2969 if ( inputState.guessing==0 ) { 2970 t = TypeBigInt.typeBigInt; 2971 } 2972 return t; 2973 } 2974 2975 public final Type typeDecimal() throws RecognitionException, TokenStreamException { 2976 Type t; 2977 2978 2979 t = null; 2980 int max = 18; 2981 int scale = 0; 2982 2983 2984 { 2985 switch ( LA(1)) { 2986 case LITERAL_dec: 2987 { 2988 match(LITERAL_dec); 2989 break; 2990 } 2991 case LITERAL_decimal: 2992 { 2993 match(LITERAL_decimal); 2994 break; 2995 } 2996 case LITERAL_numeric: 2997 { 2998 match(LITERAL_numeric); 2999 break; 3000 } 3001 default: 3002 { 3003 throw new NoViableAltException(LT(1), getFilename()); 3004 } 3005 } 3006 } 3007 { 3008 switch ( LA(1)) { 3009 case LPAREN: 3010 { 3011 match(LPAREN); 3012 max=integer(); 3013 { 3014 switch ( LA(1)) { 3015 case COMMA: 3016 { 3017 match(COMMA); 3018 scale=integer(); 3019 break; 3020 } 3021 case RPAREN: 3022 { 3023 break; 3024 } 3025 default: 3026 { 3027 throw new NoViableAltException(LT(1), getFilename()); 3028 } 3029 } 3030 } 3031 match(RPAREN); 3032 break; 3033 } 3034 case EOF: 3035 case LITERAL_unique: 3036 case RPAREN: 3037 case LITERAL_constraint: 3038 case LITERAL_primary: 3039 case LITERAL_check: 3040 case LITERAL_first: 3041 case LITERAL_after: 3042 case LITERAL_default: 3043 case LITERAL_with: 3044 case COMMA: 3045 case LITERAL_references: 3046 case LITERAL_not: 3047 { 3048 break; 3049 } 3050 default: 3051 { 3052 throw new NoViableAltException(LT(1), getFilename()); 3053 } 3054 } 3055 } 3056 if ( inputState.guessing==0 ) { 3057 t = new TypeDecimal(max, scale); 3058 } 3059 return t; 3060 } 3061 3062 public final Type typeReal() throws RecognitionException, TokenStreamException { 3063 Type t; 3064 3065 3066 t = null; 3067 3068 3069 match(LITERAL_real); 3070 if ( inputState.guessing==0 ) { 3071 t = TypeReal.typeReal; 3072 } 3073 return t; 3074 } 3075 3076 public final Type typeDouble() throws RecognitionException, TokenStreamException { 3077 Type t; 3078 3079 3080 t = null; 3081 3082 3083 match(LITERAL_double); 3084 match(LITERAL_precision); 3085 if ( inputState.guessing==0 ) { 3086 t = TypeReal.typeDouble; 3087 } 3088 return t; 3089 } 3090 3091 public final Type typeFloat() throws RecognitionException, TokenStreamException { 3092 Type t; 3093 3094 3095 t = null; 3096 int precision = 23; 3097 3098 3099 match(LITERAL_float); 3100 { 3101 switch ( LA(1)) { 3102 case LPAREN: 3103 { 3104 match(LPAREN); 3105 precision=integer(); 3106 match(RPAREN); 3107 break; 3108 } 3109 case EOF: 3110 case LITERAL_unique: 3111 case RPAREN: 3112 case LITERAL_constraint: 3113 case LITERAL_primary: 3114 case LITERAL_check: 3115 case LITERAL_first: 3116 case LITERAL_after: 3117 case LITERAL_default: 3118 case LITERAL_with: 3119 case COMMA: 3120 case LITERAL_references: 3121 case LITERAL_not: 3122 { 3123 break; 3124 } 3125 default: 3126 { 3127 throw new NoViableAltException(LT(1), getFilename()); 3128 } 3129 } 3130 } 3131 if ( inputState.guessing==0 ) { 3132 t = new TypeReal(Types.FLOAT, 3133 precision); 3134 } 3135 return t; 3136 } 3137 3138 public final Type typeBoolean() throws RecognitionException, TokenStreamException { 3139 Type t; 3140 3141 3142 t = null; 3143 int max = 1; 3144 3145 3146 match(LITERAL_boolean); 3147 if ( inputState.guessing==0 ) { 3148 t = TypeBoolean.typeBoolean; 3149 } 3150 return t; 3151 } 3152 3153 public final Type typeVarBinary() throws RecognitionException, TokenStreamException { 3154 Type t; 3155 3156 3157 t = null; 3158 int max = -1; 3159 3160 3161 { 3162 switch ( LA(1)) { 3163 case LITERAL_bit: 3164 { 3165 match(LITERAL_bit); 3166 match(LITERAL_varying); 3167 break; 3168 } 3169 case LITERAL_varbinary: 3170 { 3171 match(LITERAL_varbinary); 3172 break; 3173 } 3174 default: 3175 { 3176 throw new NoViableAltException(LT(1), getFilename()); 3177 } 3178 } 3179 } 3180 { 3181 switch ( LA(1)) { 3182 case LPAREN: 3183 { 3184 match(LPAREN); 3185 max=integer(); 3186 match(RPAREN); 3187 break; 3188 } 3189 case EOF: 3190 case LITERAL_unique: 3191 case RPAREN: 3192 case LITERAL_constraint: 3193 case LITERAL_primary: 3194 case LITERAL_check: 3195 case LITERAL_first: 3196 case LITERAL_after: 3197 case LITERAL_default: 3198 case LITERAL_with: 3199 case COMMA: 3200 case LITERAL_references: 3201 case LITERAL_not: 3202 { 3203 break; 3204 } 3205 default: 3206 { 3207 throw new NoViableAltException(LT(1), getFilename()); 3208 } 3209 } 3210 } 3211 if ( inputState.guessing==0 ) { 3212 t = new TypeVarBinary(max); 3213 } 3214 return t; 3215 } 3216 3217 public final Type typeBit() throws RecognitionException, TokenStreamException { 3218 Type t; 3219 3220 3221 t = null; 3222 int max = 1; 3223 3224 3225 { 3226 switch ( LA(1)) { 3227 case LITERAL_bit: 3228 { 3229 match(LITERAL_bit); 3230 break; 3231 } 3232 case LITERAL_binary: 3233 { 3234 match(LITERAL_binary); 3235 break; 3236 } 3237 default: 3238 { 3239 throw new NoViableAltException(LT(1), getFilename()); 3240 } 3241 } 3242 } 3243 { 3244 switch ( LA(1)) { 3245 case LPAREN: 3246 { 3247 match(LPAREN); 3248 max=integer(); 3249 match(RPAREN); 3250 break; 3251 } 3252 case EOF: 3253 case LITERAL_unique: 3254 case RPAREN: 3255 case LITERAL_constraint: 3256 case LITERAL_primary: 3257 case LITERAL_check: 3258 case LITERAL_first: 3259 case LITERAL_after: 3260 case LITERAL_default: 3261 case LITERAL_with: 3262 case COMMA: 3263 case LITERAL_references: 3264 case LITERAL_not: 3265 { 3266 break; 3267 } 3268 default: 3269 { 3270 throw new NoViableAltException(LT(1), getFilename()); 3271 } 3272 } 3273 } 3274 if ( inputState.guessing==0 ) { 3275 t = new TypeBinary(max); 3276 } 3277 return t; 3278 } 3279 3280 public final Type typeBlob() throws RecognitionException, TokenStreamException { 3281 Type t; 3282 3283 3284 t = null; 3285 int max = 1; 3286 3287 3288 { 3289 switch ( LA(1)) { 3290 case LITERAL_blob: 3291 { 3292 match(LITERAL_blob); 3293 break; 3294 } 3295 case LITERAL_binary: 3296 { 3297 match(LITERAL_binary); 3298 match(LITERAL_large); 3299 match(LITERAL_object); 3300 break; 3301 } 3302 default: 3303 { 3304 throw new NoViableAltException(LT(1), getFilename()); 3305 } 3306 } 3307 } 3308 { 3309 switch ( LA(1)) { 3310 case LPAREN: 3311 { 3312 match(LPAREN); 3313 max=integer(); 3314 match(RPAREN); 3315 break; 3316 } 3317 case EOF: 3318 case LITERAL_unique: 3319 case RPAREN: 3320 case LITERAL_constraint: 3321 case LITERAL_primary: 3322 case LITERAL_check: 3323 case LITERAL_first: 3324 case LITERAL_after: 3325 case LITERAL_default: 3326 case LITERAL_with: 3327 case COMMA: 3328 case LITERAL_references: 3329 case LITERAL_not: 3330 { 3331 break; 3332 } 3333 default: 3334 { 3335 throw new NoViableAltException(LT(1), getFilename()); 3336 } 3337 } 3338 } 3339 if ( inputState.guessing==0 ) { 3340 t = new TypeBlob(max); 3341 } 3342 return t; 3343 } 3344 3345 public final Type typeClob() throws RecognitionException, TokenStreamException { 3346 Type t; 3347 3348 3349 t = null; 3350 int max = 1; 3351 3352 3353 { 3354 switch ( LA(1)) { 3355 case LITERAL_clob: 3356 { 3357 match(LITERAL_clob); 3358 break; 3359 } 3360 case LITERAL_character: 3361 { 3362 match(LITERAL_character); 3363 match(LITERAL_large); 3364 match(LITERAL_object); 3365 break; 3366 } 3367 default: 3368 { 3369 throw new NoViableAltException(LT(1), getFilename()); 3370 } 3371 } 3372 } 3373 { 3374 switch ( LA(1)) { 3375 case LPAREN: 3376 { 3377 match(LPAREN); 3378 max=integer(); 3379 match(RPAREN); 3380 break; 3381 } 3382 case EOF: 3383 case LITERAL_unique: 3384 case RPAREN: 3385 case LITERAL_constraint: 3386 case LITERAL_primary: 3387 case LITERAL_check: 3388 case LITERAL_first: 3389 case LITERAL_after: 3390 case LITERAL_default: 3391 case LITERAL_with: 3392 case COMMA: 3393 case LITERAL_references: 3394 case LITERAL_not: 3395 { 3396 break; 3397 } 3398 default: 3399 { 3400 throw new NoViableAltException(LT(1), getFilename()); 3401 } 3402 } 3403 } 3404 if ( inputState.guessing==0 ) { 3405 t = new TypeClob(max); 3406 } 3407 return t; 3408 } 3409 3410 public final Type typeVarChar() throws RecognitionException, TokenStreamException { 3411 Type t; 3412 3413 3414 t = null; 3415 int max = 1; 3416 3417 3418 { 3419 switch ( LA(1)) { 3420 case LITERAL_char: 3421 { 3422 match(LITERAL_char); 3423 match(LITERAL_varying); 3424 break; 3425 } 3426 case LITERAL_character: 3427 { 3428 match(LITERAL_character); 3429 match(LITERAL_varying); 3430 break; 3431 } 3432 case LITERAL_varchar: 3433 { 3434 match(LITERAL_varchar); 3435 break; 3436 } 3437 default: 3438 { 3439 throw new NoViableAltException(LT(1), getFilename()); 3440 } 3441 } 3442 } 3443 { 3444 switch ( LA(1)) { 3445 case LPAREN: 3446 { 3447 match(LPAREN); 3448 max=integer(); 3449 match(RPAREN); 3450 break; 3451 } 3452 case EOF: 3453 case LITERAL_unique: 3454 case RPAREN: 3455 case LITERAL_constraint: 3456 case LITERAL_primary: 3457 case LITERAL_check: 3458 case LITERAL_first: 3459 case LITERAL_after: 3460 case LITERAL_default: 3461 case LITERAL_with: 3462 case COMMA: 3463 case LITERAL_references: 3464 case LITERAL_not: 3465 { 3466 break; 3467 } 3468 default: 3469 { 3470 throw new NoViableAltException(LT(1), getFilename()); 3471 } 3472 } 3473 } 3474 if ( inputState.guessing==0 ) { 3475 t = new TypeVarChar(max); 3476 } 3477 return t; 3478 } 3479 3480 public final Type typeChar() throws RecognitionException, TokenStreamException { 3481 Type t; 3482 3483 3484 t = null; 3485 int max = 1; 3486 3487 3488 { 3489 switch ( LA(1)) { 3490 case LITERAL_char: 3491 { 3492 match(LITERAL_char); 3493 break; 3494 } 3495 case LITERAL_character: 3496 { 3497 match(LITERAL_character); 3498 break; 3499 } 3500 default: 3501 { 3502 throw new NoViableAltException(LT(1), getFilename()); 3503 } 3504 } 3505 } 3506 { 3507 switch ( LA(1)) { 3508 case LPAREN: 3509 { 3510 match(LPAREN); 3511 max=integer(); 3512 match(RPAREN); 3513 break; 3514 } 3515 case EOF: 3516 case LITERAL_unique: 3517 case RPAREN: 3518 case LITERAL_constraint: 3519 case LITERAL_primary: 3520 case LITERAL_check: 3521 case LITERAL_first: 3522 case LITERAL_after: 3523 case LITERAL_default: 3524 case LITERAL_with: 3525 case COMMA: 3526 case LITERAL_references: 3527 case LITERAL_not: 3528 { 3529 break; 3530 } 3531 default: 3532 { 3533 throw new NoViableAltException(LT(1), getFilename()); 3534 } 3535 } 3536 } 3537 if ( inputState.guessing==0 ) { 3538 t = new TypeChar(max); 3539 } 3540 return t; 3541 } 3542 3543 public final Type typeDate() throws RecognitionException, TokenStreamException { 3544 Type t; 3545 3546 3547 t = null; 3548 3549 3550 match(LITERAL_date); 3551 if ( inputState.guessing==0 ) { 3552 t = TypeDate.typeDate; 3553 } 3554 return t; 3555 } 3556 3557 public final Type typeTime() throws RecognitionException, TokenStreamException { 3558 Type t; 3559 3560 3561 t = null; 3562 int precision = 0; 3563 boolean tz = false; 3564 3565 3566 match(LITERAL_time); 3567 { 3568 switch ( LA(1)) { 3569 case LPAREN: 3570 { 3571 match(LPAREN); 3572 precision=integer(); 3573 match(RPAREN); 3574 break; 3575 } 3576 case EOF: 3577 case LITERAL_unique: 3578 case RPAREN: 3579 case LITERAL_constraint: 3580 case LITERAL_primary: 3581 case LITERAL_check: 3582 case LITERAL_first: 3583 case LITERAL_after: 3584 case LITERAL_default: 3585 case LITERAL_with: 3586 case COMMA: 3587 case LITERAL_references: 3588 case LITERAL_not: 3589 { 3590 break; 3591 } 3592 default: 3593 { 3594 throw new NoViableAltException(LT(1), getFilename()); 3595 } 3596 } 3597 } 3598 { 3599 if ((LA(1)==LITERAL_with) && (LA(2)==LITERAL_time)) { 3600 match(LITERAL_with); 3601 match(LITERAL_time); 3602 match(LITERAL_zone); 3603 if ( inputState.guessing==0 ) { 3604 tz = true; 3605 } 3606 } 3607 else if ((LA(1)==EOF||LA(1)==LITERAL_unique||LA(1)==RPAREN||LA(1)==LITERAL_constraint||LA(1)==LITERAL_primary||LA(1)==LITERAL_check||LA(1)==LITERAL_first||LA(1)==LITERAL_after||LA(1)==LITERAL_default||LA(1)==LITERAL_with||LA(1)==COMMA||LA(1)==LITERAL_references||LA(1)==LITERAL_not) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_on||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_foreign||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==EQ||LA(2)==LITERAL_from||LA(2)==LITERAL_grant||LA(2)==LITERAL_insert||LA(2)==LITERAL_references||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_key||LA(2)==LITERAL_identity||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_for||LA(2)==LITERAL_order||LA(2)==STAR||LA(2)==LITERAL_having||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_is||LA(2)==LITERAL_like||LA(2)==LITERAL_between||LA(2)==LITERAL_in||LA(2)==LITERAL_exists||LA(2)==LITERAL_escape||LA(2)==120||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==LT||LA(2)==LE||LA(2)==GT||LA(2)==GE||LA(2)==NE||LA(2)==SLASH||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) { 3608 } 3609 else { 3610 throw new NoViableAltException(LT(1), getFilename()); 3611 } 3612 3613 } 3614 if ( inputState.guessing==0 ) { 3615 t = new TypeTime(precision, tz); 3616 } 3617 return t; 3618 } 3619 3620 public final Type typeTimestamp() throws RecognitionException, TokenStreamException { 3621 Type t; 3622 3623 3624 t = null; 3625 int precision = 0; 3626 boolean tz = false; 3627 3628 3629 match(LITERAL_timestamp); 3630 { 3631 switch ( LA(1)) { 3632 case LPAREN: 3633 { 3634 match(LPAREN); 3635 precision=integer(); 3636 match(RPAREN); 3637 break; 3638 } 3639 case EOF: 3640 case LITERAL_unique: 3641 case RPAREN: 3642 case LITERAL_constraint: 3643 case LITERAL_primary: 3644 case LITERAL_check: 3645 case LITERAL_first: 3646 case LITERAL_after: 3647 case LITERAL_default: 3648 case LITERAL_with: 3649 case COMMA: 3650 case LITERAL_references: 3651 case LITERAL_not: 3652 { 3653 break; 3654 } 3655 default: 3656 { 3657 throw new NoViableAltException(LT(1), getFilename()); 3658 } 3659 } 3660 } 3661 { 3662 if ((LA(1)==LITERAL_with) && (LA(2)==LITERAL_time)) { 3663 match(LITERAL_with); 3664 match(LITERAL_time); 3665 match(LITERAL_zone); 3666 if ( inputState.guessing==0 ) { 3667 tz = true; 3668 } 3669 } 3670 else if ((LA(1)==EOF||LA(1)==LITERAL_unique||LA(1)==RPAREN||LA(1)==LITERAL_constraint||LA(1)==LITERAL_primary||LA(1)==LITERAL_check||LA(1)==LITERAL_first||LA(1)==LITERAL_after||LA(1)==LITERAL_default||LA(1)==LITERAL_with||LA(1)==COMMA||LA(1)==LITERAL_references||LA(1)==LITERAL_not) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_on||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_foreign||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==EQ||LA(2)==LITERAL_from||LA(2)==LITERAL_grant||LA(2)==LITERAL_insert||LA(2)==LITERAL_references||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_key||LA(2)==LITERAL_identity||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_for||LA(2)==LITERAL_order||LA(2)==STAR||LA(2)==LITERAL_having||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_is||LA(2)==LITERAL_like||LA(2)==LITERAL_between||LA(2)==LITERAL_in||LA(2)==LITERAL_exists||LA(2)==LITERAL_escape||LA(2)==120||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==LT||LA(2)==LE||LA(2)==GT||LA(2)==GE||LA(2)==NE||LA(2)==SLASH||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) { 3671 } 3672 else { 3673 throw new NoViableAltException(LT(1), getFilename()); 3674 } 3675 3676 } 3677 if ( inputState.guessing==0 ) { 3678 t = new TypeTimestamp(precision, tz); 3679 } 3680 return t; 3681 } 3682 3683 public final Type typeInterval() throws RecognitionException, TokenStreamException { 3684 Type t; 3685 3686 3687 t = null; 3688 3689 3690 match(LITERAL_interval); 3691 t=intervalQualifier(); 3692 return t; 3693 } 3694 3695 public final int integer() throws RecognitionException, TokenStreamException { 3696 int val; 3697 3698 Token t = null; 3699 val = 0; 3700 3701 t = LT(1); 3702 match(INT); 3703 if ( inputState.guessing==0 ) { 3704 val = Integer.parseInt(t.getText()); 3705 } 3706 return val; 3707 } 3708 3709 public final TypeInterval intervalQualifier() throws RecognitionException, TokenStreamException { 3710 TypeInterval type; 3711 3712 3713 type = null; 3714 3715 3716 boolean synPredMatched296 = false; 3717 if (((LA(1)==LITERAL_hour||LA(1)==LITERAL_minute||LA(1)==LITERAL_year||LA(1)==LITERAL_day) && (LA(2)==LPAREN||LA(2)==LITERAL_to))) { 3718 int _m296 = mark(); 3719 synPredMatched296 = true; 3720 inputState.guessing++; 3721 try { 3722 { 3723 { 3724 switch ( LA(1)) { 3725 case LITERAL_year: 3726 { 3727 match(LITERAL_year); 3728 break; 3729 } 3730 case LITERAL_day: 3731 { 3732 match(LITERAL_day); 3733 break; 3734 } 3735 case LITERAL_hour: 3736 { 3737 match(LITERAL_hour); 3738 break; 3739 } 3740 case LITERAL_minute: 3741 { 3742 match(LITERAL_minute); 3743 break; 3744 } 3745 default: 3746 { 3747 throw new NoViableAltException(LT(1), getFilename()); 3748 } 3749 } 3750 } 3751 { 3752 switch ( LA(1)) { 3753 case LPAREN: 3754 { 3755 match(LPAREN); 3756 integer(); 3757 match(RPAREN); 3758 break; 3759 } 3760 case LITERAL_to: 3761 { 3762 break; 3763 } 3764 default: 3765 { 3766 throw new NoViableAltException(LT(1), getFilename()); 3767 } 3768 } 3769 } 3770 match(LITERAL_to); 3771 } 3772 } 3773 catch (RecognitionException pe) { 3774 synPredMatched296 = false; 3775 } 3776 rewind(_m296); 3777 inputState.guessing--; 3778 } 3779 if ( synPredMatched296 ) { 3780 type=intervalRange(); 3781 } 3782 else if ((LA(1)==LITERAL_hour||LA(1)==LITERAL_minute||LA(1)==LITERAL_month||LA(1)==LITERAL_second||LA(1)==LITERAL_year||LA(1)==LITERAL_day) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_on||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==EQ||LA(2)==LITERAL_from||LA(2)==LITERAL_grant||LA(2)==LITERAL_references||LA(2)==LITERAL_not||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_for||LA(2)==LITERAL_order||LA(2)==STAR||LA(2)==LITERAL_having||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_is||LA(2)==LITERAL_like||LA(2)==LITERAL_between||LA(2)==LITERAL_in||LA(2)==LITERAL_escape||LA(2)==120||LA(2)==PLUS||LA(2)==MINUS||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_left||LA(2)==LITERAL_right||LA(2)==LT||LA(2)==LE||LA(2)==GT||LA(2)==GE||LA(2)==NE||LA(2)==SLASH||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) { 3783 type=intervalSingleField(); 3784 } 3785 else { 3786 throw new NoViableAltException(LT(1), getFilename()); 3787 } 3788 3789 return type; 3790 } 3791 3792 public final Vector orderBy() throws RecognitionException, TokenStreamException { 3793 Vector v; 3794 3795 3796 v = new Vector (); 3797 OrderElement e; 3798 3799 3800 match(LITERAL_order); 3801 match(LITERAL_by); 3802 e=orderElement(); 3803 if ( inputState.guessing==0 ) { 3804 v.addElement(e); 3805 } 3806 { 3807 _loop183: 3808 do { 3809 if ((LA(1)==COMMA)) { 3810 match(COMMA); 3811 e=orderElement(); 3812 if ( inputState.guessing==0 ) { 3813 v.addElement(e); 3814 } 3815 } 3816 else { 3817 break _loop183; 3818 } 3819 3820 } while (true); 3821 } 3822 return v; 3823 } 3824 3825 public final OrderElement orderElement() throws RecognitionException, TokenStreamException { 3826 OrderElement e; 3827 3828 3829 e = null; 3830 int i; 3831 String id = null; 3832 3833 3834 { 3835 switch ( LA(1)) { 3836 case ID: 3837 { 3838 id=sqlId(); 3839 if ( inputState.guessing==0 ) { 3840 e = new OrderElement(id); 3841 } 3842 break; 3843 } 3844 case INT: 3845 { 3846 i=integer(); 3847 if ( inputState.guessing==0 ) { 3848 e = new OrderElement(i); 3849 } 3850 break; 3851 } 3852 default: 3853 { 3854 throw new NoViableAltException(LT(1), getFilename()); 3855 } 3856 } 3857 } 3858 { 3859 switch ( LA(1)) { 3860 case LITERAL_asc: 3861 { 3862 match(LITERAL_asc); 3863 if ( inputState.guessing==0 ) { 3864 e.setAscending(true); 3865 } 3866 break; 3867 } 3868 case LITERAL_desc: 3869 { 3870 match(LITERAL_desc); 3871 if ( inputState.guessing==0 ) { 3872 e.setAscending(false); 3873 } 3874 break; 3875 } 3876 case EOF: 3877 case COMMA: 3878 { 3879 break; 3880 } 3881 default: 3882 { 3883 throw new NoViableAltException(LT(1), getFilename()); 3884 } 3885 } 3886 } 3887 return e; 3888 } 3889 3890 public final SelectExpression querySpecification() throws RecognitionException, TokenStreamException { 3891 SelectExpression s; 3892 3893 3894 s = null; 3895 Vector items = null; 3896 Vector from = null; 3897 Expression where = null; 3898 Vector group = null; 3899 Expression having = null; 3900 3901 3902 match(LITERAL_select); 3903 if ( inputState.guessing==0 ) { 3904 s = new SelectExpression(); 3905 } 3906 { 3907 switch ( LA(1)) { 3908 case LITERAL_all: 3909 { 3910 match(LITERAL_all); 3911 if ( inputState.guessing==0 ) { 3912 s.setDistinct(false); 3913 } 3914 break; 3915 } 3916 case LITERAL_distinct: 3917 { 3918 match(LITERAL_distinct); 3919 if ( inputState.guessing==0 ) { 3920 s.setDistinct(true); 3921 } 3922 break; 3923 } 3924 case LITERAL_unique: 3925 case LPAREN: 3926 case LITERAL_default: 3927 case LITERAL_insert: 3928 case LITERAL_not: 3929 case LITERAL_null: 3930 case LITERAL_char: 3931 case LITERAL_date: 3932 case LITERAL_time: 3933 case LITERAL_timestamp: 3934 case LITERAL_interval: 3935 case STAR: 3936 case LITERAL_exists: 3937 case PLUS: 3938 case MINUS: 3939 case STRING_LITERAL: 3940 case QUESTION: 3941 case INT: 3942 case REAL: 3943 case BINSTR: 3944 case HEXSTR: 3945 case LITERAL_case: 3946 case LITERAL_hour: 3947 case LITERAL_left: 3948 case LITERAL_minute: 3949 case LITERAL_month: 3950 case LITERAL_right: 3951 case LITERAL_second: 3952 case LITERAL_year: 3953 case LITERAL_user: 3954 case LITERAL_current_user: 3955 case LITERAL_session_user: 3956 case LITERAL_system_user: 3957 case LITERAL_current_date: 3958 case LITERAL_current_time: 3959 case LITERAL_current_timestamp: 3960 case LITERAL_sql_tsi_frac_second: 3961 case LITERAL_sql_tsi_second: 3962 case LITERAL_sql_tsi_minute: 3963 case LITERAL_sql_tsi_hour: 3964 case LITERAL_sql_tsi_day: 3965 case LITERAL_sql_tsi_week: 3966 case LITERAL_sql_tsi_month: 3967 case LITERAL_sql_tsi_quarter: 3968 case LITERAL_sql_tsi_year: 3969 case LITERAL_cast: 3970 case LITERAL_true: 3971 case LITERAL_false: 3972 case LITERAL_avg: 3973 case LITERAL_min: 3974 case LITERAL_max: 3975 case LITERAL_sum: 3976 case LITERAL_count: 3977 case ID: 3978 { 3979 break; 3980 } 3981 default: 3982 { 3983 throw new NoViableAltException(LT(1), getFilename()); 3984 } 3985 } 3986 } 3987 { 3988 switch ( LA(1)) { 3989 case LITERAL_unique: 3990 case LPAREN: 3991 case LITERAL_default: 3992 case LITERAL_insert: 3993 case LITERAL_not: 3994 case LITERAL_null: 3995 case LITERAL_char: 3996 case LITERAL_date: 3997 case LITERAL_time: 3998 case LITERAL_timestamp: 3999 case LITERAL_interval: 4000 case LITERAL_exists: 4001 case PLUS: 4002 case MINUS: 4003 case STRING_LITERAL: 4004 case QUESTION: 4005 case INT: 4006 case REAL: 4007 case BINSTR: 4008 case HEXSTR: 4009 case LITERAL_case: 4010 case LITERAL_hour: 4011 case LITERAL_left: 4012 case LITERAL_minute: 4013 case LITERAL_month: 4014 case LITERAL_right: 4015 case LITERAL_second: 4016 case LITERAL_year: 4017 case LITERAL_user: 4018 case LITERAL_current_user: 4019 case LITERAL_session_user: 4020 case LITERAL_system_user: 4021 case LITERAL_current_date: 4022 case LITERAL_current_time: 4023 case LITERAL_current_timestamp: 4024 case LITERAL_sql_tsi_frac_second: 4025 case LITERAL_sql_tsi_second: 4026 case LITERAL_sql_tsi_minute: 4027 case LITERAL_sql_tsi_hour: 4028 case LITERAL_sql_tsi_day: 4029 case LITERAL_sql_tsi_week: 4030 case LITERAL_sql_tsi_month: 4031 case LITERAL_sql_tsi_quarter: 4032 case LITERAL_sql_tsi_year: 4033 case LITERAL_cast: 4034 case LITERAL_true: 4035 case LITERAL_false: 4036 case LITERAL_avg: 4037 case LITERAL_min: 4038 case LITERAL_max: 4039 case LITERAL_sum: 4040 case LITERAL_count: 4041 case ID: 4042 { 4043 items=selectItems(); 4044 if ( inputState.guessing==0 ) { 4045 s.setItems(items); 4046 } 4047 break; 4048 } 4049 case STAR: 4050 { 4051 match(STAR); 4052 break; 4053 } 4054 default: 4055 { 4056 throw new NoViableAltException(LT(1), getFilename()); 4057 } 4058 } 4059 } 4060 from=selectFrom(); 4061 if ( inputState.guessing==0 ) { 4062 s.setFrom(from); 4063 } 4064 where=whereExpression(); 4065 if ( inputState.guessing==0 ) { 4066 s.setWhere(where); 4067 } 4068 group=selectGroupBy(); 4069 if ( inputState.guessing==0 ) { 4070 s.setGroupBy(group); 4071 } 4072 having=selectHaving(); 4073 if ( inputState.guessing==0 ) { 4074 s.setHaving(having); 4075 } 4076 return s; 4077 } 4078 4079 public final Vector selectItems() throws RecognitionException, TokenStreamException { 4080 Vector items; 4081 4082 4083 items = new Vector (); 4084 SelectItem item = null; 4085 4086 4087 item=selectItem(); 4088 if ( inputState.guessing==0 ) { 4089 4090 items.addElement(item); 4091 4092 } 4093 { 4094 _loop320: 4095 do { 4096 if ((LA(1)==COMMA) && (LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==LITERAL_default||LA(2)==LITERAL_insert||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_exists||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==ID)) { 4097 match(COMMA); 4098 item=selectItem(); 4099 if ( inputState.guessing==0 ) { 4100 items.addElement(item); 4101 } 4102 } 4103 else { 4104 break _loop320; 4105 } 4106 4107 } while (true); 4108 } 4109 return items; 4110 } 4111 4112 public final Vector selectFrom() throws RecognitionException, TokenStreamException { 4113 Vector from; 4114 4115 4116 from = null; 4117 Expression item = null; 4118 4119 4120 { 4121 if ((LA(1)==LITERAL_from) && (LA(2)==LPAREN||LA(2)==ID)) { 4122 match(LITERAL_from); 4123 if ( inputState.guessing==0 ) { 4124 from = new Vector (); 4125 } 4126 item=tableReference(); 4127 if ( inputState.guessing==0 ) { 4128 from.addElement(item); 4129 } 4130 { 4131 _loop195: 4132 do { 4133 if ((LA(1)==COMMA) && (LA(2)==LPAREN||LA(2)==ID)) { 4134 match(COMMA); 4135 item=tableReference(); 4136 if ( inputState.guessing==0 ) { 4137 from.addElement(item); 4138 } 4139 } 4140 else { 4141 break _loop195; 4142 } 4143 4144 } while (true); 4145 } 4146 } 4147 else if ((LA(1)==EOF||LA(1)==LITERAL_create||LA(1)==LITERAL_unique||LA(1)==LITERAL_on||LA(1)==RPAREN||LA(1)==LITERAL_constraint||LA(1)==LITERAL_primary||LA(1)==LITERAL_check||LA(1)==LITERAL_first||LA(1)==LITERAL_after||LA(1)==LITERAL_default||LA(1)==LITERAL_as||LA(1)==LITERAL_with||LA(1)==COMMA||LA(1)==LITERAL_where||LA(1)==LITERAL_from||LA(1)==LITERAL_grant||LA(1)==LITERAL_references||LA(1)==LITERAL_not||LA(1)==LITERAL_full||LA(1)==LITERAL_initially||LA(1)==LITERAL_deferrable||LA(1)==LITERAL_for||LA(1)==LITERAL_order||LA(1)==LITERAL_having||LA(1)==LITERAL_using||LA(1)==LITERAL_group||LA(1)==CONCAT||LA(1)==LITERAL_or||LA(1)==LITERAL_and||LA(1)==LITERAL_when||LA(1)==LITERAL_then||LA(1)==LITERAL_else||LA(1)==LITERAL_end||LA(1)==LITERAL_left||LA(1)==LITERAL_right||LA(1)==LITERAL_cross||LA(1)==LITERAL_join||LA(1)==LITERAL_natural||LA(1)==LITERAL_union||LA(1)==LITERAL_inner||LA(1)==LITERAL_intersect||LA(1)==LITERAL_except||LA(1)==ID) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_index||LA(2)==LITERAL_temporary||LA(2)==LITERAL_table||LA(2)==LITERAL_view||LA(2)==LITERAL_on||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_foreign||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==LITERAL_cascaded||LA(2)==LITERAL_update||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==EQ||LA(2)==LITERAL_delete||LA(2)==LITERAL_from||LA(2)==LITERAL_global||LA(2)==LITERAL_local||LA(2)==LITERAL_grant||LA(2)==LITERAL_all||LA(2)==LITERAL_select||LA(2)==LITERAL_insert||LA(2)==LITERAL_references||LA(2)==LITERAL_usage||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_key||LA(2)==LITERAL_identity||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferred||LA(2)==LITERAL_immediate||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_bit||LA(2)==LITERAL_varbinary||LA(2)==LITERAL_binary||LA(2)==LITERAL_blob||LA(2)==LITERAL_clob||LA(2)==LITERAL_character||LA(2)==LITERAL_char||LA(2)==LITERAL_varchar||LA(2)==LITERAL_int||LA(2)==LITERAL_integer||LA(2)==LITERAL_smallint||LA(2)==LITERAL_tinyint||LA(2)==LITERAL_bigint||LA(2)==LITERAL_dec||LA(2)==LITERAL_decimal||LA(2)==LITERAL_numeric||LA(2)==LITERAL_real||LA(2)==LITERAL_double||LA(2)==LITERAL_float||LA(2)==LITERAL_boolean||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_for||LA(2)==LITERAL_read||LA(2)==LITERAL_order||LA(2)==LITERAL_by||LA(2)==STAR||LA(2)==LITERAL_having||LA(2)==LITERAL_corresponding||LA(2)==LITERAL_values||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_is||LA(2)==LITERAL_like||LA(2)==LITERAL_between||LA(2)==LITERAL_in||LA(2)==LITERAL_exists||LA(2)==LITERAL_escape||LA(2)==120||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==LT||LA(2)==LE||LA(2)==GT||LA(2)==GE||LA(2)==NE||LA(2)==SLASH||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_outer||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) { 4148 } 4149 else { 4150 throw new NoViableAltException(LT(1), getFilename()); 4151 } 4152 4153 } 4154 return from; 4155 } 4156 4157 public final Vector selectGroupBy() throws RecognitionException, TokenStreamException { 4158 Vector v; 4159 4160 4161 v = null; 4162 4163 4164 { 4165 if ((LA(1)==LITERAL_group) && (LA(2)==LITERAL_by)) { 4166 match(LITERAL_group); 4167 match(LITERAL_by); 4168 v=idList(); 4169 } 4170 else if ((LA(1)==EOF||LA(1)==LITERAL_create||LA(1)==LITERAL_unique||LA(1)==LITERAL_on||LA(1)==RPAREN||LA(1)==LITERAL_constraint||LA(1)==LITERAL_primary||LA(1)==LITERAL_check||LA(1)==LITERAL_first||LA(1)==LITERAL_after||LA(1)==LITERAL_default||LA(1)==LITERAL_as||LA(1)==LITERAL_with||LA(1)==COMMA||LA(1)==LITERAL_where||LA(1)==LITERAL_from||LA(1)==LITERAL_grant||LA(1)==LITERAL_references||LA(1)==LITERAL_not||LA(1)==LITERAL_full||LA(1)==LITERAL_initially||LA(1)==LITERAL_deferrable||LA(1)==LITERAL_for||LA(1)==LITERAL_order||LA(1)==LITERAL_having||LA(1)==LITERAL_using||LA(1)==LITERAL_group||LA(1)==CONCAT||LA(1)==LITERAL_or||LA(1)==LITERAL_and||LA(1)==LITERAL_when||LA(1)==LITERAL_then||LA(1)==LITERAL_else||LA(1)==LITERAL_end||LA(1)==LITERAL_left||LA(1)==LITERAL_right||LA(1)==LITERAL_cross||LA(1)==LITERAL_join||LA(1)==LITERAL_natural||LA(1)==LITERAL_union||LA(1)==LITERAL_inner||LA(1)==LITERAL_intersect||LA(1)==LITERAL_except||LA(1)==ID) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_index||LA(2)==LITERAL_temporary||LA(2)==LITERAL_table||LA(2)==LITERAL_view||LA(2)==LITERAL_on||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_foreign||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==LITERAL_cascaded||LA(2)==LITERAL_update||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==EQ||LA(2)==LITERAL_delete||LA(2)==LITERAL_from||LA(2)==LITERAL_global||LA(2)==LITERAL_local||LA(2)==LITERAL_grant||LA(2)==LITERAL_all||LA(2)==LITERAL_select||LA(2)==LITERAL_insert||LA(2)==LITERAL_references||LA(2)==LITERAL_usage||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_key||LA(2)==LITERAL_identity||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferred||LA(2)==LITERAL_immediate||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_bit||LA(2)==LITERAL_varbinary||LA(2)==LITERAL_binary||LA(2)==LITERAL_blob||LA(2)==LITERAL_clob||LA(2)==LITERAL_character||LA(2)==LITERAL_char||LA(2)==LITERAL_varchar||LA(2)==LITERAL_int||LA(2)==LITERAL_integer||LA(2)==LITERAL_smallint||LA(2)==LITERAL_tinyint||LA(2)==LITERAL_bigint||LA(2)==LITERAL_dec||LA(2)==LITERAL_decimal||LA(2)==LITERAL_numeric||LA(2)==LITERAL_real||LA(2)==LITERAL_double||LA(2)==LITERAL_float||LA(2)==LITERAL_boolean||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_for||LA(2)==LITERAL_read||LA(2)==LITERAL_order||LA(2)==LITERAL_by||LA(2)==STAR||LA(2)==LITERAL_having||LA(2)==LITERAL_corresponding||LA(2)==LITERAL_values||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_is||LA(2)==LITERAL_like||LA(2)==LITERAL_between||LA(2)==LITERAL_in||LA(2)==LITERAL_exists||LA(2)==LITERAL_escape||LA(2)==120||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==LT||LA(2)==LE||LA(2)==GT||LA(2)==GE||LA(2)==NE||LA(2)==SLASH||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_outer||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) { 4171 } 4172 else { 4173 throw new NoViableAltException(LT(1), getFilename()); 4174 } 4175 4176 } 4177 return v; 4178 } 4179 4180 public final Expression selectHaving() throws RecognitionException, TokenStreamException { 4181 Expression e; 4182 4183 4184 e = null; 4185 4186 4187 { 4188 if ((LA(1)==LITERAL_having) && (LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==LITERAL_default||LA(2)==LITERAL_insert||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_exists||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==ID)) { 4189 match(LITERAL_having); 4190 e=expression(); 4191 } 4192 else if ((LA(1)==EOF||LA(1)==LITERAL_create||LA(1)==LITERAL_unique||LA(1)==LITERAL_on||LA(1)==RPAREN||LA(1)==LITERAL_constraint||LA(1)==LITERAL_primary||LA(1)==LITERAL_check||LA(1)==LITERAL_first||LA(1)==LITERAL_after||LA(1)==LITERAL_default||LA(1)==LITERAL_as||LA(1)==LITERAL_with||LA(1)==COMMA||LA(1)==LITERAL_where||LA(1)==LITERAL_from||LA(1)==LITERAL_grant||LA(1)==LITERAL_references||LA(1)==LITERAL_not||LA(1)==LITERAL_full||LA(1)==LITERAL_initially||LA(1)==LITERAL_deferrable||LA(1)==LITERAL_for||LA(1)==LITERAL_order||LA(1)==LITERAL_having||LA(1)==LITERAL_using||LA(1)==LITERAL_group||LA(1)==CONCAT||LA(1)==LITERAL_or||LA(1)==LITERAL_and||LA(1)==LITERAL_when||LA(1)==LITERAL_then||LA(1)==LITERAL_else||LA(1)==LITERAL_end||LA(1)==LITERAL_left||LA(1)==LITERAL_right||LA(1)==LITERAL_cross||LA(1)==LITERAL_join||LA(1)==LITERAL_natural||LA(1)==LITERAL_union||LA(1)==LITERAL_inner||LA(1)==LITERAL_intersect||LA(1)==LITERAL_except||LA(1)==ID) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_index||LA(2)==LITERAL_temporary||LA(2)==LITERAL_table||LA(2)==LITERAL_view||LA(2)==LITERAL_on||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_foreign||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==LITERAL_cascaded||LA(2)==LITERAL_update||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==EQ||LA(2)==LITERAL_delete||LA(2)==LITERAL_from||LA(2)==LITERAL_global||LA(2)==LITERAL_local||LA(2)==LITERAL_grant||LA(2)==LITERAL_all||LA(2)==LITERAL_select||LA(2)==LITERAL_insert||LA(2)==LITERAL_references||LA(2)==LITERAL_usage||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_key||LA(2)==LITERAL_identity||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferred||LA(2)==LITERAL_immediate||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_bit||LA(2)==LITERAL_varbinary||LA(2)==LITERAL_binary||LA(2)==LITERAL_blob||LA(2)==LITERAL_clob||LA(2)==LITERAL_character||LA(2)==LITERAL_char||LA(2)==LITERAL_varchar||LA(2)==LITERAL_int||LA(2)==LITERAL_integer||LA(2)==LITERAL_smallint||LA(2)==LITERAL_tinyint||LA(2)==LITERAL_bigint||LA(2)==LITERAL_dec||LA(2)==LITERAL_decimal||LA(2)==LITERAL_numeric||LA(2)==LITERAL_real||LA(2)==LITERAL_double||LA(2)==LITERAL_float||LA(2)==LITERAL_boolean||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_for||LA(2)==LITERAL_read||LA(2)==LITERAL_order||LA(2)==LITERAL_by||LA(2)==STAR||LA(2)==LITERAL_having||LA(2)==LITERAL_corresponding||LA(2)==LITERAL_values||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_is||LA(2)==LITERAL_like||LA(2)==LITERAL_between||LA(2)==LITERAL_in||LA(2)==LITERAL_exists||LA(2)==LITERAL_escape||LA(2)==120||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==LT||LA(2)==LE||LA(2)==GT||LA(2)==GE||LA(2)==NE||LA(2)==SLASH||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_outer||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) { 4193 } 4194 else { 4195 throw new NoViableAltException(LT(1), getFilename()); 4196 } 4197 4198 } 4199 return e; 4200 } 4201 4202 public final TableExpression tableReference() throws RecognitionException, TokenStreamException { 4203 TableExpression item; 4204 4205 4206 item = null; 4207 4208 4209 item=joinedTable(); 4210 return item; 4211 } 4212 4213 public final TableExpression nonJoinQueryExpression() throws RecognitionException, TokenStreamException { 4214 TableExpression item; 4215 4216 4217 item = null; 4218 4219 4220 switch ( LA(1)) { 4221 case LPAREN: 4222 { 4223 match(LPAREN); 4224 item=queryExpression(); 4225 match(RPAREN); 4226 break; 4227 } 4228 case LITERAL_table: 4229 case LITERAL_select: 4230 case LITERAL_values: 4231 { 4232 item=simpleTable(); 4233 break; 4234 } 4235 default: 4236 { 4237 throw new NoViableAltException(LT(1), getFilename()); 4238 } 4239 } 4240 return item; 4241 } 4242 4243 public final TableExpression simpleTable() throws RecognitionException, TokenStreamException { 4244 TableExpression item; 4245 4246 4247 item = null; 4248 String id = null; 4249 4250 4251 switch ( LA(1)) { 4252 case LITERAL_select: 4253 { 4254 item=querySpecification(); 4255 break; 4256 } 4257 case LITERAL_table: 4258 { 4259 match(LITERAL_table); 4260 id=sqlId(); 4261 if ( inputState.guessing==0 ) { 4262 4263 item = new SelectFromTable(qConn.resolveName(id)); 4264 4265 } 4266 break; 4267 } 4268 case LITERAL_values: 4269 { 4270 item=tableValueConstructor(); 4271 break; 4272 } 4273 default: 4274 { 4275 throw new NoViableAltException(LT(1), getFilename()); 4276 } 4277 } 4278 return item; 4279 } 4280 4281 public final TableExpression queryExpressionHead() throws RecognitionException, TokenStreamException { 4282 TableExpression item; 4283 4284 4285 item = null; 4286 4287 4288 if ((LA(1)==LITERAL_table||LA(1)==LPAREN||LA(1)==LITERAL_select||LA(1)==LITERAL_values) && (LA(2)==LITERAL_unique||LA(2)==LITERAL_table||LA(2)==LPAREN||LA(2)==LITERAL_default||LA(2)==LITERAL_all||LA(2)==LITERAL_select||LA(2)==LITERAL_insert||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_distinct||LA(2)==STAR||LA(2)==LITERAL_values||LA(2)==LITERAL_exists||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==ID)) { 4289 item=nonJoinQueryExpression(); 4290 } 4291 else if ((LA(1)==LPAREN||LA(1)==ID) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_table||LA(2)==LITERAL_on||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==LITERAL_from||LA(2)==LITERAL_grant||LA(2)==LITERAL_select||LA(2)==LITERAL_references||LA(2)==LITERAL_not||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_for||LA(2)==LITERAL_order||LA(2)==LITERAL_having||LA(2)==LITERAL_values||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_left||LA(2)==LITERAL_right||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) { 4292 item=joinedTable(); 4293 } 4294 else { 4295 throw new NoViableAltException(LT(1), getFilename()); 4296 } 4297 4298 return item; 4299 } 4300 4301 public final TableExpression joinedTable() throws RecognitionException, TokenStreamException { 4302 TableExpression item; 4303 4304 4305 item = null; 4306 JoinedTable jt = null; 4307 int type = -1; 4308 TableExpression s1 = null; 4309 TableExpression s2 = null; 4310 4311 4312 if ((LA(1)==LPAREN||LA(1)==ID) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_table||LA(2)==LITERAL_on||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==LITERAL_from||LA(2)==LITERAL_grant||LA(2)==LITERAL_select||LA(2)==LITERAL_references||LA(2)==LITERAL_not||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_for||LA(2)==LITERAL_order||LA(2)==LITERAL_having||LA(2)==LITERAL_values||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_left||LA(2)==LITERAL_right||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) { 4313 item=tableReferencePrimary(); 4314 { 4315 _loop219: 4316 do { 4317 if ((LA(1)==LITERAL_full||LA(1)==LITERAL_left||LA(1)==LITERAL_right||LA(1)==LITERAL_cross||LA(1)==LITERAL_join||LA(1)==LITERAL_natural||LA(1)==LITERAL_union||LA(1)==LITERAL_inner) && (LA(2)==LPAREN||LA(2)==LITERAL_full||LA(2)==LITERAL_left||LA(2)==LITERAL_right||LA(2)==LITERAL_join||LA(2)==LITERAL_inner||LA(2)==LITERAL_outer||LA(2)==ID)) { 4318 type=joinSpec(); 4319 s2=tableReference(); 4320 if ( inputState.guessing==0 ) { 4321 4322 item = jt = new JoinedTable(type, item, s2); 4323 4324 } 4325 joinModifiers(jt); 4326 if ( inputState.guessing==0 ) { 4327 4328 jt.checkSyntax(); 4329 4330 } 4331 } 4332 else { 4333 break _loop219; 4334 } 4335 4336 } while (true); 4337 } 4338 } 4339 else if ((LA(1)==LPAREN) && (LA(2)==LPAREN||LA(2)==ID)) { 4340 match(LPAREN); 4341 item=joinedTable(); 4342 match(RPAREN); 4343 } 4344 else { 4345 throw new NoViableAltException(LT(1), getFilename()); 4346 } 4347 4348 return item; 4349 } 4350 4351 public final int combine() throws RecognitionException, TokenStreamException { 4352 int type; 4353 4354 4355 type = 0; 4356 4357 4358 { 4359 switch ( LA(1)) { 4360 case LITERAL_union: 4361 { 4362 match(LITERAL_union); 4363 if ( inputState.guessing==0 ) { 4364 type = Op.UNION; 4365 } 4366 break; 4367 } 4368 case LITERAL_intersect: 4369 { 4370 match(LITERAL_intersect); 4371 if ( inputState.guessing==0 ) { 4372 type = Op.INTERSECT; 4373 } 4374 break; 4375 } 4376 case LITERAL_except: 4377 { 4378 match(LITERAL_except); 4379 if ( inputState.guessing==0 ) { 4380 type = Op.EXCEPT; 4381 } 4382 break; 4383 } 4384 default: 4385 { 4386 throw new NoViableAltException(LT(1), getFilename()); 4387 } 4388 } 4389 } 4390 return type; 4391 } 4392 4393 public final VectorExpression tableValueConstructor() throws RecognitionException, TokenStreamException { 4394 VectorExpression e; 4395 4396 4397 e = null; 4398 VectorExpression f = null; 4399 4400 4401 match(LITERAL_values); 4402 f=vectorExpression(); 4403 if ( inputState.guessing==0 ) { 4404 4405 e = new VectorExpression(); 4406 e.addElement(f); 4407 4408 } 4409 { 4410 _loop329: 4411 do { 4412 if ((LA(1)==COMMA) && (LA(2)==LPAREN)) { 4413 match(COMMA); 4414 f=vectorExpression(); 4415 if ( inputState.guessing==0 ) { 4416 4417 e.addElement(f); 4418 4419 } 4420 } 4421 else { 4422 break _loop329; 4423 } 4424 4425 } while (true); 4426 } 4427 return e; 4428 } 4429 4430 public final TableExpression tableReferencePrimary() throws RecognitionException, TokenStreamException { 4431 TableExpression item; 4432 4433 4434 item = null; 4435 Vector columns = null; 4436 String id = null; 4437 String id2 = null; 4438 4439 4440 { 4441 switch ( LA(1)) { 4442 case ID: 4443 { 4444 id=sqlId(); 4445 if ( inputState.guessing==0 ) { 4446 4447 id = qConn.resolveName(id); 4448 item = new SelectFromTable(id); 4449 4450 } 4451 break; 4452 } 4453 case LPAREN: 4454 { 4455 match(LPAREN); 4456 item=queryExpression(); 4457 match(RPAREN); 4458 break; 4459 } 4460 default: 4461 { 4462 throw new NoViableAltException(LT(1), getFilename()); 4463 } 4464 } 4465 } 4466 { 4467 if ((LA(1)==LITERAL_as||LA(1)==ID) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_on||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==LITERAL_from||LA(2)==LITERAL_grant||LA(2)==LITERAL_references||LA(2)==LITERAL_not||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_for||LA(2)==LITERAL_order||LA(2)==LITERAL_having||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_left||LA(2)==LITERAL_right||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) { 4468 { 4469 switch ( LA(1)) { 4470 case LITERAL_as: 4471 { 4472 match(LITERAL_as); 4473 break; 4474 } 4475 case ID: 4476 { 4477 break; 4478 } 4479 default: 4480 { 4481 throw new NoViableAltException(LT(1), getFilename()); 4482 } 4483 } 4484 } 4485 id2=sqlId(); 4486 { 4487 switch ( LA(1)) { 4488 case LPAREN: 4489 { 4490 match(LPAREN); 4491 columns=idList(); 4492 match(RPAREN); 4493 break; 4494 } 4495 case EOF: 4496 case LITERAL_create: 4497 case LITERAL_unique: 4498 case LITERAL_on: 4499 case RPAREN: 4500 case LITERAL_constraint: 4501 case LITERAL_primary: 4502 case LITERAL_check: 4503 case LITERAL_first: 4504 case LITERAL_after: 4505 case LITERAL_default: 4506 case LITERAL_as: 4507 case LITERAL_with: 4508 case COMMA: 4509 case LITERAL_where: 4510 case LITERAL_from: 4511 case LITERAL_grant: 4512 case LITERAL_references: 4513 case LITERAL_not: 4514 case LITERAL_full: 4515 case LITERAL_initially: 4516 case LITERAL_deferrable: 4517 case LITERAL_for: 4518 case LITERAL_order: 4519 case LITERAL_having: 4520 case LITERAL_using: 4521 case LITERAL_group: 4522 case CONCAT: 4523 case LITERAL_or: 4524 case LITERAL_and: 4525 case LITERAL_when: 4526 case LITERAL_then: 4527 case LITERAL_else: 4528 case LITERAL_end: 4529 case LITERAL_left: 4530 case LITERAL_right: 4531 case LITERAL_cross: 4532 case LITERAL_join: 4533 case LITERAL_natural: 4534 case LITERAL_union: 4535 case LITERAL_inner: 4536 case LITERAL_intersect: 4537 case LITERAL_except: 4538 case ID: 4539 { 4540 break; 4541 } 4542 default: 4543 { 4544 throw new NoViableAltException(LT(1), getFilename()); 4545 } 4546 } 4547 } 4548 if ( inputState.guessing==0 ) { 4549 4550 item = new SelectFromItem(item, id2, columns); 4551 4552 } 4553 } 4554 else if ((LA(1)==EOF||LA(1)==LITERAL_create||LA(1)==LITERAL_unique||LA(1)==LITERAL_on||LA(1)==RPAREN||LA(1)==LITERAL_constraint||LA(1)==LITERAL_primary||LA(1)==LITERAL_check||LA(1)==LITERAL_first||LA(1)==LITERAL_after||LA(1)==LITERAL_default||LA(1)==LITERAL_as||LA(1)==LITERAL_with||LA(1)==COMMA||LA(1)==LITERAL_where||LA(1)==LITERAL_from||LA(1)==LITERAL_grant||LA(1)==LITERAL_references||LA(1)==LITERAL_not||LA(1)==LITERAL_full||LA(1)==LITERAL_initially||LA(1)==LITERAL_deferrable||LA(1)==LITERAL_for||LA(1)==LITERAL_order||LA(1)==LITERAL_having||LA(1)==LITERAL_using||LA(1)==LITERAL_group||LA(1)==CONCAT||LA(1)==LITERAL_or||LA(1)==LITERAL_and||LA(1)==LITERAL_when||LA(1)==LITERAL_then||LA(1)==LITERAL_else||LA(1)==LITERAL_end||LA(1)==LITERAL_left||LA(1)==LITERAL_right||LA(1)==LITERAL_cross||LA(1)==LITERAL_join||LA(1)==LITERAL_natural||LA(1)==LITERAL_union||LA(1)==LITERAL_inner||LA(1)==LITERAL_intersect||LA(1)==LITERAL_except||LA(1)==ID) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_index||LA(2)==LITERAL_temporary||LA(2)==LITERAL_table||LA(2)==LITERAL_view||LA(2)==LITERAL_on||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_foreign||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==LITERAL_cascaded||LA(2)==LITERAL_update||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==EQ||LA(2)==LITERAL_delete||LA(2)==LITERAL_from||LA(2)==LITERAL_global||LA(2)==LITERAL_local||LA(2)==LITERAL_grant||LA(2)==LITERAL_all||LA(2)==LITERAL_select||LA(2)==LITERAL_insert||LA(2)==LITERAL_references||LA(2)==LITERAL_usage||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_key||LA(2)==LITERAL_identity||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferred||LA(2)==LITERAL_immediate||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_bit||LA(2)==LITERAL_varbinary||LA(2)==LITERAL_binary||LA(2)==LITERAL_blob||LA(2)==LITERAL_clob||LA(2)==LITERAL_character||LA(2)==LITERAL_char||LA(2)==LITERAL_varchar||LA(2)==LITERAL_int||LA(2)==LITERAL_integer||LA(2)==LITERAL_smallint||LA(2)==LITERAL_tinyint||LA(2)==LITERAL_bigint||LA(2)==LITERAL_dec||LA(2)==LITERAL_decimal||LA(2)==LITERAL_numeric||LA(2)==LITERAL_real||LA(2)==LITERAL_double||LA(2)==LITERAL_float||LA(2)==LITERAL_boolean||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_for||LA(2)==LITERAL_read||LA(2)==LITERAL_order||LA(2)==LITERAL_by||LA(2)==STAR||LA(2)==LITERAL_having||LA(2)==LITERAL_corresponding||LA(2)==LITERAL_values||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_is||LA(2)==LITERAL_like||LA(2)==LITERAL_between||LA(2)==LITERAL_in||LA(2)==LITERAL_exists||LA(2)==LITERAL_escape||LA(2)==120||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==LT||LA(2)==LE||LA(2)==GT||LA(2)==GE||LA(2)==NE||LA(2)==SLASH||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_outer||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) { 4555 } 4556 else { 4557 throw new NoViableAltException(LT(1), getFilename()); 4558 } 4559 4560 } 4561 return item; 4562 } 4563 4564 public final int joinSpec() throws RecognitionException, TokenStreamException { 4565 int type; 4566 4567 4568 type = 0; 4569 int t = 0; 4570 4571 4572 switch ( LA(1)) { 4573 case LITERAL_cross: 4574 { 4575 match(LITERAL_cross); 4576 match(LITERAL_join); 4577 if ( inputState.guessing==0 ) { 4578 type = Op.CROSS; 4579 } 4580 break; 4581 } 4582 case LITERAL_full: 4583 case LITERAL_left: 4584 case LITERAL_right: 4585 case LITERAL_join: 4586 case LITERAL_natural: 4587 case LITERAL_inner: 4588 { 4589 { 4590 switch ( LA(1)) { 4591 case LITERAL_natural: 4592 { 4593 match(LITERAL_natural); 4594 if ( inputState.guessing==0 ) { 4595 t = Op.NATURAL; 4596 } 4597 break; 4598 } 4599 case LITERAL_full: 4600 case LITERAL_left: 4601 case LITERAL_right: 4602 case LITERAL_join: 4603 case LITERAL_inner: 4604 { 4605 break; 4606 } 4607 default: 4608 { 4609 throw new NoViableAltException(LT(1), getFilename()); 4610 } 4611 } 4612 } 4613 type=joinType(); 4614 match(LITERAL_join); 4615 if ( inputState.guessing==0 ) { 4616 type |= t; 4617 } 4618 break; 4619 } 4620 case LITERAL_union: 4621 { 4622 match(LITERAL_union); 4623 match(LITERAL_join); 4624 if ( inputState.guessing==0 ) { 4625 type = Op.UNION; 4626 } 4627 break; 4628 } 4629 default: 4630 { 4631 throw new NoViableAltException(LT(1), getFilename()); 4632 } 4633 } 4634 return type; 4635 } 4636 4637 public final void joinModifiers( 4638 JoinedTable jt 4639 ) throws RecognitionException, TokenStreamException { 4640 4641 4642 Vector names = null; 4643 Expression predicate = null; 4644 4645 4646 boolean synPredMatched222 = false; 4647 if (((LA(1)==LITERAL_using) && (LA(2)==LPAREN))) { 4648 int _m222 = mark(); 4649 synPredMatched222 = true; 4650 inputState.guessing++; 4651 try { 4652 { 4653 match(LITERAL_using); 4654 } 4655 } 4656 catch (RecognitionException pe) { 4657 synPredMatched222 = false; 4658 } 4659 rewind(_m222); 4660 inputState.guessing--; 4661 } 4662 if ( synPredMatched222 ) { 4663 { 4664 match(LITERAL_using); 4665 match(LPAREN); 4666 names=idList(); 4667 match(RPAREN); 4668 if ( inputState.guessing==0 ) { 4669 4670 jt.setUsingList(names); 4671 4672 } 4673 } 4674 } 4675 else { 4676 boolean synPredMatched225 = false; 4677 if (((LA(1)==LITERAL_on) && (LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==LITERAL_default||LA(2)==LITERAL_insert||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_exists||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==ID))) { 4678 int _m225 = mark(); 4679 synPredMatched225 = true; 4680 inputState.guessing++; 4681 try { 4682 { 4683 match(LITERAL_on); 4684 } 4685 } 4686 catch (RecognitionException pe) { 4687 synPredMatched225 = false; 4688 } 4689 rewind(_m225); 4690 inputState.guessing--; 4691 } 4692 if ( synPredMatched225 ) { 4693 { 4694 match(LITERAL_on); 4695 predicate=expression(); 4696 if ( inputState.guessing==0 ) { 4697 4698 jt.setOnExpression(predicate); 4699 4700 } 4701 } 4702 } 4703 else if ((LA(1)==EOF||LA(1)==LITERAL_create||LA(1)==LITERAL_unique||LA(1)==LITERAL_on||LA(1)==RPAREN||LA(1)==LITERAL_constraint||LA(1)==LITERAL_primary||LA(1)==LITERAL_check||LA(1)==LITERAL_first||LA(1)==LITERAL_after||LA(1)==LITERAL_default||LA(1)==LITERAL_as||LA(1)==LITERAL_with||LA(1)==COMMA||LA(1)==LITERAL_where||LA(1)==LITERAL_from||LA(1)==LITERAL_grant||LA(1)==LITERAL_references||LA(1)==LITERAL_not||LA(1)==LITERAL_full||LA(1)==LITERAL_initially||LA(1)==LITERAL_deferrable||LA(1)==LITERAL_for||LA(1)==LITERAL_order||LA(1)==LITERAL_having||LA(1)==LITERAL_using||LA(1)==LITERAL_group||LA(1)==CONCAT||LA(1)==LITERAL_or||LA(1)==LITERAL_and||LA(1)==LITERAL_when||LA(1)==LITERAL_then||LA(1)==LITERAL_else||LA(1)==LITERAL_end||LA(1)==LITERAL_left||LA(1)==LITERAL_right||LA(1)==LITERAL_cross||LA(1)==LITERAL_join||LA(1)==LITERAL_natural||LA(1)==LITERAL_union||LA(1)==LITERAL_inner||LA(1)==LITERAL_intersect||LA(1)==LITERAL_except||LA(1)==ID) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_index||LA(2)==LITERAL_temporary||LA(2)==LITERAL_table||LA(2)==LITERAL_view||LA(2)==LITERAL_on||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_foreign||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==LITERAL_cascaded||LA(2)==LITERAL_update||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==EQ||LA(2)==LITERAL_delete||LA(2)==LITERAL_from||LA(2)==LITERAL_global||LA(2)==LITERAL_local||LA(2)==LITERAL_grant||LA(2)==LITERAL_all||LA(2)==LITERAL_select||LA(2)==LITERAL_insert||LA(2)==LITERAL_references||LA(2)==LITERAL_usage||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_key||LA(2)==LITERAL_identity||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferred||LA(2)==LITERAL_immediate||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_bit||LA(2)==LITERAL_varbinary||LA(2)==LITERAL_binary||LA(2)==LITERAL_blob||LA(2)==LITERAL_clob||LA(2)==LITERAL_character||LA(2)==LITERAL_char||LA(2)==LITERAL_varchar||LA(2)==LITERAL_int||LA(2)==LITERAL_integer||LA(2)==LITERAL_smallint||LA(2)==LITERAL_tinyint||LA(2)==LITERAL_bigint||LA(2)==LITERAL_dec||LA(2)==LITERAL_decimal||LA(2)==LITERAL_numeric||LA(2)==LITERAL_real||LA(2)==LITERAL_double||LA(2)==LITERAL_float||LA(2)==LITERAL_boolean||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_for||LA(2)==LITERAL_read||LA(2)==LITERAL_order||LA(2)==LITERAL_by||LA(2)==STAR||LA(2)==LITERAL_having||LA(2)==LITERAL_corresponding||LA(2)==LITERAL_values||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_is||LA(2)==LITERAL_like||LA(2)==LITERAL_between||LA(2)==LITERAL_in||LA(2)==LITERAL_exists||LA(2)==LITERAL_escape||LA(2)==120||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==LT||LA(2)==LE||LA(2)==GT||LA(2)==GE||LA(2)==NE||LA(2)==SLASH||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_outer||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) { 4704 } 4705 else { 4706 throw new NoViableAltException(LT(1), getFilename()); 4707 } 4708 } 4709 } 4710 4711 public final VectorExpression vectorExpression() throws RecognitionException, TokenStreamException { 4712 VectorExpression e; 4713 4714 4715 e = new VectorExpression(); 4716 Expression f = null; 4717 4718 4719 match(LPAREN); 4720 { 4721 switch ( LA(1)) { 4722 case LITERAL_unique: 4723 case LPAREN: 4724 case LITERAL_default: 4725 case LITERAL_insert: 4726 case LITERAL_not: 4727 case LITERAL_null: 4728 case LITERAL_char: 4729 case LITERAL_date: 4730 case LITERAL_time: 4731 case LITERAL_timestamp: 4732 case LITERAL_interval: 4733 case LITERAL_exists: 4734 case PLUS: 4735 case MINUS: 4736 case STRING_LITERAL: 4737 case QUESTION: 4738 case INT: 4739 case REAL: 4740 case BINSTR: 4741 case HEXSTR: 4742 case LITERAL_case: 4743 case LITERAL_hour: 4744 case LITERAL_left: 4745 case LITERAL_minute: 4746 case LITERAL_month: 4747 case LITERAL_right: 4748 case LITERAL_second: 4749 case LITERAL_year: 4750 case LITERAL_user: 4751 case LITERAL_current_user: 4752 case LITERAL_session_user: 4753 case LITERAL_system_user: 4754 case LITERAL_current_date: 4755 case LITERAL_current_time: 4756 case LITERAL_current_timestamp: 4757 case LITERAL_sql_tsi_frac_second: 4758 case LITERAL_sql_tsi_second: 4759 case LITERAL_sql_tsi_minute: 4760 case LITERAL_sql_tsi_hour: 4761 case LITERAL_sql_tsi_day: 4762 case LITERAL_sql_tsi_week: 4763 case LITERAL_sql_tsi_month: 4764 case LITERAL_sql_tsi_quarter: 4765 case LITERAL_sql_tsi_year: 4766 case LITERAL_cast: 4767 case LITERAL_true: 4768 case LITERAL_false: 4769 case LITERAL_avg: 4770 case LITERAL_min: 4771 case LITERAL_max: 4772 case LITERAL_sum: 4773 case LITERAL_count: 4774 case ID: 4775 { 4776 f=scalarExpression(); 4777 if ( inputState.guessing==0 ) { 4778 4779 e.addElement(f); 4780 4781 } 4782 { 4783 _loop233: 4784 do { 4785 if ((LA(1)==COMMA||LA(1)==LITERAL_from||LA(1)==LITERAL_for)) { 4786 { 4787 switch ( LA(1)) { 4788 case COMMA: 4789 { 4790 match(COMMA); 4791 break; 4792 } 4793 case LITERAL_from: 4794 { 4795 match(LITERAL_from); 4796 break; 4797 } 4798 case LITERAL_for: 4799 { 4800 match(LITERAL_for); 4801 break; 4802 } 4803 default: 4804 { 4805 throw new NoViableAltException(LT(1), getFilename()); 4806 } 4807 } 4808 } 4809 f=scalarExpression(); 4810 if ( inputState.guessing==0 ) { 4811 4812 e.addElement(f); 4813 4814 } 4815 } 4816 else { 4817 break _loop233; 4818 } 4819 4820 } while (true); 4821 } 4822 break; 4823 } 4824 case RPAREN: 4825 { 4826 break; 4827 } 4828 default: 4829 { 4830 throw new NoViableAltException(LT(1), getFilename()); 4831 } 4832 } 4833 } 4834 match(RPAREN); 4835 return e; 4836 } 4837 4838 public final Expression scalarExpression() throws RecognitionException, TokenStreamException { 4839 Expression e; 4840 4841 4842 e = null; 4843 Expression f = null; 4844 4845 4846 e=orExpression(); 4847 { 4848 _loop237: 4849 do { 4850 if ((LA(1)==CONCAT) && (LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==LITERAL_default||LA(2)==LITERAL_insert||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_exists||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==ID)) { 4851 match(CONCAT); 4852 f=orExpression(); 4853 if ( inputState.guessing==0 ) { 4854 4855 e = new BinaryExpression(Op.CONCAT, e, f); 4856 4857 } 4858 } 4859 else { 4860 break _loop237; 4861 } 4862 4863 } while (true); 4864 } 4865 return e; 4866 } 4867 4868 public final Expression orExpression() throws RecognitionException, TokenStreamException { 4869 Expression e; 4870 4871 4872 e = null; 4873 Expression f = null; 4874 4875 4876 e=andExpression(); 4877 { 4878 _loop240: 4879 do { 4880 if ((LA(1)==LITERAL_or) && (LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==LITERAL_default||LA(2)==LITERAL_insert||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_exists||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==ID)) { 4881 match(LITERAL_or); 4882 f=andExpression(); 4883 if ( inputState.guessing==0 ) { 4884 4885 e = new BinaryExpression(Op.OR, e, f); 4886 4887 } 4888 } 4889 else { 4890 break _loop240; 4891 } 4892 4893 } while (true); 4894 } 4895 return e; 4896 } 4897 4898 public final Expression andExpression() throws RecognitionException, TokenStreamException { 4899 Expression e; 4900 4901 4902 e = null; 4903 Expression f = null; 4904 4905 4906 e=notExpression(); 4907 { 4908 _loop243: 4909 do { 4910 if ((LA(1)==LITERAL_and) && (LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==LITERAL_default||LA(2)==LITERAL_insert||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_exists||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==ID)) { 4911 match(LITERAL_and); 4912 f=notExpression(); 4913 if ( inputState.guessing==0 ) { 4914 4915 e = new BinaryExpression(Op.AND, e, f); 4916 4917 } 4918 } 4919 else { 4920 break _loop243; 4921 } 4922 4923 } while (true); 4924 } 4925 return e; 4926 } 4927 4928 public final Expression notExpression() throws RecognitionException, TokenStreamException { 4929 Expression e; 4930 4931 4932 e = null; 4933 boolean not = false; 4934 4935 4936 not=isOrNot(); 4937 e=compareExpression(); 4938 if ( inputState.guessing==0 ) { 4939 4940 if (not) e.invert(); 4941 4942 } 4943 return e; 4944 } 4945 4946 public final boolean isOrNot() throws RecognitionException, TokenStreamException { 4947 boolean not; 4948 4949 4950 not = false; 4951 4952 4953 { 4954 switch ( LA(1)) { 4955 case LITERAL_not: 4956 { 4957 match(LITERAL_not); 4958 if ( inputState.guessing==0 ) { 4959 not = true; 4960 } 4961 break; 4962 } 4963 case LITERAL_unique: 4964 case LPAREN: 4965 case LITERAL_default: 4966 case LITERAL_insert: 4967 case LITERAL_null: 4968 case LITERAL_char: 4969 case LITERAL_date: 4970 case LITERAL_time: 4971 case LITERAL_timestamp: 4972 case LITERAL_interval: 4973 case LITERAL_like: 4974 case LITERAL_between: 4975 case LITERAL_in: 4976 case LITERAL_exists: 4977 case PLUS: 4978 case MINUS: 4979 case STRING_LITERAL: 4980 case QUESTION: 4981 case INT: 4982 case REAL: 4983 case BINSTR: 4984 case HEXSTR: 4985 case LITERAL_case: 4986 case LITERAL_hour: 4987 case LITERAL_left: 4988 case LITERAL_minute: 4989 case LITERAL_month: 4990 case LITERAL_right: 4991 case LITERAL_second: 4992 case LITERAL_year: 4993 case LITERAL_user: 4994 case LITERAL_current_user: 4995 case LITERAL_session_user: 4996 case LITERAL_system_user: 4997 case LITERAL_current_date: 4998 case LITERAL_current_time: 4999 case LITERAL_current_timestamp: 5000 case LITERAL_sql_tsi_frac_second: 5001 case LITERAL_sql_tsi_second: 5002 case LITERAL_sql_tsi_minute: 5003 case LITERAL_sql_tsi_hour: 5004 case LITERAL_sql_tsi_day: 5005 case LITERAL_sql_tsi_week: 5006 case LITERAL_sql_tsi_month: 5007 case LITERAL_sql_tsi_quarter: 5008 case LITERAL_sql_tsi_year: 5009 case LITERAL_cast: 5010 case LITERAL_true: 5011 case LITERAL_false: 5012 case LITERAL_avg: 5013 case LITERAL_min: 5014 case LITERAL_max: 5015 case LITERAL_sum: 5016 case LITERAL_count: 5017 case LITERAL_unknown: 5018 case ID: 5019 { 5020 break; 5021 } 5022 default: 5023 { 5024 throw new NoViableAltException(LT(1), getFilename()); 5025 } 5026 } 5027 } 5028 return not; 5029 } 5030 5031 public final Expression compareExpression() throws RecognitionException, TokenStreamException { 5032 Expression e; 5033 5034 5035 e = null; 5036 Expression f = null; 5037 Expression g = null; 5038 Expression q = null; 5039 boolean not = false; 5040 int op = 0; 5041 int quant = 0; 5042 5043 5044 switch ( LA(1)) { 5045 case LPAREN: 5046 case LITERAL_default: 5047 case LITERAL_insert: 5048 case LITERAL_null: 5049 case LITERAL_char: 5050 case LITERAL_date: 5051 case LITERAL_time: 5052 case LITERAL_timestamp: 5053 case LITERAL_interval: 5054 case PLUS: 5055 case MINUS: 5056 case STRING_LITERAL: 5057 case QUESTION: 5058 case INT: 5059 case REAL: 5060 case BINSTR: 5061 case HEXSTR: 5062 case LITERAL_case: 5063 case LITERAL_hour: 5064 case LITERAL_left: 5065 case LITERAL_minute: 5066 case LITERAL_month: 5067 case LITERAL_right: 5068 case LITERAL_second: 5069 case LITERAL_year: 5070 case LITERAL_user: 5071 case LITERAL_current_user: 5072 case LITERAL_session_user: 5073 case LITERAL_system_user: 5074 case LITERAL_current_date: 5075 case LITERAL_current_time: 5076 case LITERAL_current_timestamp: 5077 case LITERAL_sql_tsi_frac_second: 5078 case LITERAL_sql_tsi_second: 5079 case LITERAL_sql_tsi_minute: 5080 case LITERAL_sql_tsi_hour: 5081 case LITERAL_sql_tsi_day: 5082 case LITERAL_sql_tsi_week: 5083 case LITERAL_sql_tsi_month: 5084 case LITERAL_sql_tsi_quarter: 5085 case LITERAL_sql_tsi_year: 5086 case LITERAL_cast: 5087 case LITERAL_true: 5088 case LITERAL_false: 5089 case LITERAL_avg: 5090 case LITERAL_min: 5091 case LITERAL_max: 5092 case LITERAL_sum: 5093 case LITERAL_count: 5094 case ID: 5095 { 5096 e=simpleExpression(); 5097 { 5098 switch ( LA(1)) { 5099 case LITERAL_is: 5100 { 5101 match(LITERAL_is); 5102 not=isOrNot(); 5103 op=truthConst(); 5104 if ( inputState.guessing==0 ) { 5105 5106 e = new UnaryExpression(op, e); 5107 if (not) e.invert(); 5108 5109 } 5110 break; 5111 } 5112 case EQ: 5113 case LT: 5114 case LE: 5115 case GT: 5116 case GE: 5117 case NE: 5118 { 5119 op=relOp(); 5120 { 5121 switch ( LA(1)) { 5122 case LPAREN: 5123 case LITERAL_default: 5124 case LITERAL_insert: 5125 case LITERAL_null: 5126 case LITERAL_char: 5127 case LITERAL_date: 5128 case LITERAL_time: 5129 case LITERAL_timestamp: 5130 case LITERAL_interval: 5131 case PLUS: 5132 case MINUS: 5133 case STRING_LITERAL: 5134 case QUESTION: 5135 case INT: 5136 case REAL: 5137 case BINSTR: 5138 case HEXSTR: 5139 case LITERAL_case: 5140 case LITERAL_hour: 5141 case LITERAL_left: 5142 case LITERAL_minute: 5143 case LITERAL_month: 5144 case LITERAL_right: 5145 case LITERAL_second: 5146 case LITERAL_year: 5147 case LITERAL_user: 5148 case LITERAL_current_user: 5149 case LITERAL_session_user: 5150 case LITERAL_system_user: 5151 case LITERAL_current_date: 5152 case LITERAL_current_time: 5153 case LITERAL_current_timestamp: 5154 case LITERAL_sql_tsi_frac_second: 5155 case LITERAL_sql_tsi_second: 5156 case LITERAL_sql_tsi_minute: 5157 case LITERAL_sql_tsi_hour: 5158 case LITERAL_sql_tsi_day: 5159 case LITERAL_sql_tsi_week: 5160 case LITERAL_sql_tsi_month: 5161 case LITERAL_sql_tsi_quarter: 5162 case LITERAL_sql_tsi_year: 5163 case LITERAL_cast: 5164 case LITERAL_true: 5165 case LITERAL_false: 5166 case LITERAL_avg: 5167 case LITERAL_min: 5168 case LITERAL_max: 5169 case LITERAL_sum: 5170 case LITERAL_count: 5171 case ID: 5172 { 5173 f=simpleExpression(); 5174 if ( inputState.guessing==0 ) { 5175 5176 e = new BinaryExpression(op, e, f); 5177 5178 } 5179 break; 5180 } 5181 case LITERAL_all: 5182 case LITERAL_any: 5183 case LITERAL_some: 5184 { 5185 quant=quantifier(); 5186 q=queryExpression(); 5187 if ( inputState.guessing==0 ) { 5188 5189 e = new QuantifiedCompare(e, op, 5190 quant, q); 5191 5192 } 5193 break; 5194 } 5195 default: 5196 { 5197 throw new NoViableAltException(LT(1), getFilename()); 5198 } 5199 } 5200 } 5201 break; 5202 } 5203 default: 5204 boolean synPredMatched250 = false; 5205 if (((LA(1)==LITERAL_not||LA(1)==LITERAL_like||LA(1)==LITERAL_between||LA(1)==LITERAL_in) && (LA(2)==LITERAL_table||LA(2)==LPAREN||LA(2)==LITERAL_default||LA(2)==LITERAL_select||LA(2)==LITERAL_insert||LA(2)==LITERAL_null||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_values||LA(2)==LITERAL_like||LA(2)==LITERAL_between||LA(2)==LITERAL_in||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==ID))) { 5206 int _m250 = mark(); 5207 synPredMatched250 = true; 5208 inputState.guessing++; 5209 try { 5210 { 5211 isOrNot(); 5212 { 5213 switch ( LA(1)) { 5214 case LITERAL_like: 5215 { 5216 match(LITERAL_like); 5217 break; 5218 } 5219 case LITERAL_between: 5220 { 5221 match(LITERAL_between); 5222 break; 5223 } 5224 case LITERAL_in: 5225 { 5226 match(LITERAL_in); 5227 break; 5228 } 5229 default: 5230 { 5231 throw new NoViableAltException(LT(1), getFilename()); 5232 } 5233 } 5234 } 5235 } 5236 } 5237 catch (RecognitionException pe) { 5238 synPredMatched250 = false; 5239 } 5240 rewind(_m250); 5241 inputState.guessing--; 5242 } 5243 if ( synPredMatched250 ) { 5244 not=isOrNot(); 5245 { 5246 switch ( LA(1)) { 5247 case LITERAL_like: 5248 { 5249 match(LITERAL_like); 5250 f=patternExpression(); 5251 if ( inputState.guessing==0 ) { 5252 5253 op = Op.LIKE; 5254 e = new BinaryExpression(op, e, f); 5255 if (not) e.invert(); 5256 5257 } 5258 break; 5259 } 5260 case LITERAL_between: 5261 { 5262 match(LITERAL_between); 5263 f=simpleExpression(); 5264 match(LITERAL_and); 5265 g=simpleExpression(); 5266 if ( inputState.guessing==0 ) { 5267 5268 op = Op.BETWEEN; 5269 e = new TernaryExpression(op, e, f, g); 5270 if (not) e.invert(); 5271 5272 } 5273 break; 5274 } 5275 case LITERAL_in: 5276 { 5277 match(LITERAL_in); 5278 { 5279 boolean synPredMatched254 = false; 5280 if (((LA(1)==LPAREN) && (LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_default||LA(2)==LITERAL_insert||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_exists||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==ID))) { 5281 int _m254 = mark(); 5282 synPredMatched254 = true; 5283 inputState.guessing++; 5284 try { 5285 { 5286 match(LPAREN); 5287 unaryExpression(); 5288 } 5289 } 5290 catch (RecognitionException pe) { 5291 synPredMatched254 = false; 5292 } 5293 rewind(_m254); 5294 inputState.guessing--; 5295 } 5296 if ( synPredMatched254 ) { 5297 q=vectorExpression(); 5298 } 5299 else if ((LA(1)==LITERAL_table||LA(1)==LPAREN||LA(1)==LITERAL_select||LA(1)==LITERAL_values||LA(1)==ID) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_table||LA(2)==LITERAL_on||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==LITERAL_from||LA(2)==LITERAL_grant||LA(2)==LITERAL_all||LA(2)==LITERAL_select||LA(2)==LITERAL_insert||LA(2)==LITERAL_references||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_for||LA(2)==LITERAL_order||LA(2)==LITERAL_distinct||LA(2)==STAR||LA(2)==LITERAL_having||LA(2)==LITERAL_values||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_exists||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) { 5300 q=queryExpression(); 5301 } 5302 else { 5303 throw new NoViableAltException(LT(1), getFilename()); 5304 } 5305 5306 } 5307 if ( inputState.guessing==0 ) { 5308 5309 e = new InExpression(e, q); 5310 if (not) e.invert(); 5311 5312 } 5313 break; 5314 } 5315 default: 5316 { 5317 throw new NoViableAltException(LT(1), getFilename()); 5318 } 5319 } 5320 } 5321 } 5322 else if ((LA(1)==EOF||LA(1)==LITERAL_create||LA(1)==LITERAL_unique||LA(1)==LITERAL_on||LA(1)==RPAREN||LA(1)==LITERAL_constraint||LA(1)==LITERAL_primary||LA(1)==LITERAL_check||LA(1)==LITERAL_first||LA(1)==LITERAL_after||LA(1)==LITERAL_default||LA(1)==LITERAL_as||LA(1)==LITERAL_with||LA(1)==COMMA||LA(1)==LITERAL_where||LA(1)==LITERAL_from||LA(1)==LITERAL_grant||LA(1)==LITERAL_references||LA(1)==LITERAL_not||LA(1)==LITERAL_full||LA(1)==LITERAL_initially||LA(1)==LITERAL_deferrable||LA(1)==LITERAL_for||LA(1)==LITERAL_order||LA(1)==LITERAL_having||LA(1)==LITERAL_using||LA(1)==LITERAL_group||LA(1)==CONCAT||LA(1)==LITERAL_or||LA(1)==LITERAL_and||LA(1)==LITERAL_when||LA(1)==LITERAL_then||LA(1)==LITERAL_else||LA(1)==LITERAL_end||LA(1)==LITERAL_left||LA(1)==LITERAL_right||LA(1)==LITERAL_cross||LA(1)==LITERAL_join||LA(1)==LITERAL_natural||LA(1)==LITERAL_union||LA(1)==LITERAL_inner||LA(1)==LITERAL_intersect||LA(1)==LITERAL_except||LA(1)==ID) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_index||LA(2)==LITERAL_temporary||LA(2)==LITERAL_table||LA(2)==LITERAL_view||LA(2)==LITERAL_on||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_foreign||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==LITERAL_cascaded||LA(2)==LITERAL_update||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==EQ||LA(2)==LITERAL_delete||LA(2)==LITERAL_from||LA(2)==LITERAL_global||LA(2)==LITERAL_local||LA(2)==LITERAL_grant||LA(2)==LITERAL_all||LA(2)==LITERAL_select||LA(2)==LITERAL_insert||LA(2)==LITERAL_references||LA(2)==LITERAL_usage||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_key||LA(2)==LITERAL_identity||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferred||LA(2)==LITERAL_immediate||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_bit||LA(2)==LITERAL_varbinary||LA(2)==LITERAL_binary||LA(2)==LITERAL_blob||LA(2)==LITERAL_clob||LA(2)==LITERAL_character||LA(2)==LITERAL_char||LA(2)==LITERAL_varchar||LA(2)==LITERAL_int||LA(2)==LITERAL_integer||LA(2)==LITERAL_smallint||LA(2)==LITERAL_tinyint||LA(2)==LITERAL_bigint||LA(2)==LITERAL_dec||LA(2)==LITERAL_decimal||LA(2)==LITERAL_numeric||LA(2)==LITERAL_real||LA(2)==LITERAL_double||LA(2)==LITERAL_float||LA(2)==LITERAL_boolean||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_for||LA(2)==LITERAL_read||LA(2)==LITERAL_order||LA(2)==LITERAL_by||LA(2)==STAR||LA(2)==LITERAL_having||LA(2)==LITERAL_corresponding||LA(2)==LITERAL_values||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_is||LA(2)==LITERAL_like||LA(2)==LITERAL_between||LA(2)==LITERAL_in||LA(2)==LITERAL_exists||LA(2)==LITERAL_escape||LA(2)==120||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==LT||LA(2)==LE||LA(2)==GT||LA(2)==GE||LA(2)==NE||LA(2)==SLASH||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_outer||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) { 5323 } 5324 else { 5325 throw new NoViableAltException(LT(1), getFilename()); 5326 } 5327 } 5328 } 5329 break; 5330 } 5331 case LITERAL_exists: 5332 { 5333 match(LITERAL_exists); 5334 q=queryExpression(); 5335 if ( inputState.guessing==0 ) { 5336 5337 e = new UnaryExpression(Op.EXISTS, q); 5338 5339 } 5340 break; 5341 } 5342 case LITERAL_unique: 5343 { 5344 match(LITERAL_unique); 5345 q=queryExpression(); 5346 if ( inputState.guessing==0 ) { 5347 5348 e = new UnaryExpression(Op.UNIQUE, q); 5349 5350 } 5351 break; 5352 } 5353 default: 5354 { 5355 throw new NoViableAltException(LT(1), getFilename()); 5356 } 5357 } 5358 return e; 5359 } 5360 5361 public final Expression simpleExpression() throws RecognitionException, TokenStreamException { 5362 Expression e; 5363 5364 5365 e = null; 5366 Expression f = null; 5367 int op = 0; 5368 5369 5370 e=multExpression(); 5371 { 5372 _loop261: 5373 do { 5374 if ((LA(1)==CONCAT||LA(1)==PLUS||LA(1)==MINUS) && (LA(2)==LPAREN||LA(2)==LITERAL_default||LA(2)==LITERAL_insert||LA(2)==LITERAL_null||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==ID)) { 5375 op=addOp(); 5376 f=multExpression(); 5377 if ( inputState.guessing==0 ) { 5378 5379 e = new BinaryExpression(op, e, f); 5380 5381 } 5382 } 5383 else { 5384 break _loop261; 5385 } 5386 5387 } while (true); 5388 } 5389 return e; 5390 } 5391 5392 public final int truthConst() throws RecognitionException, TokenStreamException { 5393 int t; 5394 5395 5396 t = 0; 5397 5398 5399 switch ( LA(1)) { 5400 case LITERAL_true: 5401 { 5402 match(LITERAL_true); 5403 if ( inputState.guessing==0 ) { 5404 t = Op.TRUE; 5405 } 5406 break; 5407 } 5408 case LITERAL_false: 5409 { 5410 match(LITERAL_false); 5411 if ( inputState.guessing==0 ) { 5412 t = Op.FALSE; 5413 } 5414 break; 5415 } 5416 case LITERAL_unknown: 5417 { 5418 match(LITERAL_unknown); 5419 if ( inputState.guessing==0 ) { 5420 t = Op.UNKNOWN; 5421 } 5422 break; 5423 } 5424 case LITERAL_null: 5425 { 5426 match(LITERAL_null); 5427 if ( inputState.guessing==0 ) { 5428 t = Op.NULL; 5429 } 5430 break; 5431 } 5432 default: 5433 { 5434 throw new NoViableAltException(LT(1), getFilename()); 5435 } 5436 } 5437 return t; 5438 } 5439 5440 public final int relOp() throws RecognitionException, TokenStreamException { 5441 int op; 5442 5443 5444 op = 0; 5445 5446 5447 switch ( LA(1)) { 5448 case LT: 5449 { 5450 match(LT); 5451 if ( inputState.guessing==0 ) { 5452 op = Op.LT; 5453 } 5454 break; 5455 } 5456 case LE: 5457 { 5458 match(LE); 5459 if ( inputState.guessing==0 ) { 5460 op = Op.LE; 5461 } 5462 break; 5463 } 5464 case GT: 5465 { 5466 match(GT); 5467 if ( inputState.guessing==0 ) { 5468 op = Op.GT; 5469 } 5470 break; 5471 } 5472 case GE: 5473 { 5474 match(GE); 5475 if ( inputState.guessing==0 ) { 5476 op = Op.GE; 5477 } 5478 break; 5479 } 5480 case EQ: 5481 { 5482 match(EQ); 5483 if ( inputState.guessing==0 ) { 5484 op = Op.EQ; 5485 } 5486 break; 5487 } 5488 case NE: 5489 { 5490 match(NE); 5491 if ( inputState.guessing==0 ) { 5492 op = Op.NE; 5493 } 5494 break; 5495 } 5496 default: 5497 { 5498 throw new NoViableAltException(LT(1), getFilename()); 5499 } 5500 } 5501 return op; 5502 } 5503 5504 public final int quantifier() throws RecognitionException, TokenStreamException { 5505 int op; 5506 5507 5508 op = 0; 5509 5510 5511 switch ( LA(1)) { 5512 case LITERAL_any: 5513 { 5514 match(LITERAL_any); 5515 if ( inputState.guessing==0 ) { 5516 op = Op.ANY; 5517 } 5518 break; 5519 } 5520 case LITERAL_all: 5521 { 5522 match(LITERAL_all); 5523 if ( inputState.guessing==0 ) { 5524 op = Op.ALL; 5525 } 5526 break; 5527 } 5528 case LITERAL_some: 5529 { 5530 match(LITERAL_some); 5531 if ( inputState.guessing==0 ) { 5532 op = Op.ANY; 5533 } 5534 break; 5535 } 5536 default: 5537 { 5538 throw new NoViableAltException(LT(1), getFilename()); 5539 } 5540 } 5541 return op; 5542 } 5543 5544 public final Expression patternExpression() throws RecognitionException, TokenStreamException { 5545 Expression v; 5546 5547 5548 v = null; 5549 Expression pat = null; 5550 Expression esc = null; 5551 5552 5553 pat=primaryExpression(); 5554 { 5555 switch ( LA(1)) { 5556 case LITERAL_escape: 5557 { 5558 match(LITERAL_escape); 5559 esc=primaryExpression(); 5560 if ( inputState.guessing==0 ) { 5561 v = new BinaryExpression(Op.PATTERN, pat, esc); 5562 } 5563 break; 5564 } 5565 case EOF: 5566 case LITERAL_create: 5567 case LITERAL_unique: 5568 case LITERAL_on: 5569 case RPAREN: 5570 case LITERAL_constraint: 5571 case LITERAL_primary: 5572 case LITERAL_check: 5573 case LITERAL_first: 5574 case LITERAL_after: 5575 case LITERAL_default: 5576 case LITERAL_as: 5577 case LITERAL_with: 5578 case COMMA: 5579 case LITERAL_where: 5580 case LITERAL_from: 5581 case LITERAL_grant: 5582 case LITERAL_references: 5583 case LITERAL_not: 5584 case LITERAL_full: 5585 case LITERAL_initially: 5586 case LITERAL_deferrable: 5587 case LITERAL_for: 5588 case LITERAL_order: 5589 case LITERAL_having: 5590 case LITERAL_using: 5591 case LITERAL_group: 5592 case CONCAT: 5593 case LITERAL_or: 5594 case LITERAL_and: 5595 case LITERAL_when: 5596 case LITERAL_then: 5597 case LITERAL_else: 5598 case LITERAL_end: 5599 case LITERAL_left: 5600 case LITERAL_right: 5601 case LITERAL_cross: 5602 case LITERAL_join: 5603 case LITERAL_natural: 5604 case LITERAL_union: 5605 case LITERAL_inner: 5606 case LITERAL_intersect: 5607 case LITERAL_except: 5608 case ID: 5609 { 5610 if ( inputState.guessing==0 ) { 5611 v = new UnaryExpression(Op.PATTERN, pat); 5612 } 5613 break; 5614 } 5615 default: 5616 { 5617 throw new NoViableAltException(LT(1), getFilename()); 5618 } 5619 } 5620 } 5621 return v; 5622 } 5623 5624 public final Expression unaryExpression() throws RecognitionException, TokenStreamException { 5625 Expression e; 5626 5627 5628 e = null; 5629 int op = 0; 5630 5631 5632 { 5633 switch ( LA(1)) { 5634 case PLUS: 5635 { 5636 match(PLUS); 5637 if ( inputState.guessing==0 ) { 5638 op = Op.PLUS; 5639 } 5640 break; 5641 } 5642 case MINUS: 5643 { 5644 match(MINUS); 5645 if ( inputState.guessing==0 ) { 5646 op = Op.MINUS; 5647 } 5648 break; 5649 } 5650 case LPAREN: 5651 case LITERAL_default: 5652 case LITERAL_insert: 5653 case LITERAL_null: 5654 case LITERAL_char: 5655 case LITERAL_date: 5656 case LITERAL_time: 5657 case LITERAL_timestamp: 5658 case LITERAL_interval: 5659 case STRING_LITERAL: 5660 case QUESTION: 5661 case INT: 5662 case REAL: 5663 case BINSTR: 5664 case HEXSTR: 5665 case LITERAL_case: 5666 case LITERAL_hour: 5667 case LITERAL_left: 5668 case LITERAL_minute: 5669 case LITERAL_month: 5670 case LITERAL_right: 5671 case LITERAL_second: 5672 case LITERAL_year: 5673 case LITERAL_user: 5674 case LITERAL_current_user: 5675 case LITERAL_session_user: 5676 case LITERAL_system_user: 5677 case LITERAL_current_date: 5678 case LITERAL_current_time: 5679 case LITERAL_current_timestamp: 5680 case LITERAL_sql_tsi_frac_second: 5681 case LITERAL_sql_tsi_second: 5682 case LITERAL_sql_tsi_minute: 5683 case LITERAL_sql_tsi_hour: 5684 case LITERAL_sql_tsi_day: 5685 case LITERAL_sql_tsi_week: 5686 case LITERAL_sql_tsi_month: 5687 case LITERAL_sql_tsi_quarter: 5688 case LITERAL_sql_tsi_year: 5689 case LITERAL_cast: 5690 case LITERAL_true: 5691 case LITERAL_false: 5692 case LITERAL_avg: 5693 case LITERAL_min: 5694 case LITERAL_max: 5695 case LITERAL_sum: 5696 case LITERAL_count: 5697 case ID: 5698 { 5699 break; 5700 } 5701 default: 5702 { 5703 throw new NoViableAltException(LT(1), getFilename()); 5704 } 5705 } 5706 } 5707 e=primaryExpression(); 5708 if ( inputState.guessing==0 ) { 5709 5710 if (op != 0) e = new UnaryExpression(op, e); 5711 5712 } 5713 return e; 5714 } 5715 5716 public final Expression primaryExpression() throws RecognitionException, TokenStreamException { 5717 Expression e; 5718 5719 Token t1 = null; 5720 Token t4 = null; 5721 Token t5 = null; 5722 Token t6 = null; 5723 5724 e = null; 5725 String id = null; 5726 VectorExpression args = null; 5727 5728 5729 switch ( LA(1)) { 5730 case LITERAL_null: 5731 { 5732 match(LITERAL_null); 5733 if ( inputState.guessing==0 ) { 5734 5735 e = new ValueExpression(new ValueNull()); 5736 5737 } 5738 break; 5739 } 5740 case LITERAL_default: 5741 { 5742 match(LITERAL_default); 5743 if ( inputState.guessing==0 ) { 5744 5745 e = new ValueExpression(new ValueDefault()); 5746 5747 } 5748 break; 5749 } 5750 case INT: 5751 { 5752 t1 = LT(1); 5753 match(INT); 5754 if ( inputState.guessing==0 ) { 5755 5756 try { 5757 ValueInteger x = new ValueInteger( 5758 Integer.parseInt(t1.getText())); 5759 e = new ValueExpression(x); 5760 } catch (NumberFormatException ne1) { 5761 try { 5762 ValueLong x = new ValueLong( 5763 Long.parseLong(t1.getText())); 5764 e = new ValueExpression(x); 5765 } catch (NumberFormatException ne2) { 5766 try { 5767 ValueDouble x = new ValueDouble( 5768 t1.getText()); 5769 e = new ValueExpression(x); 5770 } catch (ValueException ve) { 5771 try { 5772 ValueScaledInteger x = new 5773 ValueScaledInteger(t1.getText()); 5774 e = new ValueExpression(x); 5775 } catch (ValueException ve1) { 5776 throw new DbException(ve1); 5777 } 5778 } 5779 } 5780 } 5781 5782 } 5783 break; 5784 } 5785 case REAL: 5786 { 5787 t4 = LT(1); 5788 match(REAL); 5789 if ( inputState.guessing==0 ) { 5790 5791 try { 5792 e = new ValueExpression( 5793 new ValueDouble(t4.getText())); 5794 } catch (ValueException ve) { 5795 throw new DbException(ve); 5796 } 5797 5798 } 5799 break; 5800 } 5801 case BINSTR: 5802 { 5803 t5 = LT(1); 5804 match(BINSTR); 5805 if ( inputState.guessing==0 ) { 5806 5807 e = new ValueExpression( 5808 new ValueOctets(t5.getText())); 5809 5810 } 5811 break; 5812 } 5813 case HEXSTR: 5814 { 5815 t6 = LT(1); 5816 match(HEXSTR); 5817 if ( inputState.guessing==0 ) { 5818 5819 e = new ValueExpression( 5820 new ValueOctets(t6.getText())); 5821 5822 } 5823 break; 5824 } 5825 case QUESTION: 5826 { 5827 match(QUESTION); 5828 if ( inputState.guessing==0 ) { 5829 5830 ParameterExpression pe = new ParameterExpression(); 5831 addParameter(pe); 5832 e = pe; 5833 5834 } 5835 break; 5836 } 5837 case LPAREN: 5838 { 5839 match(LPAREN); 5840 { 5841 switch ( LA(1)) { 5842 case LITERAL_unique: 5843 case LPAREN: 5844 case LITERAL_default: 5845 case LITERAL_insert: 5846 case LITERAL_not: 5847 case LITERAL_null: 5848 case LITERAL_char: 5849 case LITERAL_date: 5850 case LITERAL_time: 5851 case LITERAL_timestamp: 5852 case LITERAL_interval: 5853 case LITERAL_exists: 5854 case PLUS: 5855 case MINUS: 5856 case STRING_LITERAL: 5857 case QUESTION: 5858 case INT: 5859 case REAL: 5860 case BINSTR: 5861 case HEXSTR: 5862 case LITERAL_case: 5863 case LITERAL_hour: 5864 case LITERAL_left: 5865 case LITERAL_minute: 5866 case LITERAL_month: 5867 case LITERAL_right: 5868 case LITERAL_second: 5869 case LITERAL_year: 5870 case LITERAL_user: 5871 case LITERAL_current_user: 5872 case LITERAL_session_user: 5873 case LITERAL_system_user: 5874 case LITERAL_current_date: 5875 case LITERAL_current_time: 5876 case LITERAL_current_timestamp: 5877 case LITERAL_sql_tsi_frac_second: 5878 case LITERAL_sql_tsi_second: 5879 case LITERAL_sql_tsi_minute: 5880 case LITERAL_sql_tsi_hour: 5881 case LITERAL_sql_tsi_day: 5882 case LITERAL_sql_tsi_week: 5883 case LITERAL_sql_tsi_month: 5884 case LITERAL_sql_tsi_quarter: 5885 case LITERAL_sql_tsi_year: 5886 case LITERAL_cast: 5887 case LITERAL_true: 5888 case LITERAL_false: 5889 case LITERAL_avg: 5890 case LITERAL_min: 5891 case LITERAL_max: 5892 case LITERAL_sum: 5893 case LITERAL_count: 5894 case ID: 5895 { 5896 e=expression(); 5897 break; 5898 } 5899 case LITERAL_select: 5900 { 5901 e=querySpecification(); 5902 break; 5903 } 5904 default: 5905 { 5906 throw new NoViableAltException(LT(1), getFilename()); 5907 } 5908 } 5909 } 5910 match(RPAREN); 5911 break; 5912 } 5913 case STRING_LITERAL: 5914 { 5915 e=stringExpression(); 5916 break; 5917 } 5918 case LITERAL_avg: 5919 case LITERAL_min: 5920 case LITERAL_max: 5921 case LITERAL_sum: 5922 case LITERAL_count: 5923 { 5924 e=aggregateExpression(); 5925 break; 5926 } 5927 case LITERAL_date: 5928 case LITERAL_time: 5929 case LITERAL_timestamp: 5930 { 5931 e=dateTimeLiteral(); 5932 break; 5933 } 5934 case LITERAL_interval: 5935 { 5936 e=intervalLiteral(); 5937 break; 5938 } 5939 case LITERAL_true: 5940 case LITERAL_false: 5941 { 5942 e=booleanLiteral(); 5943 break; 5944 } 5945 case LITERAL_user: 5946 case LITERAL_current_user: 5947 case LITERAL_session_user: 5948 case LITERAL_system_user: 5949 case LITERAL_current_date: 5950 case LITERAL_current_time: 5951 case LITERAL_current_timestamp: 5952 case LITERAL_sql_tsi_frac_second: 5953 case LITERAL_sql_tsi_second: 5954 case LITERAL_sql_tsi_minute: 5955 case LITERAL_sql_tsi_hour: 5956 case LITERAL_sql_tsi_day: 5957 case LITERAL_sql_tsi_week: 5958 case LITERAL_sql_tsi_month: 5959 case LITERAL_sql_tsi_quarter: 5960 case LITERAL_sql_tsi_year: 5961 { 5962 e=systemVariable(); 5963 break; 5964 } 5965 case LITERAL_insert: 5966 case LITERAL_char: 5967 case LITERAL_hour: 5968 case LITERAL_left: 5969 case LITERAL_minute: 5970 case LITERAL_month: 5971 case LITERAL_right: 5972 case LITERAL_second: 5973 case LITERAL_year: 5974 case ID: 5975 { 5976 e=fnvarExpression(); 5977 break; 5978 } 5979 case LITERAL_cast: 5980 { 5981 e=castExpression(); 5982 break; 5983 } 5984 case LITERAL_case: 5985 { 5986 e=caseExpression(); 5987 break; 5988 } 5989 default: 5990 { 5991 throw new NoViableAltException(LT(1), getFilename()); 5992 } 5993 } 5994 return e; 5995 } 5996 5997 public final Expression multExpression() throws RecognitionException, TokenStreamException { 5998 Expression e; 5999 6000 6001 e = null; 6002 Expression f = null; 6003 int op = 0; 6004 6005 6006 e=expExpression(); 6007 { 6008 _loop264: 6009 do { 6010 if ((LA(1)==STAR||LA(1)==SLASH)) { 6011 op=mulOp(); 6012 f=expExpression(); 6013 if ( inputState.guessing==0 ) { 6014 6015 e = new BinaryExpression(op, e, f); 6016 6017 } 6018 } 6019 else { 6020 break _loop264; 6021 } 6022 6023 } while (true); 6024 } 6025 return e; 6026 } 6027 6028 public final int addOp() throws RecognitionException, TokenStreamException { 6029 int op; 6030 6031 6032 op = 0; 6033 6034 6035 switch ( LA(1)) { 6036 case PLUS: 6037 { 6038 match(PLUS); 6039 if ( inputState.guessing==0 ) { 6040 op = Op.PLUS; 6041 } 6042 break; 6043 } 6044 case MINUS: 6045 { 6046 match(MINUS); 6047 if ( inputState.guessing==0 ) { 6048 op = Op.MINUS; 6049 } 6050 break; 6051 } 6052 case CONCAT: 6053 { 6054 match(CONCAT); 6055 if ( inputState.guessing==0 ) { 6056 op = Op.CONCAT; 6057 } 6058 break; 6059 } 6060 default: 6061 { 6062 throw new NoViableAltException(LT(1), getFilename()); 6063 } 6064 } 6065 return op; 6066 } 6067 6068 public final Expression expExpression() throws RecognitionException, TokenStreamException { 6069 Expression e; 6070 6071 6072 e = null; 6073 Expression f = null; 6074 6075 6076 e=unaryExpression(); 6077 { 6078 _loop267: 6079 do { 6080 if ((LA(1)==120)) { 6081 match(120); 6082 f=unaryExpression(); 6083 if ( inputState.guessing==0 ) { 6084 6085 e = new BinaryExpression(Op.EXP, e, f); 6086 6087 } 6088 } 6089 else { 6090 break _loop267; 6091 } 6092 6093 } while (true); 6094 } 6095 return e; 6096 } 6097 6098 public final int mulOp() throws RecognitionException, TokenStreamException { 6099 int op; 6100 6101 6102 op = 0; 6103 6104 6105 switch ( LA(1)) { 6106 case STAR: 6107 { 6108 match(STAR); 6109 if ( inputState.guessing==0 ) { 6110 op = Op.TIMES; 6111 } 6112 break; 6113 } 6114 case SLASH: 6115 { 6116 match(SLASH); 6117 if ( inputState.guessing==0 ) { 6118 op = Op.DIVIDE; 6119 } 6120 break; 6121 } 6122 default: 6123 { 6124 throw new NoViableAltException(LT(1), getFilename()); 6125 } 6126 } 6127 return op; 6128 } 6129 6130 public final Expression patternString() throws RecognitionException, TokenStreamException { 6131 Expression e; 6132 6133 Token t1 = null; 6134 6135 e = null; 6136 6137 6138 switch ( LA(1)) { 6139 case STRING_LITERAL: 6140 { 6141 t1 = LT(1); 6142 match(STRING_LITERAL); 6143 if ( inputState.guessing==0 ) { 6144 e = new ValueExpression( 6145 new ValueString(t1.getText())); 6146 } 6147 break; 6148 } 6149 case QUESTION: 6150 { 6151 match(QUESTION); 6152 if ( inputState.guessing==0 ) { 6153 6154 ParameterExpression pe = new ParameterExpression(); 6155 addParameter(pe); 6156 e = pe; 6157 6158 } 6159 break; 6160 } 6161 default: 6162 { 6163 throw new NoViableAltException(LT(1), getFilename()); 6164 } 6165 } 6166 return e; 6167 } 6168 6169 public final Expression stringExpression() throws RecognitionException, TokenStreamException { 6170 Expression e; 6171 6172 Token t1 = null; 6173 Token t2 = null; 6174 6175 e = null; 6176 StringBuffer sb = new StringBuffer (); 6177 6178 6179 t1 = LT(1); 6180 match(STRING_LITERAL); 6181 if ( inputState.guessing==0 ) { 6182 sb.append(t1.getText()); 6183 } 6184 { 6185 _loop287: 6186 do { 6187 if ((LA(1)==STRING_LITERAL)) { 6188 t2 = LT(1); 6189 match(STRING_LITERAL); 6190 if ( inputState.guessing==0 ) { 6191 sb.append(t2.getText()); 6192 } 6193 } 6194 else { 6195 break _loop287; 6196 } 6197 6198 } while (true); 6199 } 6200 if ( inputState.guessing==0 ) { 6201 6202 e = new ValueExpression(new ValueString(sb.toString())); 6203 6204 } 6205 return e; 6206 } 6207 6208 public final Expression aggregateExpression() throws RecognitionException, TokenStreamException { 6209 Expression e; 6210 6211 6212 e = null; 6213 int op = -1; 6214 boolean all = true; 6215 Expression v = null; 6216 6217 6218 { 6219 switch ( LA(1)) { 6220 case LITERAL_avg: 6221 { 6222 match(LITERAL_avg); 6223 if ( inputState.guessing==0 ) { 6224 op = AggregateExpression.AVG; 6225 } 6226 break; 6227 } 6228 case LITERAL_min: 6229 { 6230 match(LITERAL_min); 6231 if ( inputState.guessing==0 ) { 6232 op = AggregateExpression.MIN; 6233 } 6234 break; 6235 } 6236 case LITERAL_max: 6237 { 6238 match(LITERAL_max); 6239 if ( inputState.guessing==0 ) { 6240 op = AggregateExpression.MAX; 6241 } 6242 break; 6243 } 6244 case LITERAL_sum: 6245 { 6246 match(LITERAL_sum); 6247 if ( inputState.guessing==0 ) { 6248 op = AggregateExpression.SUM; 6249 } 6250 break; 6251 } 6252 case LITERAL_count: 6253 { 6254 match(LITERAL_count); 6255 if ( inputState.guessing==0 ) { 6256 op = AggregateExpression.COUNT; 6257 } 6258 break; 6259 } 6260 default: 6261 { 6262 throw new NoViableAltException(LT(1), getFilename()); 6263 } 6264 } 6265 } 6266 match(LPAREN); 6267 { 6268 switch ( LA(1)) { 6269 case LITERAL_all: 6270 { 6271 match(LITERAL_all); 6272 if ( inputState.guessing==0 ) { 6273 all = true; 6274 } 6275 break; 6276 } 6277 case LITERAL_distinct: 6278 { 6279 match(LITERAL_distinct); 6280 if ( inputState.guessing==0 ) { 6281 all = false; 6282 } 6283 break; 6284 } 6285 case LITERAL_unique: 6286 case LPAREN: 6287 case LITERAL_default: 6288 case LITERAL_insert: 6289 case LITERAL_not: 6290 case LITERAL_null: 6291 case LITERAL_char: 6292 case LITERAL_date: 6293 case LITERAL_time: 6294 case LITERAL_timestamp: 6295 case LITERAL_interval: 6296 case STAR: 6297 case LITERAL_exists: 6298 case PLUS: 6299 case MINUS: 6300 case STRING_LITERAL: 6301 case QUESTION: 6302 case INT: 6303 case REAL: 6304 case BINSTR: 6305 case HEXSTR: 6306 case LITERAL_case: 6307 case LITERAL_hour: 6308 case LITERAL_left: 6309 case LITERAL_minute: 6310 case LITERAL_month: 6311 case LITERAL_right: 6312 case LITERAL_second: 6313 case LITERAL_year: 6314 case LITERAL_user: 6315 case LITERAL_current_user: 6316 case LITERAL_session_user: 6317 case LITERAL_system_user: 6318 case LITERAL_current_date: 6319 case LITERAL_current_time: 6320 case LITERAL_current_timestamp: 6321 case LITERAL_sql_tsi_frac_second: 6322 case LITERAL_sql_tsi_second: 6323 case LITERAL_sql_tsi_minute: 6324 case LITERAL_sql_tsi_hour: 6325 case LITERAL_sql_tsi_day: 6326 case LITERAL_sql_tsi_week: 6327 case LITERAL_sql_tsi_month: 6328 case LITERAL_sql_tsi_quarter: 6329 case LITERAL_sql_tsi_year: 6330 case LITERAL_cast: 6331 case LITERAL_true: 6332 case LITERAL_false: 6333 case LITERAL_avg: 6334 case LITERAL_min: 6335 case LITERAL_max: 6336 case LITERAL_sum: 6337 case LITERAL_count: 6338 case ID: 6339 { 6340 break; 6341 } 6342 default: 6343 { 6344 throw new NoViableAltException(LT(1), getFilename()); 6345 } 6346 } 6347 } 6348 { 6349 switch ( LA(1)) { 6350 case STAR: 6351 { 6352 match(STAR); 6353 break; 6354 } 6355 case LITERAL_unique: 6356 case LPAREN: 6357 case LITERAL_default: 6358 case LITERAL_insert: 6359 case LITERAL_not: 6360 case LITERAL_null: 6361 case LITERAL_char: 6362 case LITERAL_date: 6363 case LITERAL_time: 6364 case LITERAL_timestamp: 6365 case LITERAL_interval: 6366 case LITERAL_exists: 6367 case PLUS: 6368 case MINUS: 6369 case STRING_LITERAL: 6370 case QUESTION: 6371 case INT: 6372 case REAL: 6373 case BINSTR: 6374 case HEXSTR: 6375 case LITERAL_case: 6376 case LITERAL_hour: 6377 case LITERAL_left: 6378 case LITERAL_minute: 6379 case LITERAL_month: 6380 case LITERAL_right: 6381 case LITERAL_second: 6382 case LITERAL_year: 6383 case LITERAL_user: 6384 case LITERAL_current_user: 6385 case LITERAL_session_user: 6386 case LITERAL_system_user: 6387 case LITERAL_current_date: 6388 case LITERAL_current_time: 6389 case LITERAL_current_timestamp: 6390 case LITERAL_sql_tsi_frac_second: 6391 case LITERAL_sql_tsi_second: 6392 case LITERAL_sql_tsi_minute: 6393 case LITERAL_sql_tsi_hour: 6394 case LITERAL_sql_tsi_day: 6395 case LITERAL_sql_tsi_week: 6396 case LITERAL_sql_tsi_month: 6397 case LITERAL_sql_tsi_quarter: 6398 case LITERAL_sql_tsi_year: 6399 case LITERAL_cast: 6400 case LITERAL_true: 6401 case LITERAL_false: 6402 case LITERAL_avg: 6403 case LITERAL_min: 6404 case LITERAL_max: 6405 case LITERAL_sum: 6406 case LITERAL_count: 6407 case ID: 6408 { 6409 v=expression(); 6410 break; 6411 } 6412 default: 6413 { 6414 throw new NoViableAltException(LT(1), getFilename()); 6415 } 6416 } 6417 } 6418 match(RPAREN); 6419 if ( inputState.guessing==0 ) { 6420 e = new AggregateExpression(op, all, v); 6421 } 6422 return e; 6423 } 6424 6425 public final Expression dateTimeLiteral() throws RecognitionException, TokenStreamException { 6426 Expression e; 6427 6428 Token d1 = null; 6429 Token d2 = null; 6430 Token d3 = null; 6431 6432 e = null; 6433 6434 6435 switch ( LA(1)) { 6436 case LITERAL_date: 6437 { 6438 match(LITERAL_date); 6439 d1 = LT(1); 6440 match(STRING_LITERAL); 6441 if ( inputState.guessing==0 ) { 6442 6443 ValueDate x = new ValueDate(d1.getText()); 6444 e = new ValueExpression(x); 6445 6446 } 6447 break; 6448 } 6449 case LITERAL_time: 6450 { 6451 match(LITERAL_time); 6452 d2 = LT(1); 6453 match(STRING_LITERAL); 6454 if ( inputState.guessing==0 ) { 6455 6456 ValueTime x = new ValueTime(d2.getText()); 6457 e = new ValueExpression(x); 6458 6459 } 6460 break; 6461 } 6462 case LITERAL_timestamp: 6463 { 6464 match(LITERAL_timestamp); 6465 d3 = LT(1); 6466 match(STRING_LITERAL); 6467 if ( inputState.guessing==0 ) { 6468 6469 ValueTimestamp x = 6470 new ValueTimestamp(d3.getText()); 6471 e = new ValueExpression(x); 6472 6473 } 6474 break; 6475 } 6476 default: 6477 { 6478 throw new NoViableAltException(LT(1), getFilename()); 6479 } 6480 } 6481 return e; 6482 } 6483 6484 public final Expression intervalLiteral() throws RecognitionException, TokenStreamException { 6485 Expression e; 6486 6487 Token d1 = null; 6488 6489 e = null; 6490 int sign = 1; 6491 TypeInterval type = null; 6492 6493 6494 match(LITERAL_interval); 6495 { 6496 switch ( LA(1)) { 6497 case PLUS: 6498 { 6499 match(PLUS); 6500 break; 6501 } 6502 case MINUS: 6503 { 6504 match(MINUS); 6505 if ( inputState.guessing==0 ) { 6506 sign = -1; 6507 } 6508 break; 6509 } 6510 case STRING_LITERAL: 6511 { 6512 break; 6513 } 6514 default: 6515 { 6516 throw new NoViableAltException(LT(1), getFilename()); 6517 } 6518 } 6519 } 6520 d1 = LT(1); 6521 match(STRING_LITERAL); 6522 { 6523 switch ( LA(1)) { 6524 case LITERAL_hour: 6525 case LITERAL_minute: 6526 case LITERAL_month: 6527 case LITERAL_second: 6528 case LITERAL_year: 6529 case LITERAL_day: 6530 { 6531 type=intervalQualifier(); 6532 break; 6533 } 6534 case EOF: 6535 case LITERAL_create: 6536 case LITERAL_unique: 6537 case LITERAL_on: 6538 case RPAREN: 6539 case LITERAL_constraint: 6540 case LITERAL_primary: 6541 case LITERAL_check: 6542 case LITERAL_first: 6543 case LITERAL_after: 6544 case LITERAL_default: 6545 case LITERAL_as: 6546 case LITERAL_with: 6547 case COMMA: 6548 case LITERAL_where: 6549 case EQ: 6550 case LITERAL_from: 6551 case LITERAL_grant: 6552 case LITERAL_references: 6553 case LITERAL_not: 6554 case LITERAL_full: 6555 case LITERAL_initially: 6556 case LITERAL_deferrable: 6557 case LITERAL_for: 6558 case LITERAL_order: 6559 case STAR: 6560 case LITERAL_having: 6561 case LITERAL_using: 6562 case LITERAL_group: 6563 case CONCAT: 6564 case LITERAL_or: 6565 case LITERAL_and: 6566 case LITERAL_is: 6567 case LITERAL_like: 6568 case LITERAL_between: 6569 case LITERAL_in: 6570 case LITERAL_escape: 6571 case 120: 6572 case PLUS: 6573 case MINUS: 6574 case LITERAL_when: 6575 case LITERAL_then: 6576 case LITERAL_else: 6577 case LITERAL_end: 6578 case LITERAL_left: 6579 case LITERAL_right: 6580 case LT: 6581 case LE: 6582 case GT: 6583 case GE: 6584 case NE: 6585 case SLASH: 6586 case LITERAL_cross: 6587 case LITERAL_join: 6588 case LITERAL_natural: 6589 case LITERAL_union: 6590 case LITERAL_inner: 6591 case LITERAL_intersect: 6592 case LITERAL_except: 6593 case ID: 6594 { 6595 break; 6596 } 6597 default: 6598 { 6599 throw new NoViableAltException(LT(1), getFilename()); 6600 } 6601 } 6602 } 6603 if ( inputState.guessing==0 ) { 6604 6605 ValueInterval x = 6606 new ValueInterval(d1.getText(), 6607 sign, type); 6608 e = new ValueExpression(x); 6609 6610 } 6611 return e; 6612 } 6613 6614 public final Expression booleanLiteral() throws RecognitionException, TokenStreamException { 6615 Expression e; 6616 6617 6618 e = null; 6619 6620 6621 switch ( LA(1)) { 6622 case LITERAL_true: 6623 { 6624 match(LITERAL_true); 6625 if ( inputState.guessing==0 ) { 6626 e = new ValueExpression(ValueBoolean.trueBoolean); 6627 } 6628 break; 6629 } 6630 case LITERAL_false: 6631 { 6632 match(LITERAL_false); 6633 if ( inputState.guessing==0 ) { 6634 e = new ValueExpression(ValueBoolean.falseBoolean); 6635 } 6636 break; 6637 } 6638 default: 6639 { 6640 throw new NoViableAltException(LT(1), getFilename()); 6641 } 6642 } 6643 return e; 6644 } 6645 6646 public final Expression systemVariable() throws RecognitionException, TokenStreamException { 6647 Expression e; 6648 6649 6650 e = null; 6651 6652 6653 switch ( LA(1)) { 6654 case LITERAL_user: 6655 case LITERAL_current_user: 6656 case LITERAL_session_user: 6657 { 6658 { 6659 switch ( LA(1)) { 6660 case LITERAL_user: 6661 { 6662 match(LITERAL_user); 6663 break; 6664 } 6665 case LITERAL_current_user: 6666 { 6667 match(LITERAL_current_user); 6668 break; 6669 } 6670 case LITERAL_session_user: 6671 { 6672 match(LITERAL_session_user); 6673 break; 6674 } 6675 default: 6676 { 6677 throw new NoViableAltException(LT(1), getFilename()); 6678 } 6679 } 6680 } 6681 if ( inputState.guessing==0 ) { 6682 e = new ValueExpression(new ValueString(qConn.getAuth())); 6683 } 6684 break; 6685 } 6686 case LITERAL_system_user: 6687 { 6688 match(LITERAL_system_user); 6689 if ( inputState.guessing==0 ) { 6690 e = new ValueExpression( 6691 new ValueString(System.getProperty("user.name"))); 6692 } 6693 break; 6694 } 6695 case LITERAL_current_date: 6696 { 6697 match(LITERAL_current_date); 6698 if ( inputState.guessing==0 ) { 6699 e = new ValueExpression( 6700 new ValueDate(System.currentTimeMillis())); 6701 } 6702 break; 6703 } 6704 case LITERAL_current_time: 6705 { 6706 match(LITERAL_current_time); 6707 if ( inputState.guessing==0 ) { 6708 e = new ValueExpression( 6709 new ValueTime(System.currentTimeMillis())); 6710 } 6711 break; 6712 } 6713 case LITERAL_current_timestamp: 6714 { 6715 match(LITERAL_current_timestamp); 6716 if ( inputState.guessing==0 ) { 6717 e = new ValueExpression( 6718 new ValueTimestamp(System.currentTimeMillis())); 6719 } 6720 break; 6721 } 6722 case LITERAL_sql_tsi_frac_second: 6723 { 6724 match(LITERAL_sql_tsi_frac_second); 6725 if ( inputState.guessing==0 ) { 6726 e = new ValueExpression( 6727 new ValueInteger(FunctionExpression.TSI_FRAC_SECOND)); 6728 } 6729 break; 6730 } 6731 case LITERAL_sql_tsi_second: 6732 { 6733 match(LITERAL_sql_tsi_second); 6734 if ( inputState.guessing==0 ) { 6735 e = new ValueExpression( 6736 new ValueInteger(FunctionExpression.TSI_SECOND)); 6737 } 6738 break; 6739 } 6740 case LITERAL_sql_tsi_minute: 6741 { 6742 match(LITERAL_sql_tsi_minute); 6743 if ( inputState.guessing==0 ) { 6744 e = new ValueExpression( 6745 new ValueInteger(FunctionExpression.TSI_MINUTE)); 6746 } 6747 break; 6748 } 6749 case LITERAL_sql_tsi_hour: 6750 { 6751 match(LITERAL_sql_tsi_hour); 6752 if ( inputState.guessing==0 ) { 6753 e = new ValueExpression( 6754 new ValueInteger(FunctionExpression.TSI_HOUR)); 6755 } 6756 break; 6757 } 6758 case LITERAL_sql_tsi_day: 6759 { 6760 match(LITERAL_sql_tsi_day); 6761 if ( inputState.guessing==0 ) { 6762 e = new ValueExpression( 6763 new ValueInteger(FunctionExpression.TSI_DAY)); 6764 } 6765 break; 6766 } 6767 case LITERAL_sql_tsi_week: 6768 { 6769 match(LITERAL_sql_tsi_week); 6770 if ( inputState.guessing==0 ) { 6771 e = new ValueExpression( 6772 new ValueInteger(FunctionExpression.TSI_WEEK)); 6773 } 6774 break; 6775 } 6776 case LITERAL_sql_tsi_month: 6777 { 6778 match(LITERAL_sql_tsi_month); 6779 if ( inputState.guessing==0 ) { 6780 e = new ValueExpression( 6781 new ValueInteger(FunctionExpression.TSI_MONTH)); 6782 } 6783 break; 6784 } 6785 case LITERAL_sql_tsi_quarter: 6786 { 6787 match(LITERAL_sql_tsi_quarter); 6788 if ( inputState.guessing==0 ) { 6789 e = new ValueExpression( 6790 new ValueInteger(FunctionExpression.TSI_QUARTER)); 6791 } 6792 break; 6793 } 6794 case LITERAL_sql_tsi_year: 6795 { 6796 match(LITERAL_sql_tsi_year); 6797 if ( inputState.guessing==0 ) { 6798 e = new ValueExpression( 6799 new ValueInteger(FunctionExpression.TSI_YEAR)); 6800 } 6801 break; 6802 } 6803 default: 6804 { 6805 throw new NoViableAltException(LT(1), getFilename()); 6806 } 6807 } 6808 return e; 6809 } 6810 6811 public final Expression fnvarExpression() throws RecognitionException, TokenStreamException { 6812 Expression e; 6813 6814 6815 e = null; 6816 String id = null; 6817 VectorExpression args = null; 6818 6819 6820 id=functionId(); 6821 { 6822 switch ( LA(1)) { 6823 case LPAREN: 6824 { 6825 args=vectorExpression(); 6826 break; 6827 } 6828 case EOF: 6829 case LITERAL_create: 6830 case LITERAL_unique: 6831 case LITERAL_on: 6832 case RPAREN: 6833 case LITERAL_constraint: 6834 case LITERAL_primary: 6835 case LITERAL_check: 6836 case LITERAL_first: 6837 case LITERAL_after: 6838 case LITERAL_default: 6839 case LITERAL_as: 6840 case LITERAL_with: 6841 case COMMA: 6842 case LITERAL_where: 6843 case EQ: 6844 case LITERAL_from: 6845 case LITERAL_grant: 6846 case LITERAL_references: 6847 case LITERAL_not: 6848 case LITERAL_full: 6849 case LITERAL_initially: 6850 case LITERAL_deferrable: 6851 case LITERAL_for: 6852 case LITERAL_order: 6853 case STAR: 6854 case LITERAL_having: 6855 case LITERAL_using: 6856 case LITERAL_group: 6857 case CONCAT: 6858 case LITERAL_or: 6859 case LITERAL_and: 6860 case LITERAL_is: 6861 case LITERAL_like: 6862 case LITERAL_between: 6863 case LITERAL_in: 6864 case LITERAL_escape: 6865 case 120: 6866 case PLUS: 6867 case MINUS: 6868 case LITERAL_when: 6869 case LITERAL_then: 6870 case LITERAL_else: 6871 case LITERAL_end: 6872 case LITERAL_left: 6873 case LITERAL_right: 6874 case LT: 6875 case LE: 6876 case GT: 6877 case GE: 6878 case NE: 6879 case SLASH: 6880 case LITERAL_cross: 6881 case LITERAL_join: 6882 case LITERAL_natural: 6883 case LITERAL_union: 6884 case LITERAL_inner: 6885 case LITERAL_intersect: 6886 case LITERAL_except: 6887 case ID: 6888 { 6889 break; 6890 } 6891 default: 6892 { 6893 throw new NoViableAltException(LT(1), getFilename()); 6894 } 6895 } 6896 } 6897 if ( inputState.guessing==0 ) { 6898 6899 if (args == null) e = new NameExpression(id); 6900 else e = new FunctionExpression(id, args); 6901 6902 } 6903 return e; 6904 } 6905 6906 public final Expression castExpression() throws RecognitionException, TokenStreamException { 6907 Expression e; 6908 6909 6910 e = null; 6911 Expression f = null; 6912 Type type; 6913 6914 6915 match(LITERAL_cast); 6916 match(LPAREN); 6917 f=scalarExpression(); 6918 match(LITERAL_as); 6919 type=type(); 6920 match(RPAREN); 6921 if ( inputState.guessing==0 ) { 6922 6923 VectorExpression v = new VectorExpression(); 6924 v.addElement(f); 6925 v.addElement(new ValueExpression(new ValueType(type))); 6926 e = new FunctionExpression("cast", v); 6927 6928 } 6929 return e; 6930 } 6931 6932 public final Expression caseExpression() throws RecognitionException, TokenStreamException { 6933 Expression e; 6934 6935 6936 e = null; 6937 VectorExpression c = null; 6938 Expression ex = null; 6939 6940 6941 match(LITERAL_case); 6942 if ( inputState.guessing==0 ) { 6943 c = new VectorExpression(); 6944 } 6945 { 6946 _loop275: 6947 do { 6948 if ((LA(1)==LITERAL_when)) { 6949 match(LITERAL_when); 6950 ex=expression(); 6951 if ( inputState.guessing==0 ) { 6952 c.addElement(ex); 6953 } 6954 match(LITERAL_then); 6955 ex=expression(); 6956 if ( inputState.guessing==0 ) { 6957 c.addElement(ex); 6958 } 6959 } 6960 else { 6961 break _loop275; 6962 } 6963 6964 } while (true); 6965 } 6966 { 6967 switch ( LA(1)) { 6968 case LITERAL_else: 6969 { 6970 match(LITERAL_else); 6971 ex=expression(); 6972 if ( inputState.guessing==0 ) { 6973 c.addElement(ex); 6974 } 6975 break; 6976 } 6977 case LITERAL_end: 6978 { 6979 break; 6980 } 6981 default: 6982 { 6983 throw new NoViableAltException(LT(1), getFilename()); 6984 } 6985 } 6986 } 6987 match(LITERAL_end); 6988 if ( inputState.guessing==0 ) { 6989 e = new FunctionExpression("case", c); 6990 } 6991 return e; 6992 } 6993 6994 public final String functionId() throws RecognitionException, TokenStreamException { 6995 String id; 6996 6997 6998 id = null; 6999 7000 7001 switch ( LA(1)) { 7002 case ID: 7003 { 7004 id=sqlId(); 7005 break; 7006 } 7007 case LITERAL_char: 7008 { 7009 match(LITERAL_char); 7010 if ( inputState.guessing==0 ) { 7011 id = "char"; 7012 } 7013 break; 7014 } 7015 case LITERAL_hour: 7016 { 7017 match(LITERAL_hour); 7018 if ( inputState.guessing==0 ) { 7019 id = "hour"; 7020 } 7021 break; 7022 } 7023 case LITERAL_insert: 7024 { 7025 match(LITERAL_insert); 7026 if ( inputState.guessing==0 ) { 7027 id = "insert"; 7028 } 7029 break; 7030 } 7031 case LITERAL_left: 7032 { 7033 match(LITERAL_left); 7034 if ( inputState.guessing==0 ) { 7035 id = "left"; 7036 } 7037 break; 7038 } 7039 case LITERAL_minute: 7040 { 7041 match(LITERAL_minute); 7042 if ( inputState.guessing==0 ) { 7043 id = "minute"; 7044 } 7045 break; 7046 } 7047 case LITERAL_month: 7048 { 7049 match(LITERAL_month); 7050 if ( inputState.guessing==0 ) { 7051 id = "month"; 7052 } 7053 break; 7054 } 7055 case LITERAL_right: 7056 { 7057 match(LITERAL_right); 7058 if ( inputState.guessing==0 ) { 7059 id = "right"; 7060 } 7061 break; 7062 } 7063 case LITERAL_second: 7064 { 7065 match(LITERAL_second); 7066 if ( inputState.guessing==0 ) { 7067 id = "second"; 7068 } 7069 break; 7070 } 7071 case LITERAL_year: 7072 { 7073 match(LITERAL_year); 7074 if ( inputState.guessing==0 ) { 7075 id = "year"; 7076 } 7077 break; 7078 } 7079 default: 7080 { 7081 throw new NoViableAltException(LT(1), getFilename()); 7082 } 7083 } 7084 return id; 7085 } 7086 7087 public final TypeInterval intervalRange() throws RecognitionException, TokenStreamException { 7088 TypeInterval type; 7089 7090 7091 type = null; 7092 int start = 0; 7093 int startPrecision = 2; 7094 int end = 0; 7095 int secPrecision = 6; 7096 7097 7098 { 7099 switch ( LA(1)) { 7100 case LITERAL_year: 7101 { 7102 match(LITERAL_year); 7103 if ( inputState.guessing==0 ) { 7104 start = TypeInterval.YEAR; 7105 } 7106 break; 7107 } 7108 case LITERAL_day: 7109 { 7110 match(LITERAL_day); 7111 if ( inputState.guessing==0 ) { 7112 start = TypeInterval.DAY; 7113 } 7114 break; 7115 } 7116 case LITERAL_hour: 7117 { 7118 match(LITERAL_hour); 7119 if ( inputState.guessing==0 ) { 7120 start = TypeInterval.HOUR; 7121 } 7122 break; 7123 } 7124 case LITERAL_minute: 7125 { 7126 match(LITERAL_minute); 7127 if ( inputState.guessing==0 ) { 7128 start = TypeInterval.MINUTE; 7129 } 7130 break; 7131 } 7132 default: 7133 { 7134 throw new NoViableAltException(LT(1), getFilename()); 7135 } 7136 } 7137 } 7138 { 7139 switch ( LA(1)) { 7140 case LPAREN: 7141 { 7142 match(LPAREN); 7143 startPrecision=integer(); 7144 match(RPAREN); 7145 break; 7146 } 7147 case LITERAL_to: 7148 { 7149 break; 7150 } 7151 default: 7152 { 7153 throw new NoViableAltException(LT(1), getFilename()); 7154 } 7155 } 7156 } 7157 match(LITERAL_to); 7158 { 7159 switch ( LA(1)) { 7160 case LITERAL_year: 7161 { 7162 match(LITERAL_year); 7163 if ( inputState.guessing==0 ) { 7164 end = TypeInterval.YEAR; 7165 } 7166 break; 7167 } 7168 case LITERAL_month: 7169 { 7170 match(LITERAL_month); 7171 if ( inputState.guessing==0 ) { 7172 end = TypeInterval.MONTH; 7173 } 7174 break; 7175 } 7176 case LITERAL_day: 7177 { 7178 match(LITERAL_day); 7179 if ( inputState.guessing==0 ) { 7180 end = TypeInterval.DAY; 7181 } 7182 break; 7183 } 7184 case LITERAL_hour: 7185 { 7186 match(LITERAL_hour); 7187 if ( inputState.guessing==0 ) { 7188 end = TypeInterval.HOUR; 7189 } 7190 break; 7191 } 7192 case LITERAL_minute: 7193 { 7194 match(LITERAL_minute); 7195 if ( inputState.guessing==0 ) { 7196 end = TypeInterval.MINUTE; 7197 } 7198 break; 7199 } 7200 case LITERAL_second: 7201 { 7202 match(LITERAL_second); 7203 if ( inputState.guessing==0 ) { 7204 end = TypeInterval.SECOND; 7205 } 7206 { 7207 switch ( LA(1)) { 7208 case LPAREN: 7209 { 7210 match(LPAREN); 7211 secPrecision=integer(); 7212 match(RPAREN); 7213 break; 7214 } 7215 case EOF: 7216 case LITERAL_create: 7217 case LITERAL_unique: 7218 case LITERAL_on: 7219 case RPAREN: 7220 case LITERAL_constraint: 7221 case LITERAL_primary: 7222 case LITERAL_check: 7223 case LITERAL_first: 7224 case LITERAL_after: 7225 case LITERAL_default: 7226 case LITERAL_as: 7227 case LITERAL_with: 7228 case COMMA: 7229 case LITERAL_where: 7230 case EQ: 7231 case LITERAL_from: 7232 case LITERAL_grant: 7233 case LITERAL_references: 7234 case LITERAL_not: 7235 case LITERAL_full: 7236 case LITERAL_initially: 7237 case LITERAL_deferrable: 7238 case LITERAL_for: 7239 case LITERAL_order: 7240 case STAR: 7241 case LITERAL_having: 7242 case LITERAL_using: 7243 case LITERAL_group: 7244 case CONCAT: 7245 case LITERAL_or: 7246 case LITERAL_and: 7247 case LITERAL_is: 7248 case LITERAL_like: 7249 case LITERAL_between: 7250 case LITERAL_in: 7251 case LITERAL_escape: 7252 case 120: 7253 case PLUS: 7254 case MINUS: 7255 case LITERAL_when: 7256 case LITERAL_then: 7257 case LITERAL_else: 7258 case LITERAL_end: 7259 case LITERAL_left: 7260 case LITERAL_right: 7261 case LT: 7262 case LE: 7263 case GT: 7264 case GE: 7265 case NE: 7266 case SLASH: 7267 case LITERAL_cross: 7268 case LITERAL_join: 7269 case LITERAL_natural: 7270 case LITERAL_union: 7271 case LITERAL_inner: 7272 case LITERAL_intersect: 7273 case LITERAL_except: 7274 case ID: 7275 { 7276 break; 7277 } 7278 default: 7279 { 7280 throw new NoViableAltException(LT(1), getFilename()); 7281 } 7282 } 7283 } 7284 break; 7285 } 7286 default: 7287 { 7288 throw new NoViableAltException(LT(1), getFilename()); 7289 } 7290 } 7291 } 7292 if ( inputState.guessing==0 ) { 7293 type = new TypeInterval(start, startPrecision, 7294 end, secPrecision); 7295 } 7296 return type; 7297 } 7298 7299 public final TypeInterval intervalSingleField() throws RecognitionException, TokenStreamException { 7300 TypeInterval type; 7301 7302 7303 type = null; 7304 int start = 0; 7305 int startPrecision = 2; 7306 int secPrecision = 6; 7307 7308 7309 switch ( LA(1)) { 7310 case LITERAL_hour: 7311 case LITERAL_minute: 7312 case LITERAL_month: 7313 case LITERAL_year: 7314 case LITERAL_day: 7315 { 7316 { 7317 switch ( LA(1)) { 7318 case LITERAL_year: 7319 { 7320 match(LITERAL_year); 7321 if ( inputState.guessing==0 ) { 7322 start = TypeInterval.YEAR; 7323 } 7324 break; 7325 } 7326 case LITERAL_month: 7327 { 7328 match(LITERAL_month); 7329 if ( inputState.guessing==0 ) { 7330 start = TypeInterval.MONTH; 7331 } 7332 break; 7333 } 7334 case LITERAL_day: 7335 { 7336 match(LITERAL_day); 7337 if ( inputState.guessing==0 ) { 7338 start = TypeInterval.DAY; 7339 } 7340 break; 7341 } 7342 case LITERAL_hour: 7343 { 7344 match(LITERAL_hour); 7345 if ( inputState.guessing==0 ) { 7346 start = TypeInterval.HOUR; 7347 } 7348 break; 7349 } 7350 case LITERAL_minute: 7351 { 7352 match(LITERAL_minute); 7353 if ( inputState.guessing==0 ) { 7354 start = TypeInterval.MINUTE; 7355 } 7356 break; 7357 } 7358 default: 7359 { 7360 throw new NoViableAltException(LT(1), getFilename()); 7361 } 7362 } 7363 } 7364 { 7365 switch ( LA(1)) { 7366 case LPAREN: 7367 { 7368 match(LPAREN); 7369 startPrecision=integer(); 7370 match(RPAREN); 7371 break; 7372 } 7373 case EOF: 7374 case LITERAL_create: 7375 case LITERAL_unique: 7376 case LITERAL_on: 7377 case RPAREN: 7378 case LITERAL_constraint: 7379 case LITERAL_primary: 7380 case LITERAL_check: 7381 case LITERAL_first: 7382 case LITERAL_after: 7383 case LITERAL_default: 7384 case LITERAL_as: 7385 case LITERAL_with: 7386 case COMMA: 7387 case LITERAL_where: 7388 case EQ: 7389 case LITERAL_from: 7390 case LITERAL_grant: 7391 case LITERAL_references: 7392 case LITERAL_not: 7393 case LITERAL_full: 7394 case LITERAL_initially: 7395 case LITERAL_deferrable: 7396 case LITERAL_for: 7397 case LITERAL_order: 7398 case STAR: 7399 case LITERAL_having: 7400 case LITERAL_using: 7401 case LITERAL_group: 7402 case CONCAT: 7403 case LITERAL_or: 7404 case LITERAL_and: 7405 case LITERAL_is: 7406 case LITERAL_like: 7407 case LITERAL_between: 7408 case LITERAL_in: 7409 case LITERAL_escape: 7410 case 120: 7411 case PLUS: 7412 case MINUS: 7413 case LITERAL_when: 7414 case LITERAL_then: 7415 case LITERAL_else: 7416 case LITERAL_end: 7417 case LITERAL_left: 7418 case LITERAL_right: 7419 case LT: 7420 case LE: 7421 case GT: 7422 case GE: 7423 case NE: 7424 case SLASH: 7425 case LITERAL_cross: 7426 case LITERAL_join: 7427 case LITERAL_natural: 7428 case LITERAL_union: 7429 case LITERAL_inner: 7430 case LITERAL_intersect: 7431 case LITERAL_except: 7432 case ID: 7433 { 7434 break; 7435 } 7436 default: 7437 { 7438 throw new NoViableAltException(LT(1), getFilename()); 7439 } 7440 } 7441 } 7442 if ( inputState.guessing==0 ) { 7443 type = new TypeInterval(start, startPrecision, 0); 7444 } 7445 break; 7446 } 7447 case LITERAL_second: 7448 { 7449 match(LITERAL_second); 7450 { 7451 switch ( LA(1)) { 7452 case LPAREN: 7453 { 7454 match(LPAREN); 7455 startPrecision=integer(); 7456 { 7457 switch ( LA(1)) { 7458 case COMMA: 7459 { 7460 match(COMMA); 7461 secPrecision=integer(); 7462 break; 7463 } 7464 case RPAREN: 7465 { 7466 break; 7467 } 7468 default: 7469 { 7470 throw new NoViableAltException(LT(1), getFilename()); 7471 } 7472 } 7473 } 7474 match(RPAREN); 7475 break; 7476 } 7477 case EOF: 7478 case LITERAL_create: 7479 case LITERAL_unique: 7480 case LITERAL_on: 7481 case RPAREN: 7482 case LITERAL_constraint: 7483 case LITERAL_primary: 7484 case LITERAL_check: 7485 case LITERAL_first: 7486 case LITERAL_after: 7487 case LITERAL_default: 7488 case LITERAL_as: 7489 case LITERAL_with: 7490 case COMMA: 7491 case LITERAL_where: 7492 case EQ: 7493 case LITERAL_from: 7494 case LITERAL_grant: 7495 case LITERAL_references: 7496 case LITERAL_not: 7497 case LITERAL_full: 7498 case LITERAL_initially: 7499 case LITERAL_deferrable: 7500 case LITERAL_for: 7501 case LITERAL_order: 7502 case STAR: 7503 case LITERAL_having: 7504 case LITERAL_using: 7505 case LITERAL_group: 7506 case CONCAT: 7507 case LITERAL_or: 7508 case LITERAL_and: 7509 case LITERAL_is: 7510 case LITERAL_like: 7511 case LITERAL_between: 7512 case LITERAL_in: 7513 case LITERAL_escape: 7514 case 120: 7515 case PLUS: 7516 case MINUS: 7517 case LITERAL_when: 7518 case LITERAL_then: 7519 case LITERAL_else: 7520 case LITERAL_end: 7521 case LITERAL_left: 7522 case LITERAL_right: 7523 case LT: 7524 case LE: 7525 case GT: 7526 case GE: 7527 case NE: 7528 case SLASH: 7529 case LITERAL_cross: 7530 case LITERAL_join: 7531 case LITERAL_natural: 7532 case LITERAL_union: 7533 case LITERAL_inner: 7534 case LITERAL_intersect: 7535 case LITERAL_except: 7536 case ID: 7537 { 7538 break; 7539 } 7540 default: 7541 { 7542 throw new NoViableAltException(LT(1), getFilename()); 7543 } 7544 } 7545 } 7546 if ( inputState.guessing==0 ) { 7547 type = new TypeInterval(TypeInterval.SECOND, 7548 startPrecision, 7549 TypeInterval.NANO, 7550 secPrecision); 7551 } 7552 break; 7553 } 7554 default: 7555 { 7556 throw new NoViableAltException(LT(1), getFilename()); 7557 } 7558 } 7559 return type; 7560 } 7561 7562 public final SelectItem selectItem() throws RecognitionException, TokenStreamException { 7563 SelectItem item; 7564 7565 7566 item = null; 7567 Expression e = null; 7568 String id = null; 7569 7570 7571 e=expression(); 7572 if ( inputState.guessing==0 ) { 7573 7574 item = new SelectItem(e); 7575 7576 } 7577 { 7578 if ((LA(1)==LITERAL_as||LA(1)==ID) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_on||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==LITERAL_from||LA(2)==LITERAL_grant||LA(2)==LITERAL_references||LA(2)==LITERAL_not||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_for||LA(2)==LITERAL_order||LA(2)==LITERAL_having||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_left||LA(2)==LITERAL_right||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) { 7579 { 7580 switch ( LA(1)) { 7581 case LITERAL_as: 7582 { 7583 match(LITERAL_as); 7584 break; 7585 } 7586 case ID: 7587 { 7588 break; 7589 } 7590 default: 7591 { 7592 throw new NoViableAltException(LT(1), getFilename()); 7593 } 7594 } 7595 } 7596 id=sqlId(); 7597 if ( inputState.guessing==0 ) { 7598 item.setAs(id); 7599 } 7600 } 7601 else if ((LA(1)==EOF||LA(1)==LITERAL_create||LA(1)==LITERAL_unique||LA(1)==LITERAL_on||LA(1)==RPAREN||LA(1)==LITERAL_constraint||LA(1)==LITERAL_primary||LA(1)==LITERAL_check||LA(1)==LITERAL_first||LA(1)==LITERAL_after||LA(1)==LITERAL_default||LA(1)==LITERAL_as||LA(1)==LITERAL_with||LA(1)==COMMA||LA(1)==LITERAL_where||LA(1)==LITERAL_from||LA(1)==LITERAL_grant||LA(1)==LITERAL_references||LA(1)==LITERAL_not||LA(1)==LITERAL_full||LA(1)==LITERAL_initially||LA(1)==LITERAL_deferrable||LA(1)==LITERAL_for||LA(1)==LITERAL_order||LA(1)==LITERAL_having||LA(1)==LITERAL_using||LA(1)==LITERAL_group||LA(1)==CONCAT||LA(1)==LITERAL_or||LA(1)==LITERAL_and||LA(1)==LITERAL_when||LA(1)==LITERAL_then||LA(1)==LITERAL_else||LA(1)==LITERAL_end||LA(1)==LITERAL_left||LA(1)==LITERAL_right||LA(1)==LITERAL_cross||LA(1)==LITERAL_join||LA(1)==LITERAL_natural||LA(1)==LITERAL_union||LA(1)==LITERAL_inner||LA(1)==LITERAL_intersect||LA(1)==LITERAL_except||LA(1)==ID) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_index||LA(2)==LITERAL_temporary||LA(2)==LITERAL_table||LA(2)==LITERAL_view||LA(2)==LITERAL_on||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_foreign||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==LITERAL_cascaded||LA(2)==LITERAL_update||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==EQ||LA(2)==LITERAL_delete||LA(2)==LITERAL_from||LA(2)==LITERAL_global||LA(2)==LITERAL_local||LA(2)==LITERAL_grant||LA(2)==LITERAL_all||LA(2)==LITERAL_select||LA(2)==LITERAL_insert||LA(2)==LITERAL_references||LA(2)==LITERAL_usage||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_key||LA(2)==LITERAL_identity||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferred||LA(2)==LITERAL_immediate||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_bit||LA(2)==LITERAL_varbinary||LA(2)==LITERAL_binary||LA(2)==LITERAL_blob||LA(2)==LITERAL_clob||LA(2)==LITERAL_character||LA(2)==LITERAL_char||LA(2)==LITERAL_varchar||LA(2)==LITERAL_int||LA(2)==LITERAL_integer||LA(2)==LITERAL_smallint||LA(2)==LITERAL_tinyint||LA(2)==LITERAL_bigint||LA(2)==LITERAL_dec||LA(2)==LITERAL_decimal||LA(2)==LITERAL_numeric||LA(2)==LITERAL_real||LA(2)==LITERAL_double||LA(2)==LITERAL_float||LA(2)==LITERAL_boolean||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_for||LA(2)==LITERAL_read||LA(2)==LITERAL_order||LA(2)==LITERAL_by||LA(2)==STAR||LA(2)==LITERAL_having||LA(2)==LITERAL_corresponding||LA(2)==LITERAL_values||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_is||LA(2)==LITERAL_like||LA(2)==LITERAL_between||LA(2)==LITERAL_in||LA(2)==LITERAL_exists||LA(2)==LITERAL_escape||LA(2)==120||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==LT||LA(2)==LE||LA(2)==GT||LA(2)==GE||LA(2)==NE||LA(2)==SLASH||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_outer||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) { 7602 } 7603 else { 7604 throw new NoViableAltException(LT(1), getFilename()); 7605 } 7606 7607 } 7608 return item; 7609 } 7610 7611 public final int joinType() throws RecognitionException, TokenStreamException { 7612 int type; 7613 7614 7615 type = Op.INNER; 7616 7617 7618 switch ( LA(1)) { 7619 case LITERAL_inner: 7620 { 7621 match(LITERAL_inner); 7622 if ( inputState.guessing==0 ) { 7623 type = Op.INNER; 7624 } 7625 break; 7626 } 7627 case LITERAL_full: 7628 case LITERAL_left: 7629 case LITERAL_right: 7630 { 7631 { 7632 switch ( LA(1)) { 7633 case LITERAL_left: 7634 { 7635 match(LITERAL_left); 7636 if ( inputState.guessing==0 ) { 7637 type = Op.LEFT; 7638 } 7639 break; 7640 } 7641 case LITERAL_right: 7642 { 7643 match(LITERAL_right); 7644 if ( inputState.guessing==0 ) { 7645 type = Op.RIGHT; 7646 } 7647 break; 7648 } 7649 case LITERAL_full: 7650 { 7651 match(LITERAL_full); 7652 if ( inputState.guessing==0 ) { 7653 type = Op.FULL; 7654 } 7655 break; 7656 } 7657 default: 7658 { 7659 throw new NoViableAltException(LT(1), getFilename()); 7660 } 7661 } 7662 } 7663 { 7664 switch ( LA(1)) { 7665 case LITERAL_outer: 7666 { 7667 match(LITERAL_outer); 7668 break; 7669 } 7670 case LITERAL_join: 7671 { 7672 break; 7673 } 7674 default: 7675 { 7676 throw new NoViableAltException(LT(1), getFilename()); 7677 } 7678 } 7679 } 7680 break; 7681 } 7682 case LITERAL_join: 7683 { 7684 break; 7685 } 7686 default: 7687 { 7688 throw new NoViableAltException(LT(1), getFilename()); 7689 } 7690 } 7691 return type; 7692 } 7693 7694 7695 public static final String [] _tokenNames = { 7696 "<0>", 7697 "EOF", 7698 "<2>", 7699 "NULL_TREE_LOOKAHEAD", 7700 "\"create\"", 7701 "\"unique\"", 7702 "\"index\"", 7703 "\"schema\"", 7704 "\"temporary\"", 7705 "\"table\"", 7706 "\"view\"", 7707 "\"drop\"", 7708 "\"commit\"", 7709 "\"work\"", 7710 "\"rollback\"", 7711 "\"transaction\"", 7712 "\"on\"", 7713 "'('", 7714 "')'", 7715 "\"alter\"", 7716 "\"add\"", 7717 "\"constraint\"", 7718 "\"primary\"", 7719 "\"foreign\"", 7720 "\"check\"", 7721 "\"rename\"", 7722 "\"column\"", 7723 "\"first\"", 7724 "\"after\"", 7725 "\"restrict\"", 7726 "\"cascade\"", 7727 "\"set\"", 7728 "\"default\"", 7729 "\"to\"", 7730 "\"as\"", 7731 "\"with\"", 7732 "\"cascaded\"", 7733 "\"option\"", 7734 "\"update\"", 7735 "COMMA", 7736 "\"where\"", 7737 "EQ", 7738 "\"delete\"", 7739 "\"from\"", 7740 "\"authorization\"", 7741 "\"global\"", 7742 "\"local\"", 7743 "\"grant\"", 7744 "\"public\"", 7745 "\"all\"", 7746 "\"privileges\"", 7747 "\"select\"", 7748 "\"insert\"", 7749 "\"references\"", 7750 "\"usage\"", 7751 "\"not\"", 7752 "\"null\"", 7753 "\"key\"", 7754 "\"identity\"", 7755 "\"match\"", 7756 "\"full\"", 7757 "\"partial\"", 7758 "\"no\"", 7759 "\"action\"", 7760 "\"initially\"", 7761 "\"deferred\"", 7762 "\"immediate\"", 7763 "\"deferrable\"", 7764 "\"bit\"", 7765 "\"varying\"", 7766 "\"varbinary\"", 7767 "\"binary\"", 7768 "\"blob\"", 7769 "\"large\"", 7770 "\"object\"", 7771 "\"clob\"", 7772 "\"character\"", 7773 "\"char\"", 7774 "\"varchar\"", 7775 "\"int\"", 7776 "\"integer\"", 7777 "\"smallint\"", 7778 "\"tinyint\"", 7779 "\"bigint\"", 7780 "\"dec\"", 7781 "\"decimal\"", 7782 "\"numeric\"", 7783 "\"real\"", 7784 "\"double\"", 7785 "\"precision\"", 7786 "\"float\"", 7787 "\"boolean\"", 7788 "\"date\"", 7789 "\"time\"", 7790 "\"zone\"", 7791 "\"timestamp\"", 7792 "\"interval\"", 7793 "\"for\"", 7794 "\"read\"", 7795 "\"only\"", 7796 "\"order\"", 7797 "\"by\"", 7798 "\"asc\"", 7799 "\"desc\"", 7800 "\"distinct\"", 7801 "STAR", 7802 "\"having\"", 7803 "\"corresponding\"", 7804 "\"values\"", 7805 "\"using\"", 7806 "\"group\"", 7807 "CONCAT", 7808 "\"or\"", 7809 "\"and\"", 7810 "\"is\"", 7811 "\"like\"", 7812 "\"between\"", 7813 "\"in\"", 7814 "\"exists\"", 7815 "\"escape\"", 7816 "\"**\"", 7817 "PLUS", 7818 "MINUS", 7819 "STRING_LITERAL", 7820 "QUESTION", 7821 "INT", 7822 "REAL", 7823 "BINSTR", 7824 "HEXSTR", 7825 "\"case\"", 7826 "\"when\"", 7827 "\"then\"", 7828 "\"else\"", 7829 "\"end\"", 7830 "\"hour\"", 7831 "\"left\"", 7832 "\"minute\"", 7833 "\"month\"", 7834 "\"right\"", 7835 "\"second\"", 7836 "\"year\"", 7837 "\"user\"", 7838 "\"current_user\"", 7839 "\"session_user\"", 7840 "\"system_user\"", 7841 "\"current_date\"", 7842 "\"current_time\"", 7843 "\"current_timestamp\"", 7844 "\"sql_tsi_frac_second\"", 7845 "\"sql_tsi_second\"", 7846 "\"sql_tsi_minute\"", 7847 "\"sql_tsi_hour\"", 7848 "\"sql_tsi_day\"", 7849 "\"sql_tsi_week\"", 7850 "\"sql_tsi_month\"", 7851 "\"sql_tsi_quarter\"", 7852 "\"sql_tsi_year\"", 7853 "\"cast\"", 7854 "\"day\"", 7855 "\"true\"", 7856 "\"false\"", 7857 "\"avg\"", 7858 "\"min\"", 7859 "\"max\"", 7860 "\"sum\"", 7861 "\"count\"", 7862 "\"into\"", 7863 "\"unknown\"", 7864 "LT", 7865 "LE", 7866 "GT", 7867 "GE", 7868 "NE", 7869 "\"any\"", 7870 "\"some\"", 7871 "SLASH", 7872 "\"cross\"", 7873 "\"join\"", 7874 "\"natural\"", 7875 "\"union\"", 7876 "\"inner\"", 7877 "\"outer\"", 7878 "\"intersect\"", 7879 "\"except\"", 7880 "an identifier", 7881 "WS", 7882 "SL_COMMENT", 7883 "ML_COMMENT", 7884 "NL", 7885 "LCURLY", 7886 "RCURLY", 7887 "SEMI", 7888 "DIGIT", 7889 "EXP", 7890 "INT_OR_REAL", 7891 "HEXDIGIT", 7892 "IDCHAR", 7893 "IDCHAR2", 7894 "SIMPID", 7895 "CASEID", 7896 "IDTERM" 7897 }; 7898 7899 7900 } 7901 | Popular Tags |