Skip to content

Commit cc9a67a

Browse files
committed
Implement Tier 1 deep parsers for EXPLAIN, CALL, DO, LOAD DATA
- parse_explain(): handles EXPLAIN [ANALYZE] [FORMAT=...] inner_stmt, EXPLAIN table_name (MySQL shorthand), DESCRIBE/DESC table [col], and PostgreSQL parenthesized options (ANALYZE, VERBOSE, FORMAT, etc.) - parse_call(): handles CALL [schema.]proc(args...) for both dialects - parse_do(): handles DO expr [, expr ...] (MySQL) - parse_load_data(): handles LOAD DATA [LOCAL] INFILE '...' [REPLACE|IGNORE] INTO TABLE t [FIELDS TERMINATED BY ...] etc. - Removes extract_load() (replaced by parse_load_data) - Wires all four into classify_and_dispatch()
1 parent 67c90bb commit cc9a67a

2 files changed

Lines changed: 474 additions & 11 deletions

File tree

include/sql_parser/parser.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,10 @@ class Parser {
5757
ParseResult parse_insert(bool is_replace = false);
5858
ParseResult parse_update();
5959
ParseResult parse_delete();
60+
ParseResult parse_explain(bool is_describe = false);
61+
ParseResult parse_call();
62+
ParseResult parse_do();
63+
ParseResult parse_load_data();
6064

6165
// Tier 2 extractors
6266
ParseResult extract_insert(const Token& first);
@@ -72,7 +76,7 @@ class Parser {
7276
ParseResult extract_ddl(const Token& first);
7377
ParseResult extract_acl(const Token& first);
7478
ParseResult extract_lock(const Token& first);
75-
ParseResult extract_load(const Token& first);
79+
// extract_load removed -- replaced by parse_load_data()
7680
ParseResult extract_reset(const Token& first);
7781
ParseResult extract_unknown(const Token& first);
7882

0 commit comments

Comments
 (0)