github.com/iasthc/atlas/cmd/atlas@v0.0.0-20230523071841-73246df3f88d/internal/sqlparse/sqliteparse/Parser.g4 (about) 1 /* 2 * The MIT License (MIT) 3 * 4 * Copyright (c) 2014 by Bart Kiers 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 7 * associated documentation files (the "Software"), to deal in the Software without restriction, 8 * including without limitation the rights to use, copy, modify, merge, publish, distribute, 9 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 10 * furnished to do so, subject to the following conditions: 11 * 12 * The above copyright notice and this permission notice shall be included in all copies or 13 * substantial portions of the Software. 14 * 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 16 * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 * 21 * Project : sqlite-parser; an ANTLR4 grammar for SQLite https://github.com/bkiers/sqlite-parser 22 * Developed by: 23 * Bart Kiers, bart@big-o.nl 24 * Martin Mirchev, marti_2203@abv.bg 25 * Mike Lische, mike@lischke-online.de 26 */ 27 28 // $antlr-format alignTrailingComments on, columnLimit 130, minEmptyLines 1, maxEmptyLinesToKeep 1, reflowComments off 29 // $antlr-format useTab off, allowShortRulesOnASingleLine off, allowShortBlocksOnASingleLine on, alignSemicolons ownLine 30 31 parser grammar Parser; 32 33 options { 34 tokenVocab = Lexer; 35 } 36 37 parse: (sql_stmt_list)* EOF 38 ; 39 40 sql_stmt_list: 41 SCOL* sql_stmt (SCOL+ sql_stmt)* SCOL* 42 ; 43 44 sql_stmt: (EXPLAIN_ (QUERY_ PLAN_)?)? ( 45 alter_table_stmt 46 | analyze_stmt 47 | attach_stmt 48 | begin_stmt 49 | commit_stmt 50 | create_index_stmt 51 | create_table_stmt 52 | create_trigger_stmt 53 | create_view_stmt 54 | create_virtual_table_stmt 55 | delete_stmt 56 | delete_stmt_limited 57 | detach_stmt 58 | drop_stmt 59 | insert_stmt 60 | pragma_stmt 61 | reindex_stmt 62 | release_stmt 63 | rollback_stmt 64 | savepoint_stmt 65 | select_stmt 66 | update_stmt 67 | update_stmt_limited 68 | vacuum_stmt 69 ) 70 ; 71 72 alter_table_stmt: 73 ALTER_ TABLE_ (schema_name DOT)? table_name ( 74 RENAME_ ( 75 TO_ new_table_name = table_name 76 | COLUMN_? old_column_name = column_name TO_ new_column_name = column_name 77 ) 78 | ADD_ COLUMN_? column_def 79 | DROP_ COLUMN_? column_name 80 ) 81 ; 82 83 analyze_stmt: 84 ANALYZE_ (schema_name | (schema_name DOT)? table_or_index_name)? 85 ; 86 87 attach_stmt: 88 ATTACH_ DATABASE_? expr AS_ schema_name 89 ; 90 91 begin_stmt: 92 BEGIN_ (DEFERRED_ | IMMEDIATE_ | EXCLUSIVE_)? ( 93 TRANSACTION_ transaction_name? 94 )? 95 ; 96 97 commit_stmt: (COMMIT_ | END_) TRANSACTION_? 98 ; 99 100 rollback_stmt: 101 ROLLBACK_ TRANSACTION_? (TO_ SAVEPOINT_? savepoint_name)? 102 ; 103 104 savepoint_stmt: 105 SAVEPOINT_ savepoint_name 106 ; 107 108 release_stmt: 109 RELEASE_ SAVEPOINT_? savepoint_name 110 ; 111 112 create_index_stmt: 113 CREATE_ UNIQUE_? INDEX_ (IF_ NOT_ EXISTS_)? (schema_name DOT)? index_name ON_ table_name OPEN_PAR 114 indexed_column (COMMA indexed_column)* CLOSE_PAR (WHERE_ expr)? 115 ; 116 117 indexed_column: (column_name | expr) (COLLATE_ collation_name)? asc_desc? 118 ; 119 120 create_table_stmt: 121 CREATE_ (TEMP_ | TEMPORARY_)? TABLE_ (IF_ NOT_ EXISTS_)? ( 122 schema_name DOT 123 )? table_name ( 124 OPEN_PAR column_def (COMMA column_def)*? (COMMA table_constraint)* CLOSE_PAR ( 125 WITHOUT_ row_ROW_ID = IDENTIFIER 126 )? 127 | AS_ select_stmt 128 ) 129 ; 130 131 column_def: 132 column_name type_name? column_constraint* 133 ; 134 135 type_name: 136 name+? ( 137 OPEN_PAR signed_number CLOSE_PAR 138 | OPEN_PAR signed_number COMMA signed_number CLOSE_PAR 139 )? 140 ; 141 142 column_constraint: (CONSTRAINT_ name)? ( 143 (PRIMARY_ KEY_ asc_desc? conflict_clause? AUTOINCREMENT_?) 144 | (NOT_ NULL_ | UNIQUE_) conflict_clause? 145 | CHECK_ OPEN_PAR expr CLOSE_PAR 146 | DEFAULT_ (signed_number | literal_value | OPEN_PAR expr CLOSE_PAR) 147 | COLLATE_ collation_name 148 | foreign_key_clause 149 | (GENERATED_ ALWAYS_)? AS_ OPEN_PAR expr CLOSE_PAR ( 150 STORED_ 151 | VIRTUAL_ 152 )? 153 ) 154 ; 155 156 signed_number: (PLUS | MINUS)? NUMERIC_LITERAL 157 ; 158 159 table_constraint: (CONSTRAINT_ name)? ( 160 (PRIMARY_ KEY_ | UNIQUE_) OPEN_PAR indexed_column ( 161 COMMA indexed_column 162 )* CLOSE_PAR conflict_clause? 163 | CHECK_ OPEN_PAR expr CLOSE_PAR 164 | FOREIGN_ KEY_ OPEN_PAR column_name (COMMA column_name)* CLOSE_PAR foreign_key_clause 165 ) 166 ; 167 168 foreign_key_clause: 169 REFERENCES_ foreign_table ( 170 OPEN_PAR column_name (COMMA column_name)* CLOSE_PAR 171 )? ( 172 ON_ (DELETE_ | UPDATE_) ( 173 SET_ (NULL_ | DEFAULT_) 174 | CASCADE_ 175 | RESTRICT_ 176 | NO_ ACTION_ 177 ) 178 | MATCH_ name 179 )* (NOT_? DEFERRABLE_ (INITIALLY_ (DEFERRED_ | IMMEDIATE_))?)? 180 ; 181 182 conflict_clause: 183 ON_ CONFLICT_ ( 184 ROLLBACK_ 185 | ABORT_ 186 | FAIL_ 187 | IGNORE_ 188 | REPLACE_ 189 ) 190 ; 191 192 create_trigger_stmt: 193 CREATE_ (TEMP_ | TEMPORARY_)? TRIGGER_ (IF_ NOT_ EXISTS_)? ( 194 schema_name DOT 195 )? trigger_name (BEFORE_ | AFTER_ | INSTEAD_ OF_)? ( 196 DELETE_ 197 | INSERT_ 198 | UPDATE_ (OF_ column_name ( COMMA column_name)*)? 199 ) ON_ table_name (FOR_ EACH_ ROW_)? (WHEN_ expr)? BEGIN_ ( 200 (update_stmt | insert_stmt | delete_stmt | select_stmt) SCOL 201 )+ END_ 202 ; 203 204 create_view_stmt: 205 CREATE_ (TEMP_ | TEMPORARY_)? VIEW_ (IF_ NOT_ EXISTS_)? ( 206 schema_name DOT 207 )? view_name (OPEN_PAR column_name (COMMA column_name)* CLOSE_PAR)? AS_ select_stmt 208 ; 209 210 create_virtual_table_stmt: 211 CREATE_ VIRTUAL_ TABLE_ (IF_ NOT_ EXISTS_)? (schema_name DOT)? table_name USING_ module_name ( 212 OPEN_PAR module_argument (COMMA module_argument)* CLOSE_PAR 213 )? 214 ; 215 216 with_clause: 217 WITH_ RECURSIVE_? cte_table_name AS_ OPEN_PAR select_stmt CLOSE_PAR ( 218 COMMA cte_table_name AS_ OPEN_PAR select_stmt CLOSE_PAR 219 )* 220 ; 221 222 cte_table_name: 223 table_name (OPEN_PAR column_name ( COMMA column_name)* CLOSE_PAR)? 224 ; 225 226 recursive_cte: 227 cte_table_name AS_ OPEN_PAR initial_select UNION_ ALL_? recursive_select CLOSE_PAR 228 ; 229 230 common_table_expression: 231 table_name (OPEN_PAR column_name ( COMMA column_name)* CLOSE_PAR)? AS_ OPEN_PAR select_stmt CLOSE_PAR 232 ; 233 234 delete_stmt: 235 with_clause? DELETE_ FROM_ qualified_table_name (WHERE_ expr)? returning_clause? 236 ; 237 238 delete_stmt_limited: 239 with_clause? DELETE_ FROM_ qualified_table_name (WHERE_ expr)? returning_clause? ( 240 order_by_stmt? limit_stmt 241 )? 242 ; 243 244 detach_stmt: 245 DETACH_ DATABASE_? schema_name 246 ; 247 248 drop_stmt: 249 DROP_ object = (INDEX_ | TABLE_ | TRIGGER_ | VIEW_) ( 250 IF_ EXISTS_ 251 )? (schema_name DOT)? any_name 252 ; 253 254 /* 255 SQLite understands the following binary operators, in order from highest to lowest precedence: 256 || 257 * / % 258 + - 259 << >> & | 260 < <= > >= 261 = == != <> IS IS NOT IN LIKE GLOB MATCH REGEXP 262 AND 263 OR 264 */ 265 expr: 266 literal_value 267 | BIND_PARAMETER 268 | ((schema_name DOT)? table_name DOT)? column_name 269 | unary_operator expr 270 | expr PIPE2 expr 271 | expr ( STAR | DIV | MOD) expr 272 | expr ( PLUS | MINUS) expr 273 | expr ( LT2 | GT2 | AMP | PIPE) expr 274 | expr ( LT | LT_EQ | GT | GT_EQ) expr 275 | expr ( 276 ASSIGN 277 | EQ 278 | NOT_EQ1 279 | NOT_EQ2 280 | IS_ 281 | IS_ NOT_ 282 | IN_ 283 | LIKE_ 284 | GLOB_ 285 | MATCH_ 286 | REGEXP_ 287 ) expr 288 | expr AND_ expr 289 | expr OR_ expr 290 | function_name OPEN_PAR ((DISTINCT_? expr ( COMMA expr)*) | STAR)? CLOSE_PAR filter_clause? over_clause? 291 | OPEN_PAR expr (COMMA expr)* CLOSE_PAR 292 | CAST_ OPEN_PAR expr AS_ type_name CLOSE_PAR 293 | expr COLLATE_ collation_name 294 | expr NOT_? (LIKE_ | GLOB_ | REGEXP_ | MATCH_) expr ( 295 ESCAPE_ expr 296 )? 297 | expr ( ISNULL_ | NOTNULL_ | NOT_ NULL_) 298 | expr IS_ NOT_? expr 299 | expr NOT_? BETWEEN_ expr AND_ expr 300 | expr NOT_? IN_ ( 301 OPEN_PAR (select_stmt | expr ( COMMA expr)*)? CLOSE_PAR 302 | ( schema_name DOT)? table_name 303 | (schema_name DOT)? table_function_name OPEN_PAR (expr (COMMA expr)*)? CLOSE_PAR 304 ) 305 | ((NOT_)? EXISTS_)? OPEN_PAR select_stmt CLOSE_PAR 306 | CASE_ expr? (WHEN_ expr THEN_ expr)+ (ELSE_ expr)? END_ 307 | raise_function 308 ; 309 310 raise_function: 311 RAISE_ OPEN_PAR ( 312 IGNORE_ 313 | (ROLLBACK_ | ABORT_ | FAIL_) COMMA error_message 314 ) CLOSE_PAR 315 ; 316 317 literal_value: 318 NUMERIC_LITERAL 319 | STRING_LITERAL 320 | BLOB_LITERAL 321 | NULL_ 322 | TRUE_ 323 | FALSE_ 324 | CURRENT_TIME_ 325 | CURRENT_DATE_ 326 | CURRENT_TIMESTAMP_ 327 ; 328 329 insert_stmt: 330 with_clause? ( 331 INSERT_ 332 | REPLACE_ 333 | INSERT_ OR_ ( 334 REPLACE_ 335 | ROLLBACK_ 336 | ABORT_ 337 | FAIL_ 338 | IGNORE_ 339 ) 340 ) INTO_ (schema_name DOT)? table_name (AS_ table_alias)? ( 341 OPEN_PAR column_name ( COMMA column_name)* CLOSE_PAR 342 )? ( 343 ( 344 ( 345 VALUES_ OPEN_PAR expr (COMMA expr)* CLOSE_PAR ( 346 COMMA OPEN_PAR expr ( COMMA expr)* CLOSE_PAR 347 )* 348 | select_stmt 349 ) upsert_clause? 350 ) 351 | DEFAULT_ VALUES_ 352 ) returning_clause? 353 ; 354 355 returning_clause: 356 RETURNING_ result_column (COMMA result_column)* 357 ; 358 359 upsert_clause: 360 ON_ CONFLICT_ ( 361 OPEN_PAR indexed_column (COMMA indexed_column)* CLOSE_PAR (WHERE_ expr)? 362 )? DO_ ( 363 NOTHING_ 364 | UPDATE_ SET_ ( 365 (column_name | column_name_list) ASSIGN expr ( 366 COMMA (column_name | column_name_list) ASSIGN expr 367 )* (WHERE_ expr)? 368 ) 369 ) 370 ; 371 372 pragma_stmt: 373 PRAGMA_ (schema_name DOT)? pragma_name ( 374 ASSIGN pragma_value 375 | OPEN_PAR pragma_value CLOSE_PAR 376 )? 377 ; 378 379 pragma_value: 380 signed_number 381 | name 382 | STRING_LITERAL 383 ; 384 385 reindex_stmt: 386 REINDEX_ (collation_name | (schema_name DOT)? (table_name | index_name))? 387 ; 388 389 select_stmt: 390 common_table_stmt? select_core (compound_operator select_core)* order_by_stmt? limit_stmt? 391 ; 392 393 join_clause: 394 table_or_subquery (join_operator table_or_subquery join_constraint?)* 395 ; 396 397 select_core: 398 ( 399 SELECT_ (DISTINCT_ | ALL_)? result_column (COMMA result_column)* ( 400 FROM_ (table_or_subquery (COMMA table_or_subquery)* | join_clause) 401 )? (WHERE_ expr)? (GROUP_ BY_ expr (COMMA expr)* (HAVING_ expr)?)? ( 402 WINDOW_ window_name AS_ window_defn ( 403 COMMA window_name AS_ window_defn 404 )* 405 )? 406 ) 407 | VALUES_ OPEN_PAR expr (COMMA expr)* CLOSE_PAR ( 408 COMMA OPEN_PAR expr ( COMMA expr)* CLOSE_PAR 409 )* 410 ; 411 412 factored_select_stmt: 413 select_stmt 414 ; 415 416 simple_select_stmt: 417 common_table_stmt? select_core order_by_stmt? limit_stmt? 418 ; 419 420 compound_select_stmt: 421 common_table_stmt? select_core ( 422 (UNION_ ALL_? | INTERSECT_ | EXCEPT_) select_core 423 )+ order_by_stmt? limit_stmt? 424 ; 425 426 table_or_subquery: ( 427 (schema_name DOT)? table_name (AS_? table_alias)? ( 428 INDEXED_ BY_ index_name 429 | NOT_ INDEXED_ 430 )? 431 ) 432 | (schema_name DOT)? table_function_name OPEN_PAR expr (COMMA expr)* CLOSE_PAR ( 433 AS_? table_alias 434 )? 435 | OPEN_PAR (table_or_subquery (COMMA table_or_subquery)* | join_clause) CLOSE_PAR 436 | OPEN_PAR select_stmt CLOSE_PAR (AS_? table_alias)? 437 ; 438 439 result_column: 440 STAR 441 | table_name DOT STAR 442 | expr ( AS_? column_alias)? 443 ; 444 445 join_operator: 446 COMMA 447 | NATURAL_? (LEFT_ OUTER_? | INNER_ | CROSS_)? JOIN_ 448 ; 449 450 join_constraint: 451 ON_ expr 452 | USING_ OPEN_PAR column_name ( COMMA column_name)* CLOSE_PAR 453 ; 454 455 compound_operator: 456 UNION_ ALL_? 457 | INTERSECT_ 458 | EXCEPT_ 459 ; 460 461 update_stmt: 462 with_clause? UPDATE_ ( 463 OR_ (ROLLBACK_ | ABORT_ | REPLACE_ | FAIL_ | IGNORE_) 464 )? qualified_table_name SET_ assignment_list ( 465 FROM_ (table_or_subquery (COMMA table_or_subquery)* | join_clause) 466 )? (WHERE_ where = expr)? returning_clause? 467 ; 468 469 assignment_list: 470 assignment 471 (COMMA assignment)* 472 ; 473 474 assignment: 475 (column_name | column_name_list) ASSIGN expr 476 ; 477 478 column_name_list: 479 OPEN_PAR column_name (COMMA column_name)* CLOSE_PAR 480 ; 481 482 update_stmt_limited: 483 with_clause? UPDATE_ ( 484 OR_ (ROLLBACK_ | ABORT_ | REPLACE_ | FAIL_ | IGNORE_) 485 )? qualified_table_name SET_ (column_name | column_name_list) ASSIGN expr ( 486 COMMA (column_name | column_name_list) ASSIGN expr 487 )* (WHERE_ expr)? returning_clause? (order_by_stmt? limit_stmt)? 488 ; 489 490 qualified_table_name: (schema_name DOT)? table_name (AS_ alias)? ( 491 INDEXED_ BY_ index_name 492 | NOT_ INDEXED_ 493 )? 494 ; 495 496 vacuum_stmt: 497 VACUUM_ schema_name? (INTO_ filename)? 498 ; 499 500 filter_clause: 501 FILTER_ OPEN_PAR WHERE_ expr CLOSE_PAR 502 ; 503 504 window_defn: 505 OPEN_PAR base_window_name? (PARTITION_ BY_ expr (COMMA expr)*)? ( 506 ORDER_ BY_ ordering_term (COMMA ordering_term)* 507 ) frame_spec? CLOSE_PAR 508 ; 509 510 over_clause: 511 OVER_ ( 512 window_name 513 | OPEN_PAR base_window_name? (PARTITION_ BY_ expr (COMMA expr)*)? ( 514 ORDER_ BY_ ordering_term (COMMA ordering_term)* 515 )? frame_spec? CLOSE_PAR 516 ) 517 ; 518 519 frame_spec: 520 frame_clause ( 521 EXCLUDE_ (NO_ OTHERS_) 522 | CURRENT_ ROW_ 523 | GROUP_ 524 | TIES_ 525 )? 526 ; 527 528 frame_clause: (RANGE_ | ROWS_ | GROUPS_) ( 529 frame_single 530 | BETWEEN_ frame_left AND_ frame_right 531 ) 532 ; 533 534 simple_function_invocation: 535 simple_func OPEN_PAR (expr (COMMA expr)* | STAR) CLOSE_PAR 536 ; 537 538 aggregate_function_invocation: 539 aggregate_func OPEN_PAR (DISTINCT_? expr (COMMA expr)* | STAR)? CLOSE_PAR filter_clause? 540 ; 541 542 window_function_invocation: 543 window_function OPEN_PAR (expr (COMMA expr)* | STAR)? CLOSE_PAR filter_clause? OVER_ ( 544 window_defn 545 | window_name 546 ) 547 ; 548 549 common_table_stmt: //additional structures 550 WITH_ RECURSIVE_? common_table_expression (COMMA common_table_expression)* 551 ; 552 553 order_by_stmt: 554 ORDER_ BY_ ordering_term (COMMA ordering_term)* 555 ; 556 557 limit_stmt: 558 LIMIT_ expr ((OFFSET_ | COMMA) expr)? 559 ; 560 561 ordering_term: 562 expr (COLLATE_ collation_name)? asc_desc? (NULLS_ (FIRST_ | LAST_))? 563 ; 564 565 asc_desc: 566 ASC_ 567 | DESC_ 568 ; 569 570 frame_left: 571 expr PRECEDING_ 572 | expr FOLLOWING_ 573 | CURRENT_ ROW_ 574 | UNBOUNDED_ PRECEDING_ 575 ; 576 577 frame_right: 578 expr PRECEDING_ 579 | expr FOLLOWING_ 580 | CURRENT_ ROW_ 581 | UNBOUNDED_ FOLLOWING_ 582 ; 583 584 frame_single: 585 expr PRECEDING_ 586 | UNBOUNDED_ PRECEDING_ 587 | CURRENT_ ROW_ 588 ; 589 590 // unknown 591 592 window_function: 593 (FIRST_VALUE_ | LAST_VALUE_) OPEN_PAR expr CLOSE_PAR OVER_ OPEN_PAR partition_by? order_by_expr_asc_desc frame_clause 594 ? CLOSE_PAR 595 | (CUME_DIST_ | PERCENT_RANK_) OPEN_PAR CLOSE_PAR OVER_ OPEN_PAR partition_by? order_by_expr? CLOSE_PAR 596 | (DENSE_RANK_ | RANK_ | ROW_NUMBER_) OPEN_PAR CLOSE_PAR OVER_ OPEN_PAR partition_by? order_by_expr_asc_desc 597 CLOSE_PAR 598 | (LAG_ | LEAD_) OPEN_PAR expr offset? default_value? CLOSE_PAR OVER_ OPEN_PAR partition_by? 599 order_by_expr_asc_desc CLOSE_PAR 600 | NTH_VALUE_ OPEN_PAR expr COMMA signed_number CLOSE_PAR OVER_ OPEN_PAR partition_by? order_by_expr_asc_desc 601 frame_clause? CLOSE_PAR 602 | NTILE_ OPEN_PAR expr CLOSE_PAR OVER_ OPEN_PAR partition_by? order_by_expr_asc_desc CLOSE_PAR 603 ; 604 605 offset: 606 COMMA signed_number 607 ; 608 609 default_value: 610 COMMA signed_number 611 ; 612 613 partition_by: 614 PARTITION_ BY_ expr+ 615 ; 616 617 order_by_expr: 618 ORDER_ BY_ expr+ 619 ; 620 621 order_by_expr_asc_desc: 622 ORDER_ BY_ expr_asc_desc 623 ; 624 625 expr_asc_desc: 626 expr asc_desc? (COMMA expr asc_desc?)* 627 ; 628 629 //TODO BOTH OF THESE HAVE TO BE REWORKED TO FOLLOW THE SPEC 630 initial_select: 631 select_stmt 632 ; 633 634 recursive_select: 635 select_stmt 636 ; 637 638 unary_operator: 639 MINUS 640 | PLUS 641 | TILDE 642 | NOT_ 643 ; 644 645 error_message: 646 STRING_LITERAL 647 ; 648 649 module_argument: // TODO check what exactly is permitted here 650 expr 651 | column_def 652 ; 653 654 column_alias: 655 IDENTIFIER 656 | STRING_LITERAL 657 ; 658 659 keyword: 660 ABORT_ 661 | ACTION_ 662 | ADD_ 663 | AFTER_ 664 | ALL_ 665 | ALTER_ 666 | ANALYZE_ 667 | AND_ 668 | AS_ 669 | ASC_ 670 | ATTACH_ 671 | AUTOINCREMENT_ 672 | BEFORE_ 673 | BEGIN_ 674 | BETWEEN_ 675 | BY_ 676 | CASCADE_ 677 | CASE_ 678 | CAST_ 679 | CHECK_ 680 | COLLATE_ 681 | COLUMN_ 682 | COMMIT_ 683 | CONFLICT_ 684 | CONSTRAINT_ 685 | CREATE_ 686 | CROSS_ 687 | CURRENT_DATE_ 688 | CURRENT_TIME_ 689 | CURRENT_TIMESTAMP_ 690 | DATABASE_ 691 | DEFAULT_ 692 | DEFERRABLE_ 693 | DEFERRED_ 694 | DELETE_ 695 | DESC_ 696 | DETACH_ 697 | DISTINCT_ 698 | DROP_ 699 | EACH_ 700 | ELSE_ 701 | END_ 702 | ESCAPE_ 703 | EXCEPT_ 704 | EXCLUSIVE_ 705 | EXISTS_ 706 | EXPLAIN_ 707 | FAIL_ 708 | FOR_ 709 | FOREIGN_ 710 | FROM_ 711 | FULL_ 712 | GLOB_ 713 | GROUP_ 714 | HAVING_ 715 | IF_ 716 | IGNORE_ 717 | IMMEDIATE_ 718 | IN_ 719 | INDEX_ 720 | INDEXED_ 721 | INITIALLY_ 722 | INNER_ 723 | INSERT_ 724 | INSTEAD_ 725 | INTERSECT_ 726 | INTO_ 727 | IS_ 728 | ISNULL_ 729 | JOIN_ 730 | KEY_ 731 | LEFT_ 732 | LIKE_ 733 | LIMIT_ 734 | MATCH_ 735 | NATURAL_ 736 | NO_ 737 | NOT_ 738 | NOTNULL_ 739 | NULL_ 740 | OF_ 741 | OFFSET_ 742 | ON_ 743 | OR_ 744 | ORDER_ 745 | OUTER_ 746 | PLAN_ 747 | PRAGMA_ 748 | PRIMARY_ 749 | QUERY_ 750 | RAISE_ 751 | RECURSIVE_ 752 | REFERENCES_ 753 | REGEXP_ 754 | REINDEX_ 755 | RELEASE_ 756 | RENAME_ 757 | REPLACE_ 758 | RESTRICT_ 759 | RIGHT_ 760 | ROLLBACK_ 761 | ROW_ 762 | ROWS_ 763 | SAVEPOINT_ 764 | SELECT_ 765 | SET_ 766 | TABLE_ 767 | TEMP_ 768 | TEMPORARY_ 769 | THEN_ 770 | TO_ 771 | TRANSACTION_ 772 | TRIGGER_ 773 | UNION_ 774 | UNIQUE_ 775 | UPDATE_ 776 | USING_ 777 | VACUUM_ 778 | VALUES_ 779 | VIEW_ 780 | VIRTUAL_ 781 | WHEN_ 782 | WHERE_ 783 | WITH_ 784 | WITHOUT_ 785 | FIRST_VALUE_ 786 | OVER_ 787 | PARTITION_ 788 | RANGE_ 789 | PRECEDING_ 790 | UNBOUNDED_ 791 | CURRENT_ 792 | FOLLOWING_ 793 | CUME_DIST_ 794 | DENSE_RANK_ 795 | LAG_ 796 | LAST_VALUE_ 797 | LEAD_ 798 | NTH_VALUE_ 799 | NTILE_ 800 | PERCENT_RANK_ 801 | RANK_ 802 | ROW_NUMBER_ 803 | GENERATED_ 804 | ALWAYS_ 805 | STORED_ 806 | TRUE_ 807 | FALSE_ 808 | WINDOW_ 809 | NULLS_ 810 | FIRST_ 811 | LAST_ 812 | FILTER_ 813 | GROUPS_ 814 | EXCLUDE_ 815 ; 816 817 // TODO: check all names below 818 819 name: 820 any_name 821 ; 822 823 function_name: 824 any_name 825 ; 826 827 schema_name: 828 any_name 829 ; 830 831 table_name: 832 any_name 833 ; 834 835 table_or_index_name: 836 any_name 837 ; 838 839 column_name: 840 any_name 841 ; 842 843 collation_name: 844 any_name 845 ; 846 847 foreign_table: 848 any_name 849 ; 850 851 index_name: 852 any_name 853 ; 854 855 trigger_name: 856 any_name 857 ; 858 859 view_name: 860 any_name 861 ; 862 863 module_name: 864 any_name 865 ; 866 867 pragma_name: 868 any_name 869 ; 870 871 savepoint_name: 872 any_name 873 ; 874 875 table_alias: 876 any_name 877 ; 878 879 transaction_name: 880 any_name 881 ; 882 883 window_name: 884 any_name 885 ; 886 887 alias: 888 any_name 889 ; 890 891 filename: 892 any_name 893 ; 894 895 base_window_name: 896 any_name 897 ; 898 899 simple_func: 900 any_name 901 ; 902 903 aggregate_func: 904 any_name 905 ; 906 907 table_function_name: 908 any_name 909 ; 910 911 any_name: 912 IDENTIFIER 913 | keyword 914 | STRING_LITERAL 915 | OPEN_PAR any_name CLOSE_PAR 916 ;