diff --git a/plugin/sql/jdbc/src/main/java/org/elasticsearch/xpack/sql/jdbc/jdbc/JdbcDatabaseMetaData.java b/plugin/sql/jdbc/src/main/java/org/elasticsearch/xpack/sql/jdbc/jdbc/JdbcDatabaseMetaData.java
index 6b582a8f271..5487fb42ab4 100644
--- a/plugin/sql/jdbc/src/main/java/org/elasticsearch/xpack/sql/jdbc/jdbc/JdbcDatabaseMetaData.java
+++ b/plugin/sql/jdbc/src/main/java/org/elasticsearch/xpack/sql/jdbc/jdbc/JdbcDatabaseMetaData.java
@@ -728,16 +728,12 @@ class JdbcDatabaseMetaData implements DatabaseMetaData, JdbcWrapper {
@Override
public ResultSet getCatalogs() throws SQLException {
- Object[][] data = { { defaultCatalog() } };
- return memorySet(con.cfg, columnInfo("CATALOGS",
- "TABLE_CAT"), data);
+ return con.createStatement().executeQuery("SYS CATALOGS");
}
@Override
public ResultSet getTableTypes() throws SQLException {
- Object[][] data = { { "TABLE" } };
- return memorySet(con.cfg, columnInfo("TABLE_TYPES",
- "TABLE_TYPE"), data);
+ return con.createStatement().executeQuery("SYS TABLE TYPES");
}
@Override
diff --git a/plugin/sql/src/main/antlr/SqlBase.g4 b/plugin/sql/src/main/antlr/SqlBase.g4
index bce094c530e..26422339b7b 100644
--- a/plugin/sql/src/main/antlr/SqlBase.g4
+++ b/plugin/sql/src/main/antlr/SqlBase.g4
@@ -55,9 +55,11 @@ statement
| (DESCRIBE | DESC) tableIdentifier #showColumns
| SHOW FUNCTIONS (LIKE? pattern)? #showFunctions
| SHOW SCHEMAS #showSchemas
+ | SYS CATALOGS #sysCatalogs
| SYS TABLES (LIKE? pattern)? #sysTables
| SYS COLUMNS (TABLES LIKE? indexPattern=pattern)? (LIKE? columnPattern=pattern)? #sysColumns
- | SYS TYPES #sysTypes
+ | SYS TYPES #sysTypes
+ | SYS TABLE TYPES #sysTableTypes
;
query
@@ -256,7 +258,7 @@ number
// http://developer.mimer.se/validator/sql-reserved-words.tml
nonReserved
: ANALYZE | ANALYZED
- | COLUMNS
+ | CATALOGS | COLUMNS
| DEBUG
| EXECUTABLE | EXPLAIN
| FORMAT | FUNCTIONS
@@ -281,6 +283,7 @@ ASC: 'ASC';
BETWEEN: 'BETWEEN';
BY: 'BY';
CAST: 'CAST';
+CATALOGS: 'CATALOGS';
COLUMNS: 'COLUMNS';
DEBUG: 'DEBUG';
DESC: 'DESC';
@@ -326,6 +329,7 @@ SCHEMAS: 'SCHEMAS';
SELECT: 'SELECT';
SHOW: 'SHOW';
SYS: 'SYS';
+TABLE: 'TABLE';
TABLES: 'TABLES';
TEXT: 'TEXT';
TRUE: 'TRUE';
diff --git a/plugin/sql/src/main/antlr/SqlBase.tokens b/plugin/sql/src/main/antlr/SqlBase.tokens
index 6ebe6e43c28..48529a61417 100644
--- a/plugin/sql/src/main/antlr/SqlBase.tokens
+++ b/plugin/sql/src/main/antlr/SqlBase.tokens
@@ -12,85 +12,87 @@ ASC=11
BETWEEN=12
BY=13
CAST=14
-COLUMNS=15
-DEBUG=16
-DESC=17
-DESCRIBE=18
-DISTINCT=19
-ESCAPE=20
-EXECUTABLE=21
-EXISTS=22
-EXPLAIN=23
-EXTRACT=24
-FALSE=25
-FORMAT=26
-FROM=27
-FULL=28
-FUNCTIONS=29
-GRAPHVIZ=30
-GROUP=31
-HAVING=32
-IN=33
-INNER=34
-IS=35
-JOIN=36
-LEFT=37
-LIKE=38
-LIMIT=39
-MAPPED=40
-MATCH=41
-NATURAL=42
-NOT=43
-NULL=44
-ON=45
-OPTIMIZED=46
-OR=47
-ORDER=48
-OUTER=49
-PARSED=50
-PHYSICAL=51
-PLAN=52
-RIGHT=53
-RLIKE=54
-QUERY=55
-SCHEMAS=56
-SELECT=57
-SHOW=58
-SYS=59
-TABLES=60
-TEXT=61
-TRUE=62
-TYPES=63
-USING=64
-VERIFY=65
-WHERE=66
-WITH=67
-EQ=68
-NEQ=69
-LT=70
-LTE=71
-GT=72
-GTE=73
-PLUS=74
-MINUS=75
-ASTERISK=76
-SLASH=77
-PERCENT=78
-CONCAT=79
-DOT=80
-STRING=81
-INTEGER_VALUE=82
-DECIMAL_VALUE=83
-IDENTIFIER=84
-DIGIT_IDENTIFIER=85
-TABLE_IDENTIFIER=86
-QUOTED_IDENTIFIER=87
-BACKQUOTED_IDENTIFIER=88
-SIMPLE_COMMENT=89
-BRACKETED_COMMENT=90
-WS=91
-UNRECOGNIZED=92
-DELIMITER=93
+CATALOGS=15
+COLUMNS=16
+DEBUG=17
+DESC=18
+DESCRIBE=19
+DISTINCT=20
+ESCAPE=21
+EXECUTABLE=22
+EXISTS=23
+EXPLAIN=24
+EXTRACT=25
+FALSE=26
+FORMAT=27
+FROM=28
+FULL=29
+FUNCTIONS=30
+GRAPHVIZ=31
+GROUP=32
+HAVING=33
+IN=34
+INNER=35
+IS=36
+JOIN=37
+LEFT=38
+LIKE=39
+LIMIT=40
+MAPPED=41
+MATCH=42
+NATURAL=43
+NOT=44
+NULL=45
+ON=46
+OPTIMIZED=47
+OR=48
+ORDER=49
+OUTER=50
+PARSED=51
+PHYSICAL=52
+PLAN=53
+RIGHT=54
+RLIKE=55
+QUERY=56
+SCHEMAS=57
+SELECT=58
+SHOW=59
+SYS=60
+TABLE=61
+TABLES=62
+TEXT=63
+TRUE=64
+TYPES=65
+USING=66
+VERIFY=67
+WHERE=68
+WITH=69
+EQ=70
+NEQ=71
+LT=72
+LTE=73
+GT=74
+GTE=75
+PLUS=76
+MINUS=77
+ASTERISK=78
+SLASH=79
+PERCENT=80
+CONCAT=81
+DOT=82
+STRING=83
+INTEGER_VALUE=84
+DECIMAL_VALUE=85
+IDENTIFIER=86
+DIGIT_IDENTIFIER=87
+TABLE_IDENTIFIER=88
+QUOTED_IDENTIFIER=89
+BACKQUOTED_IDENTIFIER=90
+SIMPLE_COMMENT=91
+BRACKETED_COMMENT=92
+WS=93
+UNRECOGNIZED=94
+DELIMITER=95
'('=1
')'=2
','=3
@@ -105,68 +107,70 @@ DELIMITER=93
'BETWEEN'=12
'BY'=13
'CAST'=14
-'COLUMNS'=15
-'DEBUG'=16
-'DESC'=17
-'DESCRIBE'=18
-'DISTINCT'=19
-'ESCAPE'=20
-'EXECUTABLE'=21
-'EXISTS'=22
-'EXPLAIN'=23
-'EXTRACT'=24
-'FALSE'=25
-'FORMAT'=26
-'FROM'=27
-'FULL'=28
-'FUNCTIONS'=29
-'GRAPHVIZ'=30
-'GROUP'=31
-'HAVING'=32
-'IN'=33
-'INNER'=34
-'IS'=35
-'JOIN'=36
-'LEFT'=37
-'LIKE'=38
-'LIMIT'=39
-'MAPPED'=40
-'MATCH'=41
-'NATURAL'=42
-'NOT'=43
-'NULL'=44
-'ON'=45
-'OPTIMIZED'=46
-'OR'=47
-'ORDER'=48
-'OUTER'=49
-'PARSED'=50
-'PHYSICAL'=51
-'PLAN'=52
-'RIGHT'=53
-'RLIKE'=54
-'QUERY'=55
-'SCHEMAS'=56
-'SELECT'=57
-'SHOW'=58
-'SYS'=59
-'TABLES'=60
-'TEXT'=61
-'TRUE'=62
-'TYPES'=63
-'USING'=64
-'VERIFY'=65
-'WHERE'=66
-'WITH'=67
-'='=68
-'<'=70
-'<='=71
-'>'=72
-'>='=73
-'+'=74
-'-'=75
-'*'=76
-'/'=77
-'%'=78
-'||'=79
-'.'=80
+'CATALOGS'=15
+'COLUMNS'=16
+'DEBUG'=17
+'DESC'=18
+'DESCRIBE'=19
+'DISTINCT'=20
+'ESCAPE'=21
+'EXECUTABLE'=22
+'EXISTS'=23
+'EXPLAIN'=24
+'EXTRACT'=25
+'FALSE'=26
+'FORMAT'=27
+'FROM'=28
+'FULL'=29
+'FUNCTIONS'=30
+'GRAPHVIZ'=31
+'GROUP'=32
+'HAVING'=33
+'IN'=34
+'INNER'=35
+'IS'=36
+'JOIN'=37
+'LEFT'=38
+'LIKE'=39
+'LIMIT'=40
+'MAPPED'=41
+'MATCH'=42
+'NATURAL'=43
+'NOT'=44
+'NULL'=45
+'ON'=46
+'OPTIMIZED'=47
+'OR'=48
+'ORDER'=49
+'OUTER'=50
+'PARSED'=51
+'PHYSICAL'=52
+'PLAN'=53
+'RIGHT'=54
+'RLIKE'=55
+'QUERY'=56
+'SCHEMAS'=57
+'SELECT'=58
+'SHOW'=59
+'SYS'=60
+'TABLE'=61
+'TABLES'=62
+'TEXT'=63
+'TRUE'=64
+'TYPES'=65
+'USING'=66
+'VERIFY'=67
+'WHERE'=68
+'WITH'=69
+'='=70
+'<'=72
+'<='=73
+'>'=74
+'>='=75
+'+'=76
+'-'=77
+'*'=78
+'/'=79
+'%'=80
+'||'=81
+'.'=82
diff --git a/plugin/sql/src/main/antlr/SqlBaseLexer.tokens b/plugin/sql/src/main/antlr/SqlBaseLexer.tokens
index c05b8b7f045..bf4585d1f28 100644
--- a/plugin/sql/src/main/antlr/SqlBaseLexer.tokens
+++ b/plugin/sql/src/main/antlr/SqlBaseLexer.tokens
@@ -12,84 +12,86 @@ ASC=11
BETWEEN=12
BY=13
CAST=14
-COLUMNS=15
-DEBUG=16
-DESC=17
-DESCRIBE=18
-DISTINCT=19
-ESCAPE=20
-EXECUTABLE=21
-EXISTS=22
-EXPLAIN=23
-EXTRACT=24
-FALSE=25
-FORMAT=26
-FROM=27
-FULL=28
-FUNCTIONS=29
-GRAPHVIZ=30
-GROUP=31
-HAVING=32
-IN=33
-INNER=34
-IS=35
-JOIN=36
-LEFT=37
-LIKE=38
-LIMIT=39
-MAPPED=40
-MATCH=41
-NATURAL=42
-NOT=43
-NULL=44
-ON=45
-OPTIMIZED=46
-OR=47
-ORDER=48
-OUTER=49
-PARSED=50
-PHYSICAL=51
-PLAN=52
-RIGHT=53
-RLIKE=54
-QUERY=55
-SCHEMAS=56
-SELECT=57
-SHOW=58
-SYS=59
-TABLES=60
-TEXT=61
-TRUE=62
-TYPES=63
-USING=64
-VERIFY=65
-WHERE=66
-WITH=67
-EQ=68
-NEQ=69
-LT=70
-LTE=71
-GT=72
-GTE=73
-PLUS=74
-MINUS=75
-ASTERISK=76
-SLASH=77
-PERCENT=78
-CONCAT=79
-DOT=80
-STRING=81
-INTEGER_VALUE=82
-DECIMAL_VALUE=83
-IDENTIFIER=84
-DIGIT_IDENTIFIER=85
-TABLE_IDENTIFIER=86
-QUOTED_IDENTIFIER=87
-BACKQUOTED_IDENTIFIER=88
-SIMPLE_COMMENT=89
-BRACKETED_COMMENT=90
-WS=91
-UNRECOGNIZED=92
+CATALOGS=15
+COLUMNS=16
+DEBUG=17
+DESC=18
+DESCRIBE=19
+DISTINCT=20
+ESCAPE=21
+EXECUTABLE=22
+EXISTS=23
+EXPLAIN=24
+EXTRACT=25
+FALSE=26
+FORMAT=27
+FROM=28
+FULL=29
+FUNCTIONS=30
+GRAPHVIZ=31
+GROUP=32
+HAVING=33
+IN=34
+INNER=35
+IS=36
+JOIN=37
+LEFT=38
+LIKE=39
+LIMIT=40
+MAPPED=41
+MATCH=42
+NATURAL=43
+NOT=44
+NULL=45
+ON=46
+OPTIMIZED=47
+OR=48
+ORDER=49
+OUTER=50
+PARSED=51
+PHYSICAL=52
+PLAN=53
+RIGHT=54
+RLIKE=55
+QUERY=56
+SCHEMAS=57
+SELECT=58
+SHOW=59
+SYS=60
+TABLE=61
+TABLES=62
+TEXT=63
+TRUE=64
+TYPES=65
+USING=66
+VERIFY=67
+WHERE=68
+WITH=69
+EQ=70
+NEQ=71
+LT=72
+LTE=73
+GT=74
+GTE=75
+PLUS=76
+MINUS=77
+ASTERISK=78
+SLASH=79
+PERCENT=80
+CONCAT=81
+DOT=82
+STRING=83
+INTEGER_VALUE=84
+DECIMAL_VALUE=85
+IDENTIFIER=86
+DIGIT_IDENTIFIER=87
+TABLE_IDENTIFIER=88
+QUOTED_IDENTIFIER=89
+BACKQUOTED_IDENTIFIER=90
+SIMPLE_COMMENT=91
+BRACKETED_COMMENT=92
+WS=93
+UNRECOGNIZED=94
'('=1
')'=2
','=3
@@ -104,68 +106,70 @@ UNRECOGNIZED=92
'BETWEEN'=12
'BY'=13
'CAST'=14
-'COLUMNS'=15
-'DEBUG'=16
-'DESC'=17
-'DESCRIBE'=18
-'DISTINCT'=19
-'ESCAPE'=20
-'EXECUTABLE'=21
-'EXISTS'=22
-'EXPLAIN'=23
-'EXTRACT'=24
-'FALSE'=25
-'FORMAT'=26
-'FROM'=27
-'FULL'=28
-'FUNCTIONS'=29
-'GRAPHVIZ'=30
-'GROUP'=31
-'HAVING'=32
-'IN'=33
-'INNER'=34
-'IS'=35
-'JOIN'=36
-'LEFT'=37
-'LIKE'=38
-'LIMIT'=39
-'MAPPED'=40
-'MATCH'=41
-'NATURAL'=42
-'NOT'=43
-'NULL'=44
-'ON'=45
-'OPTIMIZED'=46
-'OR'=47
-'ORDER'=48
-'OUTER'=49
-'PARSED'=50
-'PHYSICAL'=51
-'PLAN'=52
-'RIGHT'=53
-'RLIKE'=54
-'QUERY'=55
-'SCHEMAS'=56
-'SELECT'=57
-'SHOW'=58
-'SYS'=59
-'TABLES'=60
-'TEXT'=61
-'TRUE'=62
-'TYPES'=63
-'USING'=64
-'VERIFY'=65
-'WHERE'=66
-'WITH'=67
-'='=68
-'<'=70
-'<='=71
-'>'=72
-'>='=73
-'+'=74
-'-'=75
-'*'=76
-'/'=77
-'%'=78
-'||'=79
-'.'=80
+'CATALOGS'=15
+'COLUMNS'=16
+'DEBUG'=17
+'DESC'=18
+'DESCRIBE'=19
+'DISTINCT'=20
+'ESCAPE'=21
+'EXECUTABLE'=22
+'EXISTS'=23
+'EXPLAIN'=24
+'EXTRACT'=25
+'FALSE'=26
+'FORMAT'=27
+'FROM'=28
+'FULL'=29
+'FUNCTIONS'=30
+'GRAPHVIZ'=31
+'GROUP'=32
+'HAVING'=33
+'IN'=34
+'INNER'=35
+'IS'=36
+'JOIN'=37
+'LEFT'=38
+'LIKE'=39
+'LIMIT'=40
+'MAPPED'=41
+'MATCH'=42
+'NATURAL'=43
+'NOT'=44
+'NULL'=45
+'ON'=46
+'OPTIMIZED'=47
+'OR'=48
+'ORDER'=49
+'OUTER'=50
+'PARSED'=51
+'PHYSICAL'=52
+'PLAN'=53
+'RIGHT'=54
+'RLIKE'=55
+'QUERY'=56
+'SCHEMAS'=57
+'SELECT'=58
+'SHOW'=59
+'SYS'=60
+'TABLE'=61
+'TABLES'=62
+'TEXT'=63
+'TRUE'=64
+'TYPES'=65
+'USING'=66
+'VERIFY'=67
+'WHERE'=68
+'WITH'=69
+'='=70
+'<'=72
+'<='=73
+'>'=74
+'>='=75
+'+'=76
+'-'=77
+'*'=78
+'/'=79
+'%'=80
+'||'=81
+'.'=82
diff --git a/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/CommandBuilder.java b/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/CommandBuilder.java
index b7eec686eff..a0eb412ca49 100644
--- a/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/CommandBuilder.java
+++ b/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/CommandBuilder.java
@@ -12,7 +12,9 @@ import org.elasticsearch.xpack.sql.parser.SqlBaseParser.ShowColumnsContext;
import org.elasticsearch.xpack.sql.parser.SqlBaseParser.ShowFunctionsContext;
import org.elasticsearch.xpack.sql.parser.SqlBaseParser.ShowSchemasContext;
import org.elasticsearch.xpack.sql.parser.SqlBaseParser.ShowTablesContext;
+import org.elasticsearch.xpack.sql.parser.SqlBaseParser.SysCatalogsContext;
import org.elasticsearch.xpack.sql.parser.SqlBaseParser.SysColumnsContext;
+import org.elasticsearch.xpack.sql.parser.SqlBaseParser.SysTableTypesContext;
import org.elasticsearch.xpack.sql.parser.SqlBaseParser.SysTablesContext;
import org.elasticsearch.xpack.sql.parser.SqlBaseParser.SysTypesContext;
import org.elasticsearch.xpack.sql.plan.TableIdentifier;
@@ -23,7 +25,9 @@ import org.elasticsearch.xpack.sql.plan.logical.command.ShowColumns;
import org.elasticsearch.xpack.sql.plan.logical.command.ShowFunctions;
import org.elasticsearch.xpack.sql.plan.logical.command.ShowSchemas;
import org.elasticsearch.xpack.sql.plan.logical.command.ShowTables;
+import org.elasticsearch.xpack.sql.plan.logical.command.sys.SysCatalogs;
import org.elasticsearch.xpack.sql.plan.logical.command.sys.SysColumns;
+import org.elasticsearch.xpack.sql.plan.logical.command.sys.SysTableTypes;
import org.elasticsearch.xpack.sql.plan.logical.command.sys.SysTables;
import org.elasticsearch.xpack.sql.plan.logical.command.sys.SysTypes;
import org.elasticsearch.xpack.sql.tree.Location;
@@ -127,19 +131,28 @@ abstract class CommandBuilder extends LogicalPlanBuilder {
return new ShowColumns(source(ctx), identifier.index());
}
+ @Override
+ public Object visitSysCatalogs(SysCatalogsContext ctx) {
+ return new SysCatalogs(source(ctx));
+ }
@Override
public SysTables visitSysTables(SysTablesContext ctx) {
return new SysTables(source(ctx), visitPattern(ctx.pattern()));
}
+ @Override
+ public Object visitSysColumns(SysColumnsContext ctx) {
+ return new SysColumns(source(ctx), visitPattern(ctx.indexPattern), visitPattern(ctx.columnPattern));
+ }
+
@Override
public SysTypes visitSysTypes(SysTypesContext ctx) {
return new SysTypes(source(ctx));
}
@Override
- public Object visitSysColumns(SysColumnsContext ctx) {
- return new SysColumns(source(ctx), visitPattern(ctx.indexPattern), visitPattern(ctx.columnPattern));
+ public Object visitSysTableTypes(SysTableTypesContext ctx) {
+ return new SysTableTypes(source(ctx));
}
}
\ No newline at end of file
diff --git a/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/SqlBaseBaseListener.java b/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/SqlBaseBaseListener.java
index 26a32501c96..4733d68970c 100644
--- a/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/SqlBaseBaseListener.java
+++ b/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/SqlBaseBaseListener.java
@@ -124,6 +124,18 @@ class SqlBaseBaseListener implements SqlBaseListener {
*
The default implementation does nothing.
*/
@Override public void exitShowSchemas(SqlBaseParser.ShowSchemasContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSysCatalogs(SqlBaseParser.SysCatalogsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSysCatalogs(SqlBaseParser.SysCatalogsContext ctx) { }
/**
* {@inheritDoc}
*
@@ -160,6 +172,18 @@ class SqlBaseBaseListener implements SqlBaseListener {
* The default implementation does nothing.
*/
@Override public void exitSysTypes(SqlBaseParser.SysTypesContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSysTableTypes(SqlBaseParser.SysTableTypesContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSysTableTypes(SqlBaseParser.SysTableTypesContext ctx) { }
/**
* {@inheritDoc}
*
diff --git a/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/SqlBaseBaseVisitor.java b/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/SqlBaseBaseVisitor.java
index 01c6f054876..47d989deea0 100644
--- a/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/SqlBaseBaseVisitor.java
+++ b/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/SqlBaseBaseVisitor.java
@@ -79,6 +79,13 @@ class SqlBaseBaseVisitor extends AbstractParseTreeVisitor implements SqlBa
* {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitShowSchemas(SqlBaseParser.ShowSchemasContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitSysCatalogs(SqlBaseParser.SysCatalogsContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
@@ -100,6 +107,13 @@ class SqlBaseBaseVisitor extends AbstractParseTreeVisitor implements SqlBa
* {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitSysTypes(SqlBaseParser.SysTypesContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitSysTableTypes(SqlBaseParser.SysTableTypesContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
diff --git a/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/SqlBaseLexer.java b/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/SqlBaseLexer.java
index 1811f3588b6..890e97029f7 100644
--- a/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/SqlBaseLexer.java
+++ b/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/SqlBaseLexer.java
@@ -23,67 +23,67 @@ class SqlBaseLexer extends Lexer {
new PredictionContextCache();
public static final int
T__0=1, T__1=2, T__2=3, T__3=4, ALL=5, ANALYZE=6, ANALYZED=7, AND=8, ANY=9,
- AS=10, ASC=11, BETWEEN=12, BY=13, CAST=14, COLUMNS=15, DEBUG=16, DESC=17,
- DESCRIBE=18, DISTINCT=19, ESCAPE=20, EXECUTABLE=21, EXISTS=22, EXPLAIN=23,
- EXTRACT=24, FALSE=25, FORMAT=26, FROM=27, FULL=28, FUNCTIONS=29, GRAPHVIZ=30,
- GROUP=31, HAVING=32, IN=33, INNER=34, IS=35, JOIN=36, LEFT=37, LIKE=38,
- LIMIT=39, MAPPED=40, MATCH=41, NATURAL=42, NOT=43, NULL=44, ON=45, OPTIMIZED=46,
- OR=47, ORDER=48, OUTER=49, PARSED=50, PHYSICAL=51, PLAN=52, RIGHT=53,
- RLIKE=54, QUERY=55, SCHEMAS=56, SELECT=57, SHOW=58, SYS=59, TABLES=60,
- TEXT=61, TRUE=62, TYPES=63, USING=64, VERIFY=65, WHERE=66, WITH=67, EQ=68,
- NEQ=69, LT=70, LTE=71, GT=72, GTE=73, PLUS=74, MINUS=75, ASTERISK=76,
- SLASH=77, PERCENT=78, CONCAT=79, DOT=80, STRING=81, INTEGER_VALUE=82,
- DECIMAL_VALUE=83, IDENTIFIER=84, DIGIT_IDENTIFIER=85, TABLE_IDENTIFIER=86,
- QUOTED_IDENTIFIER=87, BACKQUOTED_IDENTIFIER=88, SIMPLE_COMMENT=89, BRACKETED_COMMENT=90,
- WS=91, UNRECOGNIZED=92;
+ AS=10, ASC=11, BETWEEN=12, BY=13, CAST=14, CATALOGS=15, COLUMNS=16, DEBUG=17,
+ DESC=18, DESCRIBE=19, DISTINCT=20, ESCAPE=21, EXECUTABLE=22, EXISTS=23,
+ EXPLAIN=24, EXTRACT=25, FALSE=26, FORMAT=27, FROM=28, FULL=29, FUNCTIONS=30,
+ GRAPHVIZ=31, GROUP=32, HAVING=33, IN=34, INNER=35, IS=36, JOIN=37, LEFT=38,
+ LIKE=39, LIMIT=40, MAPPED=41, MATCH=42, NATURAL=43, NOT=44, NULL=45, ON=46,
+ OPTIMIZED=47, OR=48, ORDER=49, OUTER=50, PARSED=51, PHYSICAL=52, PLAN=53,
+ RIGHT=54, RLIKE=55, QUERY=56, SCHEMAS=57, SELECT=58, SHOW=59, SYS=60,
+ TABLE=61, TABLES=62, TEXT=63, TRUE=64, TYPES=65, USING=66, VERIFY=67,
+ WHERE=68, WITH=69, EQ=70, NEQ=71, LT=72, LTE=73, GT=74, GTE=75, PLUS=76,
+ MINUS=77, ASTERISK=78, SLASH=79, PERCENT=80, CONCAT=81, DOT=82, STRING=83,
+ INTEGER_VALUE=84, DECIMAL_VALUE=85, IDENTIFIER=86, DIGIT_IDENTIFIER=87,
+ TABLE_IDENTIFIER=88, QUOTED_IDENTIFIER=89, BACKQUOTED_IDENTIFIER=90, SIMPLE_COMMENT=91,
+ BRACKETED_COMMENT=92, WS=93, UNRECOGNIZED=94;
public static String[] modeNames = {
"DEFAULT_MODE"
};
public static final String[] ruleNames = {
"T__0", "T__1", "T__2", "T__3", "ALL", "ANALYZE", "ANALYZED", "AND", "ANY",
- "AS", "ASC", "BETWEEN", "BY", "CAST", "COLUMNS", "DEBUG", "DESC", "DESCRIBE",
- "DISTINCT", "ESCAPE", "EXECUTABLE", "EXISTS", "EXPLAIN", "EXTRACT", "FALSE",
- "FORMAT", "FROM", "FULL", "FUNCTIONS", "GRAPHVIZ", "GROUP", "HAVING",
- "IN", "INNER", "IS", "JOIN", "LEFT", "LIKE", "LIMIT", "MAPPED", "MATCH",
- "NATURAL", "NOT", "NULL", "ON", "OPTIMIZED", "OR", "ORDER", "OUTER", "PARSED",
- "PHYSICAL", "PLAN", "RIGHT", "RLIKE", "QUERY", "SCHEMAS", "SELECT", "SHOW",
- "SYS", "TABLES", "TEXT", "TRUE", "TYPES", "USING", "VERIFY", "WHERE",
- "WITH", "EQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK",
- "SLASH", "PERCENT", "CONCAT", "DOT", "STRING", "INTEGER_VALUE", "DECIMAL_VALUE",
- "IDENTIFIER", "DIGIT_IDENTIFIER", "TABLE_IDENTIFIER", "QUOTED_IDENTIFIER",
- "BACKQUOTED_IDENTIFIER", "EXPONENT", "DIGIT", "LETTER", "SIMPLE_COMMENT",
- "BRACKETED_COMMENT", "WS", "UNRECOGNIZED"
+ "AS", "ASC", "BETWEEN", "BY", "CAST", "CATALOGS", "COLUMNS", "DEBUG",
+ "DESC", "DESCRIBE", "DISTINCT", "ESCAPE", "EXECUTABLE", "EXISTS", "EXPLAIN",
+ "EXTRACT", "FALSE", "FORMAT", "FROM", "FULL", "FUNCTIONS", "GRAPHVIZ",
+ "GROUP", "HAVING", "IN", "INNER", "IS", "JOIN", "LEFT", "LIKE", "LIMIT",
+ "MAPPED", "MATCH", "NATURAL", "NOT", "NULL", "ON", "OPTIMIZED", "OR",
+ "ORDER", "OUTER", "PARSED", "PHYSICAL", "PLAN", "RIGHT", "RLIKE", "QUERY",
+ "SCHEMAS", "SELECT", "SHOW", "SYS", "TABLE", "TABLES", "TEXT", "TRUE",
+ "TYPES", "USING", "VERIFY", "WHERE", "WITH", "EQ", "NEQ", "LT", "LTE",
+ "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH", "PERCENT", "CONCAT",
+ "DOT", "STRING", "INTEGER_VALUE", "DECIMAL_VALUE", "IDENTIFIER", "DIGIT_IDENTIFIER",
+ "TABLE_IDENTIFIER", "QUOTED_IDENTIFIER", "BACKQUOTED_IDENTIFIER", "EXPONENT",
+ "DIGIT", "LETTER", "SIMPLE_COMMENT", "BRACKETED_COMMENT", "WS", "UNRECOGNIZED"
};
private static final String[] _LITERAL_NAMES = {
null, "'('", "')'", "','", "':'", "'ALL'", "'ANALYZE'", "'ANALYZED'",
- "'AND'", "'ANY'", "'AS'", "'ASC'", "'BETWEEN'", "'BY'", "'CAST'", "'COLUMNS'",
- "'DEBUG'", "'DESC'", "'DESCRIBE'", "'DISTINCT'", "'ESCAPE'", "'EXECUTABLE'",
- "'EXISTS'", "'EXPLAIN'", "'EXTRACT'", "'FALSE'", "'FORMAT'", "'FROM'",
- "'FULL'", "'FUNCTIONS'", "'GRAPHVIZ'", "'GROUP'", "'HAVING'", "'IN'",
- "'INNER'", "'IS'", "'JOIN'", "'LEFT'", "'LIKE'", "'LIMIT'", "'MAPPED'",
+ "'AND'", "'ANY'", "'AS'", "'ASC'", "'BETWEEN'", "'BY'", "'CAST'", "'CATALOGS'",
+ "'COLUMNS'", "'DEBUG'", "'DESC'", "'DESCRIBE'", "'DISTINCT'", "'ESCAPE'",
+ "'EXECUTABLE'", "'EXISTS'", "'EXPLAIN'", "'EXTRACT'", "'FALSE'", "'FORMAT'",
+ "'FROM'", "'FULL'", "'FUNCTIONS'", "'GRAPHVIZ'", "'GROUP'", "'HAVING'",
+ "'IN'", "'INNER'", "'IS'", "'JOIN'", "'LEFT'", "'LIKE'", "'LIMIT'", "'MAPPED'",
"'MATCH'", "'NATURAL'", "'NOT'", "'NULL'", "'ON'", "'OPTIMIZED'", "'OR'",
"'ORDER'", "'OUTER'", "'PARSED'", "'PHYSICAL'", "'PLAN'", "'RIGHT'", "'RLIKE'",
- "'QUERY'", "'SCHEMAS'", "'SELECT'", "'SHOW'", "'SYS'", "'TABLES'", "'TEXT'",
- "'TRUE'", "'TYPES'", "'USING'", "'VERIFY'", "'WHERE'", "'WITH'", "'='",
- null, "'<'", "'<='", "'>'", "'>='", "'+'", "'-'", "'*'", "'/'", "'%'",
- "'||'", "'.'"
+ "'QUERY'", "'SCHEMAS'", "'SELECT'", "'SHOW'", "'SYS'", "'TABLE'", "'TABLES'",
+ "'TEXT'", "'TRUE'", "'TYPES'", "'USING'", "'VERIFY'", "'WHERE'", "'WITH'",
+ "'='", null, "'<'", "'<='", "'>'", "'>='", "'+'", "'-'", "'*'", "'/'",
+ "'%'", "'||'", "'.'"
};
private static final String[] _SYMBOLIC_NAMES = {
null, null, null, null, null, "ALL", "ANALYZE", "ANALYZED", "AND", "ANY",
- "AS", "ASC", "BETWEEN", "BY", "CAST", "COLUMNS", "DEBUG", "DESC", "DESCRIBE",
- "DISTINCT", "ESCAPE", "EXECUTABLE", "EXISTS", "EXPLAIN", "EXTRACT", "FALSE",
- "FORMAT", "FROM", "FULL", "FUNCTIONS", "GRAPHVIZ", "GROUP", "HAVING",
- "IN", "INNER", "IS", "JOIN", "LEFT", "LIKE", "LIMIT", "MAPPED", "MATCH",
- "NATURAL", "NOT", "NULL", "ON", "OPTIMIZED", "OR", "ORDER", "OUTER", "PARSED",
- "PHYSICAL", "PLAN", "RIGHT", "RLIKE", "QUERY", "SCHEMAS", "SELECT", "SHOW",
- "SYS", "TABLES", "TEXT", "TRUE", "TYPES", "USING", "VERIFY", "WHERE",
- "WITH", "EQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK",
- "SLASH", "PERCENT", "CONCAT", "DOT", "STRING", "INTEGER_VALUE", "DECIMAL_VALUE",
- "IDENTIFIER", "DIGIT_IDENTIFIER", "TABLE_IDENTIFIER", "QUOTED_IDENTIFIER",
- "BACKQUOTED_IDENTIFIER", "SIMPLE_COMMENT", "BRACKETED_COMMENT", "WS",
- "UNRECOGNIZED"
+ "AS", "ASC", "BETWEEN", "BY", "CAST", "CATALOGS", "COLUMNS", "DEBUG",
+ "DESC", "DESCRIBE", "DISTINCT", "ESCAPE", "EXECUTABLE", "EXISTS", "EXPLAIN",
+ "EXTRACT", "FALSE", "FORMAT", "FROM", "FULL", "FUNCTIONS", "GRAPHVIZ",
+ "GROUP", "HAVING", "IN", "INNER", "IS", "JOIN", "LEFT", "LIKE", "LIMIT",
+ "MAPPED", "MATCH", "NATURAL", "NOT", "NULL", "ON", "OPTIMIZED", "OR",
+ "ORDER", "OUTER", "PARSED", "PHYSICAL", "PLAN", "RIGHT", "RLIKE", "QUERY",
+ "SCHEMAS", "SELECT", "SHOW", "SYS", "TABLE", "TABLES", "TEXT", "TRUE",
+ "TYPES", "USING", "VERIFY", "WHERE", "WITH", "EQ", "NEQ", "LT", "LTE",
+ "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH", "PERCENT", "CONCAT",
+ "DOT", "STRING", "INTEGER_VALUE", "DECIMAL_VALUE", "IDENTIFIER", "DIGIT_IDENTIFIER",
+ "TABLE_IDENTIFIER", "QUOTED_IDENTIFIER", "BACKQUOTED_IDENTIFIER", "SIMPLE_COMMENT",
+ "BRACKETED_COMMENT", "WS", "UNRECOGNIZED"
};
public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
@@ -140,7 +140,7 @@ class SqlBaseLexer extends Lexer {
public ATN getATN() { return _ATN; }
public static final String _serializedATN =
- "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\2^\u0313\b\1\4\2\t"+
+ "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\2`\u0326\b\1\4\2\t"+
"\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+
"\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
"\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
@@ -151,263 +151,269 @@ class SqlBaseLexer extends Lexer {
"\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I"+
"\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT"+
"\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4_\t_\4"+
- "`\t`\3\2\3\2\3\3\3\3\3\4\3\4\3\5\3\5\3\6\3\6\3\6\3\6\3\7\3\7\3\7\3\7\3"+
- "\7\3\7\3\7\3\7\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\t\3\t\3\t\3\t\3\n"+
- "\3\n\3\n\3\n\3\13\3\13\3\13\3\f\3\f\3\f\3\f\3\r\3\r\3\r\3\r\3\r\3\r\3"+
- "\r\3\r\3\16\3\16\3\16\3\17\3\17\3\17\3\17\3\17\3\20\3\20\3\20\3\20\3\20"+
- "\3\20\3\20\3\20\3\21\3\21\3\21\3\21\3\21\3\21\3\22\3\22\3\22\3\22\3\22"+
- "\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\24\3\24\3\24\3\24\3\24"+
- "\3\24\3\24\3\24\3\24\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\26\3\26\3\26"+
- "\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\27\3\27\3\27\3\27\3\27\3\27"+
- "\3\27\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\31\3\31\3\31\3\31\3\31"+
- "\3\31\3\31\3\31\3\32\3\32\3\32\3\32\3\32\3\32\3\33\3\33\3\33\3\33\3\33"+
- "\3\33\3\33\3\34\3\34\3\34\3\34\3\34\3\35\3\35\3\35\3\35\3\35\3\36\3\36"+
- "\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\37\3\37\3\37\3\37\3\37\3\37"+
- "\3\37\3\37\3\37\3 \3 \3 \3 \3 \3 \3!\3!\3!\3!\3!\3!\3!\3\"\3\"\3\"\3#"+
- "\3#\3#\3#\3#\3#\3$\3$\3$\3%\3%\3%\3%\3%\3&\3&\3&\3&\3&\3\'\3\'\3\'\3\'"+
- "\3\'\3(\3(\3(\3(\3(\3(\3)\3)\3)\3)\3)\3)\3)\3*\3*\3*\3*\3*\3*\3+\3+\3"+
- "+\3+\3+\3+\3+\3+\3,\3,\3,\3,\3-\3-\3-\3-\3-\3.\3.\3.\3/\3/\3/\3/\3/\3"+
- "/\3/\3/\3/\3/\3\60\3\60\3\60\3\61\3\61\3\61\3\61\3\61\3\61\3\62\3\62\3"+
- "\62\3\62\3\62\3\62\3\63\3\63\3\63\3\63\3\63\3\63\3\63\3\64\3\64\3\64\3"+
- "\64\3\64\3\64\3\64\3\64\3\64\3\65\3\65\3\65\3\65\3\65\3\66\3\66\3\66\3"+
- "\66\3\66\3\66\3\67\3\67\3\67\3\67\3\67\3\67\38\38\38\38\38\38\39\39\3"+
- "9\39\39\39\39\39\3:\3:\3:\3:\3:\3:\3:\3;\3;\3;\3;\3;\3<\3<\3<\3<\3=\3"+
- "=\3=\3=\3=\3=\3=\3>\3>\3>\3>\3>\3?\3?\3?\3?\3?\3@\3@\3@\3@\3@\3@\3A\3"+
- "A\3A\3A\3A\3A\3B\3B\3B\3B\3B\3B\3B\3C\3C\3C\3C\3C\3C\3D\3D\3D\3D\3D\3"+
- "E\3E\3F\3F\3F\3F\3F\3F\3F\5F\u0255\nF\3G\3G\3H\3H\3H\3I\3I\3J\3J\3J\3"+
- "K\3K\3L\3L\3M\3M\3N\3N\3O\3O\3P\3P\3P\3Q\3Q\3R\3R\3R\3R\7R\u0274\nR\f"+
- "R\16R\u0277\13R\3R\3R\3S\6S\u027c\nS\rS\16S\u027d\3T\6T\u0281\nT\rT\16"+
- "T\u0282\3T\3T\7T\u0287\nT\fT\16T\u028a\13T\3T\3T\6T\u028e\nT\rT\16T\u028f"+
- "\3T\6T\u0293\nT\rT\16T\u0294\3T\3T\7T\u0299\nT\fT\16T\u029c\13T\5T\u029e"+
- "\nT\3T\3T\3T\3T\6T\u02a4\nT\rT\16T\u02a5\3T\3T\5T\u02aa\nT\3U\3U\5U\u02ae"+
- "\nU\3U\3U\3U\7U\u02b3\nU\fU\16U\u02b6\13U\3V\3V\3V\3V\6V\u02bc\nV\rV\16"+
- "V\u02bd\3W\3W\3W\3W\6W\u02c4\nW\rW\16W\u02c5\3X\3X\3X\3X\7X\u02cc\nX\f"+
- "X\16X\u02cf\13X\3X\3X\3Y\3Y\3Y\3Y\7Y\u02d7\nY\fY\16Y\u02da\13Y\3Y\3Y\3"+
- "Z\3Z\5Z\u02e0\nZ\3Z\6Z\u02e3\nZ\rZ\16Z\u02e4\3[\3[\3\\\3\\\3]\3]\3]\3"+
- "]\7]\u02ef\n]\f]\16]\u02f2\13]\3]\5]\u02f5\n]\3]\5]\u02f8\n]\3]\3]\3^"+
- "\3^\3^\3^\3^\7^\u0301\n^\f^\16^\u0304\13^\3^\3^\3^\3^\3^\3_\6_\u030c\n"+
- "_\r_\16_\u030d\3_\3_\3`\3`\3\u0302\2a\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21"+
- "\n\23\13\25\f\27\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+\27-\30"+
- "/\31\61\32\63\33\65\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M(O)Q*S+U,W-Y.["+
- "/]\60_\61a\62c\63e\64g\65i\66k\67m8o9q:s;u{?}@\177A\u0081B\u0083"+
+ "`\t`\4a\ta\4b\tb\3\2\3\2\3\3\3\3\3\4\3\4\3\5\3\5\3\6\3\6\3\6\3\6\3\7\3"+
+ "\7\3\7\3\7\3\7\3\7\3\7\3\7\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\t\3\t"+
+ "\3\t\3\t\3\n\3\n\3\n\3\n\3\13\3\13\3\13\3\f\3\f\3\f\3\f\3\r\3\r\3\r\3"+
+ "\r\3\r\3\r\3\r\3\r\3\16\3\16\3\16\3\17\3\17\3\17\3\17\3\17\3\20\3\20\3"+
+ "\20\3\20\3\20\3\20\3\20\3\20\3\20\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3"+
+ "\21\3\22\3\22\3\22\3\22\3\22\3\22\3\23\3\23\3\23\3\23\3\23\3\24\3\24\3"+
+ "\24\3\24\3\24\3\24\3\24\3\24\3\24\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3"+
+ "\25\3\25\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\27\3\27\3\27\3\27\3\27\3"+
+ "\27\3\27\3\27\3\27\3\27\3\27\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\31\3"+
+ "\31\3\31\3\31\3\31\3\31\3\31\3\31\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3"+
+ "\32\3\33\3\33\3\33\3\33\3\33\3\33\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3"+
+ "\35\3\35\3\35\3\35\3\35\3\36\3\36\3\36\3\36\3\36\3\37\3\37\3\37\3\37\3"+
+ "\37\3\37\3\37\3\37\3\37\3\37\3 \3 \3 \3 \3 \3 \3 \3 \3 \3!\3!\3!\3!\3"+
+ "!\3!\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3#\3#\3#\3$\3$\3$\3$\3$\3$\3%\3%\3%\3"+
+ "&\3&\3&\3&\3&\3\'\3\'\3\'\3\'\3\'\3(\3(\3(\3(\3(\3)\3)\3)\3)\3)\3)\3*"+
+ "\3*\3*\3*\3*\3*\3*\3+\3+\3+\3+\3+\3+\3,\3,\3,\3,\3,\3,\3,\3,\3-\3-\3-"+
+ "\3-\3.\3.\3.\3.\3.\3/\3/\3/\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3"+
+ "\60\3\60\3\61\3\61\3\61\3\62\3\62\3\62\3\62\3\62\3\62\3\63\3\63\3\63\3"+
+ "\63\3\63\3\63\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3\65\3\65\3\65\3\65\3"+
+ "\65\3\65\3\65\3\65\3\65\3\66\3\66\3\66\3\66\3\66\3\67\3\67\3\67\3\67\3"+
+ "\67\3\67\38\38\38\38\38\38\39\39\39\39\39\39\3:\3:\3:\3:\3:\3:\3:\3:\3"+
+ ";\3;\3;\3;\3;\3;\3;\3<\3<\3<\3<\3<\3=\3=\3=\3=\3>\3>\3>\3>\3>\3>\3?\3"+
+ "?\3?\3?\3?\3?\3?\3@\3@\3@\3@\3@\3A\3A\3A\3A\3A\3B\3B\3B\3B\3B\3B\3C\3"+
+ "C\3C\3C\3C\3C\3D\3D\3D\3D\3D\3D\3D\3E\3E\3E\3E\3E\3E\3F\3F\3F\3F\3F\3"+
+ "G\3G\3H\3H\3H\3H\3H\3H\3H\5H\u0268\nH\3I\3I\3J\3J\3J\3K\3K\3L\3L\3L\3"+
+ "M\3M\3N\3N\3O\3O\3P\3P\3Q\3Q\3R\3R\3R\3S\3S\3T\3T\3T\3T\7T\u0287\nT\f"+
+ "T\16T\u028a\13T\3T\3T\3U\6U\u028f\nU\rU\16U\u0290\3V\6V\u0294\nV\rV\16"+
+ "V\u0295\3V\3V\7V\u029a\nV\fV\16V\u029d\13V\3V\3V\6V\u02a1\nV\rV\16V\u02a2"+
+ "\3V\6V\u02a6\nV\rV\16V\u02a7\3V\3V\7V\u02ac\nV\fV\16V\u02af\13V\5V\u02b1"+
+ "\nV\3V\3V\3V\3V\6V\u02b7\nV\rV\16V\u02b8\3V\3V\5V\u02bd\nV\3W\3W\5W\u02c1"+
+ "\nW\3W\3W\3W\7W\u02c6\nW\fW\16W\u02c9\13W\3X\3X\3X\3X\6X\u02cf\nX\rX\16"+
+ "X\u02d0\3Y\3Y\3Y\3Y\6Y\u02d7\nY\rY\16Y\u02d8\3Z\3Z\3Z\3Z\7Z\u02df\nZ\f"+
+ "Z\16Z\u02e2\13Z\3Z\3Z\3[\3[\3[\3[\7[\u02ea\n[\f[\16[\u02ed\13[\3[\3[\3"+
+ "\\\3\\\5\\\u02f3\n\\\3\\\6\\\u02f6\n\\\r\\\16\\\u02f7\3]\3]\3^\3^\3_\3"+
+ "_\3_\3_\7_\u0302\n_\f_\16_\u0305\13_\3_\5_\u0308\n_\3_\5_\u030b\n_\3_"+
+ "\3_\3`\3`\3`\3`\3`\7`\u0314\n`\f`\16`\u0317\13`\3`\3`\3`\3`\3`\3a\6a\u031f"+
+ "\na\ra\16a\u0320\3a\3a\3b\3b\3\u0315\2c\3\3\5\4\7\5\t\6\13\7\r\b\17\t"+
+ "\21\n\23\13\25\f\27\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+\27"+
+ "-\30/\31\61\32\63\33\65\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M(O)Q*S+U,W"+
+ "-Y.[/]\60_\61a\62c\63e\64g\65i\66k\67m8o9q:s;u{?}@\177A\u0081B\u0083"+
"C\u0085D\u0087E\u0089F\u008bG\u008dH\u008fI\u0091J\u0093K\u0095L\u0097"+
"M\u0099N\u009bO\u009dP\u009fQ\u00a1R\u00a3S\u00a5T\u00a7U\u00a9V\u00ab"+
- "W\u00adX\u00afY\u00b1Z\u00b3\2\u00b5\2\u00b7\2\u00b9[\u00bb\\\u00bd]\u00bf"+
- "^\3\2\f\3\2))\4\2BBaa\5\2<\3\2\2\2\u0175\u0176\7I\2\2\u0176\u0177\7T"+
- "\2\2\u0177\u0178\7Q\2\2\u0178\u0179\7W\2\2\u0179\u017a\7R\2\2\u017a@\3"+
- "\2\2\2\u017b\u017c\7J\2\2\u017c\u017d\7C\2\2\u017d\u017e\7X\2\2\u017e"+
- "\u017f\7K\2\2\u017f\u0180\7P\2\2\u0180\u0181\7I\2\2\u0181B\3\2\2\2\u0182"+
- "\u0183\7K\2\2\u0183\u0184\7P\2\2\u0184D\3\2\2\2\u0185\u0186\7K\2\2\u0186"+
- "\u0187\7P\2\2\u0187\u0188\7P\2\2\u0188\u0189\7G\2\2\u0189\u018a\7T\2\2"+
- "\u018aF\3\2\2\2\u018b\u018c\7K\2\2\u018c\u018d\7U\2\2\u018dH\3\2\2\2\u018e"+
- "\u018f\7L\2\2\u018f\u0190\7Q\2\2\u0190\u0191\7K\2\2\u0191\u0192\7P\2\2"+
- "\u0192J\3\2\2\2\u0193\u0194\7N\2\2\u0194\u0195\7G\2\2\u0195\u0196\7H\2"+
- "\2\u0196\u0197\7V\2\2\u0197L\3\2\2\2\u0198\u0199\7N\2\2\u0199\u019a\7"+
- "K\2\2\u019a\u019b\7M\2\2\u019b\u019c\7G\2\2\u019cN\3\2\2\2\u019d\u019e"+
- "\7N\2\2\u019e\u019f\7K\2\2\u019f\u01a0\7O\2\2\u01a0\u01a1\7K\2\2\u01a1"+
- "\u01a2\7V\2\2\u01a2P\3\2\2\2\u01a3\u01a4\7O\2\2\u01a4\u01a5\7C\2\2\u01a5"+
- "\u01a6\7R\2\2\u01a6\u01a7\7R\2\2\u01a7\u01a8\7G\2\2\u01a8\u01a9\7F\2\2"+
- "\u01a9R\3\2\2\2\u01aa\u01ab\7O\2\2\u01ab\u01ac\7C\2\2\u01ac\u01ad\7V\2"+
- "\2\u01ad\u01ae\7E\2\2\u01ae\u01af\7J\2\2\u01afT\3\2\2\2\u01b0\u01b1\7"+
- "P\2\2\u01b1\u01b2\7C\2\2\u01b2\u01b3\7V\2\2\u01b3\u01b4\7W\2\2\u01b4\u01b5"+
- "\7T\2\2\u01b5\u01b6\7C\2\2\u01b6\u01b7\7N\2\2\u01b7V\3\2\2\2\u01b8\u01b9"+
- "\7P\2\2\u01b9\u01ba\7Q\2\2\u01ba\u01bb\7V\2\2\u01bbX\3\2\2\2\u01bc\u01bd"+
- "\7P\2\2\u01bd\u01be\7W\2\2\u01be\u01bf\7N\2\2\u01bf\u01c0\7N\2\2\u01c0"+
- "Z\3\2\2\2\u01c1\u01c2\7Q\2\2\u01c2\u01c3\7P\2\2\u01c3\\\3\2\2\2\u01c4"+
- "\u01c5\7Q\2\2\u01c5\u01c6\7R\2\2\u01c6\u01c7\7V\2\2\u01c7\u01c8\7K\2\2"+
- "\u01c8\u01c9\7O\2\2\u01c9\u01ca\7K\2\2\u01ca\u01cb\7\\\2\2\u01cb\u01cc"+
- "\7G\2\2\u01cc\u01cd\7F\2\2\u01cd^\3\2\2\2\u01ce\u01cf\7Q\2\2\u01cf\u01d0"+
- "\7T\2\2\u01d0`\3\2\2\2\u01d1\u01d2\7Q\2\2\u01d2\u01d3\7T\2\2\u01d3\u01d4"+
- "\7F\2\2\u01d4\u01d5\7G\2\2\u01d5\u01d6\7T\2\2\u01d6b\3\2\2\2\u01d7\u01d8"+
- "\7Q\2\2\u01d8\u01d9\7W\2\2\u01d9\u01da\7V\2\2\u01da\u01db\7G\2\2\u01db"+
- "\u01dc\7T\2\2\u01dcd\3\2\2\2\u01dd\u01de\7R\2\2\u01de\u01df\7C\2\2\u01df"+
- "\u01e0\7T\2\2\u01e0\u01e1\7U\2\2\u01e1\u01e2\7G\2\2\u01e2\u01e3\7F\2\2"+
- "\u01e3f\3\2\2\2\u01e4\u01e5\7R\2\2\u01e5\u01e6\7J\2\2\u01e6\u01e7\7[\2"+
- "\2\u01e7\u01e8\7U\2\2\u01e8\u01e9\7K\2\2\u01e9\u01ea\7E\2\2\u01ea\u01eb"+
- "\7C\2\2\u01eb\u01ec\7N\2\2\u01ech\3\2\2\2\u01ed\u01ee\7R\2\2\u01ee\u01ef"+
- "\7N\2\2\u01ef\u01f0\7C\2\2\u01f0\u01f1\7P\2\2\u01f1j\3\2\2\2\u01f2\u01f3"+
- "\7T\2\2\u01f3\u01f4\7K\2\2\u01f4\u01f5\7I\2\2\u01f5\u01f6\7J\2\2\u01f6"+
- "\u01f7\7V\2\2\u01f7l\3\2\2\2\u01f8\u01f9\7T\2\2\u01f9\u01fa\7N\2\2\u01fa"+
- "\u01fb\7K\2\2\u01fb\u01fc\7M\2\2\u01fc\u01fd\7G\2\2\u01fdn\3\2\2\2\u01fe"+
- "\u01ff\7S\2\2\u01ff\u0200\7W\2\2\u0200\u0201\7G\2\2\u0201\u0202\7T\2\2"+
- "\u0202\u0203\7[\2\2\u0203p\3\2\2\2\u0204\u0205\7U\2\2\u0205\u0206\7E\2"+
- "\2\u0206\u0207\7J\2\2\u0207\u0208\7G\2\2\u0208\u0209\7O\2\2\u0209\u020a"+
- "\7C\2\2\u020a\u020b\7U\2\2\u020br\3\2\2\2\u020c\u020d\7U\2\2\u020d\u020e"+
- "\7G\2\2\u020e\u020f\7N\2\2\u020f\u0210\7G\2\2\u0210\u0211\7E\2\2\u0211"+
- "\u0212\7V\2\2\u0212t\3\2\2\2\u0213\u0214\7U\2\2\u0214\u0215\7J\2\2\u0215"+
- "\u0216\7Q\2\2\u0216\u0217\7Y\2\2\u0217v\3\2\2\2\u0218\u0219\7U\2\2\u0219"+
- "\u021a\7[\2\2\u021a\u021b\7U\2\2\u021bx\3\2\2\2\u021c\u021d\7V\2\2\u021d"+
- "\u021e\7C\2\2\u021e\u021f\7D\2\2\u021f\u0220\7N\2\2\u0220\u0221\7G\2\2"+
- "\u0221\u0222\7U\2\2\u0222z\3\2\2\2\u0223\u0224\7V\2\2\u0224\u0225\7G\2"+
- "\2\u0225\u0226\7Z\2\2\u0226\u0227\7V\2\2\u0227|\3\2\2\2\u0228\u0229\7"+
- "V\2\2\u0229\u022a\7T\2\2\u022a\u022b\7W\2\2\u022b\u022c\7G\2\2\u022c~"+
- "\3\2\2\2\u022d\u022e\7V\2\2\u022e\u022f\7[\2\2\u022f\u0230\7R\2\2\u0230"+
- "\u0231\7G\2\2\u0231\u0232\7U\2\2\u0232\u0080\3\2\2\2\u0233\u0234\7W\2"+
- "\2\u0234\u0235\7U\2\2\u0235\u0236\7K\2\2\u0236\u0237\7P\2\2\u0237\u0238"+
- "\7I\2\2\u0238\u0082\3\2\2\2\u0239\u023a\7X\2\2\u023a\u023b\7G\2\2\u023b"+
- "\u023c\7T\2\2\u023c\u023d\7K\2\2\u023d\u023e\7H\2\2\u023e\u023f\7[\2\2"+
- "\u023f\u0084\3\2\2\2\u0240\u0241\7Y\2\2\u0241\u0242\7J\2\2\u0242\u0243"+
- "\7G\2\2\u0243\u0244\7T\2\2\u0244\u0245\7G\2\2\u0245\u0086\3\2\2\2\u0246"+
- "\u0247\7Y\2\2\u0247\u0248\7K\2\2\u0248\u0249\7V\2\2\u0249\u024a\7J\2\2"+
- "\u024a\u0088\3\2\2\2\u024b\u024c\7?\2\2\u024c\u008a\3\2\2\2\u024d\u024e"+
- "\7>\2\2\u024e\u0255\7@\2\2\u024f\u0250\7#\2\2\u0250\u0255\7?\2\2\u0251"+
- "\u0252\7>\2\2\u0252\u0253\7?\2\2\u0253\u0255\7@\2\2\u0254\u024d\3\2\2"+
- "\2\u0254\u024f\3\2\2\2\u0254\u0251\3\2\2\2\u0255\u008c\3\2\2\2\u0256\u0257"+
- "\7>\2\2\u0257\u008e\3\2\2\2\u0258\u0259\7>\2\2\u0259\u025a\7?\2\2\u025a"+
- "\u0090\3\2\2\2\u025b\u025c\7@\2\2\u025c\u0092\3\2\2\2\u025d\u025e\7@\2"+
- "\2\u025e\u025f\7?\2\2\u025f\u0094\3\2\2\2\u0260\u0261\7-\2\2\u0261\u0096"+
- "\3\2\2\2\u0262\u0263\7/\2\2\u0263\u0098\3\2\2\2\u0264\u0265\7,\2\2\u0265"+
- "\u009a\3\2\2\2\u0266\u0267\7\61\2\2\u0267\u009c\3\2\2\2\u0268\u0269\7"+
- "\'\2\2\u0269\u009e\3\2\2\2\u026a\u026b\7~\2\2\u026b\u026c\7~\2\2\u026c"+
- "\u00a0\3\2\2\2\u026d\u026e\7\60\2\2\u026e\u00a2\3\2\2\2\u026f\u0275\7"+
- ")\2\2\u0270\u0274\n\2\2\2\u0271\u0272\7)\2\2\u0272\u0274\7)\2\2\u0273"+
- "\u0270\3\2\2\2\u0273\u0271\3\2\2\2\u0274\u0277\3\2\2\2\u0275\u0273\3\2"+
- "\2\2\u0275\u0276\3\2\2\2\u0276\u0278\3\2\2\2\u0277\u0275\3\2\2\2\u0278"+
- "\u0279\7)\2\2\u0279\u00a4\3\2\2\2\u027a\u027c\5\u00b5[\2\u027b\u027a\3"+
- "\2\2\2\u027c\u027d\3\2\2\2\u027d\u027b\3\2\2\2\u027d\u027e\3\2\2\2\u027e"+
- "\u00a6\3\2\2\2\u027f\u0281\5\u00b5[\2\u0280\u027f\3\2\2\2\u0281\u0282"+
- "\3\2\2\2\u0282\u0280\3\2\2\2\u0282\u0283\3\2\2\2\u0283\u0284\3\2\2\2\u0284"+
- "\u0288\5\u00a1Q\2\u0285\u0287\5\u00b5[\2\u0286\u0285\3\2\2\2\u0287\u028a"+
- "\3\2\2\2\u0288\u0286\3\2\2\2\u0288\u0289\3\2\2\2\u0289\u02aa\3\2\2\2\u028a"+
- "\u0288\3\2\2\2\u028b\u028d\5\u00a1Q\2\u028c\u028e\5\u00b5[\2\u028d\u028c"+
- "\3\2\2\2\u028e\u028f\3\2\2\2\u028f\u028d\3\2\2\2\u028f\u0290\3\2\2\2\u0290"+
- "\u02aa\3\2\2\2\u0291\u0293\5\u00b5[\2\u0292\u0291\3\2\2\2\u0293\u0294"+
- "\3\2\2\2\u0294\u0292\3\2\2\2\u0294\u0295\3\2\2\2\u0295\u029d\3\2\2\2\u0296"+
- "\u029a\5\u00a1Q\2\u0297\u0299\5\u00b5[\2\u0298\u0297\3\2\2\2\u0299\u029c"+
- "\3\2\2\2\u029a\u0298\3\2\2\2\u029a\u029b\3\2\2\2\u029b\u029e\3\2\2\2\u029c"+
- "\u029a\3\2\2\2\u029d\u0296\3\2\2\2\u029d\u029e\3\2\2\2\u029e\u029f\3\2"+
- "\2\2\u029f\u02a0\5\u00b3Z\2\u02a0\u02aa\3\2\2\2\u02a1\u02a3\5\u00a1Q\2"+
- "\u02a2\u02a4\5\u00b5[\2\u02a3\u02a2\3\2\2\2\u02a4\u02a5\3\2\2\2\u02a5"+
- "\u02a3\3\2\2\2\u02a5\u02a6\3\2\2\2\u02a6\u02a7\3\2\2\2\u02a7\u02a8\5\u00b3"+
- "Z\2\u02a8\u02aa\3\2\2\2\u02a9\u0280\3\2\2\2\u02a9\u028b\3\2\2\2\u02a9"+
- "\u0292\3\2\2\2\u02a9\u02a1\3\2\2\2\u02aa\u00a8\3\2\2\2\u02ab\u02ae\5\u00b7"+
- "\\\2\u02ac\u02ae\7a\2\2\u02ad\u02ab\3\2\2\2\u02ad\u02ac\3\2\2\2\u02ae"+
- "\u02b4\3\2\2\2\u02af\u02b3\5\u00b7\\\2\u02b0\u02b3\5\u00b5[\2\u02b1\u02b3"+
- "\t\3\2\2\u02b2\u02af\3\2\2\2\u02b2\u02b0\3\2\2\2\u02b2\u02b1\3\2\2\2\u02b3"+
- "\u02b6\3\2\2\2\u02b4\u02b2\3\2\2\2\u02b4\u02b5\3\2\2\2\u02b5\u00aa\3\2"+
- "\2\2\u02b6\u02b4\3\2\2\2\u02b7\u02bb\5\u00b5[\2\u02b8\u02bc\5\u00b7\\"+
- "\2\u02b9\u02bc\5\u00b5[\2\u02ba\u02bc\t\4\2\2\u02bb\u02b8\3\2\2\2\u02bb"+
- "\u02b9\3\2\2\2\u02bb\u02ba\3\2\2\2\u02bc\u02bd\3\2\2\2\u02bd\u02bb\3\2"+
- "\2\2\u02bd\u02be\3\2\2\2\u02be\u00ac\3\2\2\2\u02bf\u02c4\5\u00b7\\\2\u02c0"+
- "\u02c4\5\u00b5[\2\u02c1\u02c4\t\3\2\2\u02c2\u02c4\5\u0099M\2\u02c3\u02bf"+
- "\3\2\2\2\u02c3\u02c0\3\2\2\2\u02c3\u02c1\3\2\2\2\u02c3\u02c2\3\2\2\2\u02c4"+
- "\u02c5\3\2\2\2\u02c5\u02c3\3\2\2\2\u02c5\u02c6\3\2\2\2\u02c6\u00ae\3\2"+
- "\2\2\u02c7\u02cd\7$\2\2\u02c8\u02cc\n\5\2\2\u02c9\u02ca\7$\2\2\u02ca\u02cc"+
- "\7$\2\2\u02cb\u02c8\3\2\2\2\u02cb\u02c9\3\2\2\2\u02cc\u02cf\3\2\2\2\u02cd"+
- "\u02cb\3\2\2\2\u02cd\u02ce\3\2\2\2\u02ce\u02d0\3\2\2\2\u02cf\u02cd\3\2"+
- "\2\2\u02d0\u02d1\7$\2\2\u02d1\u00b0\3\2\2\2\u02d2\u02d8\7b\2\2\u02d3\u02d7"+
- "\n\6\2\2\u02d4\u02d5\7b\2\2\u02d5\u02d7\7b\2\2\u02d6\u02d3\3\2\2\2\u02d6"+
- "\u02d4\3\2\2\2\u02d7\u02da\3\2\2\2\u02d8\u02d6\3\2\2\2\u02d8\u02d9\3\2"+
- "\2\2\u02d9\u02db\3\2\2\2\u02da\u02d8\3\2\2\2\u02db\u02dc\7b\2\2\u02dc"+
- "\u00b2\3\2\2\2\u02dd\u02df\7G\2\2\u02de\u02e0\t\7\2\2\u02df\u02de\3\2"+
- "\2\2\u02df\u02e0\3\2\2\2\u02e0\u02e2\3\2\2\2\u02e1\u02e3\5\u00b5[\2\u02e2"+
- "\u02e1\3\2\2\2\u02e3\u02e4\3\2\2\2\u02e4\u02e2\3\2\2\2\u02e4\u02e5\3\2"+
- "\2\2\u02e5\u00b4\3\2\2\2\u02e6\u02e7\t\b\2\2\u02e7\u00b6\3\2\2\2\u02e8"+
- "\u02e9\t\t\2\2\u02e9\u00b8\3\2\2\2\u02ea\u02eb\7/\2\2\u02eb\u02ec\7/\2"+
- "\2\u02ec\u02f0\3\2\2\2\u02ed\u02ef\n\n\2\2\u02ee\u02ed\3\2\2\2\u02ef\u02f2"+
- "\3\2\2\2\u02f0\u02ee\3\2\2\2\u02f0\u02f1\3\2\2\2\u02f1\u02f4\3\2\2\2\u02f2"+
- "\u02f0\3\2\2\2\u02f3\u02f5\7\17\2\2\u02f4\u02f3\3\2\2\2\u02f4\u02f5\3"+
- "\2\2\2\u02f5\u02f7\3\2\2\2\u02f6\u02f8\7\f\2\2\u02f7\u02f6\3\2\2\2\u02f7"+
- "\u02f8\3\2\2\2\u02f8\u02f9\3\2\2\2\u02f9\u02fa\b]\2\2\u02fa\u00ba\3\2"+
- "\2\2\u02fb\u02fc\7\61\2\2\u02fc\u02fd\7,\2\2\u02fd\u0302\3\2\2\2\u02fe"+
- "\u0301\5\u00bb^\2\u02ff\u0301\13\2\2\2\u0300\u02fe\3\2\2\2\u0300\u02ff"+
- "\3\2\2\2\u0301\u0304\3\2\2\2\u0302\u0303\3\2\2\2\u0302\u0300\3\2\2\2\u0303"+
- "\u0305\3\2\2\2\u0304\u0302\3\2\2\2\u0305\u0306\7,\2\2\u0306\u0307\7\61"+
- "\2\2\u0307\u0308\3\2\2\2\u0308\u0309\b^\2\2\u0309\u00bc\3\2\2\2\u030a"+
- "\u030c\t\13\2\2\u030b\u030a\3\2\2\2\u030c\u030d\3\2\2\2\u030d\u030b\3"+
- "\2\2\2\u030d\u030e\3\2\2\2\u030e\u030f\3\2\2\2\u030f\u0310\b_\2\2\u0310"+
- "\u00be\3\2\2\2\u0311\u0312\13\2\2\2\u0312\u00c0\3\2\2\2\"\2\u0254\u0273"+
- "\u0275\u027d\u0282\u0288\u028f\u0294\u029a\u029d\u02a5\u02a9\u02ad\u02b2"+
- "\u02b4\u02bb\u02bd\u02c3\u02c5\u02cb\u02cd\u02d6\u02d8\u02df\u02e4\u02f0"+
- "\u02f4\u02f7\u0300\u0302\u030d\3\2\3\2";
+ "W\u00adX\u00afY\u00b1Z\u00b3[\u00b5\\\u00b7\2\u00b9\2\u00bb\2\u00bd]\u00bf"+
+ "^\u00c1_\u00c3`\3\2\f\3\2))\4\2BBaa\5\2<\3\2\2\2\u0179\u017a\7I\2\2\u017a\u017b"+
+ "\7T\2\2\u017b\u017c\7C\2\2\u017c\u017d\7R\2\2\u017d\u017e\7J\2\2\u017e"+
+ "\u017f\7X\2\2\u017f\u0180\7K\2\2\u0180\u0181\7\\\2\2\u0181@\3\2\2\2\u0182"+
+ "\u0183\7I\2\2\u0183\u0184\7T\2\2\u0184\u0185\7Q\2\2\u0185\u0186\7W\2\2"+
+ "\u0186\u0187\7R\2\2\u0187B\3\2\2\2\u0188\u0189\7J\2\2\u0189\u018a\7C\2"+
+ "\2\u018a\u018b\7X\2\2\u018b\u018c\7K\2\2\u018c\u018d\7P\2\2\u018d\u018e"+
+ "\7I\2\2\u018eD\3\2\2\2\u018f\u0190\7K\2\2\u0190\u0191\7P\2\2\u0191F\3"+
+ "\2\2\2\u0192\u0193\7K\2\2\u0193\u0194\7P\2\2\u0194\u0195\7P\2\2\u0195"+
+ "\u0196\7G\2\2\u0196\u0197\7T\2\2\u0197H\3\2\2\2\u0198\u0199\7K\2\2\u0199"+
+ "\u019a\7U\2\2\u019aJ\3\2\2\2\u019b\u019c\7L\2\2\u019c\u019d\7Q\2\2\u019d"+
+ "\u019e\7K\2\2\u019e\u019f\7P\2\2\u019fL\3\2\2\2\u01a0\u01a1\7N\2\2\u01a1"+
+ "\u01a2\7G\2\2\u01a2\u01a3\7H\2\2\u01a3\u01a4\7V\2\2\u01a4N\3\2\2\2\u01a5"+
+ "\u01a6\7N\2\2\u01a6\u01a7\7K\2\2\u01a7\u01a8\7M\2\2\u01a8\u01a9\7G\2\2"+
+ "\u01a9P\3\2\2\2\u01aa\u01ab\7N\2\2\u01ab\u01ac\7K\2\2\u01ac\u01ad\7O\2"+
+ "\2\u01ad\u01ae\7K\2\2\u01ae\u01af\7V\2\2\u01afR\3\2\2\2\u01b0\u01b1\7"+
+ "O\2\2\u01b1\u01b2\7C\2\2\u01b2\u01b3\7R\2\2\u01b3\u01b4\7R\2\2\u01b4\u01b5"+
+ "\7G\2\2\u01b5\u01b6\7F\2\2\u01b6T\3\2\2\2\u01b7\u01b8\7O\2\2\u01b8\u01b9"+
+ "\7C\2\2\u01b9\u01ba\7V\2\2\u01ba\u01bb\7E\2\2\u01bb\u01bc\7J\2\2\u01bc"+
+ "V\3\2\2\2\u01bd\u01be\7P\2\2\u01be\u01bf\7C\2\2\u01bf\u01c0\7V\2\2\u01c0"+
+ "\u01c1\7W\2\2\u01c1\u01c2\7T\2\2\u01c2\u01c3\7C\2\2\u01c3\u01c4\7N\2\2"+
+ "\u01c4X\3\2\2\2\u01c5\u01c6\7P\2\2\u01c6\u01c7\7Q\2\2\u01c7\u01c8\7V\2"+
+ "\2\u01c8Z\3\2\2\2\u01c9\u01ca\7P\2\2\u01ca\u01cb\7W\2\2\u01cb\u01cc\7"+
+ "N\2\2\u01cc\u01cd\7N\2\2\u01cd\\\3\2\2\2\u01ce\u01cf\7Q\2\2\u01cf\u01d0"+
+ "\7P\2\2\u01d0^\3\2\2\2\u01d1\u01d2\7Q\2\2\u01d2\u01d3\7R\2\2\u01d3\u01d4"+
+ "\7V\2\2\u01d4\u01d5\7K\2\2\u01d5\u01d6\7O\2\2\u01d6\u01d7\7K\2\2\u01d7"+
+ "\u01d8\7\\\2\2\u01d8\u01d9\7G\2\2\u01d9\u01da\7F\2\2\u01da`\3\2\2\2\u01db"+
+ "\u01dc\7Q\2\2\u01dc\u01dd\7T\2\2\u01ddb\3\2\2\2\u01de\u01df\7Q\2\2\u01df"+
+ "\u01e0\7T\2\2\u01e0\u01e1\7F\2\2\u01e1\u01e2\7G\2\2\u01e2\u01e3\7T\2\2"+
+ "\u01e3d\3\2\2\2\u01e4\u01e5\7Q\2\2\u01e5\u01e6\7W\2\2\u01e6\u01e7\7V\2"+
+ "\2\u01e7\u01e8\7G\2\2\u01e8\u01e9\7T\2\2\u01e9f\3\2\2\2\u01ea\u01eb\7"+
+ "R\2\2\u01eb\u01ec\7C\2\2\u01ec\u01ed\7T\2\2\u01ed\u01ee\7U\2\2\u01ee\u01ef"+
+ "\7G\2\2\u01ef\u01f0\7F\2\2\u01f0h\3\2\2\2\u01f1\u01f2\7R\2\2\u01f2\u01f3"+
+ "\7J\2\2\u01f3\u01f4\7[\2\2\u01f4\u01f5\7U\2\2\u01f5\u01f6\7K\2\2\u01f6"+
+ "\u01f7\7E\2\2\u01f7\u01f8\7C\2\2\u01f8\u01f9\7N\2\2\u01f9j\3\2\2\2\u01fa"+
+ "\u01fb\7R\2\2\u01fb\u01fc\7N\2\2\u01fc\u01fd\7C\2\2\u01fd\u01fe\7P\2\2"+
+ "\u01fel\3\2\2\2\u01ff\u0200\7T\2\2\u0200\u0201\7K\2\2\u0201\u0202\7I\2"+
+ "\2\u0202\u0203\7J\2\2\u0203\u0204\7V\2\2\u0204n\3\2\2\2\u0205\u0206\7"+
+ "T\2\2\u0206\u0207\7N\2\2\u0207\u0208\7K\2\2\u0208\u0209\7M\2\2\u0209\u020a"+
+ "\7G\2\2\u020ap\3\2\2\2\u020b\u020c\7S\2\2\u020c\u020d\7W\2\2\u020d\u020e"+
+ "\7G\2\2\u020e\u020f\7T\2\2\u020f\u0210\7[\2\2\u0210r\3\2\2\2\u0211\u0212"+
+ "\7U\2\2\u0212\u0213\7E\2\2\u0213\u0214\7J\2\2\u0214\u0215\7G\2\2\u0215"+
+ "\u0216\7O\2\2\u0216\u0217\7C\2\2\u0217\u0218\7U\2\2\u0218t\3\2\2\2\u0219"+
+ "\u021a\7U\2\2\u021a\u021b\7G\2\2\u021b\u021c\7N\2\2\u021c\u021d\7G\2\2"+
+ "\u021d\u021e\7E\2\2\u021e\u021f\7V\2\2\u021fv\3\2\2\2\u0220\u0221\7U\2"+
+ "\2\u0221\u0222\7J\2\2\u0222\u0223\7Q\2\2\u0223\u0224\7Y\2\2\u0224x\3\2"+
+ "\2\2\u0225\u0226\7U\2\2\u0226\u0227\7[\2\2\u0227\u0228\7U\2\2\u0228z\3"+
+ "\2\2\2\u0229\u022a\7V\2\2\u022a\u022b\7C\2\2\u022b\u022c\7D\2\2\u022c"+
+ "\u022d\7N\2\2\u022d\u022e\7G\2\2\u022e|\3\2\2\2\u022f\u0230\7V\2\2\u0230"+
+ "\u0231\7C\2\2\u0231\u0232\7D\2\2\u0232\u0233\7N\2\2\u0233\u0234\7G\2\2"+
+ "\u0234\u0235\7U\2\2\u0235~\3\2\2\2\u0236\u0237\7V\2\2\u0237\u0238\7G\2"+
+ "\2\u0238\u0239\7Z\2\2\u0239\u023a\7V\2\2\u023a\u0080\3\2\2\2\u023b\u023c"+
+ "\7V\2\2\u023c\u023d\7T\2\2\u023d\u023e\7W\2\2\u023e\u023f\7G\2\2\u023f"+
+ "\u0082\3\2\2\2\u0240\u0241\7V\2\2\u0241\u0242\7[\2\2\u0242\u0243\7R\2"+
+ "\2\u0243\u0244\7G\2\2\u0244\u0245\7U\2\2\u0245\u0084\3\2\2\2\u0246\u0247"+
+ "\7W\2\2\u0247\u0248\7U\2\2\u0248\u0249\7K\2\2\u0249\u024a\7P\2\2\u024a"+
+ "\u024b\7I\2\2\u024b\u0086\3\2\2\2\u024c\u024d\7X\2\2\u024d\u024e\7G\2"+
+ "\2\u024e\u024f\7T\2\2\u024f\u0250\7K\2\2\u0250\u0251\7H\2\2\u0251\u0252"+
+ "\7[\2\2\u0252\u0088\3\2\2\2\u0253\u0254\7Y\2\2\u0254\u0255\7J\2\2\u0255"+
+ "\u0256\7G\2\2\u0256\u0257\7T\2\2\u0257\u0258\7G\2\2\u0258\u008a\3\2\2"+
+ "\2\u0259\u025a\7Y\2\2\u025a\u025b\7K\2\2\u025b\u025c\7V\2\2\u025c\u025d"+
+ "\7J\2\2\u025d\u008c\3\2\2\2\u025e\u025f\7?\2\2\u025f\u008e\3\2\2\2\u0260"+
+ "\u0261\7>\2\2\u0261\u0268\7@\2\2\u0262\u0263\7#\2\2\u0263\u0268\7?\2\2"+
+ "\u0264\u0265\7>\2\2\u0265\u0266\7?\2\2\u0266\u0268\7@\2\2\u0267\u0260"+
+ "\3\2\2\2\u0267\u0262\3\2\2\2\u0267\u0264\3\2\2\2\u0268\u0090\3\2\2\2\u0269"+
+ "\u026a\7>\2\2\u026a\u0092\3\2\2\2\u026b\u026c\7>\2\2\u026c\u026d\7?\2"+
+ "\2\u026d\u0094\3\2\2\2\u026e\u026f\7@\2\2\u026f\u0096\3\2\2\2\u0270\u0271"+
+ "\7@\2\2\u0271\u0272\7?\2\2\u0272\u0098\3\2\2\2\u0273\u0274\7-\2\2\u0274"+
+ "\u009a\3\2\2\2\u0275\u0276\7/\2\2\u0276\u009c\3\2\2\2\u0277\u0278\7,\2"+
+ "\2\u0278\u009e\3\2\2\2\u0279\u027a\7\61\2\2\u027a\u00a0\3\2\2\2\u027b"+
+ "\u027c\7\'\2\2\u027c\u00a2\3\2\2\2\u027d\u027e\7~\2\2\u027e\u027f\7~\2"+
+ "\2\u027f\u00a4\3\2\2\2\u0280\u0281\7\60\2\2\u0281\u00a6\3\2\2\2\u0282"+
+ "\u0288\7)\2\2\u0283\u0287\n\2\2\2\u0284\u0285\7)\2\2\u0285\u0287\7)\2"+
+ "\2\u0286\u0283\3\2\2\2\u0286\u0284\3\2\2\2\u0287\u028a\3\2\2\2\u0288\u0286"+
+ "\3\2\2\2\u0288\u0289\3\2\2\2\u0289\u028b\3\2\2\2\u028a\u0288\3\2\2\2\u028b"+
+ "\u028c\7)\2\2\u028c\u00a8\3\2\2\2\u028d\u028f\5\u00b9]\2\u028e\u028d\3"+
+ "\2\2\2\u028f\u0290\3\2\2\2\u0290\u028e\3\2\2\2\u0290\u0291\3\2\2\2\u0291"+
+ "\u00aa\3\2\2\2\u0292\u0294\5\u00b9]\2\u0293\u0292\3\2\2\2\u0294\u0295"+
+ "\3\2\2\2\u0295\u0293\3\2\2\2\u0295\u0296\3\2\2\2\u0296\u0297\3\2\2\2\u0297"+
+ "\u029b\5\u00a5S\2\u0298\u029a\5\u00b9]\2\u0299\u0298\3\2\2\2\u029a\u029d"+
+ "\3\2\2\2\u029b\u0299\3\2\2\2\u029b\u029c\3\2\2\2\u029c\u02bd\3\2\2\2\u029d"+
+ "\u029b\3\2\2\2\u029e\u02a0\5\u00a5S\2\u029f\u02a1\5\u00b9]\2\u02a0\u029f"+
+ "\3\2\2\2\u02a1\u02a2\3\2\2\2\u02a2\u02a0\3\2\2\2\u02a2\u02a3\3\2\2\2\u02a3"+
+ "\u02bd\3\2\2\2\u02a4\u02a6\5\u00b9]\2\u02a5\u02a4\3\2\2\2\u02a6\u02a7"+
+ "\3\2\2\2\u02a7\u02a5\3\2\2\2\u02a7\u02a8\3\2\2\2\u02a8\u02b0\3\2\2\2\u02a9"+
+ "\u02ad\5\u00a5S\2\u02aa\u02ac\5\u00b9]\2\u02ab\u02aa\3\2\2\2\u02ac\u02af"+
+ "\3\2\2\2\u02ad\u02ab\3\2\2\2\u02ad\u02ae\3\2\2\2\u02ae\u02b1\3\2\2\2\u02af"+
+ "\u02ad\3\2\2\2\u02b0\u02a9\3\2\2\2\u02b0\u02b1\3\2\2\2\u02b1\u02b2\3\2"+
+ "\2\2\u02b2\u02b3\5\u00b7\\\2\u02b3\u02bd\3\2\2\2\u02b4\u02b6\5\u00a5S"+
+ "\2\u02b5\u02b7\5\u00b9]\2\u02b6\u02b5\3\2\2\2\u02b7\u02b8\3\2\2\2\u02b8"+
+ "\u02b6\3\2\2\2\u02b8\u02b9\3\2\2\2\u02b9\u02ba\3\2\2\2\u02ba\u02bb\5\u00b7"+
+ "\\\2\u02bb\u02bd\3\2\2\2\u02bc\u0293\3\2\2\2\u02bc\u029e\3\2\2\2\u02bc"+
+ "\u02a5\3\2\2\2\u02bc\u02b4\3\2\2\2\u02bd\u00ac\3\2\2\2\u02be\u02c1\5\u00bb"+
+ "^\2\u02bf\u02c1\7a\2\2\u02c0\u02be\3\2\2\2\u02c0\u02bf\3\2\2\2\u02c1\u02c7"+
+ "\3\2\2\2\u02c2\u02c6\5\u00bb^\2\u02c3\u02c6\5\u00b9]\2\u02c4\u02c6\t\3"+
+ "\2\2\u02c5\u02c2\3\2\2\2\u02c5\u02c3\3\2\2\2\u02c5\u02c4\3\2\2\2\u02c6"+
+ "\u02c9\3\2\2\2\u02c7\u02c5\3\2\2\2\u02c7\u02c8\3\2\2\2\u02c8\u00ae\3\2"+
+ "\2\2\u02c9\u02c7\3\2\2\2\u02ca\u02ce\5\u00b9]\2\u02cb\u02cf\5\u00bb^\2"+
+ "\u02cc\u02cf\5\u00b9]\2\u02cd\u02cf\t\4\2\2\u02ce\u02cb\3\2\2\2\u02ce"+
+ "\u02cc\3\2\2\2\u02ce\u02cd\3\2\2\2\u02cf\u02d0\3\2\2\2\u02d0\u02ce\3\2"+
+ "\2\2\u02d0\u02d1\3\2\2\2\u02d1\u00b0\3\2\2\2\u02d2\u02d7\5\u00bb^\2\u02d3"+
+ "\u02d7\5\u00b9]\2\u02d4\u02d7\t\3\2\2\u02d5\u02d7\5\u009dO\2\u02d6\u02d2"+
+ "\3\2\2\2\u02d6\u02d3\3\2\2\2\u02d6\u02d4\3\2\2\2\u02d6\u02d5\3\2\2\2\u02d7"+
+ "\u02d8\3\2\2\2\u02d8\u02d6\3\2\2\2\u02d8\u02d9\3\2\2\2\u02d9\u00b2\3\2"+
+ "\2\2\u02da\u02e0\7$\2\2\u02db\u02df\n\5\2\2\u02dc\u02dd\7$\2\2\u02dd\u02df"+
+ "\7$\2\2\u02de\u02db\3\2\2\2\u02de\u02dc\3\2\2\2\u02df\u02e2\3\2\2\2\u02e0"+
+ "\u02de\3\2\2\2\u02e0\u02e1\3\2\2\2\u02e1\u02e3\3\2\2\2\u02e2\u02e0\3\2"+
+ "\2\2\u02e3\u02e4\7$\2\2\u02e4\u00b4\3\2\2\2\u02e5\u02eb\7b\2\2\u02e6\u02ea"+
+ "\n\6\2\2\u02e7\u02e8\7b\2\2\u02e8\u02ea\7b\2\2\u02e9\u02e6\3\2\2\2\u02e9"+
+ "\u02e7\3\2\2\2\u02ea\u02ed\3\2\2\2\u02eb\u02e9\3\2\2\2\u02eb\u02ec\3\2"+
+ "\2\2\u02ec\u02ee\3\2\2\2\u02ed\u02eb\3\2\2\2\u02ee\u02ef\7b\2\2\u02ef"+
+ "\u00b6\3\2\2\2\u02f0\u02f2\7G\2\2\u02f1\u02f3\t\7\2\2\u02f2\u02f1\3\2"+
+ "\2\2\u02f2\u02f3\3\2\2\2\u02f3\u02f5\3\2\2\2\u02f4\u02f6\5\u00b9]\2\u02f5"+
+ "\u02f4\3\2\2\2\u02f6\u02f7\3\2\2\2\u02f7\u02f5\3\2\2\2\u02f7\u02f8\3\2"+
+ "\2\2\u02f8\u00b8\3\2\2\2\u02f9\u02fa\t\b\2\2\u02fa\u00ba\3\2\2\2\u02fb"+
+ "\u02fc\t\t\2\2\u02fc\u00bc\3\2\2\2\u02fd\u02fe\7/\2\2\u02fe\u02ff\7/\2"+
+ "\2\u02ff\u0303\3\2\2\2\u0300\u0302\n\n\2\2\u0301\u0300\3\2\2\2\u0302\u0305"+
+ "\3\2\2\2\u0303\u0301\3\2\2\2\u0303\u0304\3\2\2\2\u0304\u0307\3\2\2\2\u0305"+
+ "\u0303\3\2\2\2\u0306\u0308\7\17\2\2\u0307\u0306\3\2\2\2\u0307\u0308\3"+
+ "\2\2\2\u0308\u030a\3\2\2\2\u0309\u030b\7\f\2\2\u030a\u0309\3\2\2\2\u030a"+
+ "\u030b\3\2\2\2\u030b\u030c\3\2\2\2\u030c\u030d\b_\2\2\u030d\u00be\3\2"+
+ "\2\2\u030e\u030f\7\61\2\2\u030f\u0310\7,\2\2\u0310\u0315\3\2\2\2\u0311"+
+ "\u0314\5\u00bf`\2\u0312\u0314\13\2\2\2\u0313\u0311\3\2\2\2\u0313\u0312"+
+ "\3\2\2\2\u0314\u0317\3\2\2\2\u0315\u0316\3\2\2\2\u0315\u0313\3\2\2\2\u0316"+
+ "\u0318\3\2\2\2\u0317\u0315\3\2\2\2\u0318\u0319\7,\2\2\u0319\u031a\7\61"+
+ "\2\2\u031a\u031b\3\2\2\2\u031b\u031c\b`\2\2\u031c\u00c0\3\2\2\2\u031d"+
+ "\u031f\t\13\2\2\u031e\u031d\3\2\2\2\u031f\u0320\3\2\2\2\u0320\u031e\3"+
+ "\2\2\2\u0320\u0321\3\2\2\2\u0321\u0322\3\2\2\2\u0322\u0323\ba\2\2\u0323"+
+ "\u00c2\3\2\2\2\u0324\u0325\13\2\2\2\u0325\u00c4\3\2\2\2\"\2\u0267\u0286"+
+ "\u0288\u0290\u0295\u029b\u02a2\u02a7\u02ad\u02b0\u02b8\u02bc\u02c0\u02c5"+
+ "\u02c7\u02ce\u02d0\u02d6\u02d8\u02de\u02e0\u02e9\u02eb\u02f2\u02f7\u0303"+
+ "\u0307\u030a\u0313\u0315\u0320\3\2\3\2";
public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {
diff --git a/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/SqlBaseListener.java b/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/SqlBaseListener.java
index 904733e27cc..bee88386394 100644
--- a/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/SqlBaseListener.java
+++ b/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/SqlBaseListener.java
@@ -116,6 +116,18 @@ interface SqlBaseListener extends ParseTreeListener {
* @param ctx the parse tree
*/
void exitShowSchemas(SqlBaseParser.ShowSchemasContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code sysCatalogs}
+ * labeled alternative in {@link SqlBaseParser#statement}.
+ * @param ctx the parse tree
+ */
+ void enterSysCatalogs(SqlBaseParser.SysCatalogsContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code sysCatalogs}
+ * labeled alternative in {@link SqlBaseParser#statement}.
+ * @param ctx the parse tree
+ */
+ void exitSysCatalogs(SqlBaseParser.SysCatalogsContext ctx);
/**
* Enter a parse tree produced by the {@code sysTables}
* labeled alternative in {@link SqlBaseParser#statement}.
@@ -152,6 +164,18 @@ interface SqlBaseListener extends ParseTreeListener {
* @param ctx the parse tree
*/
void exitSysTypes(SqlBaseParser.SysTypesContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code sysTableTypes}
+ * labeled alternative in {@link SqlBaseParser#statement}.
+ * @param ctx the parse tree
+ */
+ void enterSysTableTypes(SqlBaseParser.SysTableTypesContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code sysTableTypes}
+ * labeled alternative in {@link SqlBaseParser#statement}.
+ * @param ctx the parse tree
+ */
+ void exitSysTableTypes(SqlBaseParser.SysTableTypesContext ctx);
/**
* Enter a parse tree produced by {@link SqlBaseParser#query}.
* @param ctx the parse tree
diff --git a/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/SqlBaseParser.java b/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/SqlBaseParser.java
index 41879967f91..577c6c8c334 100644
--- a/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/SqlBaseParser.java
+++ b/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/SqlBaseParser.java
@@ -23,19 +23,19 @@ class SqlBaseParser extends Parser {
new PredictionContextCache();
public static final int
T__0=1, T__1=2, T__2=3, T__3=4, ALL=5, ANALYZE=6, ANALYZED=7, AND=8, ANY=9,
- AS=10, ASC=11, BETWEEN=12, BY=13, CAST=14, COLUMNS=15, DEBUG=16, DESC=17,
- DESCRIBE=18, DISTINCT=19, ESCAPE=20, EXECUTABLE=21, EXISTS=22, EXPLAIN=23,
- EXTRACT=24, FALSE=25, FORMAT=26, FROM=27, FULL=28, FUNCTIONS=29, GRAPHVIZ=30,
- GROUP=31, HAVING=32, IN=33, INNER=34, IS=35, JOIN=36, LEFT=37, LIKE=38,
- LIMIT=39, MAPPED=40, MATCH=41, NATURAL=42, NOT=43, NULL=44, ON=45, OPTIMIZED=46,
- OR=47, ORDER=48, OUTER=49, PARSED=50, PHYSICAL=51, PLAN=52, RIGHT=53,
- RLIKE=54, QUERY=55, SCHEMAS=56, SELECT=57, SHOW=58, SYS=59, TABLES=60,
- TEXT=61, TRUE=62, TYPES=63, USING=64, VERIFY=65, WHERE=66, WITH=67, EQ=68,
- NEQ=69, LT=70, LTE=71, GT=72, GTE=73, PLUS=74, MINUS=75, ASTERISK=76,
- SLASH=77, PERCENT=78, CONCAT=79, DOT=80, STRING=81, INTEGER_VALUE=82,
- DECIMAL_VALUE=83, IDENTIFIER=84, DIGIT_IDENTIFIER=85, TABLE_IDENTIFIER=86,
- QUOTED_IDENTIFIER=87, BACKQUOTED_IDENTIFIER=88, SIMPLE_COMMENT=89, BRACKETED_COMMENT=90,
- WS=91, UNRECOGNIZED=92, DELIMITER=93;
+ AS=10, ASC=11, BETWEEN=12, BY=13, CAST=14, CATALOGS=15, COLUMNS=16, DEBUG=17,
+ DESC=18, DESCRIBE=19, DISTINCT=20, ESCAPE=21, EXECUTABLE=22, EXISTS=23,
+ EXPLAIN=24, EXTRACT=25, FALSE=26, FORMAT=27, FROM=28, FULL=29, FUNCTIONS=30,
+ GRAPHVIZ=31, GROUP=32, HAVING=33, IN=34, INNER=35, IS=36, JOIN=37, LEFT=38,
+ LIKE=39, LIMIT=40, MAPPED=41, MATCH=42, NATURAL=43, NOT=44, NULL=45, ON=46,
+ OPTIMIZED=47, OR=48, ORDER=49, OUTER=50, PARSED=51, PHYSICAL=52, PLAN=53,
+ RIGHT=54, RLIKE=55, QUERY=56, SCHEMAS=57, SELECT=58, SHOW=59, SYS=60,
+ TABLE=61, TABLES=62, TEXT=63, TRUE=64, TYPES=65, USING=66, VERIFY=67,
+ WHERE=68, WITH=69, EQ=70, NEQ=71, LT=72, LTE=73, GT=74, GTE=75, PLUS=76,
+ MINUS=77, ASTERISK=78, SLASH=79, PERCENT=80, CONCAT=81, DOT=82, STRING=83,
+ INTEGER_VALUE=84, DECIMAL_VALUE=85, IDENTIFIER=86, DIGIT_IDENTIFIER=87,
+ TABLE_IDENTIFIER=88, QUOTED_IDENTIFIER=89, BACKQUOTED_IDENTIFIER=90, SIMPLE_COMMENT=91,
+ BRACKETED_COMMENT=92, WS=93, UNRECOGNIZED=94, DELIMITER=95;
public static final int
RULE_singleStatement = 0, RULE_singleExpression = 1, RULE_statement = 2,
RULE_query = 3, RULE_queryNoWith = 4, RULE_queryTerm = 5, RULE_orderBy = 6,
@@ -62,32 +62,32 @@ class SqlBaseParser extends Parser {
private static final String[] _LITERAL_NAMES = {
null, "'('", "')'", "','", "':'", "'ALL'", "'ANALYZE'", "'ANALYZED'",
- "'AND'", "'ANY'", "'AS'", "'ASC'", "'BETWEEN'", "'BY'", "'CAST'", "'COLUMNS'",
- "'DEBUG'", "'DESC'", "'DESCRIBE'", "'DISTINCT'", "'ESCAPE'", "'EXECUTABLE'",
- "'EXISTS'", "'EXPLAIN'", "'EXTRACT'", "'FALSE'", "'FORMAT'", "'FROM'",
- "'FULL'", "'FUNCTIONS'", "'GRAPHVIZ'", "'GROUP'", "'HAVING'", "'IN'",
- "'INNER'", "'IS'", "'JOIN'", "'LEFT'", "'LIKE'", "'LIMIT'", "'MAPPED'",
+ "'AND'", "'ANY'", "'AS'", "'ASC'", "'BETWEEN'", "'BY'", "'CAST'", "'CATALOGS'",
+ "'COLUMNS'", "'DEBUG'", "'DESC'", "'DESCRIBE'", "'DISTINCT'", "'ESCAPE'",
+ "'EXECUTABLE'", "'EXISTS'", "'EXPLAIN'", "'EXTRACT'", "'FALSE'", "'FORMAT'",
+ "'FROM'", "'FULL'", "'FUNCTIONS'", "'GRAPHVIZ'", "'GROUP'", "'HAVING'",
+ "'IN'", "'INNER'", "'IS'", "'JOIN'", "'LEFT'", "'LIKE'", "'LIMIT'", "'MAPPED'",
"'MATCH'", "'NATURAL'", "'NOT'", "'NULL'", "'ON'", "'OPTIMIZED'", "'OR'",
"'ORDER'", "'OUTER'", "'PARSED'", "'PHYSICAL'", "'PLAN'", "'RIGHT'", "'RLIKE'",
- "'QUERY'", "'SCHEMAS'", "'SELECT'", "'SHOW'", "'SYS'", "'TABLES'", "'TEXT'",
- "'TRUE'", "'TYPES'", "'USING'", "'VERIFY'", "'WHERE'", "'WITH'", "'='",
- null, "'<'", "'<='", "'>'", "'>='", "'+'", "'-'", "'*'", "'/'", "'%'",
- "'||'", "'.'"
+ "'QUERY'", "'SCHEMAS'", "'SELECT'", "'SHOW'", "'SYS'", "'TABLE'", "'TABLES'",
+ "'TEXT'", "'TRUE'", "'TYPES'", "'USING'", "'VERIFY'", "'WHERE'", "'WITH'",
+ "'='", null, "'<'", "'<='", "'>'", "'>='", "'+'", "'-'", "'*'", "'/'",
+ "'%'", "'||'", "'.'"
};
private static final String[] _SYMBOLIC_NAMES = {
null, null, null, null, null, "ALL", "ANALYZE", "ANALYZED", "AND", "ANY",
- "AS", "ASC", "BETWEEN", "BY", "CAST", "COLUMNS", "DEBUG", "DESC", "DESCRIBE",
- "DISTINCT", "ESCAPE", "EXECUTABLE", "EXISTS", "EXPLAIN", "EXTRACT", "FALSE",
- "FORMAT", "FROM", "FULL", "FUNCTIONS", "GRAPHVIZ", "GROUP", "HAVING",
- "IN", "INNER", "IS", "JOIN", "LEFT", "LIKE", "LIMIT", "MAPPED", "MATCH",
- "NATURAL", "NOT", "NULL", "ON", "OPTIMIZED", "OR", "ORDER", "OUTER", "PARSED",
- "PHYSICAL", "PLAN", "RIGHT", "RLIKE", "QUERY", "SCHEMAS", "SELECT", "SHOW",
- "SYS", "TABLES", "TEXT", "TRUE", "TYPES", "USING", "VERIFY", "WHERE",
- "WITH", "EQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK",
- "SLASH", "PERCENT", "CONCAT", "DOT", "STRING", "INTEGER_VALUE", "DECIMAL_VALUE",
- "IDENTIFIER", "DIGIT_IDENTIFIER", "TABLE_IDENTIFIER", "QUOTED_IDENTIFIER",
- "BACKQUOTED_IDENTIFIER", "SIMPLE_COMMENT", "BRACKETED_COMMENT", "WS",
- "UNRECOGNIZED", "DELIMITER"
+ "AS", "ASC", "BETWEEN", "BY", "CAST", "CATALOGS", "COLUMNS", "DEBUG",
+ "DESC", "DESCRIBE", "DISTINCT", "ESCAPE", "EXECUTABLE", "EXISTS", "EXPLAIN",
+ "EXTRACT", "FALSE", "FORMAT", "FROM", "FULL", "FUNCTIONS", "GRAPHVIZ",
+ "GROUP", "HAVING", "IN", "INNER", "IS", "JOIN", "LEFT", "LIKE", "LIMIT",
+ "MAPPED", "MATCH", "NATURAL", "NOT", "NULL", "ON", "OPTIMIZED", "OR",
+ "ORDER", "OUTER", "PARSED", "PHYSICAL", "PLAN", "RIGHT", "RLIKE", "QUERY",
+ "SCHEMAS", "SELECT", "SHOW", "SYS", "TABLE", "TABLES", "TEXT", "TRUE",
+ "TYPES", "USING", "VERIFY", "WHERE", "WITH", "EQ", "NEQ", "LT", "LTE",
+ "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH", "PERCENT", "CONCAT",
+ "DOT", "STRING", "INTEGER_VALUE", "DECIMAL_VALUE", "IDENTIFIER", "DIGIT_IDENTIFIER",
+ "TABLE_IDENTIFIER", "QUOTED_IDENTIFIER", "BACKQUOTED_IDENTIFIER", "SIMPLE_COMMENT",
+ "BRACKETED_COMMENT", "WS", "UNRECOGNIZED", "DELIMITER"
};
public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
@@ -316,6 +316,24 @@ class SqlBaseParser extends Parser {
else return visitor.visitChildren(this);
}
}
+ public static class SysCatalogsContext extends StatementContext {
+ public TerminalNode SYS() { return getToken(SqlBaseParser.SYS, 0); }
+ public TerminalNode CATALOGS() { return getToken(SqlBaseParser.CATALOGS, 0); }
+ public SysCatalogsContext(StatementContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSysCatalogs(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSysCatalogs(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof SqlBaseVisitor ) return ((SqlBaseVisitor extends T>)visitor).visitSysCatalogs(this);
+ else return visitor.visitChildren(this);
+ }
+ }
public static class SysColumnsContext extends StatementContext {
public PatternContext indexPattern;
public PatternContext columnPattern;
@@ -411,6 +429,25 @@ class SqlBaseParser extends Parser {
else return visitor.visitChildren(this);
}
}
+ public static class SysTableTypesContext extends StatementContext {
+ public TerminalNode SYS() { return getToken(SqlBaseParser.SYS, 0); }
+ public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); }
+ public TerminalNode TYPES() { return getToken(SqlBaseParser.TYPES, 0); }
+ public SysTableTypesContext(StatementContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSysTableTypes(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSysTableTypes(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof SqlBaseVisitor ) return ((SqlBaseVisitor extends T>)visitor).visitSysTableTypes(this);
+ else return visitor.visitChildren(this);
+ }
+ }
public static class StatementDefaultContext extends StatementContext {
public QueryContext query() {
return getRuleContext(QueryContext.class,0);
@@ -545,7 +582,7 @@ class SqlBaseParser extends Parser {
enterRule(_localctx, 4, RULE_statement);
int _la;
try {
- setState(164);
+ setState(169);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,16,_ctx) ) {
case 1:
@@ -572,7 +609,7 @@ class SqlBaseParser extends Parser {
setState(93);
_errHandler.sync(this);
_la = _input.LA(1);
- while (((((_la - 26)) & ~0x3f) == 0 && ((1L << (_la - 26)) & ((1L << (FORMAT - 26)) | (1L << (PLAN - 26)) | (1L << (VERIFY - 26)))) != 0)) {
+ while (((((_la - 27)) & ~0x3f) == 0 && ((1L << (_la - 27)) & ((1L << (FORMAT - 27)) | (1L << (PLAN - 27)) | (1L << (VERIFY - 27)))) != 0)) {
{
setState(91);
switch (_input.LA(1)) {
@@ -795,88 +832,110 @@ class SqlBaseParser extends Parser {
}
break;
case 9:
- _localctx = new SysTablesContext(_localctx);
+ _localctx = new SysCatalogsContext(_localctx);
enterOuterAlt(_localctx, 9);
{
setState(139);
match(SYS);
setState(140);
+ match(CATALOGS);
+ }
+ break;
+ case 10:
+ _localctx = new SysTablesContext(_localctx);
+ enterOuterAlt(_localctx, 10);
+ {
+ setState(141);
+ match(SYS);
+ setState(142);
match(TABLES);
- setState(145);
+ setState(147);
_la = _input.LA(1);
if (_la==LIKE || _la==STRING) {
{
- setState(142);
+ setState(144);
_la = _input.LA(1);
if (_la==LIKE) {
{
- setState(141);
+ setState(143);
match(LIKE);
}
}
- setState(144);
+ setState(146);
pattern();
}
}
}
break;
- case 10:
+ case 11:
_localctx = new SysColumnsContext(_localctx);
- enterOuterAlt(_localctx, 10);
+ enterOuterAlt(_localctx, 11);
{
- setState(147);
+ setState(149);
match(SYS);
- setState(148);
+ setState(150);
match(COLUMNS);
- setState(154);
+ setState(156);
_la = _input.LA(1);
if (_la==TABLES) {
{
- setState(149);
- match(TABLES);
setState(151);
+ match(TABLES);
+ setState(153);
_la = _input.LA(1);
if (_la==LIKE) {
{
- setState(150);
+ setState(152);
match(LIKE);
}
}
- setState(153);
+ setState(155);
((SysColumnsContext)_localctx).indexPattern = pattern();
}
}
- setState(160);
+ setState(162);
_la = _input.LA(1);
if (_la==LIKE || _la==STRING) {
{
- setState(157);
+ setState(159);
_la = _input.LA(1);
if (_la==LIKE) {
{
- setState(156);
+ setState(158);
match(LIKE);
}
}
- setState(159);
+ setState(161);
((SysColumnsContext)_localctx).columnPattern = pattern();
}
}
}
break;
- case 11:
+ case 12:
_localctx = new SysTypesContext(_localctx);
- enterOuterAlt(_localctx, 11);
+ enterOuterAlt(_localctx, 12);
{
- setState(162);
+ setState(164);
match(SYS);
- setState(163);
+ setState(165);
+ match(TYPES);
+ }
+ break;
+ case 13:
+ _localctx = new SysTableTypesContext(_localctx);
+ enterOuterAlt(_localctx, 13);
+ {
+ setState(166);
+ match(SYS);
+ setState(167);
+ match(TABLE);
+ setState(168);
match(TYPES);
}
break;
@@ -930,34 +989,34 @@ class SqlBaseParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(175);
+ setState(180);
_la = _input.LA(1);
if (_la==WITH) {
{
- setState(166);
+ setState(171);
match(WITH);
- setState(167);
- namedQuery();
setState(172);
+ namedQuery();
+ setState(177);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__2) {
{
{
- setState(168);
+ setState(173);
match(T__2);
- setState(169);
+ setState(174);
namedQuery();
}
}
- setState(174);
+ setState(179);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
- setState(177);
+ setState(182);
queryNoWith();
}
}
@@ -1014,44 +1073,44 @@ class SqlBaseParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(179);
+ setState(184);
queryTerm();
- setState(190);
+ setState(195);
_la = _input.LA(1);
if (_la==ORDER) {
{
- setState(180);
+ setState(185);
match(ORDER);
- setState(181);
+ setState(186);
match(BY);
- setState(182);
- orderBy();
setState(187);
+ orderBy();
+ setState(192);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__2) {
{
{
- setState(183);
+ setState(188);
match(T__2);
- setState(184);
+ setState(189);
orderBy();
}
}
- setState(189);
+ setState(194);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
- setState(194);
+ setState(199);
_la = _input.LA(1);
if (_la==LIMIT) {
{
- setState(192);
+ setState(197);
match(LIMIT);
- setState(193);
+ setState(198);
((QueryNoWithContext)_localctx).limit = _input.LT(1);
_la = _input.LA(1);
if ( !(_la==ALL || _la==INTEGER_VALUE) ) {
@@ -1129,13 +1188,13 @@ class SqlBaseParser extends Parser {
QueryTermContext _localctx = new QueryTermContext(_ctx, getState());
enterRule(_localctx, 10, RULE_queryTerm);
try {
- setState(201);
+ setState(206);
switch (_input.LA(1)) {
case SELECT:
_localctx = new QueryPrimaryDefaultContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(196);
+ setState(201);
querySpecification();
}
break;
@@ -1143,11 +1202,11 @@ class SqlBaseParser extends Parser {
_localctx = new SubqueryContext(_localctx);
enterOuterAlt(_localctx, 2);
{
- setState(197);
+ setState(202);
match(T__0);
- setState(198);
+ setState(203);
queryNoWith();
- setState(199);
+ setState(204);
match(T__1);
}
break;
@@ -1199,13 +1258,13 @@ class SqlBaseParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(203);
+ setState(208);
expression();
- setState(205);
+ setState(210);
_la = _input.LA(1);
if (_la==ASC || _la==DESC) {
{
- setState(204);
+ setState(209);
((OrderByContext)_localctx).ordering = _input.LT(1);
_la = _input.LA(1);
if ( !(_la==ASC || _la==DESC) ) {
@@ -1284,75 +1343,75 @@ class SqlBaseParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(207);
+ setState(212);
match(SELECT);
- setState(209);
+ setState(214);
_la = _input.LA(1);
if (_la==ALL || _la==DISTINCT) {
{
- setState(208);
+ setState(213);
setQuantifier();
}
}
- setState(211);
- selectItem();
setState(216);
+ selectItem();
+ setState(221);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__2) {
{
{
- setState(212);
+ setState(217);
match(T__2);
- setState(213);
+ setState(218);
selectItem();
}
}
- setState(218);
+ setState(223);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(220);
+ setState(225);
_la = _input.LA(1);
if (_la==FROM) {
{
- setState(219);
+ setState(224);
fromClause();
}
}
- setState(224);
- _la = _input.LA(1);
- if (_la==WHERE) {
- {
- setState(222);
- match(WHERE);
- setState(223);
- ((QuerySpecificationContext)_localctx).where = booleanExpression(0);
- }
- }
-
setState(229);
_la = _input.LA(1);
+ if (_la==WHERE) {
+ {
+ setState(227);
+ match(WHERE);
+ setState(228);
+ ((QuerySpecificationContext)_localctx).where = booleanExpression(0);
+ }
+ }
+
+ setState(234);
+ _la = _input.LA(1);
if (_la==GROUP) {
{
- setState(226);
+ setState(231);
match(GROUP);
- setState(227);
+ setState(232);
match(BY);
- setState(228);
+ setState(233);
groupBy();
}
}
- setState(233);
+ setState(238);
_la = _input.LA(1);
if (_la==HAVING) {
{
- setState(231);
+ setState(236);
match(HAVING);
- setState(232);
+ setState(237);
((QuerySpecificationContext)_localctx).having = booleanExpression(0);
}
}
@@ -1404,23 +1463,23 @@ class SqlBaseParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(235);
+ setState(240);
match(FROM);
- setState(236);
- relation();
setState(241);
+ relation();
+ setState(246);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__2) {
{
{
- setState(237);
+ setState(242);
match(T__2);
- setState(238);
+ setState(243);
relation();
}
}
- setState(243);
+ setState(248);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -1473,30 +1532,30 @@ class SqlBaseParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(245);
+ setState(250);
_la = _input.LA(1);
if (_la==ALL || _la==DISTINCT) {
{
- setState(244);
+ setState(249);
setQuantifier();
}
}
- setState(247);
- groupingElement();
setState(252);
+ groupingElement();
+ setState(257);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__2) {
{
{
- setState(248);
+ setState(253);
match(T__2);
- setState(249);
+ setState(254);
groupingElement();
}
}
- setState(254);
+ setState(259);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -1551,7 +1610,7 @@ class SqlBaseParser extends Parser {
_localctx = new SingleGroupingSetContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(255);
+ setState(260);
groupingExpressions();
}
}
@@ -1597,47 +1656,47 @@ class SqlBaseParser extends Parser {
enterRule(_localctx, 22, RULE_groupingExpressions);
int _la;
try {
- setState(270);
+ setState(275);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,35,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(257);
+ setState(262);
match(T__0);
- setState(266);
+ setState(271);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << ANALYZE) | (1L << ANALYZED) | (1L << CAST) | (1L << COLUMNS) | (1L << DEBUG) | (1L << EXECUTABLE) | (1L << EXISTS) | (1L << EXPLAIN) | (1L << EXTRACT) | (1L << FALSE) | (1L << FORMAT) | (1L << FUNCTIONS) | (1L << GRAPHVIZ) | (1L << MAPPED) | (1L << MATCH) | (1L << NOT) | (1L << NULL) | (1L << OPTIMIZED) | (1L << PARSED) | (1L << PHYSICAL) | (1L << PLAN) | (1L << RLIKE) | (1L << QUERY) | (1L << SCHEMAS) | (1L << SHOW) | (1L << SYS) | (1L << TABLES) | (1L << TEXT) | (1L << TRUE) | (1L << TYPES))) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (VERIFY - 65)) | (1L << (PLUS - 65)) | (1L << (MINUS - 65)) | (1L << (ASTERISK - 65)) | (1L << (STRING - 65)) | (1L << (INTEGER_VALUE - 65)) | (1L << (DECIMAL_VALUE - 65)) | (1L << (IDENTIFIER - 65)) | (1L << (DIGIT_IDENTIFIER - 65)) | (1L << (QUOTED_IDENTIFIER - 65)) | (1L << (BACKQUOTED_IDENTIFIER - 65)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << ANALYZE) | (1L << ANALYZED) | (1L << CAST) | (1L << CATALOGS) | (1L << COLUMNS) | (1L << DEBUG) | (1L << EXECUTABLE) | (1L << EXISTS) | (1L << EXPLAIN) | (1L << EXTRACT) | (1L << FALSE) | (1L << FORMAT) | (1L << FUNCTIONS) | (1L << GRAPHVIZ) | (1L << MAPPED) | (1L << MATCH) | (1L << NOT) | (1L << NULL) | (1L << OPTIMIZED) | (1L << PARSED) | (1L << PHYSICAL) | (1L << PLAN) | (1L << RLIKE) | (1L << QUERY) | (1L << SCHEMAS) | (1L << SHOW) | (1L << SYS) | (1L << TABLES) | (1L << TEXT))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (TRUE - 64)) | (1L << (TYPES - 64)) | (1L << (VERIFY - 64)) | (1L << (PLUS - 64)) | (1L << (MINUS - 64)) | (1L << (ASTERISK - 64)) | (1L << (STRING - 64)) | (1L << (INTEGER_VALUE - 64)) | (1L << (DECIMAL_VALUE - 64)) | (1L << (IDENTIFIER - 64)) | (1L << (DIGIT_IDENTIFIER - 64)) | (1L << (QUOTED_IDENTIFIER - 64)) | (1L << (BACKQUOTED_IDENTIFIER - 64)))) != 0)) {
{
- setState(258);
- expression();
setState(263);
+ expression();
+ setState(268);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__2) {
{
{
- setState(259);
+ setState(264);
match(T__2);
- setState(260);
+ setState(265);
expression();
}
}
- setState(265);
+ setState(270);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
- setState(268);
+ setState(273);
match(T__1);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(269);
+ setState(274);
expression();
}
break;
@@ -1688,15 +1747,15 @@ class SqlBaseParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(272);
+ setState(277);
((NamedQueryContext)_localctx).name = identifier();
- setState(273);
+ setState(278);
match(AS);
- setState(274);
+ setState(279);
match(T__0);
- setState(275);
+ setState(280);
queryNoWith();
- setState(276);
+ setState(281);
match(T__1);
}
}
@@ -1740,7 +1799,7 @@ class SqlBaseParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(278);
+ setState(283);
_la = _input.LA(1);
if ( !(_la==ALL || _la==DISTINCT) ) {
_errHandler.recoverInline(this);
@@ -1803,22 +1862,22 @@ class SqlBaseParser extends Parser {
_localctx = new SelectExpressionContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(280);
- expression();
setState(285);
+ expression();
+ setState(290);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ANALYZE) | (1L << ANALYZED) | (1L << AS) | (1L << COLUMNS) | (1L << DEBUG) | (1L << EXECUTABLE) | (1L << EXPLAIN) | (1L << FORMAT) | (1L << FUNCTIONS) | (1L << GRAPHVIZ) | (1L << MAPPED) | (1L << OPTIMIZED) | (1L << PARSED) | (1L << PHYSICAL) | (1L << PLAN) | (1L << RLIKE) | (1L << QUERY) | (1L << SCHEMAS) | (1L << SHOW) | (1L << SYS) | (1L << TABLES) | (1L << TEXT) | (1L << TYPES))) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (VERIFY - 65)) | (1L << (IDENTIFIER - 65)) | (1L << (DIGIT_IDENTIFIER - 65)) | (1L << (QUOTED_IDENTIFIER - 65)) | (1L << (BACKQUOTED_IDENTIFIER - 65)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ANALYZE) | (1L << ANALYZED) | (1L << AS) | (1L << CATALOGS) | (1L << COLUMNS) | (1L << DEBUG) | (1L << EXECUTABLE) | (1L << EXPLAIN) | (1L << FORMAT) | (1L << FUNCTIONS) | (1L << GRAPHVIZ) | (1L << MAPPED) | (1L << OPTIMIZED) | (1L << PARSED) | (1L << PHYSICAL) | (1L << PLAN) | (1L << RLIKE) | (1L << QUERY) | (1L << SCHEMAS) | (1L << SHOW) | (1L << SYS) | (1L << TABLES) | (1L << TEXT))) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (TYPES - 65)) | (1L << (VERIFY - 65)) | (1L << (IDENTIFIER - 65)) | (1L << (DIGIT_IDENTIFIER - 65)) | (1L << (QUOTED_IDENTIFIER - 65)) | (1L << (BACKQUOTED_IDENTIFIER - 65)))) != 0)) {
{
- setState(282);
+ setState(287);
_la = _input.LA(1);
if (_la==AS) {
{
- setState(281);
+ setState(286);
match(AS);
}
}
- setState(284);
+ setState(289);
identifier();
}
}
@@ -1872,19 +1931,19 @@ class SqlBaseParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(287);
+ setState(292);
relationPrimary();
- setState(291);
+ setState(296);
_errHandler.sync(this);
_la = _input.LA(1);
while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << FULL) | (1L << INNER) | (1L << JOIN) | (1L << LEFT) | (1L << NATURAL) | (1L << RIGHT))) != 0)) {
{
{
- setState(288);
+ setState(293);
joinRelation();
}
}
- setState(293);
+ setState(298);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -1938,7 +1997,7 @@ class SqlBaseParser extends Parser {
enterRule(_localctx, 32, RULE_joinRelation);
int _la;
try {
- setState(305);
+ setState(310);
switch (_input.LA(1)) {
case FULL:
case INNER:
@@ -1948,18 +2007,18 @@ class SqlBaseParser extends Parser {
enterOuterAlt(_localctx, 1);
{
{
- setState(294);
+ setState(299);
joinType();
}
- setState(295);
+ setState(300);
match(JOIN);
- setState(296);
+ setState(301);
((JoinRelationContext)_localctx).right = relationPrimary();
- setState(298);
+ setState(303);
_la = _input.LA(1);
if (_la==ON || _la==USING) {
{
- setState(297);
+ setState(302);
joinCriteria();
}
}
@@ -1969,13 +2028,13 @@ class SqlBaseParser extends Parser {
case NATURAL:
enterOuterAlt(_localctx, 2);
{
- setState(300);
+ setState(305);
match(NATURAL);
- setState(301);
+ setState(306);
joinType();
- setState(302);
+ setState(307);
match(JOIN);
- setState(303);
+ setState(308);
((JoinRelationContext)_localctx).right = relationPrimary();
}
break;
@@ -2024,17 +2083,17 @@ class SqlBaseParser extends Parser {
enterRule(_localctx, 34, RULE_joinType);
int _la;
try {
- setState(322);
+ setState(327);
switch (_input.LA(1)) {
case INNER:
case JOIN:
enterOuterAlt(_localctx, 1);
{
- setState(308);
+ setState(313);
_la = _input.LA(1);
if (_la==INNER) {
{
- setState(307);
+ setState(312);
match(INNER);
}
}
@@ -2044,13 +2103,13 @@ class SqlBaseParser extends Parser {
case LEFT:
enterOuterAlt(_localctx, 2);
{
- setState(310);
+ setState(315);
match(LEFT);
- setState(312);
+ setState(317);
_la = _input.LA(1);
if (_la==OUTER) {
{
- setState(311);
+ setState(316);
match(OUTER);
}
}
@@ -2060,13 +2119,13 @@ class SqlBaseParser extends Parser {
case RIGHT:
enterOuterAlt(_localctx, 3);
{
- setState(314);
+ setState(319);
match(RIGHT);
- setState(316);
+ setState(321);
_la = _input.LA(1);
if (_la==OUTER) {
{
- setState(315);
+ setState(320);
match(OUTER);
}
}
@@ -2076,13 +2135,13 @@ class SqlBaseParser extends Parser {
case FULL:
enterOuterAlt(_localctx, 4);
{
- setState(318);
+ setState(323);
match(FULL);
- setState(320);
+ setState(325);
_la = _input.LA(1);
if (_la==OUTER) {
{
- setState(319);
+ setState(324);
match(OUTER);
}
}
@@ -2140,43 +2199,43 @@ class SqlBaseParser extends Parser {
enterRule(_localctx, 36, RULE_joinCriteria);
int _la;
try {
- setState(338);
+ setState(343);
switch (_input.LA(1)) {
case ON:
enterOuterAlt(_localctx, 1);
{
- setState(324);
+ setState(329);
match(ON);
- setState(325);
+ setState(330);
booleanExpression(0);
}
break;
case USING:
enterOuterAlt(_localctx, 2);
{
- setState(326);
+ setState(331);
match(USING);
- setState(327);
+ setState(332);
match(T__0);
- setState(328);
- identifier();
setState(333);
+ identifier();
+ setState(338);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__2) {
{
{
- setState(329);
+ setState(334);
match(T__2);
- setState(330);
+ setState(335);
identifier();
}
}
- setState(335);
+ setState(340);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(336);
+ setState(341);
match(T__1);
}
break;
@@ -2281,29 +2340,29 @@ class SqlBaseParser extends Parser {
enterRule(_localctx, 38, RULE_relationPrimary);
int _la;
try {
- setState(365);
+ setState(370);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,54,_ctx) ) {
case 1:
_localctx = new TableNameContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(340);
- tableIdentifier();
setState(345);
+ tableIdentifier();
+ setState(350);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ANALYZE) | (1L << ANALYZED) | (1L << AS) | (1L << COLUMNS) | (1L << DEBUG) | (1L << EXECUTABLE) | (1L << EXPLAIN) | (1L << FORMAT) | (1L << FUNCTIONS) | (1L << GRAPHVIZ) | (1L << MAPPED) | (1L << OPTIMIZED) | (1L << PARSED) | (1L << PHYSICAL) | (1L << PLAN) | (1L << RLIKE) | (1L << QUERY) | (1L << SCHEMAS) | (1L << SHOW) | (1L << SYS) | (1L << TABLES) | (1L << TEXT) | (1L << TYPES))) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (VERIFY - 65)) | (1L << (IDENTIFIER - 65)) | (1L << (DIGIT_IDENTIFIER - 65)) | (1L << (QUOTED_IDENTIFIER - 65)) | (1L << (BACKQUOTED_IDENTIFIER - 65)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ANALYZE) | (1L << ANALYZED) | (1L << AS) | (1L << CATALOGS) | (1L << COLUMNS) | (1L << DEBUG) | (1L << EXECUTABLE) | (1L << EXPLAIN) | (1L << FORMAT) | (1L << FUNCTIONS) | (1L << GRAPHVIZ) | (1L << MAPPED) | (1L << OPTIMIZED) | (1L << PARSED) | (1L << PHYSICAL) | (1L << PLAN) | (1L << RLIKE) | (1L << QUERY) | (1L << SCHEMAS) | (1L << SHOW) | (1L << SYS) | (1L << TABLES) | (1L << TEXT))) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (TYPES - 65)) | (1L << (VERIFY - 65)) | (1L << (IDENTIFIER - 65)) | (1L << (DIGIT_IDENTIFIER - 65)) | (1L << (QUOTED_IDENTIFIER - 65)) | (1L << (BACKQUOTED_IDENTIFIER - 65)))) != 0)) {
{
- setState(342);
+ setState(347);
_la = _input.LA(1);
if (_la==AS) {
{
- setState(341);
+ setState(346);
match(AS);
}
}
- setState(344);
+ setState(349);
qualifiedName();
}
}
@@ -2314,26 +2373,26 @@ class SqlBaseParser extends Parser {
_localctx = new AliasedQueryContext(_localctx);
enterOuterAlt(_localctx, 2);
{
- setState(347);
+ setState(352);
match(T__0);
- setState(348);
+ setState(353);
queryNoWith();
- setState(349);
- match(T__1);
setState(354);
+ match(T__1);
+ setState(359);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ANALYZE) | (1L << ANALYZED) | (1L << AS) | (1L << COLUMNS) | (1L << DEBUG) | (1L << EXECUTABLE) | (1L << EXPLAIN) | (1L << FORMAT) | (1L << FUNCTIONS) | (1L << GRAPHVIZ) | (1L << MAPPED) | (1L << OPTIMIZED) | (1L << PARSED) | (1L << PHYSICAL) | (1L << PLAN) | (1L << RLIKE) | (1L << QUERY) | (1L << SCHEMAS) | (1L << SHOW) | (1L << SYS) | (1L << TABLES) | (1L << TEXT) | (1L << TYPES))) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (VERIFY - 65)) | (1L << (IDENTIFIER - 65)) | (1L << (DIGIT_IDENTIFIER - 65)) | (1L << (QUOTED_IDENTIFIER - 65)) | (1L << (BACKQUOTED_IDENTIFIER - 65)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ANALYZE) | (1L << ANALYZED) | (1L << AS) | (1L << CATALOGS) | (1L << COLUMNS) | (1L << DEBUG) | (1L << EXECUTABLE) | (1L << EXPLAIN) | (1L << FORMAT) | (1L << FUNCTIONS) | (1L << GRAPHVIZ) | (1L << MAPPED) | (1L << OPTIMIZED) | (1L << PARSED) | (1L << PHYSICAL) | (1L << PLAN) | (1L << RLIKE) | (1L << QUERY) | (1L << SCHEMAS) | (1L << SHOW) | (1L << SYS) | (1L << TABLES) | (1L << TEXT))) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (TYPES - 65)) | (1L << (VERIFY - 65)) | (1L << (IDENTIFIER - 65)) | (1L << (DIGIT_IDENTIFIER - 65)) | (1L << (QUOTED_IDENTIFIER - 65)) | (1L << (BACKQUOTED_IDENTIFIER - 65)))) != 0)) {
{
- setState(351);
+ setState(356);
_la = _input.LA(1);
if (_la==AS) {
{
- setState(350);
+ setState(355);
match(AS);
}
}
- setState(353);
+ setState(358);
qualifiedName();
}
}
@@ -2344,26 +2403,26 @@ class SqlBaseParser extends Parser {
_localctx = new AliasedRelationContext(_localctx);
enterOuterAlt(_localctx, 3);
{
- setState(356);
+ setState(361);
match(T__0);
- setState(357);
+ setState(362);
relation();
- setState(358);
- match(T__1);
setState(363);
+ match(T__1);
+ setState(368);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ANALYZE) | (1L << ANALYZED) | (1L << AS) | (1L << COLUMNS) | (1L << DEBUG) | (1L << EXECUTABLE) | (1L << EXPLAIN) | (1L << FORMAT) | (1L << FUNCTIONS) | (1L << GRAPHVIZ) | (1L << MAPPED) | (1L << OPTIMIZED) | (1L << PARSED) | (1L << PHYSICAL) | (1L << PLAN) | (1L << RLIKE) | (1L << QUERY) | (1L << SCHEMAS) | (1L << SHOW) | (1L << SYS) | (1L << TABLES) | (1L << TEXT) | (1L << TYPES))) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (VERIFY - 65)) | (1L << (IDENTIFIER - 65)) | (1L << (DIGIT_IDENTIFIER - 65)) | (1L << (QUOTED_IDENTIFIER - 65)) | (1L << (BACKQUOTED_IDENTIFIER - 65)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ANALYZE) | (1L << ANALYZED) | (1L << AS) | (1L << CATALOGS) | (1L << COLUMNS) | (1L << DEBUG) | (1L << EXECUTABLE) | (1L << EXPLAIN) | (1L << FORMAT) | (1L << FUNCTIONS) | (1L << GRAPHVIZ) | (1L << MAPPED) | (1L << OPTIMIZED) | (1L << PARSED) | (1L << PHYSICAL) | (1L << PLAN) | (1L << RLIKE) | (1L << QUERY) | (1L << SCHEMAS) | (1L << SHOW) | (1L << SYS) | (1L << TABLES) | (1L << TEXT))) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (TYPES - 65)) | (1L << (VERIFY - 65)) | (1L << (IDENTIFIER - 65)) | (1L << (DIGIT_IDENTIFIER - 65)) | (1L << (QUOTED_IDENTIFIER - 65)) | (1L << (BACKQUOTED_IDENTIFIER - 65)))) != 0)) {
{
- setState(360);
+ setState(365);
_la = _input.LA(1);
if (_la==AS) {
{
- setState(359);
+ setState(364);
match(AS);
}
}
- setState(362);
+ setState(367);
qualifiedName();
}
}
@@ -2412,7 +2471,7 @@ class SqlBaseParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(367);
+ setState(372);
booleanExpression(0);
}
}
@@ -2615,7 +2674,7 @@ class SqlBaseParser extends Parser {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(416);
+ setState(421);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,58,_ctx) ) {
case 1:
@@ -2624,9 +2683,9 @@ class SqlBaseParser extends Parser {
_ctx = _localctx;
_prevctx = _localctx;
- setState(370);
+ setState(375);
match(NOT);
- setState(371);
+ setState(376);
booleanExpression(8);
}
break;
@@ -2635,13 +2694,13 @@ class SqlBaseParser extends Parser {
_localctx = new ExistsContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(372);
+ setState(377);
match(EXISTS);
- setState(373);
+ setState(378);
match(T__0);
- setState(374);
+ setState(379);
query();
- setState(375);
+ setState(380);
match(T__1);
}
break;
@@ -2650,29 +2709,29 @@ class SqlBaseParser extends Parser {
_localctx = new StringQueryContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(377);
+ setState(382);
match(QUERY);
- setState(378);
+ setState(383);
match(T__0);
- setState(379);
- ((StringQueryContext)_localctx).queryString = match(STRING);
setState(384);
+ ((StringQueryContext)_localctx).queryString = match(STRING);
+ setState(389);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__2) {
{
{
- setState(380);
+ setState(385);
match(T__2);
- setState(381);
+ setState(386);
((StringQueryContext)_localctx).options = match(STRING);
}
}
- setState(386);
+ setState(391);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(387);
+ setState(392);
match(T__1);
}
break;
@@ -2681,33 +2740,33 @@ class SqlBaseParser extends Parser {
_localctx = new MatchQueryContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(388);
+ setState(393);
match(MATCH);
- setState(389);
+ setState(394);
match(T__0);
- setState(390);
+ setState(395);
((MatchQueryContext)_localctx).singleField = qualifiedName();
- setState(391);
+ setState(396);
match(T__2);
- setState(392);
- ((MatchQueryContext)_localctx).queryString = match(STRING);
setState(397);
+ ((MatchQueryContext)_localctx).queryString = match(STRING);
+ setState(402);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__2) {
{
{
- setState(393);
+ setState(398);
match(T__2);
- setState(394);
+ setState(399);
((MatchQueryContext)_localctx).options = match(STRING);
}
}
- setState(399);
+ setState(404);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(400);
+ setState(405);
match(T__1);
}
break;
@@ -2716,33 +2775,33 @@ class SqlBaseParser extends Parser {
_localctx = new MultiMatchQueryContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(402);
+ setState(407);
match(MATCH);
- setState(403);
+ setState(408);
match(T__0);
- setState(404);
+ setState(409);
((MultiMatchQueryContext)_localctx).multiFields = match(STRING);
- setState(405);
+ setState(410);
match(T__2);
- setState(406);
- ((MultiMatchQueryContext)_localctx).queryString = match(STRING);
setState(411);
+ ((MultiMatchQueryContext)_localctx).queryString = match(STRING);
+ setState(416);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__2) {
{
{
- setState(407);
+ setState(412);
match(T__2);
- setState(408);
+ setState(413);
((MultiMatchQueryContext)_localctx).options = match(STRING);
}
}
- setState(413);
+ setState(418);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(414);
+ setState(419);
match(T__1);
}
break;
@@ -2751,13 +2810,13 @@ class SqlBaseParser extends Parser {
_localctx = new BooleanDefaultContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(415);
+ setState(420);
predicated();
}
break;
}
_ctx.stop = _input.LT(-1);
- setState(426);
+ setState(431);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,60,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
@@ -2765,7 +2824,7 @@ class SqlBaseParser extends Parser {
if ( _parseListeners!=null ) triggerExitRuleEvent();
_prevctx = _localctx;
{
- setState(424);
+ setState(429);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,59,_ctx) ) {
case 1:
@@ -2773,11 +2832,11 @@ class SqlBaseParser extends Parser {
_localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState));
((LogicalBinaryContext)_localctx).left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_booleanExpression);
- setState(418);
+ setState(423);
if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
- setState(419);
+ setState(424);
((LogicalBinaryContext)_localctx).operator = match(AND);
- setState(420);
+ setState(425);
((LogicalBinaryContext)_localctx).right = booleanExpression(3);
}
break;
@@ -2786,18 +2845,18 @@ class SqlBaseParser extends Parser {
_localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState));
((LogicalBinaryContext)_localctx).left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_booleanExpression);
- setState(421);
+ setState(426);
if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
- setState(422);
+ setState(427);
((LogicalBinaryContext)_localctx).operator = match(OR);
- setState(423);
+ setState(428);
((LogicalBinaryContext)_localctx).right = booleanExpression(2);
}
break;
}
}
}
- setState(428);
+ setState(433);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,60,_ctx);
}
@@ -2846,14 +2905,14 @@ class SqlBaseParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(429);
+ setState(434);
valueExpression(0);
- setState(431);
+ setState(436);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,61,_ctx) ) {
case 1:
{
- setState(430);
+ setState(435);
predicate();
}
break;
@@ -2927,112 +2986,94 @@ class SqlBaseParser extends Parser {
enterRule(_localctx, 46, RULE_predicate);
int _la;
try {
- setState(479);
+ setState(484);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,69,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(434);
+ setState(439);
_la = _input.LA(1);
if (_la==NOT) {
{
- setState(433);
+ setState(438);
match(NOT);
}
}
- setState(436);
+ setState(441);
((PredicateContext)_localctx).kind = match(BETWEEN);
- setState(437);
+ setState(442);
((PredicateContext)_localctx).lower = valueExpression(0);
- setState(438);
+ setState(443);
match(AND);
- setState(439);
+ setState(444);
((PredicateContext)_localctx).upper = valueExpression(0);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(442);
+ setState(447);
_la = _input.LA(1);
if (_la==NOT) {
{
- setState(441);
+ setState(446);
match(NOT);
}
}
- setState(444);
+ setState(449);
((PredicateContext)_localctx).kind = match(IN);
- setState(445);
+ setState(450);
match(T__0);
- setState(446);
- expression();
setState(451);
+ expression();
+ setState(456);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__2) {
{
{
- setState(447);
+ setState(452);
match(T__2);
- setState(448);
+ setState(453);
expression();
}
}
- setState(453);
+ setState(458);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(454);
+ setState(459);
match(T__1);
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(457);
+ setState(462);
_la = _input.LA(1);
if (_la==NOT) {
{
- setState(456);
+ setState(461);
match(NOT);
}
}
- setState(459);
+ setState(464);
((PredicateContext)_localctx).kind = match(IN);
- setState(460);
+ setState(465);
match(T__0);
- setState(461);
+ setState(466);
query();
- setState(462);
+ setState(467);
match(T__1);
}
break;
case 4:
enterOuterAlt(_localctx, 4);
{
- setState(465);
- _la = _input.LA(1);
- if (_la==NOT) {
- {
- setState(464);
- match(NOT);
- }
- }
-
- setState(467);
- ((PredicateContext)_localctx).kind = match(LIKE);
- setState(468);
- pattern();
- }
- break;
- case 5:
- enterOuterAlt(_localctx, 5);
- {
setState(470);
_la = _input.LA(1);
if (_la==NOT) {
@@ -3043,26 +3084,44 @@ class SqlBaseParser extends Parser {
}
setState(472);
- ((PredicateContext)_localctx).kind = match(RLIKE);
+ ((PredicateContext)_localctx).kind = match(LIKE);
setState(473);
+ pattern();
+ }
+ break;
+ case 5:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(475);
+ _la = _input.LA(1);
+ if (_la==NOT) {
+ {
+ setState(474);
+ match(NOT);
+ }
+ }
+
+ setState(477);
+ ((PredicateContext)_localctx).kind = match(RLIKE);
+ setState(478);
((PredicateContext)_localctx).regex = match(STRING);
}
break;
case 6:
enterOuterAlt(_localctx, 6);
{
- setState(474);
+ setState(479);
match(IS);
- setState(476);
+ setState(481);
_la = _input.LA(1);
if (_la==NOT) {
{
- setState(475);
+ setState(480);
match(NOT);
}
}
- setState(478);
+ setState(483);
((PredicateContext)_localctx).kind = match(NULL);
}
break;
@@ -3112,16 +3171,16 @@ class SqlBaseParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(481);
+ setState(486);
((PatternContext)_localctx).value = match(STRING);
- setState(484);
+ setState(489);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,70,_ctx) ) {
case 1:
{
- setState(482);
+ setState(487);
match(ESCAPE);
- setState(483);
+ setState(488);
((PatternContext)_localctx).escape = match(STRING);
}
break;
@@ -3265,12 +3324,13 @@ class SqlBaseParser extends Parser {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(490);
+ setState(495);
switch (_input.LA(1)) {
case T__0:
case ANALYZE:
case ANALYZED:
case CAST:
+ case CATALOGS:
case COLUMNS:
case DEBUG:
case EXECUTABLE:
@@ -3309,7 +3369,7 @@ class SqlBaseParser extends Parser {
_ctx = _localctx;
_prevctx = _localctx;
- setState(487);
+ setState(492);
primaryExpression();
}
break;
@@ -3319,7 +3379,7 @@ class SqlBaseParser extends Parser {
_localctx = new ArithmeticUnaryContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(488);
+ setState(493);
((ArithmeticUnaryContext)_localctx).operator = _input.LT(1);
_la = _input.LA(1);
if ( !(_la==PLUS || _la==MINUS) ) {
@@ -3327,7 +3387,7 @@ class SqlBaseParser extends Parser {
} else {
consume();
}
- setState(489);
+ setState(494);
valueExpression(4);
}
break;
@@ -3335,7 +3395,7 @@ class SqlBaseParser extends Parser {
throw new NoViableAltException(this);
}
_ctx.stop = _input.LT(-1);
- setState(504);
+ setState(509);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,73,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
@@ -3343,7 +3403,7 @@ class SqlBaseParser extends Parser {
if ( _parseListeners!=null ) triggerExitRuleEvent();
_prevctx = _localctx;
{
- setState(502);
+ setState(507);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,72,_ctx) ) {
case 1:
@@ -3351,17 +3411,17 @@ class SqlBaseParser extends Parser {
_localctx = new ArithmeticBinaryContext(new ValueExpressionContext(_parentctx, _parentState));
((ArithmeticBinaryContext)_localctx).left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_valueExpression);
- setState(492);
+ setState(497);
if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
- setState(493);
+ setState(498);
((ArithmeticBinaryContext)_localctx).operator = _input.LT(1);
_la = _input.LA(1);
- if ( !(((((_la - 76)) & ~0x3f) == 0 && ((1L << (_la - 76)) & ((1L << (ASTERISK - 76)) | (1L << (SLASH - 76)) | (1L << (PERCENT - 76)))) != 0)) ) {
+ if ( !(((((_la - 78)) & ~0x3f) == 0 && ((1L << (_la - 78)) & ((1L << (ASTERISK - 78)) | (1L << (SLASH - 78)) | (1L << (PERCENT - 78)))) != 0)) ) {
((ArithmeticBinaryContext)_localctx).operator = (Token)_errHandler.recoverInline(this);
} else {
consume();
}
- setState(494);
+ setState(499);
((ArithmeticBinaryContext)_localctx).right = valueExpression(4);
}
break;
@@ -3370,9 +3430,9 @@ class SqlBaseParser extends Parser {
_localctx = new ArithmeticBinaryContext(new ValueExpressionContext(_parentctx, _parentState));
((ArithmeticBinaryContext)_localctx).left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_valueExpression);
- setState(495);
+ setState(500);
if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
- setState(496);
+ setState(501);
((ArithmeticBinaryContext)_localctx).operator = _input.LT(1);
_la = _input.LA(1);
if ( !(_la==PLUS || _la==MINUS) ) {
@@ -3380,7 +3440,7 @@ class SqlBaseParser extends Parser {
} else {
consume();
}
- setState(497);
+ setState(502);
((ArithmeticBinaryContext)_localctx).right = valueExpression(3);
}
break;
@@ -3389,18 +3449,18 @@ class SqlBaseParser extends Parser {
_localctx = new ComparisonContext(new ValueExpressionContext(_parentctx, _parentState));
((ComparisonContext)_localctx).left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_valueExpression);
- setState(498);
+ setState(503);
if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
- setState(499);
+ setState(504);
comparisonOperator();
- setState(500);
+ setState(505);
((ComparisonContext)_localctx).right = valueExpression(2);
}
break;
}
}
}
- setState(506);
+ setState(511);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,73,_ctx);
}
@@ -3627,24 +3687,24 @@ class SqlBaseParser extends Parser {
enterRule(_localctx, 52, RULE_primaryExpression);
int _la;
try {
- setState(556);
+ setState(561);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,78,_ctx) ) {
case 1:
_localctx = new CastContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(507);
- match(CAST);
- setState(508);
- match(T__0);
- setState(509);
- expression();
- setState(510);
- match(AS);
- setState(511);
- dataType();
setState(512);
+ match(CAST);
+ setState(513);
+ match(T__0);
+ setState(514);
+ expression();
+ setState(515);
+ match(AS);
+ setState(516);
+ dataType();
+ setState(517);
match(T__1);
}
break;
@@ -3652,17 +3712,17 @@ class SqlBaseParser extends Parser {
_localctx = new ExtractContext(_localctx);
enterOuterAlt(_localctx, 2);
{
- setState(514);
- match(EXTRACT);
- setState(515);
- match(T__0);
- setState(516);
- ((ExtractContext)_localctx).field = identifier();
- setState(517);
- match(FROM);
- setState(518);
- valueExpression(0);
setState(519);
+ match(EXTRACT);
+ setState(520);
+ match(T__0);
+ setState(521);
+ ((ExtractContext)_localctx).field = identifier();
+ setState(522);
+ match(FROM);
+ setState(523);
+ valueExpression(0);
+ setState(524);
match(T__1);
}
break;
@@ -3670,7 +3730,7 @@ class SqlBaseParser extends Parser {
_localctx = new ConstantDefaultContext(_localctx);
enterOuterAlt(_localctx, 3);
{
- setState(521);
+ setState(526);
constant();
}
break;
@@ -3678,7 +3738,7 @@ class SqlBaseParser extends Parser {
_localctx = new StarContext(_localctx);
enterOuterAlt(_localctx, 4);
{
- setState(522);
+ setState(527);
match(ASTERISK);
}
break;
@@ -3686,18 +3746,18 @@ class SqlBaseParser extends Parser {
_localctx = new StarContext(_localctx);
enterOuterAlt(_localctx, 5);
{
- setState(526);
+ setState(531);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ANALYZE) | (1L << ANALYZED) | (1L << COLUMNS) | (1L << DEBUG) | (1L << EXECUTABLE) | (1L << EXPLAIN) | (1L << FORMAT) | (1L << FUNCTIONS) | (1L << GRAPHVIZ) | (1L << MAPPED) | (1L << OPTIMIZED) | (1L << PARSED) | (1L << PHYSICAL) | (1L << PLAN) | (1L << RLIKE) | (1L << QUERY) | (1L << SCHEMAS) | (1L << SHOW) | (1L << SYS) | (1L << TABLES) | (1L << TEXT) | (1L << TYPES))) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (VERIFY - 65)) | (1L << (IDENTIFIER - 65)) | (1L << (DIGIT_IDENTIFIER - 65)) | (1L << (QUOTED_IDENTIFIER - 65)) | (1L << (BACKQUOTED_IDENTIFIER - 65)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ANALYZE) | (1L << ANALYZED) | (1L << CATALOGS) | (1L << COLUMNS) | (1L << DEBUG) | (1L << EXECUTABLE) | (1L << EXPLAIN) | (1L << FORMAT) | (1L << FUNCTIONS) | (1L << GRAPHVIZ) | (1L << MAPPED) | (1L << OPTIMIZED) | (1L << PARSED) | (1L << PHYSICAL) | (1L << PLAN) | (1L << RLIKE) | (1L << QUERY) | (1L << SCHEMAS) | (1L << SHOW) | (1L << SYS) | (1L << TABLES) | (1L << TEXT))) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (TYPES - 65)) | (1L << (VERIFY - 65)) | (1L << (IDENTIFIER - 65)) | (1L << (DIGIT_IDENTIFIER - 65)) | (1L << (QUOTED_IDENTIFIER - 65)) | (1L << (BACKQUOTED_IDENTIFIER - 65)))) != 0)) {
{
- setState(523);
+ setState(528);
qualifiedName();
- setState(524);
+ setState(529);
match(DOT);
}
}
- setState(528);
+ setState(533);
match(ASTERISK);
}
break;
@@ -3705,45 +3765,45 @@ class SqlBaseParser extends Parser {
_localctx = new FunctionCallContext(_localctx);
enterOuterAlt(_localctx, 6);
{
- setState(529);
+ setState(534);
identifier();
- setState(530);
+ setState(535);
match(T__0);
- setState(542);
+ setState(547);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << ALL) | (1L << ANALYZE) | (1L << ANALYZED) | (1L << CAST) | (1L << COLUMNS) | (1L << DEBUG) | (1L << DISTINCT) | (1L << EXECUTABLE) | (1L << EXISTS) | (1L << EXPLAIN) | (1L << EXTRACT) | (1L << FALSE) | (1L << FORMAT) | (1L << FUNCTIONS) | (1L << GRAPHVIZ) | (1L << MAPPED) | (1L << MATCH) | (1L << NOT) | (1L << NULL) | (1L << OPTIMIZED) | (1L << PARSED) | (1L << PHYSICAL) | (1L << PLAN) | (1L << RLIKE) | (1L << QUERY) | (1L << SCHEMAS) | (1L << SHOW) | (1L << SYS) | (1L << TABLES) | (1L << TEXT) | (1L << TRUE) | (1L << TYPES))) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (VERIFY - 65)) | (1L << (PLUS - 65)) | (1L << (MINUS - 65)) | (1L << (ASTERISK - 65)) | (1L << (STRING - 65)) | (1L << (INTEGER_VALUE - 65)) | (1L << (DECIMAL_VALUE - 65)) | (1L << (IDENTIFIER - 65)) | (1L << (DIGIT_IDENTIFIER - 65)) | (1L << (QUOTED_IDENTIFIER - 65)) | (1L << (BACKQUOTED_IDENTIFIER - 65)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << ALL) | (1L << ANALYZE) | (1L << ANALYZED) | (1L << CAST) | (1L << CATALOGS) | (1L << COLUMNS) | (1L << DEBUG) | (1L << DISTINCT) | (1L << EXECUTABLE) | (1L << EXISTS) | (1L << EXPLAIN) | (1L << EXTRACT) | (1L << FALSE) | (1L << FORMAT) | (1L << FUNCTIONS) | (1L << GRAPHVIZ) | (1L << MAPPED) | (1L << MATCH) | (1L << NOT) | (1L << NULL) | (1L << OPTIMIZED) | (1L << PARSED) | (1L << PHYSICAL) | (1L << PLAN) | (1L << RLIKE) | (1L << QUERY) | (1L << SCHEMAS) | (1L << SHOW) | (1L << SYS) | (1L << TABLES) | (1L << TEXT))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (TRUE - 64)) | (1L << (TYPES - 64)) | (1L << (VERIFY - 64)) | (1L << (PLUS - 64)) | (1L << (MINUS - 64)) | (1L << (ASTERISK - 64)) | (1L << (STRING - 64)) | (1L << (INTEGER_VALUE - 64)) | (1L << (DECIMAL_VALUE - 64)) | (1L << (IDENTIFIER - 64)) | (1L << (DIGIT_IDENTIFIER - 64)) | (1L << (QUOTED_IDENTIFIER - 64)) | (1L << (BACKQUOTED_IDENTIFIER - 64)))) != 0)) {
{
- setState(532);
+ setState(537);
_la = _input.LA(1);
if (_la==ALL || _la==DISTINCT) {
{
- setState(531);
+ setState(536);
setQuantifier();
}
}
- setState(534);
- expression();
setState(539);
+ expression();
+ setState(544);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__2) {
{
{
- setState(535);
+ setState(540);
match(T__2);
- setState(536);
+ setState(541);
expression();
}
}
- setState(541);
+ setState(546);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
- setState(544);
+ setState(549);
match(T__1);
}
break;
@@ -3751,11 +3811,11 @@ class SqlBaseParser extends Parser {
_localctx = new SubqueryExpressionContext(_localctx);
enterOuterAlt(_localctx, 7);
{
- setState(546);
+ setState(551);
match(T__0);
- setState(547);
+ setState(552);
query();
- setState(548);
+ setState(553);
match(T__1);
}
break;
@@ -3763,7 +3823,7 @@ class SqlBaseParser extends Parser {
_localctx = new ColumnReferenceContext(_localctx);
enterOuterAlt(_localctx, 8);
{
- setState(550);
+ setState(555);
identifier();
}
break;
@@ -3771,7 +3831,7 @@ class SqlBaseParser extends Parser {
_localctx = new DereferenceContext(_localctx);
enterOuterAlt(_localctx, 9);
{
- setState(551);
+ setState(556);
qualifiedName();
}
break;
@@ -3779,11 +3839,11 @@ class SqlBaseParser extends Parser {
_localctx = new ParenthesizedExpressionContext(_localctx);
enterOuterAlt(_localctx, 10);
{
- setState(552);
+ setState(557);
match(T__0);
- setState(553);
+ setState(558);
expression();
- setState(554);
+ setState(559);
match(T__1);
}
break;
@@ -3892,13 +3952,13 @@ class SqlBaseParser extends Parser {
enterRule(_localctx, 54, RULE_constant);
try {
int _alt;
- setState(566);
+ setState(571);
switch (_input.LA(1)) {
case NULL:
_localctx = new NullLiteralContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(558);
+ setState(563);
match(NULL);
}
break;
@@ -3907,7 +3967,7 @@ class SqlBaseParser extends Parser {
_localctx = new NumericLiteralContext(_localctx);
enterOuterAlt(_localctx, 2);
{
- setState(559);
+ setState(564);
number();
}
break;
@@ -3916,7 +3976,7 @@ class SqlBaseParser extends Parser {
_localctx = new BooleanLiteralContext(_localctx);
enterOuterAlt(_localctx, 3);
{
- setState(560);
+ setState(565);
booleanValue();
}
break;
@@ -3924,7 +3984,7 @@ class SqlBaseParser extends Parser {
_localctx = new StringLiteralContext(_localctx);
enterOuterAlt(_localctx, 4);
{
- setState(562);
+ setState(567);
_errHandler.sync(this);
_alt = 1;
do {
@@ -3932,7 +3992,7 @@ class SqlBaseParser extends Parser {
case 1:
{
{
- setState(561);
+ setState(566);
match(STRING);
}
}
@@ -3940,7 +4000,7 @@ class SqlBaseParser extends Parser {
default:
throw new NoViableAltException(this);
}
- setState(564);
+ setState(569);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,79,_ctx);
} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
@@ -3994,9 +4054,9 @@ class SqlBaseParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(568);
+ setState(573);
_la = _input.LA(1);
- if ( !(((((_la - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & ((1L << (EQ - 68)) | (1L << (NEQ - 68)) | (1L << (LT - 68)) | (1L << (LTE - 68)) | (1L << (GT - 68)) | (1L << (GTE - 68)))) != 0)) ) {
+ if ( !(((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (EQ - 70)) | (1L << (NEQ - 70)) | (1L << (LT - 70)) | (1L << (LTE - 70)) | (1L << (GT - 70)) | (1L << (GTE - 70)))) != 0)) ) {
_errHandler.recoverInline(this);
} else {
consume();
@@ -4043,7 +4103,7 @@ class SqlBaseParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(570);
+ setState(575);
_la = _input.LA(1);
if ( !(_la==FALSE || _la==TRUE) ) {
_errHandler.recoverInline(this);
@@ -4101,7 +4161,7 @@ class SqlBaseParser extends Parser {
_localctx = new PrimitiveDataTypeContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(572);
+ setState(577);
identifier();
}
}
@@ -4153,25 +4213,25 @@ class SqlBaseParser extends Parser {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(579);
+ setState(584);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,81,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(574);
+ setState(579);
identifier();
- setState(575);
+ setState(580);
match(DOT);
}
}
}
- setState(581);
+ setState(586);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,81,_ctx);
}
- setState(582);
+ setState(587);
identifier();
}
}
@@ -4216,18 +4276,19 @@ class SqlBaseParser extends Parser {
IdentifierContext _localctx = new IdentifierContext(_ctx, getState());
enterRule(_localctx, 64, RULE_identifier);
try {
- setState(586);
+ setState(591);
switch (_input.LA(1)) {
case QUOTED_IDENTIFIER:
case BACKQUOTED_IDENTIFIER:
enterOuterAlt(_localctx, 1);
{
- setState(584);
+ setState(589);
quoteIdentifier();
}
break;
case ANALYZE:
case ANALYZED:
+ case CATALOGS:
case COLUMNS:
case DEBUG:
case EXECUTABLE:
@@ -4253,7 +4314,7 @@ class SqlBaseParser extends Parser {
case DIGIT_IDENTIFIER:
enterOuterAlt(_localctx, 2);
{
- setState(585);
+ setState(590);
unquoteIdentifier();
}
break;
@@ -4306,43 +4367,43 @@ class SqlBaseParser extends Parser {
enterRule(_localctx, 66, RULE_tableIdentifier);
int _la;
try {
- setState(600);
+ setState(605);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,85,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(591);
+ setState(596);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ANALYZE) | (1L << ANALYZED) | (1L << COLUMNS) | (1L << DEBUG) | (1L << EXECUTABLE) | (1L << EXPLAIN) | (1L << FORMAT) | (1L << FUNCTIONS) | (1L << GRAPHVIZ) | (1L << MAPPED) | (1L << OPTIMIZED) | (1L << PARSED) | (1L << PHYSICAL) | (1L << PLAN) | (1L << RLIKE) | (1L << QUERY) | (1L << SCHEMAS) | (1L << SHOW) | (1L << SYS) | (1L << TABLES) | (1L << TEXT) | (1L << TYPES))) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (VERIFY - 65)) | (1L << (IDENTIFIER - 65)) | (1L << (DIGIT_IDENTIFIER - 65)) | (1L << (QUOTED_IDENTIFIER - 65)) | (1L << (BACKQUOTED_IDENTIFIER - 65)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ANALYZE) | (1L << ANALYZED) | (1L << CATALOGS) | (1L << COLUMNS) | (1L << DEBUG) | (1L << EXECUTABLE) | (1L << EXPLAIN) | (1L << FORMAT) | (1L << FUNCTIONS) | (1L << GRAPHVIZ) | (1L << MAPPED) | (1L << OPTIMIZED) | (1L << PARSED) | (1L << PHYSICAL) | (1L << PLAN) | (1L << RLIKE) | (1L << QUERY) | (1L << SCHEMAS) | (1L << SHOW) | (1L << SYS) | (1L << TABLES) | (1L << TEXT))) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (TYPES - 65)) | (1L << (VERIFY - 65)) | (1L << (IDENTIFIER - 65)) | (1L << (DIGIT_IDENTIFIER - 65)) | (1L << (QUOTED_IDENTIFIER - 65)) | (1L << (BACKQUOTED_IDENTIFIER - 65)))) != 0)) {
{
- setState(588);
+ setState(593);
((TableIdentifierContext)_localctx).catalog = identifier();
- setState(589);
+ setState(594);
match(T__3);
}
}
- setState(593);
+ setState(598);
match(TABLE_IDENTIFIER);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(597);
+ setState(602);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,84,_ctx) ) {
case 1:
{
- setState(594);
+ setState(599);
((TableIdentifierContext)_localctx).catalog = identifier();
- setState(595);
+ setState(600);
match(T__3);
}
break;
}
- setState(599);
+ setState(604);
((TableIdentifierContext)_localctx).name = identifier();
}
break;
@@ -4409,13 +4470,13 @@ class SqlBaseParser extends Parser {
QuoteIdentifierContext _localctx = new QuoteIdentifierContext(_ctx, getState());
enterRule(_localctx, 68, RULE_quoteIdentifier);
try {
- setState(604);
+ setState(609);
switch (_input.LA(1)) {
case QUOTED_IDENTIFIER:
_localctx = new QuotedIdentifierContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(602);
+ setState(607);
match(QUOTED_IDENTIFIER);
}
break;
@@ -4423,7 +4484,7 @@ class SqlBaseParser extends Parser {
_localctx = new BackQuotedIdentifierContext(_localctx);
enterOuterAlt(_localctx, 2);
{
- setState(603);
+ setState(608);
match(BACKQUOTED_IDENTIFIER);
}
break;
@@ -4495,18 +4556,19 @@ class SqlBaseParser extends Parser {
UnquoteIdentifierContext _localctx = new UnquoteIdentifierContext(_ctx, getState());
enterRule(_localctx, 70, RULE_unquoteIdentifier);
try {
- setState(609);
+ setState(614);
switch (_input.LA(1)) {
case IDENTIFIER:
_localctx = new UnquotedIdentifierContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(606);
+ setState(611);
match(IDENTIFIER);
}
break;
case ANALYZE:
case ANALYZED:
+ case CATALOGS:
case COLUMNS:
case DEBUG:
case EXECUTABLE:
@@ -4531,7 +4593,7 @@ class SqlBaseParser extends Parser {
_localctx = new UnquotedIdentifierContext(_localctx);
enterOuterAlt(_localctx, 2);
{
- setState(607);
+ setState(612);
nonReserved();
}
break;
@@ -4539,7 +4601,7 @@ class SqlBaseParser extends Parser {
_localctx = new DigitIdentifierContext(_localctx);
enterOuterAlt(_localctx, 3);
{
- setState(608);
+ setState(613);
match(DIGIT_IDENTIFIER);
}
break;
@@ -4608,13 +4670,13 @@ class SqlBaseParser extends Parser {
NumberContext _localctx = new NumberContext(_ctx, getState());
enterRule(_localctx, 72, RULE_number);
try {
- setState(613);
+ setState(618);
switch (_input.LA(1)) {
case DECIMAL_VALUE:
_localctx = new DecimalLiteralContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(611);
+ setState(616);
match(DECIMAL_VALUE);
}
break;
@@ -4622,7 +4684,7 @@ class SqlBaseParser extends Parser {
_localctx = new IntegerLiteralContext(_localctx);
enterOuterAlt(_localctx, 2);
{
- setState(612);
+ setState(617);
match(INTEGER_VALUE);
}
break;
@@ -4644,6 +4706,7 @@ class SqlBaseParser extends Parser {
public static class NonReservedContext extends ParserRuleContext {
public TerminalNode ANALYZE() { return getToken(SqlBaseParser.ANALYZE, 0); }
public TerminalNode ANALYZED() { return getToken(SqlBaseParser.ANALYZED, 0); }
+ public TerminalNode CATALOGS() { return getToken(SqlBaseParser.CATALOGS, 0); }
public TerminalNode COLUMNS() { return getToken(SqlBaseParser.COLUMNS, 0); }
public TerminalNode DEBUG() { return getToken(SqlBaseParser.DEBUG, 0); }
public TerminalNode EXECUTABLE() { return getToken(SqlBaseParser.EXECUTABLE, 0); }
@@ -4691,9 +4754,9 @@ class SqlBaseParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(615);
+ setState(620);
_la = _input.LA(1);
- if ( !(((((_la - 6)) & ~0x3f) == 0 && ((1L << (_la - 6)) & ((1L << (ANALYZE - 6)) | (1L << (ANALYZED - 6)) | (1L << (COLUMNS - 6)) | (1L << (DEBUG - 6)) | (1L << (EXECUTABLE - 6)) | (1L << (EXPLAIN - 6)) | (1L << (FORMAT - 6)) | (1L << (FUNCTIONS - 6)) | (1L << (GRAPHVIZ - 6)) | (1L << (MAPPED - 6)) | (1L << (OPTIMIZED - 6)) | (1L << (PARSED - 6)) | (1L << (PHYSICAL - 6)) | (1L << (PLAN - 6)) | (1L << (RLIKE - 6)) | (1L << (QUERY - 6)) | (1L << (SCHEMAS - 6)) | (1L << (SHOW - 6)) | (1L << (SYS - 6)) | (1L << (TABLES - 6)) | (1L << (TEXT - 6)) | (1L << (TYPES - 6)) | (1L << (VERIFY - 6)))) != 0)) ) {
+ if ( !(((((_la - 6)) & ~0x3f) == 0 && ((1L << (_la - 6)) & ((1L << (ANALYZE - 6)) | (1L << (ANALYZED - 6)) | (1L << (CATALOGS - 6)) | (1L << (COLUMNS - 6)) | (1L << (DEBUG - 6)) | (1L << (EXECUTABLE - 6)) | (1L << (EXPLAIN - 6)) | (1L << (FORMAT - 6)) | (1L << (FUNCTIONS - 6)) | (1L << (GRAPHVIZ - 6)) | (1L << (MAPPED - 6)) | (1L << (OPTIMIZED - 6)) | (1L << (PARSED - 6)) | (1L << (PHYSICAL - 6)) | (1L << (PLAN - 6)) | (1L << (RLIKE - 6)) | (1L << (QUERY - 6)) | (1L << (SCHEMAS - 6)) | (1L << (SHOW - 6)) | (1L << (SYS - 6)) | (1L << (TABLES - 6)) | (1L << (TEXT - 6)) | (1L << (TYPES - 6)) | (1L << (VERIFY - 6)))) != 0)) ) {
_errHandler.recoverInline(this);
} else {
consume();
@@ -4742,7 +4805,7 @@ class SqlBaseParser extends Parser {
}
public static final String _serializedATN =
- "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\3_\u026c\4\2\t\2\4"+
+ "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\3a\u0271\4\2\t\2\4"+
"\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t"+
"\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
"\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
@@ -4751,242 +4814,244 @@ class SqlBaseParser extends Parser {
"\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\7\4^\n\4\f\4\16\4a\13\4\3\4\5\4d\n"+
"\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\7\4m\n\4\f\4\16\4p\13\4\3\4\5\4s\n\4\3"+
"\4\3\4\3\4\3\4\5\4y\n\4\3\4\5\4|\n\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3"+
- "\4\5\4\u0087\n\4\3\4\5\4\u008a\n\4\3\4\3\4\3\4\3\4\3\4\5\4\u0091\n\4\3"+
- "\4\5\4\u0094\n\4\3\4\3\4\3\4\3\4\5\4\u009a\n\4\3\4\5\4\u009d\n\4\3\4\5"+
- "\4\u00a0\n\4\3\4\5\4\u00a3\n\4\3\4\3\4\5\4\u00a7\n\4\3\5\3\5\3\5\3\5\7"+
- "\5\u00ad\n\5\f\5\16\5\u00b0\13\5\5\5\u00b2\n\5\3\5\3\5\3\6\3\6\3\6\3\6"+
- "\3\6\3\6\7\6\u00bc\n\6\f\6\16\6\u00bf\13\6\5\6\u00c1\n\6\3\6\3\6\5\6\u00c5"+
- "\n\6\3\7\3\7\3\7\3\7\3\7\5\7\u00cc\n\7\3\b\3\b\5\b\u00d0\n\b\3\t\3\t\5"+
- "\t\u00d4\n\t\3\t\3\t\3\t\7\t\u00d9\n\t\f\t\16\t\u00dc\13\t\3\t\5\t\u00df"+
- "\n\t\3\t\3\t\5\t\u00e3\n\t\3\t\3\t\3\t\5\t\u00e8\n\t\3\t\3\t\5\t\u00ec"+
- "\n\t\3\n\3\n\3\n\3\n\7\n\u00f2\n\n\f\n\16\n\u00f5\13\n\3\13\5\13\u00f8"+
- "\n\13\3\13\3\13\3\13\7\13\u00fd\n\13\f\13\16\13\u0100\13\13\3\f\3\f\3"+
- "\r\3\r\3\r\3\r\7\r\u0108\n\r\f\r\16\r\u010b\13\r\5\r\u010d\n\r\3\r\3\r"+
- "\5\r\u0111\n\r\3\16\3\16\3\16\3\16\3\16\3\16\3\17\3\17\3\20\3\20\5\20"+
- "\u011d\n\20\3\20\5\20\u0120\n\20\3\21\3\21\7\21\u0124\n\21\f\21\16\21"+
- "\u0127\13\21\3\22\3\22\3\22\3\22\5\22\u012d\n\22\3\22\3\22\3\22\3\22\3"+
- "\22\5\22\u0134\n\22\3\23\5\23\u0137\n\23\3\23\3\23\5\23\u013b\n\23\3\23"+
- "\3\23\5\23\u013f\n\23\3\23\3\23\5\23\u0143\n\23\5\23\u0145\n\23\3\24\3"+
- "\24\3\24\3\24\3\24\3\24\3\24\7\24\u014e\n\24\f\24\16\24\u0151\13\24\3"+
- "\24\3\24\5\24\u0155\n\24\3\25\3\25\5\25\u0159\n\25\3\25\5\25\u015c\n\25"+
- "\3\25\3\25\3\25\3\25\5\25\u0162\n\25\3\25\5\25\u0165\n\25\3\25\3\25\3"+
- "\25\3\25\5\25\u016b\n\25\3\25\5\25\u016e\n\25\5\25\u0170\n\25\3\26\3\26"+
- "\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\7\27"+
- "\u0181\n\27\f\27\16\27\u0184\13\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27"+
- "\3\27\7\27\u018e\n\27\f\27\16\27\u0191\13\27\3\27\3\27\3\27\3\27\3\27"+
- "\3\27\3\27\3\27\3\27\7\27\u019c\n\27\f\27\16\27\u019f\13\27\3\27\3\27"+
- "\5\27\u01a3\n\27\3\27\3\27\3\27\3\27\3\27\3\27\7\27\u01ab\n\27\f\27\16"+
- "\27\u01ae\13\27\3\30\3\30\5\30\u01b2\n\30\3\31\5\31\u01b5\n\31\3\31\3"+
- "\31\3\31\3\31\3\31\3\31\5\31\u01bd\n\31\3\31\3\31\3\31\3\31\3\31\7\31"+
- "\u01c4\n\31\f\31\16\31\u01c7\13\31\3\31\3\31\3\31\5\31\u01cc\n\31\3\31"+
- "\3\31\3\31\3\31\3\31\3\31\5\31\u01d4\n\31\3\31\3\31\3\31\5\31\u01d9\n"+
- "\31\3\31\3\31\3\31\3\31\5\31\u01df\n\31\3\31\5\31\u01e2\n\31\3\32\3\32"+
- "\3\32\5\32\u01e7\n\32\3\33\3\33\3\33\3\33\5\33\u01ed\n\33\3\33\3\33\3"+
- "\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\7\33\u01f9\n\33\f\33\16\33\u01fc"+
+ "\4\5\4\u0087\n\4\3\4\5\4\u008a\n\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\5\4\u0093"+
+ "\n\4\3\4\5\4\u0096\n\4\3\4\3\4\3\4\3\4\5\4\u009c\n\4\3\4\5\4\u009f\n\4"+
+ "\3\4\5\4\u00a2\n\4\3\4\5\4\u00a5\n\4\3\4\3\4\3\4\3\4\3\4\5\4\u00ac\n\4"+
+ "\3\5\3\5\3\5\3\5\7\5\u00b2\n\5\f\5\16\5\u00b5\13\5\5\5\u00b7\n\5\3\5\3"+
+ "\5\3\6\3\6\3\6\3\6\3\6\3\6\7\6\u00c1\n\6\f\6\16\6\u00c4\13\6\5\6\u00c6"+
+ "\n\6\3\6\3\6\5\6\u00ca\n\6\3\7\3\7\3\7\3\7\3\7\5\7\u00d1\n\7\3\b\3\b\5"+
+ "\b\u00d5\n\b\3\t\3\t\5\t\u00d9\n\t\3\t\3\t\3\t\7\t\u00de\n\t\f\t\16\t"+
+ "\u00e1\13\t\3\t\5\t\u00e4\n\t\3\t\3\t\5\t\u00e8\n\t\3\t\3\t\3\t\5\t\u00ed"+
+ "\n\t\3\t\3\t\5\t\u00f1\n\t\3\n\3\n\3\n\3\n\7\n\u00f7\n\n\f\n\16\n\u00fa"+
+ "\13\n\3\13\5\13\u00fd\n\13\3\13\3\13\3\13\7\13\u0102\n\13\f\13\16\13\u0105"+
+ "\13\13\3\f\3\f\3\r\3\r\3\r\3\r\7\r\u010d\n\r\f\r\16\r\u0110\13\r\5\r\u0112"+
+ "\n\r\3\r\3\r\5\r\u0116\n\r\3\16\3\16\3\16\3\16\3\16\3\16\3\17\3\17\3\20"+
+ "\3\20\5\20\u0122\n\20\3\20\5\20\u0125\n\20\3\21\3\21\7\21\u0129\n\21\f"+
+ "\21\16\21\u012c\13\21\3\22\3\22\3\22\3\22\5\22\u0132\n\22\3\22\3\22\3"+
+ "\22\3\22\3\22\5\22\u0139\n\22\3\23\5\23\u013c\n\23\3\23\3\23\5\23\u0140"+
+ "\n\23\3\23\3\23\5\23\u0144\n\23\3\23\3\23\5\23\u0148\n\23\5\23\u014a\n"+
+ "\23\3\24\3\24\3\24\3\24\3\24\3\24\3\24\7\24\u0153\n\24\f\24\16\24\u0156"+
+ "\13\24\3\24\3\24\5\24\u015a\n\24\3\25\3\25\5\25\u015e\n\25\3\25\5\25\u0161"+
+ "\n\25\3\25\3\25\3\25\3\25\5\25\u0167\n\25\3\25\5\25\u016a\n\25\3\25\3"+
+ "\25\3\25\3\25\5\25\u0170\n\25\3\25\5\25\u0173\n\25\5\25\u0175\n\25\3\26"+
+ "\3\26\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27"+
+ "\7\27\u0186\n\27\f\27\16\27\u0189\13\27\3\27\3\27\3\27\3\27\3\27\3\27"+
+ "\3\27\3\27\7\27\u0193\n\27\f\27\16\27\u0196\13\27\3\27\3\27\3\27\3\27"+
+ "\3\27\3\27\3\27\3\27\3\27\7\27\u01a1\n\27\f\27\16\27\u01a4\13\27\3\27"+
+ "\3\27\5\27\u01a8\n\27\3\27\3\27\3\27\3\27\3\27\3\27\7\27\u01b0\n\27\f"+
+ "\27\16\27\u01b3\13\27\3\30\3\30\5\30\u01b7\n\30\3\31\5\31\u01ba\n\31\3"+
+ "\31\3\31\3\31\3\31\3\31\3\31\5\31\u01c2\n\31\3\31\3\31\3\31\3\31\3\31"+
+ "\7\31\u01c9\n\31\f\31\16\31\u01cc\13\31\3\31\3\31\3\31\5\31\u01d1\n\31"+
+ "\3\31\3\31\3\31\3\31\3\31\3\31\5\31\u01d9\n\31\3\31\3\31\3\31\5\31\u01de"+
+ "\n\31\3\31\3\31\3\31\3\31\5\31\u01e4\n\31\3\31\5\31\u01e7\n\31\3\32\3"+
+ "\32\3\32\5\32\u01ec\n\32\3\33\3\33\3\33\3\33\5\33\u01f2\n\33\3\33\3\33"+
+ "\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\7\33\u01fe\n\33\f\33\16\33\u0201"+
"\13\33\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34"+
- "\3\34\3\34\3\34\3\34\3\34\3\34\5\34\u0211\n\34\3\34\3\34\3\34\3\34\5\34"+
- "\u0217\n\34\3\34\3\34\3\34\7\34\u021c\n\34\f\34\16\34\u021f\13\34\5\34"+
- "\u0221\n\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34"+
- "\5\34\u022f\n\34\3\35\3\35\3\35\3\35\6\35\u0235\n\35\r\35\16\35\u0236"+
- "\5\35\u0239\n\35\3\36\3\36\3\37\3\37\3 \3 \3!\3!\3!\7!\u0244\n!\f!\16"+
- "!\u0247\13!\3!\3!\3\"\3\"\5\"\u024d\n\"\3#\3#\3#\5#\u0252\n#\3#\3#\3#"+
- "\3#\5#\u0258\n#\3#\5#\u025b\n#\3$\3$\5$\u025f\n$\3%\3%\3%\5%\u0264\n%"+
- "\3&\3&\5&\u0268\n&\3\'\3\'\3\'\2\4,\64(\2\4\6\b\n\f\16\20\22\24\26\30"+
- "\32\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJL\2\17\b\2\7\7\t\t\27\27**\60"+
- "\60\64\64\4\2 ??\4\2\t\t\60\60\4\2\35\35##\3\2\23\24\4\2\7\7TT\4\2\r"+
- "\r\23\23\4\2\7\7\25\25\3\2LM\3\2NP\3\2FK\4\2\33\33@@\17\2\b\t\21\22\27"+
- "\27\31\31\34\34\37 **\60\60\64\668:\u023e\3\2\2\2@\u0245\3\2\2\2B\u024c\3\2\2\2D"+
- "\u025a\3\2\2\2F\u025e\3\2\2\2H\u0263\3\2\2\2J\u0267\3\2\2\2L\u0269\3\2"+
- "\2\2NO\5\6\4\2OP\7\2\2\3P\3\3\2\2\2QR\5*\26\2RS\7\2\2\3S\5\3\2\2\2T\u00a7"+
- "\5\b\5\2Uc\7\31\2\2V_\7\3\2\2WX\7\66\2\2X^\t\2\2\2YZ\7\34\2\2Z^\t\3\2"+
- "\2[\\\7C\2\2\\^\5<\37\2]W\3\2\2\2]Y\3\2\2\2][\3\2\2\2^a\3\2\2\2_]\3\2"+
+ "\3\34\3\34\3\34\3\34\3\34\3\34\5\34\u0216\n\34\3\34\3\34\3\34\3\34\5\34"+
+ "\u021c\n\34\3\34\3\34\3\34\7\34\u0221\n\34\f\34\16\34\u0224\13\34\5\34"+
+ "\u0226\n\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34"+
+ "\5\34\u0234\n\34\3\35\3\35\3\35\3\35\6\35\u023a\n\35\r\35\16\35\u023b"+
+ "\5\35\u023e\n\35\3\36\3\36\3\37\3\37\3 \3 \3!\3!\3!\7!\u0249\n!\f!\16"+
+ "!\u024c\13!\3!\3!\3\"\3\"\5\"\u0252\n\"\3#\3#\3#\5#\u0257\n#\3#\3#\3#"+
+ "\3#\5#\u025d\n#\3#\5#\u0260\n#\3$\3$\5$\u0264\n$\3%\3%\3%\5%\u0269\n%"+
+ "\3&\3&\5&\u026d\n&\3\'\3\'\3\'\2\4,\64(\2\4\6\b\n\f\16\20\22\24\26\30"+
+ "\32\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJL\2\17\b\2\7\7\t\t\30\30++\61"+
+ "\61\65\65\4\2!!AA\4\2\t\t\61\61\4\2\36\36$$\3\2\24\25\4\2\7\7VV\4\2\r"+
+ "\r\24\24\4\2\7\7\26\26\3\2NO\3\2PR\3\2HM\4\2\34\34BB\20\2\b\t\21\23\30"+
+ "\30\32\32\35\35 !++\61\61\65\679;=>@ACCEE\u02c6\2N\3\2\2\2\4Q\3\2\2\2"+
+ "\6\u00ab\3\2\2\2\b\u00b6\3\2\2\2\n\u00ba\3\2\2\2\f\u00d0\3\2\2\2\16\u00d2"+
+ "\3\2\2\2\20\u00d6\3\2\2\2\22\u00f2\3\2\2\2\24\u00fc\3\2\2\2\26\u0106\3"+
+ "\2\2\2\30\u0115\3\2\2\2\32\u0117\3\2\2\2\34\u011d\3\2\2\2\36\u011f\3\2"+
+ "\2\2 \u0126\3\2\2\2\"\u0138\3\2\2\2$\u0149\3\2\2\2&\u0159\3\2\2\2(\u0174"+
+ "\3\2\2\2*\u0176\3\2\2\2,\u01a7\3\2\2\2.\u01b4\3\2\2\2\60\u01e6\3\2\2\2"+
+ "\62\u01e8\3\2\2\2\64\u01f1\3\2\2\2\66\u0233\3\2\2\28\u023d\3\2\2\2:\u023f"+
+ "\3\2\2\2<\u0241\3\2\2\2>\u0243\3\2\2\2@\u024a\3\2\2\2B\u0251\3\2\2\2D"+
+ "\u025f\3\2\2\2F\u0263\3\2\2\2H\u0268\3\2\2\2J\u026c\3\2\2\2L\u026e\3\2"+
+ "\2\2NO\5\6\4\2OP\7\2\2\3P\3\3\2\2\2QR\5*\26\2RS\7\2\2\3S\5\3\2\2\2T\u00ac"+
+ "\5\b\5\2Uc\7\32\2\2V_\7\3\2\2WX\7\67\2\2X^\t\2\2\2YZ\7\35\2\2Z^\t\3\2"+
+ "\2[\\\7E\2\2\\^\5<\37\2]W\3\2\2\2]Y\3\2\2\2][\3\2\2\2^a\3\2\2\2_]\3\2"+
"\2\2_`\3\2\2\2`b\3\2\2\2a_\3\2\2\2bd\7\4\2\2cV\3\2\2\2cd\3\2\2\2de\3\2"+
- "\2\2e\u00a7\5\6\4\2fr\7\22\2\2gn\7\3\2\2hi\7\66\2\2im\t\4\2\2jk\7\34\2"+
+ "\2\2e\u00ac\5\6\4\2fr\7\23\2\2gn\7\3\2\2hi\7\67\2\2im\t\4\2\2jk\7\35\2"+
"\2km\t\3\2\2lh\3\2\2\2lj\3\2\2\2mp\3\2\2\2nl\3\2\2\2no\3\2\2\2oq\3\2\2"+
- "\2pn\3\2\2\2qs\7\4\2\2rg\3\2\2\2rs\3\2\2\2st\3\2\2\2t\u00a7\5\6\4\2uv"+
- "\7<\2\2v{\7>\2\2wy\7(\2\2xw\3\2\2\2xy\3\2\2\2yz\3\2\2\2z|\5\62\32\2{x"+
- "\3\2\2\2{|\3\2\2\2|\u00a7\3\2\2\2}~\7<\2\2~\177\7\21\2\2\177\u0080\t\5"+
- "\2\2\u0080\u00a7\5D#\2\u0081\u0082\t\6\2\2\u0082\u00a7\5D#\2\u0083\u0084"+
- "\7<\2\2\u0084\u0089\7\37\2\2\u0085\u0087\7(\2\2\u0086\u0085\3\2\2\2\u0086"+
+ "\2pn\3\2\2\2qs\7\4\2\2rg\3\2\2\2rs\3\2\2\2st\3\2\2\2t\u00ac\5\6\4\2uv"+
+ "\7=\2\2v{\7@\2\2wy\7)\2\2xw\3\2\2\2xy\3\2\2\2yz\3\2\2\2z|\5\62\32\2{x"+
+ "\3\2\2\2{|\3\2\2\2|\u00ac\3\2\2\2}~\7=\2\2~\177\7\22\2\2\177\u0080\t\5"+
+ "\2\2\u0080\u00ac\5D#\2\u0081\u0082\t\6\2\2\u0082\u00ac\5D#\2\u0083\u0084"+
+ "\7=\2\2\u0084\u0089\7 \2\2\u0085\u0087\7)\2\2\u0086\u0085\3\2\2\2\u0086"+
"\u0087\3\2\2\2\u0087\u0088\3\2\2\2\u0088\u008a\5\62\32\2\u0089\u0086\3"+
- "\2\2\2\u0089\u008a\3\2\2\2\u008a\u00a7\3\2\2\2\u008b\u008c\7<\2\2\u008c"+
- "\u00a7\7:\2\2\u008d\u008e\7=\2\2\u008e\u0093\7>\2\2\u008f\u0091\7(\2\2"+
- "\u0090\u008f\3\2\2\2\u0090\u0091\3\2\2\2\u0091\u0092\3\2\2\2\u0092\u0094"+
- "\5\62\32\2\u0093\u0090\3\2\2\2\u0093\u0094\3\2\2\2\u0094\u00a7\3\2\2\2"+
- "\u0095\u0096\7=\2\2\u0096\u009c\7\21\2\2\u0097\u0099\7>\2\2\u0098\u009a"+
- "\7(\2\2\u0099\u0098\3\2\2\2\u0099\u009a\3\2\2\2\u009a\u009b\3\2\2\2\u009b"+
- "\u009d\5\62\32\2\u009c\u0097\3\2\2\2\u009c\u009d\3\2\2\2\u009d\u00a2\3"+
- "\2\2\2\u009e\u00a0\7(\2\2\u009f\u009e\3\2\2\2\u009f\u00a0\3\2\2\2\u00a0"+
- "\u00a1\3\2\2\2\u00a1\u00a3\5\62\32\2\u00a2\u009f\3\2\2\2\u00a2\u00a3\3"+
- "\2\2\2\u00a3\u00a7\3\2\2\2\u00a4\u00a5\7=\2\2\u00a5\u00a7\7A\2\2\u00a6"+
- "T\3\2\2\2\u00a6U\3\2\2\2\u00a6f\3\2\2\2\u00a6u\3\2\2\2\u00a6}\3\2\2\2"+
- "\u00a6\u0081\3\2\2\2\u00a6\u0083\3\2\2\2\u00a6\u008b\3\2\2\2\u00a6\u008d"+
- "\3\2\2\2\u00a6\u0095\3\2\2\2\u00a6\u00a4\3\2\2\2\u00a7\7\3\2\2\2\u00a8"+
- "\u00a9\7E\2\2\u00a9\u00ae\5\32\16\2\u00aa\u00ab\7\5\2\2\u00ab\u00ad\5"+
- "\32\16\2\u00ac\u00aa\3\2\2\2\u00ad\u00b0\3\2\2\2\u00ae\u00ac\3\2\2\2\u00ae"+
- "\u00af\3\2\2\2\u00af\u00b2\3\2\2\2\u00b0\u00ae\3\2\2\2\u00b1\u00a8\3\2"+
- "\2\2\u00b1\u00b2\3\2\2\2\u00b2\u00b3\3\2\2\2\u00b3\u00b4\5\n\6\2\u00b4"+
- "\t\3\2\2\2\u00b5\u00c0\5\f\7\2\u00b6\u00b7\7\62\2\2\u00b7\u00b8\7\17\2"+
- "\2\u00b8\u00bd\5\16\b\2\u00b9\u00ba\7\5\2\2\u00ba\u00bc\5\16\b\2\u00bb"+
- "\u00b9\3\2\2\2\u00bc\u00bf\3\2\2\2\u00bd\u00bb\3\2\2\2\u00bd\u00be\3\2"+
- "\2\2\u00be\u00c1\3\2\2\2\u00bf\u00bd\3\2\2\2\u00c0\u00b6\3\2\2\2\u00c0"+
- "\u00c1\3\2\2\2\u00c1\u00c4\3\2\2\2\u00c2\u00c3\7)\2\2\u00c3\u00c5\t\7"+
- "\2\2\u00c4\u00c2\3\2\2\2\u00c4\u00c5\3\2\2\2\u00c5\13\3\2\2\2\u00c6\u00cc"+
- "\5\20\t\2\u00c7\u00c8\7\3\2\2\u00c8\u00c9\5\n\6\2\u00c9\u00ca\7\4\2\2"+
- "\u00ca\u00cc\3\2\2\2\u00cb\u00c6\3\2\2\2\u00cb\u00c7\3\2\2\2\u00cc\r\3"+
- "\2\2\2\u00cd\u00cf\5*\26\2\u00ce\u00d0\t\b\2\2\u00cf\u00ce\3\2\2\2\u00cf"+
- "\u00d0\3\2\2\2\u00d0\17\3\2\2\2\u00d1\u00d3\7;\2\2\u00d2\u00d4\5\34\17"+
- "\2\u00d3\u00d2\3\2\2\2\u00d3\u00d4\3\2\2\2\u00d4\u00d5\3\2\2\2\u00d5\u00da"+
- "\5\36\20\2\u00d6\u00d7\7\5\2\2\u00d7\u00d9\5\36\20\2\u00d8\u00d6\3\2\2"+
- "\2\u00d9\u00dc\3\2\2\2\u00da\u00d8\3\2\2\2\u00da\u00db\3\2\2\2\u00db\u00de"+
- "\3\2\2\2\u00dc\u00da\3\2\2\2\u00dd\u00df\5\22\n\2\u00de\u00dd\3\2\2\2"+
- "\u00de\u00df\3\2\2\2\u00df\u00e2\3\2\2\2\u00e0\u00e1\7D\2\2\u00e1\u00e3"+
- "\5,\27\2\u00e2\u00e0\3\2\2\2\u00e2\u00e3\3\2\2\2\u00e3\u00e7\3\2\2\2\u00e4"+
- "\u00e5\7!\2\2\u00e5\u00e6\7\17\2\2\u00e6\u00e8\5\24\13\2\u00e7\u00e4\3"+
- "\2\2\2\u00e7\u00e8\3\2\2\2\u00e8\u00eb\3\2\2\2\u00e9\u00ea\7\"\2\2\u00ea"+
- "\u00ec\5,\27\2\u00eb\u00e9\3\2\2\2\u00eb\u00ec\3\2\2\2\u00ec\21\3\2\2"+
- "\2\u00ed\u00ee\7\35\2\2\u00ee\u00f3\5 \21\2\u00ef\u00f0\7\5\2\2\u00f0"+
- "\u00f2\5 \21\2\u00f1\u00ef\3\2\2\2\u00f2\u00f5\3\2\2\2\u00f3\u00f1\3\2"+
- "\2\2\u00f3\u00f4\3\2\2\2\u00f4\23\3\2\2\2\u00f5\u00f3\3\2\2\2\u00f6\u00f8"+
- "\5\34\17\2\u00f7\u00f6\3\2\2\2\u00f7\u00f8\3\2\2\2\u00f8\u00f9\3\2\2\2"+
- "\u00f9\u00fe\5\26\f\2\u00fa\u00fb\7\5\2\2\u00fb\u00fd\5\26\f\2\u00fc\u00fa"+
- "\3\2\2\2\u00fd\u0100\3\2\2\2\u00fe\u00fc\3\2\2\2\u00fe\u00ff\3\2\2\2\u00ff"+
- "\25\3\2\2\2\u0100\u00fe\3\2\2\2\u0101\u0102\5\30\r\2\u0102\27\3\2\2\2"+
- "\u0103\u010c\7\3\2\2\u0104\u0109\5*\26\2\u0105\u0106\7\5\2\2\u0106\u0108"+
- "\5*\26\2\u0107\u0105\3\2\2\2\u0108\u010b\3\2\2\2\u0109\u0107\3\2\2\2\u0109"+
- "\u010a\3\2\2\2\u010a\u010d\3\2\2\2\u010b\u0109\3\2\2\2\u010c\u0104\3\2"+
- "\2\2\u010c\u010d\3\2\2\2\u010d\u010e\3\2\2\2\u010e\u0111\7\4\2\2\u010f"+
- "\u0111\5*\26\2\u0110\u0103\3\2\2\2\u0110\u010f\3\2\2\2\u0111\31\3\2\2"+
- "\2\u0112\u0113\5B\"\2\u0113\u0114\7\f\2\2\u0114\u0115\7\3\2\2\u0115\u0116"+
- "\5\n\6\2\u0116\u0117\7\4\2\2\u0117\33\3\2\2\2\u0118\u0119\t\t\2\2\u0119"+
- "\35\3\2\2\2\u011a\u011f\5*\26\2\u011b\u011d\7\f\2\2\u011c\u011b\3\2\2"+
- "\2\u011c\u011d\3\2\2\2\u011d\u011e\3\2\2\2\u011e\u0120\5B\"\2\u011f\u011c"+
- "\3\2\2\2\u011f\u0120\3\2\2\2\u0120\37\3\2\2\2\u0121\u0125\5(\25\2\u0122"+
- "\u0124\5\"\22\2\u0123\u0122\3\2\2\2\u0124\u0127\3\2\2\2\u0125\u0123\3"+
- "\2\2\2\u0125\u0126\3\2\2\2\u0126!\3\2\2\2\u0127\u0125\3\2\2\2\u0128\u0129"+
- "\5$\23\2\u0129\u012a\7&\2\2\u012a\u012c\5(\25\2\u012b\u012d\5&\24\2\u012c"+
- "\u012b\3\2\2\2\u012c\u012d\3\2\2\2\u012d\u0134\3\2\2\2\u012e\u012f\7,"+
- "\2\2\u012f\u0130\5$\23\2\u0130\u0131\7&\2\2\u0131\u0132\5(\25\2\u0132"+
- "\u0134\3\2\2\2\u0133\u0128\3\2\2\2\u0133\u012e\3\2\2\2\u0134#\3\2\2\2"+
- "\u0135\u0137\7$\2\2\u0136\u0135\3\2\2\2\u0136\u0137\3\2\2\2\u0137\u0145"+
- "\3\2\2\2\u0138\u013a\7\'\2\2\u0139\u013b\7\63\2\2\u013a\u0139\3\2\2\2"+
- "\u013a\u013b\3\2\2\2\u013b\u0145\3\2\2\2\u013c\u013e\7\67\2\2\u013d\u013f"+
- "\7\63\2\2\u013e\u013d\3\2\2\2\u013e\u013f\3\2\2\2\u013f\u0145\3\2\2\2"+
- "\u0140\u0142\7\36\2\2\u0141\u0143\7\63\2\2\u0142\u0141\3\2\2\2\u0142\u0143"+
- "\3\2\2\2\u0143\u0145\3\2\2\2\u0144\u0136\3\2\2\2\u0144\u0138\3\2\2\2\u0144"+
- "\u013c\3\2\2\2\u0144\u0140\3\2\2\2\u0145%\3\2\2\2\u0146\u0147\7/\2\2\u0147"+
- "\u0155\5,\27\2\u0148\u0149\7B\2\2\u0149\u014a\7\3\2\2\u014a\u014f\5B\""+
- "\2\u014b\u014c\7\5\2\2\u014c\u014e\5B\"\2\u014d\u014b\3\2\2\2\u014e\u0151"+
- "\3\2\2\2\u014f\u014d\3\2\2\2\u014f\u0150\3\2\2\2\u0150\u0152\3\2\2\2\u0151"+
- "\u014f\3\2\2\2\u0152\u0153\7\4\2\2\u0153\u0155\3\2\2\2\u0154\u0146\3\2"+
- "\2\2\u0154\u0148\3\2\2\2\u0155\'\3\2\2\2\u0156\u015b\5D#\2\u0157\u0159"+
- "\7\f\2\2\u0158\u0157\3\2\2\2\u0158\u0159\3\2\2\2\u0159\u015a\3\2\2\2\u015a"+
- "\u015c\5@!\2\u015b\u0158\3\2\2\2\u015b\u015c\3\2\2\2\u015c\u0170\3\2\2"+
- "\2\u015d\u015e\7\3\2\2\u015e\u015f\5\n\6\2\u015f\u0164\7\4\2\2\u0160\u0162"+
- "\7\f\2\2\u0161\u0160\3\2\2\2\u0161\u0162\3\2\2\2\u0162\u0163\3\2\2\2\u0163"+
- "\u0165\5@!\2\u0164\u0161\3\2\2\2\u0164\u0165\3\2\2\2\u0165\u0170\3\2\2"+
- "\2\u0166\u0167\7\3\2\2\u0167\u0168\5 \21\2\u0168\u016d\7\4\2\2\u0169\u016b"+
- "\7\f\2\2\u016a\u0169\3\2\2\2\u016a\u016b\3\2\2\2\u016b\u016c\3\2\2\2\u016c"+
- "\u016e\5@!\2\u016d\u016a\3\2\2\2\u016d\u016e\3\2\2\2\u016e\u0170\3\2\2"+
- "\2\u016f\u0156\3\2\2\2\u016f\u015d\3\2\2\2\u016f\u0166\3\2\2\2\u0170)"+
- "\3\2\2\2\u0171\u0172\5,\27\2\u0172+\3\2\2\2\u0173\u0174\b\27\1\2\u0174"+
- "\u0175\7-\2\2\u0175\u01a3\5,\27\n\u0176\u0177\7\30\2\2\u0177\u0178\7\3"+
- "\2\2\u0178\u0179\5\b\5\2\u0179\u017a\7\4\2\2\u017a\u01a3\3\2\2\2\u017b"+
- "\u017c\79\2\2\u017c\u017d\7\3\2\2\u017d\u0182\7S\2\2\u017e\u017f\7\5\2"+
- "\2\u017f\u0181\7S\2\2\u0180\u017e\3\2\2\2\u0181\u0184\3\2\2\2\u0182\u0180"+
- "\3\2\2\2\u0182\u0183\3\2\2\2\u0183\u0185\3\2\2\2\u0184\u0182\3\2\2\2\u0185"+
- "\u01a3\7\4\2\2\u0186\u0187\7+\2\2\u0187\u0188\7\3\2\2\u0188\u0189\5@!"+
- "\2\u0189\u018a\7\5\2\2\u018a\u018f\7S\2\2\u018b\u018c\7\5\2\2\u018c\u018e"+
- "\7S\2\2\u018d\u018b\3\2\2\2\u018e\u0191\3\2\2\2\u018f\u018d\3\2\2\2\u018f"+
- "\u0190\3\2\2\2\u0190\u0192\3\2\2\2\u0191\u018f\3\2\2\2\u0192\u0193\7\4"+
- "\2\2\u0193\u01a3\3\2\2\2\u0194\u0195\7+\2\2\u0195\u0196\7\3\2\2\u0196"+
- "\u0197\7S\2\2\u0197\u0198\7\5\2\2\u0198\u019d\7S\2\2\u0199\u019a\7\5\2"+
- "\2\u019a\u019c\7S\2\2\u019b\u0199\3\2\2\2\u019c\u019f\3\2\2\2\u019d\u019b"+
- "\3\2\2\2\u019d\u019e\3\2\2\2\u019e\u01a0\3\2\2\2\u019f\u019d\3\2\2\2\u01a0"+
- "\u01a3\7\4\2\2\u01a1\u01a3\5.\30\2\u01a2\u0173\3\2\2\2\u01a2\u0176\3\2"+
- "\2\2\u01a2\u017b\3\2\2\2\u01a2\u0186\3\2\2\2\u01a2\u0194\3\2\2\2\u01a2"+
- "\u01a1\3\2\2\2\u01a3\u01ac\3\2\2\2\u01a4\u01a5\f\4\2\2\u01a5\u01a6\7\n"+
- "\2\2\u01a6\u01ab\5,\27\5\u01a7\u01a8\f\3\2\2\u01a8\u01a9\7\61\2\2\u01a9"+
- "\u01ab\5,\27\4\u01aa\u01a4\3\2\2\2\u01aa\u01a7\3\2\2\2\u01ab\u01ae\3\2"+
- "\2\2\u01ac\u01aa\3\2\2\2\u01ac\u01ad\3\2\2\2\u01ad-\3\2\2\2\u01ae\u01ac"+
- "\3\2\2\2\u01af\u01b1\5\64\33\2\u01b0\u01b2\5\60\31\2\u01b1\u01b0\3\2\2"+
- "\2\u01b1\u01b2\3\2\2\2\u01b2/\3\2\2\2\u01b3\u01b5\7-\2\2\u01b4\u01b3\3"+
- "\2\2\2\u01b4\u01b5\3\2\2\2\u01b5\u01b6\3\2\2\2\u01b6\u01b7\7\16\2\2\u01b7"+
- "\u01b8\5\64\33\2\u01b8\u01b9\7\n\2\2\u01b9\u01ba\5\64\33\2\u01ba\u01e2"+
- "\3\2\2\2\u01bb\u01bd\7-\2\2\u01bc\u01bb\3\2\2\2\u01bc\u01bd\3\2\2\2\u01bd"+
- "\u01be\3\2\2\2\u01be\u01bf\7#\2\2\u01bf\u01c0\7\3\2\2\u01c0\u01c5\5*\26"+
- "\2\u01c1\u01c2\7\5\2\2\u01c2\u01c4\5*\26\2\u01c3\u01c1\3\2\2\2\u01c4\u01c7"+
- "\3\2\2\2\u01c5\u01c3\3\2\2\2\u01c5\u01c6\3\2\2\2\u01c6\u01c8\3\2\2\2\u01c7"+
- "\u01c5\3\2\2\2\u01c8\u01c9\7\4\2\2\u01c9\u01e2\3\2\2\2\u01ca\u01cc\7-"+
- "\2\2\u01cb\u01ca\3\2\2\2\u01cb\u01cc\3\2\2\2\u01cc\u01cd\3\2\2\2\u01cd"+
- "\u01ce\7#\2\2\u01ce\u01cf\7\3\2\2\u01cf\u01d0\5\b\5\2\u01d0\u01d1\7\4"+
- "\2\2\u01d1\u01e2\3\2\2\2\u01d2\u01d4\7-\2\2\u01d3\u01d2\3\2\2\2\u01d3"+
- "\u01d4\3\2\2\2\u01d4\u01d5\3\2\2\2\u01d5\u01d6\7(\2\2\u01d6\u01e2\5\62"+
- "\32\2\u01d7\u01d9\7-\2\2\u01d8\u01d7\3\2\2\2\u01d8\u01d9\3\2\2\2\u01d9"+
- "\u01da\3\2\2\2\u01da\u01db\78\2\2\u01db\u01e2\7S\2\2\u01dc\u01de\7%\2"+
- "\2\u01dd\u01df\7-\2\2\u01de\u01dd\3\2\2\2\u01de\u01df\3\2\2\2\u01df\u01e0"+
- "\3\2\2\2\u01e0\u01e2\7.\2\2\u01e1\u01b4\3\2\2\2\u01e1\u01bc\3\2\2\2\u01e1"+
- "\u01cb\3\2\2\2\u01e1\u01d3\3\2\2\2\u01e1\u01d8\3\2\2\2\u01e1\u01dc\3\2"+
- "\2\2\u01e2\61\3\2\2\2\u01e3\u01e6\7S\2\2\u01e4\u01e5\7\26\2\2\u01e5\u01e7"+
- "\7S\2\2\u01e6\u01e4\3\2\2\2\u01e6\u01e7\3\2\2\2\u01e7\63\3\2\2\2\u01e8"+
- "\u01e9\b\33\1\2\u01e9\u01ed\5\66\34\2\u01ea\u01eb\t\n\2\2\u01eb\u01ed"+
- "\5\64\33\6\u01ec\u01e8\3\2\2\2\u01ec\u01ea\3\2\2\2\u01ed\u01fa\3\2\2\2"+
- "\u01ee\u01ef\f\5\2\2\u01ef\u01f0\t\13\2\2\u01f0\u01f9\5\64\33\6\u01f1"+
- "\u01f2\f\4\2\2\u01f2\u01f3\t\n\2\2\u01f3\u01f9\5\64\33\5\u01f4\u01f5\f"+
- "\3\2\2\u01f5\u01f6\5:\36\2\u01f6\u01f7\5\64\33\4\u01f7\u01f9\3\2\2\2\u01f8"+
- "\u01ee\3\2\2\2\u01f8\u01f1\3\2\2\2\u01f8\u01f4\3\2\2\2\u01f9\u01fc\3\2"+
- "\2\2\u01fa\u01f8\3\2\2\2\u01fa\u01fb\3\2\2\2\u01fb\65\3\2\2\2\u01fc\u01fa"+
- "\3\2\2\2\u01fd\u01fe\7\20\2\2\u01fe\u01ff\7\3\2\2\u01ff\u0200\5*\26\2"+
- "\u0200\u0201\7\f\2\2\u0201\u0202\5> \2\u0202\u0203\7\4\2\2\u0203\u022f"+
- "\3\2\2\2\u0204\u0205\7\32\2\2\u0205\u0206\7\3\2\2\u0206\u0207\5B\"\2\u0207"+
- "\u0208\7\35\2\2\u0208\u0209\5\64\33\2\u0209\u020a\7\4\2\2\u020a\u022f"+
- "\3\2\2\2\u020b\u022f\58\35\2\u020c\u022f\7N\2\2\u020d\u020e\5@!\2\u020e"+
- "\u020f\7R\2\2\u020f\u0211\3\2\2\2\u0210\u020d\3\2\2\2\u0210\u0211\3\2"+
- "\2\2\u0211\u0212\3\2\2\2\u0212\u022f\7N\2\2\u0213\u0214\5B\"\2\u0214\u0220"+
- "\7\3\2\2\u0215\u0217\5\34\17\2\u0216\u0215\3\2\2\2\u0216\u0217\3\2\2\2"+
- "\u0217\u0218\3\2\2\2\u0218\u021d\5*\26\2\u0219\u021a\7\5\2\2\u021a\u021c"+
- "\5*\26\2\u021b\u0219\3\2\2\2\u021c\u021f\3\2\2\2\u021d\u021b\3\2\2\2\u021d"+
- "\u021e\3\2\2\2\u021e\u0221\3\2\2\2\u021f\u021d\3\2\2\2\u0220\u0216\3\2"+
- "\2\2\u0220\u0221\3\2\2\2\u0221\u0222\3\2\2\2\u0222\u0223\7\4\2\2\u0223"+
- "\u022f\3\2\2\2\u0224\u0225\7\3\2\2\u0225\u0226\5\b\5\2\u0226\u0227\7\4"+
- "\2\2\u0227\u022f\3\2\2\2\u0228\u022f\5B\"\2\u0229\u022f\5@!\2\u022a\u022b"+
- "\7\3\2\2\u022b\u022c\5*\26\2\u022c\u022d\7\4\2\2\u022d\u022f\3\2\2\2\u022e"+
- "\u01fd\3\2\2\2\u022e\u0204\3\2\2\2\u022e\u020b\3\2\2\2\u022e\u020c\3\2"+
- "\2\2\u022e\u0210\3\2\2\2\u022e\u0213\3\2\2\2\u022e\u0224\3\2\2\2\u022e"+
- "\u0228\3\2\2\2\u022e\u0229\3\2\2\2\u022e\u022a\3\2\2\2\u022f\67\3\2\2"+
- "\2\u0230\u0239\7.\2\2\u0231\u0239\5J&\2\u0232\u0239\5<\37\2\u0233\u0235"+
- "\7S\2\2\u0234\u0233\3\2\2\2\u0235\u0236\3\2\2\2\u0236\u0234\3\2\2\2\u0236"+
- "\u0237\3\2\2\2\u0237\u0239\3\2\2\2\u0238\u0230\3\2\2\2\u0238\u0231\3\2"+
- "\2\2\u0238\u0232\3\2\2\2\u0238\u0234\3\2\2\2\u02399\3\2\2\2\u023a\u023b"+
- "\t\f\2\2\u023b;\3\2\2\2\u023c\u023d\t\r\2\2\u023d=\3\2\2\2\u023e\u023f"+
- "\5B\"\2\u023f?\3\2\2\2\u0240\u0241\5B\"\2\u0241\u0242\7R\2\2\u0242\u0244"+
- "\3\2\2\2\u0243\u0240\3\2\2\2\u0244\u0247\3\2\2\2\u0245\u0243\3\2\2\2\u0245"+
- "\u0246\3\2\2\2\u0246\u0248\3\2\2\2\u0247\u0245\3\2\2\2\u0248\u0249\5B"+
- "\"\2\u0249A\3\2\2\2\u024a\u024d\5F$\2\u024b\u024d\5H%\2\u024c\u024a\3"+
- "\2\2\2\u024c\u024b\3\2\2\2\u024dC\3\2\2\2\u024e\u024f\5B\"\2\u024f\u0250"+
- "\7\6\2\2\u0250\u0252\3\2\2\2\u0251\u024e\3\2\2\2\u0251\u0252\3\2\2\2\u0252"+
- "\u0253\3\2\2\2\u0253\u025b\7X\2\2\u0254\u0255\5B\"\2\u0255\u0256\7\6\2"+
- "\2\u0256\u0258\3\2\2\2\u0257\u0254\3\2\2\2\u0257\u0258\3\2\2\2\u0258\u0259"+
- "\3\2\2\2\u0259\u025b\5B\"\2\u025a\u0251\3\2\2\2\u025a\u0257\3\2\2\2\u025b"+
- "E\3\2\2\2\u025c\u025f\7Y\2\2\u025d\u025f\7Z\2\2\u025e\u025c\3\2\2\2\u025e"+
- "\u025d\3\2\2\2\u025fG\3\2\2\2\u0260\u0264\7V\2\2\u0261\u0264\5L\'\2\u0262"+
- "\u0264\7W\2\2\u0263\u0260\3\2\2\2\u0263\u0261\3\2\2\2\u0263\u0262\3\2"+
- "\2\2\u0264I\3\2\2\2\u0265\u0268\7U\2\2\u0266\u0268\7T\2\2\u0267\u0265"+
- "\3\2\2\2\u0267\u0266\3\2\2\2\u0268K\3\2\2\2\u0269\u026a\t\16\2\2\u026a"+
- "M\3\2\2\2[]_clnrx{\u0086\u0089\u0090\u0093\u0099\u009c\u009f\u00a2\u00a6"+
- "\u00ae\u00b1\u00bd\u00c0\u00c4\u00cb\u00cf\u00d3\u00da\u00de\u00e2\u00e7"+
- "\u00eb\u00f3\u00f7\u00fe\u0109\u010c\u0110\u011c\u011f\u0125\u012c\u0133"+
- "\u0136\u013a\u013e\u0142\u0144\u014f\u0154\u0158\u015b\u0161\u0164\u016a"+
- "\u016d\u016f\u0182\u018f\u019d\u01a2\u01aa\u01ac\u01b1\u01b4\u01bc\u01c5"+
- "\u01cb\u01d3\u01d8\u01de\u01e1\u01e6\u01ec\u01f8\u01fa\u0210\u0216\u021d"+
- "\u0220\u022e\u0236\u0238\u0245\u024c\u0251\u0257\u025a\u025e\u0263\u0267";
+ "\2\2\2\u0089\u008a\3\2\2\2\u008a\u00ac\3\2\2\2\u008b\u008c\7=\2\2\u008c"+
+ "\u00ac\7;\2\2\u008d\u008e\7>\2\2\u008e\u00ac\7\21\2\2\u008f\u0090\7>\2"+
+ "\2\u0090\u0095\7@\2\2\u0091\u0093\7)\2\2\u0092\u0091\3\2\2\2\u0092\u0093"+
+ "\3\2\2\2\u0093\u0094\3\2\2\2\u0094\u0096\5\62\32\2\u0095\u0092\3\2\2\2"+
+ "\u0095\u0096\3\2\2\2\u0096\u00ac\3\2\2\2\u0097\u0098\7>\2\2\u0098\u009e"+
+ "\7\22\2\2\u0099\u009b\7@\2\2\u009a\u009c\7)\2\2\u009b\u009a\3\2\2\2\u009b"+
+ "\u009c\3\2\2\2\u009c\u009d\3\2\2\2\u009d\u009f\5\62\32\2\u009e\u0099\3"+
+ "\2\2\2\u009e\u009f\3\2\2\2\u009f\u00a4\3\2\2\2\u00a0\u00a2\7)\2\2\u00a1"+
+ "\u00a0\3\2\2\2\u00a1\u00a2\3\2\2\2\u00a2\u00a3\3\2\2\2\u00a3\u00a5\5\62"+
+ "\32\2\u00a4\u00a1\3\2\2\2\u00a4\u00a5\3\2\2\2\u00a5\u00ac\3\2\2\2\u00a6"+
+ "\u00a7\7>\2\2\u00a7\u00ac\7C\2\2\u00a8\u00a9\7>\2\2\u00a9\u00aa\7?\2\2"+
+ "\u00aa\u00ac\7C\2\2\u00abT\3\2\2\2\u00abU\3\2\2\2\u00abf\3\2\2\2\u00ab"+
+ "u\3\2\2\2\u00ab}\3\2\2\2\u00ab\u0081\3\2\2\2\u00ab\u0083\3\2\2\2\u00ab"+
+ "\u008b\3\2\2\2\u00ab\u008d\3\2\2\2\u00ab\u008f\3\2\2\2\u00ab\u0097\3\2"+
+ "\2\2\u00ab\u00a6\3\2\2\2\u00ab\u00a8\3\2\2\2\u00ac\7\3\2\2\2\u00ad\u00ae"+
+ "\7G\2\2\u00ae\u00b3\5\32\16\2\u00af\u00b0\7\5\2\2\u00b0\u00b2\5\32\16"+
+ "\2\u00b1\u00af\3\2\2\2\u00b2\u00b5\3\2\2\2\u00b3\u00b1\3\2\2\2\u00b3\u00b4"+
+ "\3\2\2\2\u00b4\u00b7\3\2\2\2\u00b5\u00b3\3\2\2\2\u00b6\u00ad\3\2\2\2\u00b6"+
+ "\u00b7\3\2\2\2\u00b7\u00b8\3\2\2\2\u00b8\u00b9\5\n\6\2\u00b9\t\3\2\2\2"+
+ "\u00ba\u00c5\5\f\7\2\u00bb\u00bc\7\63\2\2\u00bc\u00bd\7\17\2\2\u00bd\u00c2"+
+ "\5\16\b\2\u00be\u00bf\7\5\2\2\u00bf\u00c1\5\16\b\2\u00c0\u00be\3\2\2\2"+
+ "\u00c1\u00c4\3\2\2\2\u00c2\u00c0\3\2\2\2\u00c2\u00c3\3\2\2\2\u00c3\u00c6"+
+ "\3\2\2\2\u00c4\u00c2\3\2\2\2\u00c5\u00bb\3\2\2\2\u00c5\u00c6\3\2\2\2\u00c6"+
+ "\u00c9\3\2\2\2\u00c7\u00c8\7*\2\2\u00c8\u00ca\t\7\2\2\u00c9\u00c7\3\2"+
+ "\2\2\u00c9\u00ca\3\2\2\2\u00ca\13\3\2\2\2\u00cb\u00d1\5\20\t\2\u00cc\u00cd"+
+ "\7\3\2\2\u00cd\u00ce\5\n\6\2\u00ce\u00cf\7\4\2\2\u00cf\u00d1\3\2\2\2\u00d0"+
+ "\u00cb\3\2\2\2\u00d0\u00cc\3\2\2\2\u00d1\r\3\2\2\2\u00d2\u00d4\5*\26\2"+
+ "\u00d3\u00d5\t\b\2\2\u00d4\u00d3\3\2\2\2\u00d4\u00d5\3\2\2\2\u00d5\17"+
+ "\3\2\2\2\u00d6\u00d8\7<\2\2\u00d7\u00d9\5\34\17\2\u00d8\u00d7\3\2\2\2"+
+ "\u00d8\u00d9\3\2\2\2\u00d9\u00da\3\2\2\2\u00da\u00df\5\36\20\2\u00db\u00dc"+
+ "\7\5\2\2\u00dc\u00de\5\36\20\2\u00dd\u00db\3\2\2\2\u00de\u00e1\3\2\2\2"+
+ "\u00df\u00dd\3\2\2\2\u00df\u00e0\3\2\2\2\u00e0\u00e3\3\2\2\2\u00e1\u00df"+
+ "\3\2\2\2\u00e2\u00e4\5\22\n\2\u00e3\u00e2\3\2\2\2\u00e3\u00e4\3\2\2\2"+
+ "\u00e4\u00e7\3\2\2\2\u00e5\u00e6\7F\2\2\u00e6\u00e8\5,\27\2\u00e7\u00e5"+
+ "\3\2\2\2\u00e7\u00e8\3\2\2\2\u00e8\u00ec\3\2\2\2\u00e9\u00ea\7\"\2\2\u00ea"+
+ "\u00eb\7\17\2\2\u00eb\u00ed\5\24\13\2\u00ec\u00e9\3\2\2\2\u00ec\u00ed"+
+ "\3\2\2\2\u00ed\u00f0\3\2\2\2\u00ee\u00ef\7#\2\2\u00ef\u00f1\5,\27\2\u00f0"+
+ "\u00ee\3\2\2\2\u00f0\u00f1\3\2\2\2\u00f1\21\3\2\2\2\u00f2\u00f3\7\36\2"+
+ "\2\u00f3\u00f8\5 \21\2\u00f4\u00f5\7\5\2\2\u00f5\u00f7\5 \21\2\u00f6\u00f4"+
+ "\3\2\2\2\u00f7\u00fa\3\2\2\2\u00f8\u00f6\3\2\2\2\u00f8\u00f9\3\2\2\2\u00f9"+
+ "\23\3\2\2\2\u00fa\u00f8\3\2\2\2\u00fb\u00fd\5\34\17\2\u00fc\u00fb\3\2"+
+ "\2\2\u00fc\u00fd\3\2\2\2\u00fd\u00fe\3\2\2\2\u00fe\u0103\5\26\f\2\u00ff"+
+ "\u0100\7\5\2\2\u0100\u0102\5\26\f\2\u0101\u00ff\3\2\2\2\u0102\u0105\3"+
+ "\2\2\2\u0103\u0101\3\2\2\2\u0103\u0104\3\2\2\2\u0104\25\3\2\2\2\u0105"+
+ "\u0103\3\2\2\2\u0106\u0107\5\30\r\2\u0107\27\3\2\2\2\u0108\u0111\7\3\2"+
+ "\2\u0109\u010e\5*\26\2\u010a\u010b\7\5\2\2\u010b\u010d\5*\26\2\u010c\u010a"+
+ "\3\2\2\2\u010d\u0110\3\2\2\2\u010e\u010c\3\2\2\2\u010e\u010f\3\2\2\2\u010f"+
+ "\u0112\3\2\2\2\u0110\u010e\3\2\2\2\u0111\u0109\3\2\2\2\u0111\u0112\3\2"+
+ "\2\2\u0112\u0113\3\2\2\2\u0113\u0116\7\4\2\2\u0114\u0116\5*\26\2\u0115"+
+ "\u0108\3\2\2\2\u0115\u0114\3\2\2\2\u0116\31\3\2\2\2\u0117\u0118\5B\"\2"+
+ "\u0118\u0119\7\f\2\2\u0119\u011a\7\3\2\2\u011a\u011b\5\n\6\2\u011b\u011c"+
+ "\7\4\2\2\u011c\33\3\2\2\2\u011d\u011e\t\t\2\2\u011e\35\3\2\2\2\u011f\u0124"+
+ "\5*\26\2\u0120\u0122\7\f\2\2\u0121\u0120\3\2\2\2\u0121\u0122\3\2\2\2\u0122"+
+ "\u0123\3\2\2\2\u0123\u0125\5B\"\2\u0124\u0121\3\2\2\2\u0124\u0125\3\2"+
+ "\2\2\u0125\37\3\2\2\2\u0126\u012a\5(\25\2\u0127\u0129\5\"\22\2\u0128\u0127"+
+ "\3\2\2\2\u0129\u012c\3\2\2\2\u012a\u0128\3\2\2\2\u012a\u012b\3\2\2\2\u012b"+
+ "!\3\2\2\2\u012c\u012a\3\2\2\2\u012d\u012e\5$\23\2\u012e\u012f\7\'\2\2"+
+ "\u012f\u0131\5(\25\2\u0130\u0132\5&\24\2\u0131\u0130\3\2\2\2\u0131\u0132"+
+ "\3\2\2\2\u0132\u0139\3\2\2\2\u0133\u0134\7-\2\2\u0134\u0135\5$\23\2\u0135"+
+ "\u0136\7\'\2\2\u0136\u0137\5(\25\2\u0137\u0139\3\2\2\2\u0138\u012d\3\2"+
+ "\2\2\u0138\u0133\3\2\2\2\u0139#\3\2\2\2\u013a\u013c\7%\2\2\u013b\u013a"+
+ "\3\2\2\2\u013b\u013c\3\2\2\2\u013c\u014a\3\2\2\2\u013d\u013f\7(\2\2\u013e"+
+ "\u0140\7\64\2\2\u013f\u013e\3\2\2\2\u013f\u0140\3\2\2\2\u0140\u014a\3"+
+ "\2\2\2\u0141\u0143\78\2\2\u0142\u0144\7\64\2\2\u0143\u0142\3\2\2\2\u0143"+
+ "\u0144\3\2\2\2\u0144\u014a\3\2\2\2\u0145\u0147\7\37\2\2\u0146\u0148\7"+
+ "\64\2\2\u0147\u0146\3\2\2\2\u0147\u0148\3\2\2\2\u0148\u014a\3\2\2\2\u0149"+
+ "\u013b\3\2\2\2\u0149\u013d\3\2\2\2\u0149\u0141\3\2\2\2\u0149\u0145\3\2"+
+ "\2\2\u014a%\3\2\2\2\u014b\u014c\7\60\2\2\u014c\u015a\5,\27\2\u014d\u014e"+
+ "\7D\2\2\u014e\u014f\7\3\2\2\u014f\u0154\5B\"\2\u0150\u0151\7\5\2\2\u0151"+
+ "\u0153\5B\"\2\u0152\u0150\3\2\2\2\u0153\u0156\3\2\2\2\u0154\u0152\3\2"+
+ "\2\2\u0154\u0155\3\2\2\2\u0155\u0157\3\2\2\2\u0156\u0154\3\2\2\2\u0157"+
+ "\u0158\7\4\2\2\u0158\u015a\3\2\2\2\u0159\u014b\3\2\2\2\u0159\u014d\3\2"+
+ "\2\2\u015a\'\3\2\2\2\u015b\u0160\5D#\2\u015c\u015e\7\f\2\2\u015d\u015c"+
+ "\3\2\2\2\u015d\u015e\3\2\2\2\u015e\u015f\3\2\2\2\u015f\u0161\5@!\2\u0160"+
+ "\u015d\3\2\2\2\u0160\u0161\3\2\2\2\u0161\u0175\3\2\2\2\u0162\u0163\7\3"+
+ "\2\2\u0163\u0164\5\n\6\2\u0164\u0169\7\4\2\2\u0165\u0167\7\f\2\2\u0166"+
+ "\u0165\3\2\2\2\u0166\u0167\3\2\2\2\u0167\u0168\3\2\2\2\u0168\u016a\5@"+
+ "!\2\u0169\u0166\3\2\2\2\u0169\u016a\3\2\2\2\u016a\u0175\3\2\2\2\u016b"+
+ "\u016c\7\3\2\2\u016c\u016d\5 \21\2\u016d\u0172\7\4\2\2\u016e\u0170\7\f"+
+ "\2\2\u016f\u016e\3\2\2\2\u016f\u0170\3\2\2\2\u0170\u0171\3\2\2\2\u0171"+
+ "\u0173\5@!\2\u0172\u016f\3\2\2\2\u0172\u0173\3\2\2\2\u0173\u0175\3\2\2"+
+ "\2\u0174\u015b\3\2\2\2\u0174\u0162\3\2\2\2\u0174\u016b\3\2\2\2\u0175)"+
+ "\3\2\2\2\u0176\u0177\5,\27\2\u0177+\3\2\2\2\u0178\u0179\b\27\1\2\u0179"+
+ "\u017a\7.\2\2\u017a\u01a8\5,\27\n\u017b\u017c\7\31\2\2\u017c\u017d\7\3"+
+ "\2\2\u017d\u017e\5\b\5\2\u017e\u017f\7\4\2\2\u017f\u01a8\3\2\2\2\u0180"+
+ "\u0181\7:\2\2\u0181\u0182\7\3\2\2\u0182\u0187\7U\2\2\u0183\u0184\7\5\2"+
+ "\2\u0184\u0186\7U\2\2\u0185\u0183\3\2\2\2\u0186\u0189\3\2\2\2\u0187\u0185"+
+ "\3\2\2\2\u0187\u0188\3\2\2\2\u0188\u018a\3\2\2\2\u0189\u0187\3\2\2\2\u018a"+
+ "\u01a8\7\4\2\2\u018b\u018c\7,\2\2\u018c\u018d\7\3\2\2\u018d\u018e\5@!"+
+ "\2\u018e\u018f\7\5\2\2\u018f\u0194\7U\2\2\u0190\u0191\7\5\2\2\u0191\u0193"+
+ "\7U\2\2\u0192\u0190\3\2\2\2\u0193\u0196\3\2\2\2\u0194\u0192\3\2\2\2\u0194"+
+ "\u0195\3\2\2\2\u0195\u0197\3\2\2\2\u0196\u0194\3\2\2\2\u0197\u0198\7\4"+
+ "\2\2\u0198\u01a8\3\2\2\2\u0199\u019a\7,\2\2\u019a\u019b\7\3\2\2\u019b"+
+ "\u019c\7U\2\2\u019c\u019d\7\5\2\2\u019d\u01a2\7U\2\2\u019e\u019f\7\5\2"+
+ "\2\u019f\u01a1\7U\2\2\u01a0\u019e\3\2\2\2\u01a1\u01a4\3\2\2\2\u01a2\u01a0"+
+ "\3\2\2\2\u01a2\u01a3\3\2\2\2\u01a3\u01a5\3\2\2\2\u01a4\u01a2\3\2\2\2\u01a5"+
+ "\u01a8\7\4\2\2\u01a6\u01a8\5.\30\2\u01a7\u0178\3\2\2\2\u01a7\u017b\3\2"+
+ "\2\2\u01a7\u0180\3\2\2\2\u01a7\u018b\3\2\2\2\u01a7\u0199\3\2\2\2\u01a7"+
+ "\u01a6\3\2\2\2\u01a8\u01b1\3\2\2\2\u01a9\u01aa\f\4\2\2\u01aa\u01ab\7\n"+
+ "\2\2\u01ab\u01b0\5,\27\5\u01ac\u01ad\f\3\2\2\u01ad\u01ae\7\62\2\2\u01ae"+
+ "\u01b0\5,\27\4\u01af\u01a9\3\2\2\2\u01af\u01ac\3\2\2\2\u01b0\u01b3\3\2"+
+ "\2\2\u01b1\u01af\3\2\2\2\u01b1\u01b2\3\2\2\2\u01b2-\3\2\2\2\u01b3\u01b1"+
+ "\3\2\2\2\u01b4\u01b6\5\64\33\2\u01b5\u01b7\5\60\31\2\u01b6\u01b5\3\2\2"+
+ "\2\u01b6\u01b7\3\2\2\2\u01b7/\3\2\2\2\u01b8\u01ba\7.\2\2\u01b9\u01b8\3"+
+ "\2\2\2\u01b9\u01ba\3\2\2\2\u01ba\u01bb\3\2\2\2\u01bb\u01bc\7\16\2\2\u01bc"+
+ "\u01bd\5\64\33\2\u01bd\u01be\7\n\2\2\u01be\u01bf\5\64\33\2\u01bf\u01e7"+
+ "\3\2\2\2\u01c0\u01c2\7.\2\2\u01c1\u01c0\3\2\2\2\u01c1\u01c2\3\2\2\2\u01c2"+
+ "\u01c3\3\2\2\2\u01c3\u01c4\7$\2\2\u01c4\u01c5\7\3\2\2\u01c5\u01ca\5*\26"+
+ "\2\u01c6\u01c7\7\5\2\2\u01c7\u01c9\5*\26\2\u01c8\u01c6\3\2\2\2\u01c9\u01cc"+
+ "\3\2\2\2\u01ca\u01c8\3\2\2\2\u01ca\u01cb\3\2\2\2\u01cb\u01cd\3\2\2\2\u01cc"+
+ "\u01ca\3\2\2\2\u01cd\u01ce\7\4\2\2\u01ce\u01e7\3\2\2\2\u01cf\u01d1\7."+
+ "\2\2\u01d0\u01cf\3\2\2\2\u01d0\u01d1\3\2\2\2\u01d1\u01d2\3\2\2\2\u01d2"+
+ "\u01d3\7$\2\2\u01d3\u01d4\7\3\2\2\u01d4\u01d5\5\b\5\2\u01d5\u01d6\7\4"+
+ "\2\2\u01d6\u01e7\3\2\2\2\u01d7\u01d9\7.\2\2\u01d8\u01d7\3\2\2\2\u01d8"+
+ "\u01d9\3\2\2\2\u01d9\u01da\3\2\2\2\u01da\u01db\7)\2\2\u01db\u01e7\5\62"+
+ "\32\2\u01dc\u01de\7.\2\2\u01dd\u01dc\3\2\2\2\u01dd\u01de\3\2\2\2\u01de"+
+ "\u01df\3\2\2\2\u01df\u01e0\79\2\2\u01e0\u01e7\7U\2\2\u01e1\u01e3\7&\2"+
+ "\2\u01e2\u01e4\7.\2\2\u01e3\u01e2\3\2\2\2\u01e3\u01e4\3\2\2\2\u01e4\u01e5"+
+ "\3\2\2\2\u01e5\u01e7\7/\2\2\u01e6\u01b9\3\2\2\2\u01e6\u01c1\3\2\2\2\u01e6"+
+ "\u01d0\3\2\2\2\u01e6\u01d8\3\2\2\2\u01e6\u01dd\3\2\2\2\u01e6\u01e1\3\2"+
+ "\2\2\u01e7\61\3\2\2\2\u01e8\u01eb\7U\2\2\u01e9\u01ea\7\27\2\2\u01ea\u01ec"+
+ "\7U\2\2\u01eb\u01e9\3\2\2\2\u01eb\u01ec\3\2\2\2\u01ec\63\3\2\2\2\u01ed"+
+ "\u01ee\b\33\1\2\u01ee\u01f2\5\66\34\2\u01ef\u01f0\t\n\2\2\u01f0\u01f2"+
+ "\5\64\33\6\u01f1\u01ed\3\2\2\2\u01f1\u01ef\3\2\2\2\u01f2\u01ff\3\2\2\2"+
+ "\u01f3\u01f4\f\5\2\2\u01f4\u01f5\t\13\2\2\u01f5\u01fe\5\64\33\6\u01f6"+
+ "\u01f7\f\4\2\2\u01f7\u01f8\t\n\2\2\u01f8\u01fe\5\64\33\5\u01f9\u01fa\f"+
+ "\3\2\2\u01fa\u01fb\5:\36\2\u01fb\u01fc\5\64\33\4\u01fc\u01fe\3\2\2\2\u01fd"+
+ "\u01f3\3\2\2\2\u01fd\u01f6\3\2\2\2\u01fd\u01f9\3\2\2\2\u01fe\u0201\3\2"+
+ "\2\2\u01ff\u01fd\3\2\2\2\u01ff\u0200\3\2\2\2\u0200\65\3\2\2\2\u0201\u01ff"+
+ "\3\2\2\2\u0202\u0203\7\20\2\2\u0203\u0204\7\3\2\2\u0204\u0205\5*\26\2"+
+ "\u0205\u0206\7\f\2\2\u0206\u0207\5> \2\u0207\u0208\7\4\2\2\u0208\u0234"+
+ "\3\2\2\2\u0209\u020a\7\33\2\2\u020a\u020b\7\3\2\2\u020b\u020c\5B\"\2\u020c"+
+ "\u020d\7\36\2\2\u020d\u020e\5\64\33\2\u020e\u020f\7\4\2\2\u020f\u0234"+
+ "\3\2\2\2\u0210\u0234\58\35\2\u0211\u0234\7P\2\2\u0212\u0213\5@!\2\u0213"+
+ "\u0214\7T\2\2\u0214\u0216\3\2\2\2\u0215\u0212\3\2\2\2\u0215\u0216\3\2"+
+ "\2\2\u0216\u0217\3\2\2\2\u0217\u0234\7P\2\2\u0218\u0219\5B\"\2\u0219\u0225"+
+ "\7\3\2\2\u021a\u021c\5\34\17\2\u021b\u021a\3\2\2\2\u021b\u021c\3\2\2\2"+
+ "\u021c\u021d\3\2\2\2\u021d\u0222\5*\26\2\u021e\u021f\7\5\2\2\u021f\u0221"+
+ "\5*\26\2\u0220\u021e\3\2\2\2\u0221\u0224\3\2\2\2\u0222\u0220\3\2\2\2\u0222"+
+ "\u0223\3\2\2\2\u0223\u0226\3\2\2\2\u0224\u0222\3\2\2\2\u0225\u021b\3\2"+
+ "\2\2\u0225\u0226\3\2\2\2\u0226\u0227\3\2\2\2\u0227\u0228\7\4\2\2\u0228"+
+ "\u0234\3\2\2\2\u0229\u022a\7\3\2\2\u022a\u022b\5\b\5\2\u022b\u022c\7\4"+
+ "\2\2\u022c\u0234\3\2\2\2\u022d\u0234\5B\"\2\u022e\u0234\5@!\2\u022f\u0230"+
+ "\7\3\2\2\u0230\u0231\5*\26\2\u0231\u0232\7\4\2\2\u0232\u0234\3\2\2\2\u0233"+
+ "\u0202\3\2\2\2\u0233\u0209\3\2\2\2\u0233\u0210\3\2\2\2\u0233\u0211\3\2"+
+ "\2\2\u0233\u0215\3\2\2\2\u0233\u0218\3\2\2\2\u0233\u0229\3\2\2\2\u0233"+
+ "\u022d\3\2\2\2\u0233\u022e\3\2\2\2\u0233\u022f\3\2\2\2\u0234\67\3\2\2"+
+ "\2\u0235\u023e\7/\2\2\u0236\u023e\5J&\2\u0237\u023e\5<\37\2\u0238\u023a"+
+ "\7U\2\2\u0239\u0238\3\2\2\2\u023a\u023b\3\2\2\2\u023b\u0239\3\2\2\2\u023b"+
+ "\u023c\3\2\2\2\u023c\u023e\3\2\2\2\u023d\u0235\3\2\2\2\u023d\u0236\3\2"+
+ "\2\2\u023d\u0237\3\2\2\2\u023d\u0239\3\2\2\2\u023e9\3\2\2\2\u023f\u0240"+
+ "\t\f\2\2\u0240;\3\2\2\2\u0241\u0242\t\r\2\2\u0242=\3\2\2\2\u0243\u0244"+
+ "\5B\"\2\u0244?\3\2\2\2\u0245\u0246\5B\"\2\u0246\u0247\7T\2\2\u0247\u0249"+
+ "\3\2\2\2\u0248\u0245\3\2\2\2\u0249\u024c\3\2\2\2\u024a\u0248\3\2\2\2\u024a"+
+ "\u024b\3\2\2\2\u024b\u024d\3\2\2\2\u024c\u024a\3\2\2\2\u024d\u024e\5B"+
+ "\"\2\u024eA\3\2\2\2\u024f\u0252\5F$\2\u0250\u0252\5H%\2\u0251\u024f\3"+
+ "\2\2\2\u0251\u0250\3\2\2\2\u0252C\3\2\2\2\u0253\u0254\5B\"\2\u0254\u0255"+
+ "\7\6\2\2\u0255\u0257\3\2\2\2\u0256\u0253\3\2\2\2\u0256\u0257\3\2\2\2\u0257"+
+ "\u0258\3\2\2\2\u0258\u0260\7Z\2\2\u0259\u025a\5B\"\2\u025a\u025b\7\6\2"+
+ "\2\u025b\u025d\3\2\2\2\u025c\u0259\3\2\2\2\u025c\u025d\3\2\2\2\u025d\u025e"+
+ "\3\2\2\2\u025e\u0260\5B\"\2\u025f\u0256\3\2\2\2\u025f\u025c\3\2\2\2\u0260"+
+ "E\3\2\2\2\u0261\u0264\7[\2\2\u0262\u0264\7\\\2\2\u0263\u0261\3\2\2\2\u0263"+
+ "\u0262\3\2\2\2\u0264G\3\2\2\2\u0265\u0269\7X\2\2\u0266\u0269\5L\'\2\u0267"+
+ "\u0269\7Y\2\2\u0268\u0265\3\2\2\2\u0268\u0266\3\2\2\2\u0268\u0267\3\2"+
+ "\2\2\u0269I\3\2\2\2\u026a\u026d\7W\2\2\u026b\u026d\7V\2\2\u026c\u026a"+
+ "\3\2\2\2\u026c\u026b\3\2\2\2\u026dK\3\2\2\2\u026e\u026f\t\16\2\2\u026f"+
+ "M\3\2\2\2[]_clnrx{\u0086\u0089\u0092\u0095\u009b\u009e\u00a1\u00a4\u00ab"+
+ "\u00b3\u00b6\u00c2\u00c5\u00c9\u00d0\u00d4\u00d8\u00df\u00e3\u00e7\u00ec"+
+ "\u00f0\u00f8\u00fc\u0103\u010e\u0111\u0115\u0121\u0124\u012a\u0131\u0138"+
+ "\u013b\u013f\u0143\u0147\u0149\u0154\u0159\u015d\u0160\u0166\u0169\u016f"+
+ "\u0172\u0174\u0187\u0194\u01a2\u01a7\u01af\u01b1\u01b6\u01b9\u01c1\u01ca"+
+ "\u01d0\u01d8\u01dd\u01e3\u01e6\u01eb\u01f1\u01fd\u01ff\u0215\u021b\u0222"+
+ "\u0225\u0233\u023b\u023d\u024a\u0251\u0256\u025c\u025f\u0263\u0268\u026c";
public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {
diff --git a/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/SqlBaseVisitor.java b/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/SqlBaseVisitor.java
index 9f600e8f87e..04933d09c7c 100644
--- a/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/SqlBaseVisitor.java
+++ b/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/SqlBaseVisitor.java
@@ -76,6 +76,13 @@ interface SqlBaseVisitor extends ParseTreeVisitor {
* @return the visitor result
*/
T visitShowSchemas(SqlBaseParser.ShowSchemasContext ctx);
+ /**
+ * Visit a parse tree produced by the {@code sysCatalogs}
+ * labeled alternative in {@link SqlBaseParser#statement}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitSysCatalogs(SqlBaseParser.SysCatalogsContext ctx);
/**
* Visit a parse tree produced by the {@code sysTables}
* labeled alternative in {@link SqlBaseParser#statement}.
@@ -97,6 +104,13 @@ interface SqlBaseVisitor extends ParseTreeVisitor {
* @return the visitor result
*/
T visitSysTypes(SqlBaseParser.SysTypesContext ctx);
+ /**
+ * Visit a parse tree produced by the {@code sysTableTypes}
+ * labeled alternative in {@link SqlBaseParser#statement}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitSysTableTypes(SqlBaseParser.SysTableTypesContext ctx);
/**
* Visit a parse tree produced by {@link SqlBaseParser#query}.
* @param ctx the parse tree
diff --git a/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/plan/logical/command/sys/SysCatalogs.java b/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/plan/logical/command/sys/SysCatalogs.java
new file mode 100644
index 00000000000..0aa2af9c202
--- /dev/null
+++ b/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/plan/logical/command/sys/SysCatalogs.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License;
+ * you may not use this file except in compliance with the Elastic License.
+ */
+package org.elasticsearch.xpack.sql.plan.logical.command.sys;
+
+import org.elasticsearch.action.ActionListener;
+import org.elasticsearch.xpack.sql.expression.Attribute;
+import org.elasticsearch.xpack.sql.plan.logical.command.Command;
+import org.elasticsearch.xpack.sql.session.Rows;
+import org.elasticsearch.xpack.sql.session.SchemaRowSet;
+import org.elasticsearch.xpack.sql.session.SqlSession;
+import org.elasticsearch.xpack.sql.tree.Location;
+import org.elasticsearch.xpack.sql.tree.NodeInfo;
+
+import java.util.List;
+
+import static java.util.Collections.singletonList;
+
+/**
+ * System command returning the catalogs (clusters) available.
+ * Currently returns only the current cluster name.
+ */
+public class SysCatalogs extends Command {
+
+ public SysCatalogs(Location location) {
+ super(location);
+ }
+
+ @Override
+ protected NodeInfo info() {
+ return NodeInfo.create(this);
+ }
+
+ @Override
+ public List output() {
+ return singletonList(keyword("TABLE_CAT"));
+ }
+
+ @Override
+ public final void execute(SqlSession session, ActionListener listener) {
+ String cluster = session.indexResolver().clusterName();
+ listener.onResponse(Rows.of(output(), singletonList(singletonList(cluster))));
+ }
+
+ @Override
+ public int hashCode() {
+ return getClass().hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+
+ if (obj == null || getClass() != obj.getClass()) {
+ return false;
+ }
+
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/plan/logical/command/sys/SysTableTypes.java b/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/plan/logical/command/sys/SysTableTypes.java
new file mode 100644
index 00000000000..6f395b3ef34
--- /dev/null
+++ b/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/plan/logical/command/sys/SysTableTypes.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License;
+ * you may not use this file except in compliance with the Elastic License.
+ */
+package org.elasticsearch.xpack.sql.plan.logical.command.sys;
+
+import org.elasticsearch.action.ActionListener;
+import org.elasticsearch.xpack.sql.analysis.index.IndexResolver.IndexType;
+import org.elasticsearch.xpack.sql.expression.Attribute;
+import org.elasticsearch.xpack.sql.plan.logical.command.Command;
+import org.elasticsearch.xpack.sql.session.Rows;
+import org.elasticsearch.xpack.sql.session.SchemaRowSet;
+import org.elasticsearch.xpack.sql.session.SqlSession;
+import org.elasticsearch.xpack.sql.tree.Location;
+import org.elasticsearch.xpack.sql.tree.NodeInfo;
+
+import java.util.List;
+import java.util.stream.Stream;
+
+import static java.util.Collections.singletonList;
+import static java.util.stream.Collectors.toList;
+
+/**
+ * System command returning the types of tables supported,
+ * index and alias.
+ */
+public class SysTableTypes extends Command {
+
+ public SysTableTypes(Location location) {
+ super(location);
+ }
+
+ @Override
+ protected NodeInfo info() {
+ return NodeInfo.create(this);
+ }
+
+ @Override
+ public List output() {
+ return singletonList(keyword("TABLE_TYPE"));
+ }
+
+ @Override
+ public final void execute(SqlSession session, ActionListener listener) {
+ listener.onResponse(Rows.of(output(), Stream.of(IndexType.values())
+ .map(t -> singletonList(t.toSql()))
+ .collect(toList())));
+ }
+
+ @Override
+ public int hashCode() {
+ return getClass().hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+
+ if (obj == null || getClass() != obj.getClass()) {
+ return false;
+ }
+
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/session/AbstractRowSet.java b/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/session/AbstractRowSet.java
index ed36871d3fc..6420953647d 100644
--- a/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/session/AbstractRowSet.java
+++ b/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/session/AbstractRowSet.java
@@ -12,8 +12,8 @@ public abstract class AbstractRowSet implements RowSet {
@Override
public Object column(int index) {
- Check.isTrue(index >= 0, "Invalid index %d; needs to be positive", index);
- Check.isTrue(index < columnCount(), "Invalid index %d for row of size %d", index, columnCount());
+ Check.isTrue(index >= 0, "Invalid index {}; needs to be positive", index);
+ Check.isTrue(index < columnCount(), "Invalid index {} for row of size {}", index, columnCount());
Check.isTrue(hasCurrentRow(), "RowSet contains no (more) entries; use hasCurrent() to check its status");
return getColumn(index);
}
diff --git a/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/plan/logical/command/sys/SysCatalogTests.java b/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/plan/logical/command/sys/SysCatalogTests.java
new file mode 100644
index 00000000000..84d73337271
--- /dev/null
+++ b/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/plan/logical/command/sys/SysCatalogTests.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License;
+ * you may not use this file except in compliance with the Elastic License.
+ */
+package org.elasticsearch.xpack.sql.plan.logical.command.sys;
+
+import org.elasticsearch.action.ActionListener;
+import org.elasticsearch.common.collect.Tuple;
+import org.elasticsearch.test.ESTestCase;
+import org.elasticsearch.xpack.sql.analysis.analyzer.Analyzer;
+import org.elasticsearch.xpack.sql.analysis.index.EsIndex;
+import org.elasticsearch.xpack.sql.analysis.index.IndexResolution;
+import org.elasticsearch.xpack.sql.analysis.index.IndexResolver;
+import org.elasticsearch.xpack.sql.expression.function.FunctionRegistry;
+import org.elasticsearch.xpack.sql.parser.SqlParser;
+import org.elasticsearch.xpack.sql.plan.logical.command.Command;
+import org.elasticsearch.xpack.sql.session.SqlSession;
+import org.elasticsearch.xpack.sql.type.TypesTests;
+import org.joda.time.DateTimeZone;
+
+import static org.mockito.Mockito.mock;
+
+public class SysCatalogTests extends ESTestCase {
+
+ private final SqlParser parser = new SqlParser(DateTimeZone.UTC);
+
+ private Tuple sql(String sql) {
+ EsIndex test = new EsIndex("test", TypesTests.loadMapping("mapping-multi-field-with-nested.json", true));
+ Analyzer analyzer = new Analyzer(new FunctionRegistry(), IndexResolution.valid(test), DateTimeZone.UTC);
+ Command cmd = (Command) analyzer.analyze(parser.createStatement(sql), true);
+
+ IndexResolver resolver = mock(IndexResolver.class);
+ SqlSession session = new SqlSession(null, null, null, resolver, null, null, null);
+ return new Tuple<>(cmd, session);
+ }
+
+ public void testSysCatalogs() throws Exception {
+ Tuple sql = sql("SYS TABLE TYPES");
+
+ sql.v1().execute(sql.v2(), ActionListener.wrap(r -> {
+ assertEquals(2, r.size());
+ assertEquals("BASE TABLE", r.column(0));
+ r.advanceRow();
+ assertEquals("ALIAS", r.column(0));
+ }, ex -> fail(ex.getMessage())));
+ }
+}
\ No newline at end of file
diff --git a/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/plan/logical/command/sys/SysTableTypesTests.java b/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/plan/logical/command/sys/SysTableTypesTests.java
new file mode 100644
index 00000000000..8568fed6867
--- /dev/null
+++ b/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/plan/logical/command/sys/SysTableTypesTests.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License;
+ * you may not use this file except in compliance with the Elastic License.
+ */
+package org.elasticsearch.xpack.sql.plan.logical.command.sys;
+
+import org.elasticsearch.action.ActionListener;
+import org.elasticsearch.common.collect.Tuple;
+import org.elasticsearch.test.ESTestCase;
+import org.elasticsearch.xpack.sql.analysis.analyzer.Analyzer;
+import org.elasticsearch.xpack.sql.analysis.index.EsIndex;
+import org.elasticsearch.xpack.sql.analysis.index.IndexResolution;
+import org.elasticsearch.xpack.sql.analysis.index.IndexResolver;
+import org.elasticsearch.xpack.sql.expression.function.FunctionRegistry;
+import org.elasticsearch.xpack.sql.parser.SqlParser;
+import org.elasticsearch.xpack.sql.plan.logical.command.Command;
+import org.elasticsearch.xpack.sql.session.SqlSession;
+import org.elasticsearch.xpack.sql.type.TypesTests;
+import org.joda.time.DateTimeZone;
+
+import static java.util.Collections.singletonList;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public class SysTableTypesTests extends ESTestCase {
+
+ private final SqlParser parser = new SqlParser(DateTimeZone.UTC);
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ private Tuple sql(String sql) {
+ EsIndex test = new EsIndex("test", TypesTests.loadMapping("mapping-multi-field-with-nested.json", true));
+ Analyzer analyzer = new Analyzer(new FunctionRegistry(), IndexResolution.valid(test), DateTimeZone.UTC);
+ Command cmd = (Command) analyzer.analyze(parser.createStatement(sql), true);
+
+ IndexResolver resolver = mock(IndexResolver.class);
+ when(resolver.clusterName()).thenReturn("cluster");
+
+ doAnswer(invocation -> {
+ ((ActionListener) invocation.getArguments()[2]).onResponse(singletonList(test));
+ return Void.TYPE;
+ }).when(resolver).resolveAsSeparateMappings(any(), any(), any());
+
+ SqlSession session = new SqlSession(null, null, null, resolver, null, null, null);
+ return new Tuple<>(cmd, session);
+ }
+
+ public void testSysCatalogs() throws Exception {
+ Tuple sql = sql("SYS CATALOGS");
+
+ sql.v1().execute(sql.v2(), ActionListener.wrap(r -> {
+ assertEquals(1, r.size());
+ assertEquals("cluster", r.column(0));
+ }, ex -> fail(ex.getMessage())));
+ }
+}
\ No newline at end of file
diff --git a/qa/sql/src/main/resources/command-sys.csv-spec b/qa/sql/src/main/resources/command-sys.csv-spec
new file mode 100644
index 00000000000..38f3772f76c
--- /dev/null
+++ b/qa/sql/src/main/resources/command-sys.csv-spec
@@ -0,0 +1,11 @@
+//
+// Sys Commands
+//
+
+sysTableTypes
+SYS TABLE TYPES;
+
+ TABLE_TYPE:s
+BASE TABLE
+ALIAS
+;