SQL: Introduce the catalog concept inside the grammar (elastic/x-pack-elasticsearch#3911)
Indices can now specify the catalog (the cluster) in which they belong. This is a first step in supporting both CCS and BI tools which tend to be explicit Original commit: elastic/x-pack-elasticsearch@0b4633facc
This commit is contained in:
parent
742c7001c9
commit
a5b129c10c
|
@ -233,8 +233,8 @@ identifier
|
||||||
;
|
;
|
||||||
|
|
||||||
tableIdentifier
|
tableIdentifier
|
||||||
: TABLE_IDENTIFIER
|
: (catalog=identifier ':')? TABLE_IDENTIFIER
|
||||||
| identifier
|
| (catalog=identifier ':')? name=identifier
|
||||||
;
|
;
|
||||||
|
|
||||||
quoteIdentifier
|
quoteIdentifier
|
||||||
|
|
|
@ -1,170 +1,172 @@
|
||||||
T__0=1
|
T__0=1
|
||||||
T__1=2
|
T__1=2
|
||||||
T__2=3
|
T__2=3
|
||||||
ALL=4
|
T__3=4
|
||||||
ANALYZE=5
|
ALL=5
|
||||||
ANALYZED=6
|
ANALYZE=6
|
||||||
AND=7
|
ANALYZED=7
|
||||||
ANY=8
|
AND=8
|
||||||
AS=9
|
ANY=9
|
||||||
ASC=10
|
AS=10
|
||||||
BETWEEN=11
|
ASC=11
|
||||||
BY=12
|
BETWEEN=12
|
||||||
CAST=13
|
BY=13
|
||||||
COLUMNS=14
|
CAST=14
|
||||||
DEBUG=15
|
COLUMNS=15
|
||||||
DESC=16
|
DEBUG=16
|
||||||
DESCRIBE=17
|
DESC=17
|
||||||
DISTINCT=18
|
DESCRIBE=18
|
||||||
ESCAPE=19
|
DISTINCT=19
|
||||||
EXECUTABLE=20
|
ESCAPE=20
|
||||||
EXISTS=21
|
EXECUTABLE=21
|
||||||
EXPLAIN=22
|
EXISTS=22
|
||||||
EXTRACT=23
|
EXPLAIN=23
|
||||||
FALSE=24
|
EXTRACT=24
|
||||||
FORMAT=25
|
FALSE=25
|
||||||
FROM=26
|
FORMAT=26
|
||||||
FULL=27
|
FROM=27
|
||||||
FUNCTIONS=28
|
FULL=28
|
||||||
GRAPHVIZ=29
|
FUNCTIONS=29
|
||||||
GROUP=30
|
GRAPHVIZ=30
|
||||||
HAVING=31
|
GROUP=31
|
||||||
IN=32
|
HAVING=32
|
||||||
INNER=33
|
IN=33
|
||||||
IS=34
|
INNER=34
|
||||||
JOIN=35
|
IS=35
|
||||||
LEFT=36
|
JOIN=36
|
||||||
LIKE=37
|
LEFT=37
|
||||||
LIMIT=38
|
LIKE=38
|
||||||
MAPPED=39
|
LIMIT=39
|
||||||
MATCH=40
|
MAPPED=40
|
||||||
NATURAL=41
|
MATCH=41
|
||||||
NOT=42
|
NATURAL=42
|
||||||
NULL=43
|
NOT=43
|
||||||
ON=44
|
NULL=44
|
||||||
OPTIMIZED=45
|
ON=45
|
||||||
OR=46
|
OPTIMIZED=46
|
||||||
ORDER=47
|
OR=47
|
||||||
OUTER=48
|
ORDER=48
|
||||||
PARSED=49
|
OUTER=49
|
||||||
PHYSICAL=50
|
PARSED=50
|
||||||
PLAN=51
|
PHYSICAL=51
|
||||||
RIGHT=52
|
PLAN=52
|
||||||
RLIKE=53
|
RIGHT=53
|
||||||
QUERY=54
|
RLIKE=54
|
||||||
SCHEMAS=55
|
QUERY=55
|
||||||
SELECT=56
|
SCHEMAS=56
|
||||||
SHOW=57
|
SELECT=57
|
||||||
SYS=58
|
SHOW=58
|
||||||
TABLES=59
|
SYS=59
|
||||||
TEXT=60
|
TABLES=60
|
||||||
TRUE=61
|
TEXT=61
|
||||||
TYPES=62
|
TRUE=62
|
||||||
USING=63
|
TYPES=63
|
||||||
VERIFY=64
|
USING=64
|
||||||
WHERE=65
|
VERIFY=65
|
||||||
WITH=66
|
WHERE=66
|
||||||
EQ=67
|
WITH=67
|
||||||
NEQ=68
|
EQ=68
|
||||||
LT=69
|
NEQ=69
|
||||||
LTE=70
|
LT=70
|
||||||
GT=71
|
LTE=71
|
||||||
GTE=72
|
GT=72
|
||||||
PLUS=73
|
GTE=73
|
||||||
MINUS=74
|
PLUS=74
|
||||||
ASTERISK=75
|
MINUS=75
|
||||||
SLASH=76
|
ASTERISK=76
|
||||||
PERCENT=77
|
SLASH=77
|
||||||
CONCAT=78
|
PERCENT=78
|
||||||
DOT=79
|
CONCAT=79
|
||||||
STRING=80
|
DOT=80
|
||||||
INTEGER_VALUE=81
|
STRING=81
|
||||||
DECIMAL_VALUE=82
|
INTEGER_VALUE=82
|
||||||
IDENTIFIER=83
|
DECIMAL_VALUE=83
|
||||||
DIGIT_IDENTIFIER=84
|
IDENTIFIER=84
|
||||||
TABLE_IDENTIFIER=85
|
DIGIT_IDENTIFIER=85
|
||||||
QUOTED_IDENTIFIER=86
|
TABLE_IDENTIFIER=86
|
||||||
BACKQUOTED_IDENTIFIER=87
|
QUOTED_IDENTIFIER=87
|
||||||
SIMPLE_COMMENT=88
|
BACKQUOTED_IDENTIFIER=88
|
||||||
BRACKETED_COMMENT=89
|
SIMPLE_COMMENT=89
|
||||||
WS=90
|
BRACKETED_COMMENT=90
|
||||||
UNRECOGNIZED=91
|
WS=91
|
||||||
DELIMITER=92
|
UNRECOGNIZED=92
|
||||||
|
DELIMITER=93
|
||||||
'('=1
|
'('=1
|
||||||
')'=2
|
')'=2
|
||||||
','=3
|
','=3
|
||||||
'ALL'=4
|
':'=4
|
||||||
'ANALYZE'=5
|
'ALL'=5
|
||||||
'ANALYZED'=6
|
'ANALYZE'=6
|
||||||
'AND'=7
|
'ANALYZED'=7
|
||||||
'ANY'=8
|
'AND'=8
|
||||||
'AS'=9
|
'ANY'=9
|
||||||
'ASC'=10
|
'AS'=10
|
||||||
'BETWEEN'=11
|
'ASC'=11
|
||||||
'BY'=12
|
'BETWEEN'=12
|
||||||
'CAST'=13
|
'BY'=13
|
||||||
'COLUMNS'=14
|
'CAST'=14
|
||||||
'DEBUG'=15
|
'COLUMNS'=15
|
||||||
'DESC'=16
|
'DEBUG'=16
|
||||||
'DESCRIBE'=17
|
'DESC'=17
|
||||||
'DISTINCT'=18
|
'DESCRIBE'=18
|
||||||
'ESCAPE'=19
|
'DISTINCT'=19
|
||||||
'EXECUTABLE'=20
|
'ESCAPE'=20
|
||||||
'EXISTS'=21
|
'EXECUTABLE'=21
|
||||||
'EXPLAIN'=22
|
'EXISTS'=22
|
||||||
'EXTRACT'=23
|
'EXPLAIN'=23
|
||||||
'FALSE'=24
|
'EXTRACT'=24
|
||||||
'FORMAT'=25
|
'FALSE'=25
|
||||||
'FROM'=26
|
'FORMAT'=26
|
||||||
'FULL'=27
|
'FROM'=27
|
||||||
'FUNCTIONS'=28
|
'FULL'=28
|
||||||
'GRAPHVIZ'=29
|
'FUNCTIONS'=29
|
||||||
'GROUP'=30
|
'GRAPHVIZ'=30
|
||||||
'HAVING'=31
|
'GROUP'=31
|
||||||
'IN'=32
|
'HAVING'=32
|
||||||
'INNER'=33
|
'IN'=33
|
||||||
'IS'=34
|
'INNER'=34
|
||||||
'JOIN'=35
|
'IS'=35
|
||||||
'LEFT'=36
|
'JOIN'=36
|
||||||
'LIKE'=37
|
'LEFT'=37
|
||||||
'LIMIT'=38
|
'LIKE'=38
|
||||||
'MAPPED'=39
|
'LIMIT'=39
|
||||||
'MATCH'=40
|
'MAPPED'=40
|
||||||
'NATURAL'=41
|
'MATCH'=41
|
||||||
'NOT'=42
|
'NATURAL'=42
|
||||||
'NULL'=43
|
'NOT'=43
|
||||||
'ON'=44
|
'NULL'=44
|
||||||
'OPTIMIZED'=45
|
'ON'=45
|
||||||
'OR'=46
|
'OPTIMIZED'=46
|
||||||
'ORDER'=47
|
'OR'=47
|
||||||
'OUTER'=48
|
'ORDER'=48
|
||||||
'PARSED'=49
|
'OUTER'=49
|
||||||
'PHYSICAL'=50
|
'PARSED'=50
|
||||||
'PLAN'=51
|
'PHYSICAL'=51
|
||||||
'RIGHT'=52
|
'PLAN'=52
|
||||||
'RLIKE'=53
|
'RIGHT'=53
|
||||||
'QUERY'=54
|
'RLIKE'=54
|
||||||
'SCHEMAS'=55
|
'QUERY'=55
|
||||||
'SELECT'=56
|
'SCHEMAS'=56
|
||||||
'SHOW'=57
|
'SELECT'=57
|
||||||
'SYS'=58
|
'SHOW'=58
|
||||||
'TABLES'=59
|
'SYS'=59
|
||||||
'TEXT'=60
|
'TABLES'=60
|
||||||
'TRUE'=61
|
'TEXT'=61
|
||||||
'TYPES'=62
|
'TRUE'=62
|
||||||
'USING'=63
|
'TYPES'=63
|
||||||
'VERIFY'=64
|
'USING'=64
|
||||||
'WHERE'=65
|
'VERIFY'=65
|
||||||
'WITH'=66
|
'WHERE'=66
|
||||||
'='=67
|
'WITH'=67
|
||||||
'<'=69
|
'='=68
|
||||||
'<='=70
|
'<'=70
|
||||||
'>'=71
|
'<='=71
|
||||||
'>='=72
|
'>'=72
|
||||||
'+'=73
|
'>='=73
|
||||||
'-'=74
|
'+'=74
|
||||||
'*'=75
|
'-'=75
|
||||||
'/'=76
|
'*'=76
|
||||||
'%'=77
|
'/'=77
|
||||||
'||'=78
|
'%'=78
|
||||||
'.'=79
|
'||'=79
|
||||||
|
'.'=80
|
||||||
|
|
|
@ -1,169 +1,171 @@
|
||||||
T__0=1
|
T__0=1
|
||||||
T__1=2
|
T__1=2
|
||||||
T__2=3
|
T__2=3
|
||||||
ALL=4
|
T__3=4
|
||||||
ANALYZE=5
|
ALL=5
|
||||||
ANALYZED=6
|
ANALYZE=6
|
||||||
AND=7
|
ANALYZED=7
|
||||||
ANY=8
|
AND=8
|
||||||
AS=9
|
ANY=9
|
||||||
ASC=10
|
AS=10
|
||||||
BETWEEN=11
|
ASC=11
|
||||||
BY=12
|
BETWEEN=12
|
||||||
CAST=13
|
BY=13
|
||||||
COLUMNS=14
|
CAST=14
|
||||||
DEBUG=15
|
COLUMNS=15
|
||||||
DESC=16
|
DEBUG=16
|
||||||
DESCRIBE=17
|
DESC=17
|
||||||
DISTINCT=18
|
DESCRIBE=18
|
||||||
ESCAPE=19
|
DISTINCT=19
|
||||||
EXECUTABLE=20
|
ESCAPE=20
|
||||||
EXISTS=21
|
EXECUTABLE=21
|
||||||
EXPLAIN=22
|
EXISTS=22
|
||||||
EXTRACT=23
|
EXPLAIN=23
|
||||||
FALSE=24
|
EXTRACT=24
|
||||||
FORMAT=25
|
FALSE=25
|
||||||
FROM=26
|
FORMAT=26
|
||||||
FULL=27
|
FROM=27
|
||||||
FUNCTIONS=28
|
FULL=28
|
||||||
GRAPHVIZ=29
|
FUNCTIONS=29
|
||||||
GROUP=30
|
GRAPHVIZ=30
|
||||||
HAVING=31
|
GROUP=31
|
||||||
IN=32
|
HAVING=32
|
||||||
INNER=33
|
IN=33
|
||||||
IS=34
|
INNER=34
|
||||||
JOIN=35
|
IS=35
|
||||||
LEFT=36
|
JOIN=36
|
||||||
LIKE=37
|
LEFT=37
|
||||||
LIMIT=38
|
LIKE=38
|
||||||
MAPPED=39
|
LIMIT=39
|
||||||
MATCH=40
|
MAPPED=40
|
||||||
NATURAL=41
|
MATCH=41
|
||||||
NOT=42
|
NATURAL=42
|
||||||
NULL=43
|
NOT=43
|
||||||
ON=44
|
NULL=44
|
||||||
OPTIMIZED=45
|
ON=45
|
||||||
OR=46
|
OPTIMIZED=46
|
||||||
ORDER=47
|
OR=47
|
||||||
OUTER=48
|
ORDER=48
|
||||||
PARSED=49
|
OUTER=49
|
||||||
PHYSICAL=50
|
PARSED=50
|
||||||
PLAN=51
|
PHYSICAL=51
|
||||||
RIGHT=52
|
PLAN=52
|
||||||
RLIKE=53
|
RIGHT=53
|
||||||
QUERY=54
|
RLIKE=54
|
||||||
SCHEMAS=55
|
QUERY=55
|
||||||
SELECT=56
|
SCHEMAS=56
|
||||||
SHOW=57
|
SELECT=57
|
||||||
SYS=58
|
SHOW=58
|
||||||
TABLES=59
|
SYS=59
|
||||||
TEXT=60
|
TABLES=60
|
||||||
TRUE=61
|
TEXT=61
|
||||||
TYPES=62
|
TRUE=62
|
||||||
USING=63
|
TYPES=63
|
||||||
VERIFY=64
|
USING=64
|
||||||
WHERE=65
|
VERIFY=65
|
||||||
WITH=66
|
WHERE=66
|
||||||
EQ=67
|
WITH=67
|
||||||
NEQ=68
|
EQ=68
|
||||||
LT=69
|
NEQ=69
|
||||||
LTE=70
|
LT=70
|
||||||
GT=71
|
LTE=71
|
||||||
GTE=72
|
GT=72
|
||||||
PLUS=73
|
GTE=73
|
||||||
MINUS=74
|
PLUS=74
|
||||||
ASTERISK=75
|
MINUS=75
|
||||||
SLASH=76
|
ASTERISK=76
|
||||||
PERCENT=77
|
SLASH=77
|
||||||
CONCAT=78
|
PERCENT=78
|
||||||
DOT=79
|
CONCAT=79
|
||||||
STRING=80
|
DOT=80
|
||||||
INTEGER_VALUE=81
|
STRING=81
|
||||||
DECIMAL_VALUE=82
|
INTEGER_VALUE=82
|
||||||
IDENTIFIER=83
|
DECIMAL_VALUE=83
|
||||||
DIGIT_IDENTIFIER=84
|
IDENTIFIER=84
|
||||||
TABLE_IDENTIFIER=85
|
DIGIT_IDENTIFIER=85
|
||||||
QUOTED_IDENTIFIER=86
|
TABLE_IDENTIFIER=86
|
||||||
BACKQUOTED_IDENTIFIER=87
|
QUOTED_IDENTIFIER=87
|
||||||
SIMPLE_COMMENT=88
|
BACKQUOTED_IDENTIFIER=88
|
||||||
BRACKETED_COMMENT=89
|
SIMPLE_COMMENT=89
|
||||||
WS=90
|
BRACKETED_COMMENT=90
|
||||||
UNRECOGNIZED=91
|
WS=91
|
||||||
|
UNRECOGNIZED=92
|
||||||
'('=1
|
'('=1
|
||||||
')'=2
|
')'=2
|
||||||
','=3
|
','=3
|
||||||
'ALL'=4
|
':'=4
|
||||||
'ANALYZE'=5
|
'ALL'=5
|
||||||
'ANALYZED'=6
|
'ANALYZE'=6
|
||||||
'AND'=7
|
'ANALYZED'=7
|
||||||
'ANY'=8
|
'AND'=8
|
||||||
'AS'=9
|
'ANY'=9
|
||||||
'ASC'=10
|
'AS'=10
|
||||||
'BETWEEN'=11
|
'ASC'=11
|
||||||
'BY'=12
|
'BETWEEN'=12
|
||||||
'CAST'=13
|
'BY'=13
|
||||||
'COLUMNS'=14
|
'CAST'=14
|
||||||
'DEBUG'=15
|
'COLUMNS'=15
|
||||||
'DESC'=16
|
'DEBUG'=16
|
||||||
'DESCRIBE'=17
|
'DESC'=17
|
||||||
'DISTINCT'=18
|
'DESCRIBE'=18
|
||||||
'ESCAPE'=19
|
'DISTINCT'=19
|
||||||
'EXECUTABLE'=20
|
'ESCAPE'=20
|
||||||
'EXISTS'=21
|
'EXECUTABLE'=21
|
||||||
'EXPLAIN'=22
|
'EXISTS'=22
|
||||||
'EXTRACT'=23
|
'EXPLAIN'=23
|
||||||
'FALSE'=24
|
'EXTRACT'=24
|
||||||
'FORMAT'=25
|
'FALSE'=25
|
||||||
'FROM'=26
|
'FORMAT'=26
|
||||||
'FULL'=27
|
'FROM'=27
|
||||||
'FUNCTIONS'=28
|
'FULL'=28
|
||||||
'GRAPHVIZ'=29
|
'FUNCTIONS'=29
|
||||||
'GROUP'=30
|
'GRAPHVIZ'=30
|
||||||
'HAVING'=31
|
'GROUP'=31
|
||||||
'IN'=32
|
'HAVING'=32
|
||||||
'INNER'=33
|
'IN'=33
|
||||||
'IS'=34
|
'INNER'=34
|
||||||
'JOIN'=35
|
'IS'=35
|
||||||
'LEFT'=36
|
'JOIN'=36
|
||||||
'LIKE'=37
|
'LEFT'=37
|
||||||
'LIMIT'=38
|
'LIKE'=38
|
||||||
'MAPPED'=39
|
'LIMIT'=39
|
||||||
'MATCH'=40
|
'MAPPED'=40
|
||||||
'NATURAL'=41
|
'MATCH'=41
|
||||||
'NOT'=42
|
'NATURAL'=42
|
||||||
'NULL'=43
|
'NOT'=43
|
||||||
'ON'=44
|
'NULL'=44
|
||||||
'OPTIMIZED'=45
|
'ON'=45
|
||||||
'OR'=46
|
'OPTIMIZED'=46
|
||||||
'ORDER'=47
|
'OR'=47
|
||||||
'OUTER'=48
|
'ORDER'=48
|
||||||
'PARSED'=49
|
'OUTER'=49
|
||||||
'PHYSICAL'=50
|
'PARSED'=50
|
||||||
'PLAN'=51
|
'PHYSICAL'=51
|
||||||
'RIGHT'=52
|
'PLAN'=52
|
||||||
'RLIKE'=53
|
'RIGHT'=53
|
||||||
'QUERY'=54
|
'RLIKE'=54
|
||||||
'SCHEMAS'=55
|
'QUERY'=55
|
||||||
'SELECT'=56
|
'SCHEMAS'=56
|
||||||
'SHOW'=57
|
'SELECT'=57
|
||||||
'SYS'=58
|
'SHOW'=58
|
||||||
'TABLES'=59
|
'SYS'=59
|
||||||
'TEXT'=60
|
'TABLES'=60
|
||||||
'TRUE'=61
|
'TEXT'=61
|
||||||
'TYPES'=62
|
'TRUE'=62
|
||||||
'USING'=63
|
'TYPES'=63
|
||||||
'VERIFY'=64
|
'USING'=64
|
||||||
'WHERE'=65
|
'VERIFY'=65
|
||||||
'WITH'=66
|
'WHERE'=66
|
||||||
'='=67
|
'WITH'=67
|
||||||
'<'=69
|
'='=68
|
||||||
'<='=70
|
'<'=70
|
||||||
'>'=71
|
'<='=71
|
||||||
'>='=72
|
'>'=72
|
||||||
'+'=73
|
'>='=73
|
||||||
'-'=74
|
'+'=74
|
||||||
'*'=75
|
'-'=75
|
||||||
'/'=76
|
'*'=76
|
||||||
'%'=77
|
'/'=77
|
||||||
'||'=78
|
'%'=78
|
||||||
'.'=79
|
'||'=79
|
||||||
|
'.'=80
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
*/
|
*/
|
||||||
package org.elasticsearch.xpack.sql.analysis.analyzer;
|
package org.elasticsearch.xpack.sql.analysis.analyzer;
|
||||||
|
|
||||||
|
import org.elasticsearch.xpack.sql.plan.TableIdentifier;
|
||||||
import org.elasticsearch.xpack.sql.plan.logical.LogicalPlan;
|
import org.elasticsearch.xpack.sql.plan.logical.LogicalPlan;
|
||||||
import org.elasticsearch.xpack.sql.plan.logical.UnresolvedRelation;
|
import org.elasticsearch.xpack.sql.plan.logical.UnresolvedRelation;
|
||||||
|
|
||||||
|
@ -22,9 +23,9 @@ public class PreAnalyzer {
|
||||||
public static class PreAnalysis {
|
public static class PreAnalysis {
|
||||||
public static final PreAnalysis EMPTY = new PreAnalysis(emptyList());
|
public static final PreAnalysis EMPTY = new PreAnalysis(emptyList());
|
||||||
|
|
||||||
public final List<String> indices;
|
public final List<TableIdentifier> indices;
|
||||||
|
|
||||||
PreAnalysis(List<String> indices) {
|
PreAnalysis(List<TableIdentifier> indices) {
|
||||||
this.indices = indices;
|
this.indices = indices;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -38,9 +39,9 @@ public class PreAnalyzer {
|
||||||
}
|
}
|
||||||
|
|
||||||
private PreAnalysis doPreAnalyze(LogicalPlan plan) {
|
private PreAnalysis doPreAnalyze(LogicalPlan plan) {
|
||||||
List<String> indices = new ArrayList<>();
|
List<TableIdentifier> indices = new ArrayList<>();
|
||||||
|
|
||||||
plan.forEachUp(p -> indices.add(p.table().index()), UnresolvedRelation.class);
|
plan.forEachUp(p -> indices.add(p.table()), UnresolvedRelation.class);
|
||||||
|
|
||||||
// mark plan as preAnalyzed (if it were marked, there would be no analysis)
|
// mark plan as preAnalyzed (if it were marked, there would be no analysis)
|
||||||
plan.forEachUp(LogicalPlan::setPreAnalyzed);
|
plan.forEachUp(LogicalPlan::setPreAnalyzed);
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
*/
|
*/
|
||||||
package org.elasticsearch.xpack.sql.parser;
|
package org.elasticsearch.xpack.sql.parser;
|
||||||
|
|
||||||
|
import org.antlr.v4.runtime.tree.ParseTree;
|
||||||
import org.elasticsearch.common.Strings;
|
import org.elasticsearch.common.Strings;
|
||||||
import org.elasticsearch.xpack.sql.parser.SqlBaseParser.IdentifierContext;
|
import org.elasticsearch.xpack.sql.parser.SqlBaseParser.IdentifierContext;
|
||||||
import org.elasticsearch.xpack.sql.parser.SqlBaseParser.QualifiedNameContext;
|
import org.elasticsearch.xpack.sql.parser.SqlBaseParser.QualifiedNameContext;
|
||||||
|
@ -16,11 +17,12 @@ abstract class IdentifierBuilder extends AbstractBuilder {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TableIdentifier visitTableIdentifier(TableIdentifierContext ctx) {
|
public TableIdentifier visitTableIdentifier(TableIdentifierContext ctx) {
|
||||||
String index = ctx.getText();
|
|
||||||
Location source = source(ctx);
|
Location source = source(ctx);
|
||||||
|
ParseTree tree = ctx.name != null ? ctx.name : ctx.TABLE_IDENTIFIER();
|
||||||
|
String index = tree.getText();
|
||||||
|
|
||||||
validateIndex(ctx.getText(), source);
|
validateIndex(index, source);
|
||||||
return new TableIdentifier(source, index);
|
return new TableIdentifier(source, visitIdentifier(ctx.catalog), index);
|
||||||
}
|
}
|
||||||
|
|
||||||
// see https://github.com/elastic/elasticsearch/issues/6736
|
// see https://github.com/elastic/elasticsearch/issues/6736
|
||||||
|
|
|
@ -22,27 +22,27 @@ class SqlBaseLexer extends Lexer {
|
||||||
protected static final PredictionContextCache _sharedContextCache =
|
protected static final PredictionContextCache _sharedContextCache =
|
||||||
new PredictionContextCache();
|
new PredictionContextCache();
|
||||||
public static final int
|
public static final int
|
||||||
T__0=1, T__1=2, T__2=3, ALL=4, ANALYZE=5, ANALYZED=6, AND=7, ANY=8, AS=9,
|
T__0=1, T__1=2, T__2=3, T__3=4, ALL=5, ANALYZE=6, ANALYZED=7, AND=8, ANY=9,
|
||||||
ASC=10, BETWEEN=11, BY=12, CAST=13, COLUMNS=14, DEBUG=15, DESC=16, DESCRIBE=17,
|
AS=10, ASC=11, BETWEEN=12, BY=13, CAST=14, COLUMNS=15, DEBUG=16, DESC=17,
|
||||||
DISTINCT=18, ESCAPE=19, EXECUTABLE=20, EXISTS=21, EXPLAIN=22, EXTRACT=23,
|
DESCRIBE=18, DISTINCT=19, ESCAPE=20, EXECUTABLE=21, EXISTS=22, EXPLAIN=23,
|
||||||
FALSE=24, FORMAT=25, FROM=26, FULL=27, FUNCTIONS=28, GRAPHVIZ=29, GROUP=30,
|
EXTRACT=24, FALSE=25, FORMAT=26, FROM=27, FULL=28, FUNCTIONS=29, GRAPHVIZ=30,
|
||||||
HAVING=31, IN=32, INNER=33, IS=34, JOIN=35, LEFT=36, LIKE=37, LIMIT=38,
|
GROUP=31, HAVING=32, IN=33, INNER=34, IS=35, JOIN=36, LEFT=37, LIKE=38,
|
||||||
MAPPED=39, MATCH=40, NATURAL=41, NOT=42, NULL=43, ON=44, OPTIMIZED=45,
|
LIMIT=39, MAPPED=40, MATCH=41, NATURAL=42, NOT=43, NULL=44, ON=45, OPTIMIZED=46,
|
||||||
OR=46, ORDER=47, OUTER=48, PARSED=49, PHYSICAL=50, PLAN=51, RIGHT=52,
|
OR=47, ORDER=48, OUTER=49, PARSED=50, PHYSICAL=51, PLAN=52, RIGHT=53,
|
||||||
RLIKE=53, QUERY=54, SCHEMAS=55, SELECT=56, SHOW=57, SYS=58, TABLES=59,
|
RLIKE=54, QUERY=55, SCHEMAS=56, SELECT=57, SHOW=58, SYS=59, TABLES=60,
|
||||||
TEXT=60, TRUE=61, TYPES=62, USING=63, VERIFY=64, WHERE=65, WITH=66, EQ=67,
|
TEXT=61, TRUE=62, TYPES=63, USING=64, VERIFY=65, WHERE=66, WITH=67, EQ=68,
|
||||||
NEQ=68, LT=69, LTE=70, GT=71, GTE=72, PLUS=73, MINUS=74, ASTERISK=75,
|
NEQ=69, LT=70, LTE=71, GT=72, GTE=73, PLUS=74, MINUS=75, ASTERISK=76,
|
||||||
SLASH=76, PERCENT=77, CONCAT=78, DOT=79, STRING=80, INTEGER_VALUE=81,
|
SLASH=77, PERCENT=78, CONCAT=79, DOT=80, STRING=81, INTEGER_VALUE=82,
|
||||||
DECIMAL_VALUE=82, IDENTIFIER=83, DIGIT_IDENTIFIER=84, TABLE_IDENTIFIER=85,
|
DECIMAL_VALUE=83, IDENTIFIER=84, DIGIT_IDENTIFIER=85, TABLE_IDENTIFIER=86,
|
||||||
QUOTED_IDENTIFIER=86, BACKQUOTED_IDENTIFIER=87, SIMPLE_COMMENT=88, BRACKETED_COMMENT=89,
|
QUOTED_IDENTIFIER=87, BACKQUOTED_IDENTIFIER=88, SIMPLE_COMMENT=89, BRACKETED_COMMENT=90,
|
||||||
WS=90, UNRECOGNIZED=91;
|
WS=91, UNRECOGNIZED=92;
|
||||||
public static String[] modeNames = {
|
public static String[] modeNames = {
|
||||||
"DEFAULT_MODE"
|
"DEFAULT_MODE"
|
||||||
};
|
};
|
||||||
|
|
||||||
public static final String[] ruleNames = {
|
public static final String[] ruleNames = {
|
||||||
"T__0", "T__1", "T__2", "ALL", "ANALYZE", "ANALYZED", "AND", "ANY", "AS",
|
"T__0", "T__1", "T__2", "T__3", "ALL", "ANALYZE", "ANALYZED", "AND", "ANY",
|
||||||
"ASC", "BETWEEN", "BY", "CAST", "COLUMNS", "DEBUG", "DESC", "DESCRIBE",
|
"AS", "ASC", "BETWEEN", "BY", "CAST", "COLUMNS", "DEBUG", "DESC", "DESCRIBE",
|
||||||
"DISTINCT", "ESCAPE", "EXECUTABLE", "EXISTS", "EXPLAIN", "EXTRACT", "FALSE",
|
"DISTINCT", "ESCAPE", "EXECUTABLE", "EXISTS", "EXPLAIN", "EXTRACT", "FALSE",
|
||||||
"FORMAT", "FROM", "FULL", "FUNCTIONS", "GRAPHVIZ", "GROUP", "HAVING",
|
"FORMAT", "FROM", "FULL", "FUNCTIONS", "GRAPHVIZ", "GROUP", "HAVING",
|
||||||
"IN", "INNER", "IS", "JOIN", "LEFT", "LIKE", "LIMIT", "MAPPED", "MATCH",
|
"IN", "INNER", "IS", "JOIN", "LEFT", "LIKE", "LIMIT", "MAPPED", "MATCH",
|
||||||
|
@ -57,8 +57,8 @@ class SqlBaseLexer extends Lexer {
|
||||||
};
|
};
|
||||||
|
|
||||||
private static final String[] _LITERAL_NAMES = {
|
private static final String[] _LITERAL_NAMES = {
|
||||||
null, "'('", "')'", "','", "'ALL'", "'ANALYZE'", "'ANALYZED'", "'AND'",
|
null, "'('", "')'", "','", "':'", "'ALL'", "'ANALYZE'", "'ANALYZED'",
|
||||||
"'ANY'", "'AS'", "'ASC'", "'BETWEEN'", "'BY'", "'CAST'", "'COLUMNS'",
|
"'AND'", "'ANY'", "'AS'", "'ASC'", "'BETWEEN'", "'BY'", "'CAST'", "'COLUMNS'",
|
||||||
"'DEBUG'", "'DESC'", "'DESCRIBE'", "'DISTINCT'", "'ESCAPE'", "'EXECUTABLE'",
|
"'DEBUG'", "'DESC'", "'DESCRIBE'", "'DISTINCT'", "'ESCAPE'", "'EXECUTABLE'",
|
||||||
"'EXISTS'", "'EXPLAIN'", "'EXTRACT'", "'FALSE'", "'FORMAT'", "'FROM'",
|
"'EXISTS'", "'EXPLAIN'", "'EXTRACT'", "'FALSE'", "'FORMAT'", "'FROM'",
|
||||||
"'FULL'", "'FUNCTIONS'", "'GRAPHVIZ'", "'GROUP'", "'HAVING'", "'IN'",
|
"'FULL'", "'FUNCTIONS'", "'GRAPHVIZ'", "'GROUP'", "'HAVING'", "'IN'",
|
||||||
|
@ -71,8 +71,8 @@ class SqlBaseLexer extends Lexer {
|
||||||
"'||'", "'.'"
|
"'||'", "'.'"
|
||||||
};
|
};
|
||||||
private static final String[] _SYMBOLIC_NAMES = {
|
private static final String[] _SYMBOLIC_NAMES = {
|
||||||
null, null, null, null, "ALL", "ANALYZE", "ANALYZED", "AND", "ANY", "AS",
|
null, null, null, null, null, "ALL", "ANALYZE", "ANALYZED", "AND", "ANY",
|
||||||
"ASC", "BETWEEN", "BY", "CAST", "COLUMNS", "DEBUG", "DESC", "DESCRIBE",
|
"AS", "ASC", "BETWEEN", "BY", "CAST", "COLUMNS", "DEBUG", "DESC", "DESCRIBE",
|
||||||
"DISTINCT", "ESCAPE", "EXECUTABLE", "EXISTS", "EXPLAIN", "EXTRACT", "FALSE",
|
"DISTINCT", "ESCAPE", "EXECUTABLE", "EXISTS", "EXPLAIN", "EXTRACT", "FALSE",
|
||||||
"FORMAT", "FROM", "FULL", "FUNCTIONS", "GRAPHVIZ", "GROUP", "HAVING",
|
"FORMAT", "FROM", "FULL", "FUNCTIONS", "GRAPHVIZ", "GROUP", "HAVING",
|
||||||
"IN", "INNER", "IS", "JOIN", "LEFT", "LIKE", "LIMIT", "MAPPED", "MATCH",
|
"IN", "INNER", "IS", "JOIN", "LEFT", "LIKE", "LIMIT", "MAPPED", "MATCH",
|
||||||
|
@ -140,7 +140,7 @@ class SqlBaseLexer extends Lexer {
|
||||||
public ATN getATN() { return _ATN; }
|
public ATN getATN() { return _ATN; }
|
||||||
|
|
||||||
public static final String _serializedATN =
|
public static final String _serializedATN =
|
||||||
"\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\2]\u030f\b\1\4\2\t"+
|
"\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\2^\u0313\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"+
|
"\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"+
|
"\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"+
|
"\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"+
|
||||||
|
@ -150,263 +150,264 @@ class SqlBaseLexer extends Lexer {
|
||||||
"\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t="+
|
"\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t="+
|
||||||
"\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I"+
|
"\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"+
|
"\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_\3"+
|
"\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4_\t_\4"+
|
||||||
"\2\3\2\3\3\3\3\3\4\3\4\3\5\3\5\3\5\3\5\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6"+
|
"`\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"+
|
||||||
"\3\7\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\t\3\t\3\t\3\t\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"+
|
||||||
"\n\3\n\3\n\3\13\3\13\3\13\3\13\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\r\3\r"+
|
"\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"+
|
||||||
"\3\r\3\16\3\16\3\16\3\16\3\16\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17"+
|
"\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\20\3\20\3\21\3\21\3\21\3\21\3\21\3\22\3\22\3\22"+
|
"\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\22\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\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\23\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\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\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\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\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\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\31\3\31\3\31\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\33"+
|
"\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\33\3\33\3\34\3\34\3\34\3\34\3\34\3\35\3\35\3\35\3\35\3\35"+
|
"\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\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\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\37\3\37\3\37\3 \3 \3 \3 \3 \3 \3 \3!\3!\3!\3\"\3\"\3"+
|
"\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)\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\61\3\61\3\61\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"+
|
||||||
"\61\3\61\3\61\3\62\3\62\3\62\3\62\3\62\3\62\3\62\3\63\3\63\3\63\3\63\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"+
|
||||||
"\63\3\63\3\63\3\63\3\63\3\64\3\64\3\64\3\64\3\64\3\65\3\65\3\65\3\65\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"+
|
||||||
"\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\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"+
|
||||||
"8\38\38\38\38\38\38\38\39\39\39\39\39\39\39\3:\3:\3:\3:\3:\3;\3;\3;\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?\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"+
|
||||||
"?\3@\3@\3@\3@\3@\3@\3A\3A\3A\3A\3A\3A\3A\3B\3B\3B\3B\3B\3B\3C\3C\3C\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"+
|
||||||
"C\3C\3D\3D\3E\3E\3E\3E\3E\3E\3E\5E\u0251\nE\3F\3F\3G\3G\3G\3H\3H\3I\3"+
|
"E\3E\3F\3F\3F\3F\3F\3F\3F\5F\u0255\nF\3G\3G\3H\3H\3H\3I\3I\3J\3J\3J\3"+
|
||||||
"I\3I\3J\3J\3K\3K\3L\3L\3M\3M\3N\3N\3O\3O\3O\3P\3P\3Q\3Q\3Q\3Q\7Q\u0270"+
|
"K\3K\3L\3L\3M\3M\3N\3N\3O\3O\3P\3P\3P\3Q\3Q\3R\3R\3R\3R\7R\u0274\nR\f"+
|
||||||
"\nQ\fQ\16Q\u0273\13Q\3Q\3Q\3R\6R\u0278\nR\rR\16R\u0279\3S\6S\u027d\nS"+
|
"R\16R\u0277\13R\3R\3R\3S\6S\u027c\nS\rS\16S\u027d\3T\6T\u0281\nT\rT\16"+
|
||||||
"\rS\16S\u027e\3S\3S\7S\u0283\nS\fS\16S\u0286\13S\3S\3S\6S\u028a\nS\rS"+
|
"T\u0282\3T\3T\7T\u0287\nT\fT\16T\u028a\13T\3T\3T\6T\u028e\nT\rT\16T\u028f"+
|
||||||
"\16S\u028b\3S\6S\u028f\nS\rS\16S\u0290\3S\3S\7S\u0295\nS\fS\16S\u0298"+
|
"\3T\6T\u0293\nT\rT\16T\u0294\3T\3T\7T\u0299\nT\fT\16T\u029c\13T\5T\u029e"+
|
||||||
"\13S\5S\u029a\nS\3S\3S\3S\3S\6S\u02a0\nS\rS\16S\u02a1\3S\3S\5S\u02a6\n"+
|
"\nT\3T\3T\3T\3T\6T\u02a4\nT\rT\16T\u02a5\3T\3T\5T\u02aa\nT\3U\3U\5U\u02ae"+
|
||||||
"S\3T\3T\5T\u02aa\nT\3T\3T\3T\7T\u02af\nT\fT\16T\u02b2\13T\3U\3U\3U\3U"+
|
"\nU\3U\3U\3U\7U\u02b3\nU\fU\16U\u02b6\13U\3V\3V\3V\3V\6V\u02bc\nV\rV\16"+
|
||||||
"\6U\u02b8\nU\rU\16U\u02b9\3V\3V\3V\3V\6V\u02c0\nV\rV\16V\u02c1\3W\3W\3"+
|
"V\u02bd\3W\3W\3W\3W\6W\u02c4\nW\rW\16W\u02c5\3X\3X\3X\3X\7X\u02cc\nX\f"+
|
||||||
"W\3W\7W\u02c8\nW\fW\16W\u02cb\13W\3W\3W\3X\3X\3X\3X\7X\u02d3\nX\fX\16"+
|
"X\16X\u02cf\13X\3X\3X\3Y\3Y\3Y\3Y\7Y\u02d7\nY\fY\16Y\u02da\13Y\3Y\3Y\3"+
|
||||||
"X\u02d6\13X\3X\3X\3Y\3Y\5Y\u02dc\nY\3Y\6Y\u02df\nY\rY\16Y\u02e0\3Z\3Z"+
|
"Z\3Z\5Z\u02e0\nZ\3Z\6Z\u02e3\nZ\rZ\16Z\u02e4\3[\3[\3\\\3\\\3]\3]\3]\3"+
|
||||||
"\3[\3[\3\\\3\\\3\\\3\\\7\\\u02eb\n\\\f\\\16\\\u02ee\13\\\3\\\5\\\u02f1"+
|
"]\7]\u02ef\n]\f]\16]\u02f2\13]\3]\5]\u02f5\n]\3]\5]\u02f8\n]\3]\3]\3^"+
|
||||||
"\n\\\3\\\5\\\u02f4\n\\\3\\\3\\\3]\3]\3]\3]\3]\7]\u02fd\n]\f]\16]\u0300"+
|
"\3^\3^\3^\3^\7^\u0301\n^\f^\16^\u0304\13^\3^\3^\3^\3^\3^\3_\6_\u030c\n"+
|
||||||
"\13]\3]\3]\3]\3]\3]\3^\6^\u0308\n^\r^\16^\u0309\3^\3^\3_\3_\3\u02fe\2"+
|
"_\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"+
|
||||||
"`\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"+
|
"\n\23\13\25\f\27\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+\27-\30"+
|
||||||
"\37\21!\22#\23%\24\'\25)\26+\27-\30/\31\61\32\63\33\65\34\67\359\36;\37"+
|
"/\31\61\32\63\33\65\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M(O)Q*S+U,W-Y.["+
|
||||||
"= ?!A\"C#E$G%I&K\'M(O)Q*S+U,W-Y.[/]\60_\61a\62c\63e\64g\65i\66k\67m8o"+
|
"/]\60_\61a\62c\63e\64g\65i\66k\67m8o9q:s;u<w=y>{?}@\177A\u0081B\u0083"+
|
||||||
"9q:s;u<w=y>{?}@\177A\u0081B\u0083C\u0085D\u0087E\u0089F\u008bG\u008dH"+
|
"C\u0085D\u0087E\u0089F\u008bG\u008dH\u008fI\u0091J\u0093K\u0095L\u0097"+
|
||||||
"\u008fI\u0091J\u0093K\u0095L\u0097M\u0099N\u009bO\u009dP\u009fQ\u00a1"+
|
"M\u0099N\u009bO\u009dP\u009fQ\u00a1R\u00a3S\u00a5T\u00a7U\u00a9V\u00ab"+
|
||||||
"R\u00a3S\u00a5T\u00a7U\u00a9V\u00abW\u00adX\u00afY\u00b1\2\u00b3\2\u00b5"+
|
"W\u00adX\u00afY\u00b1Z\u00b3\2\u00b5\2\u00b7\2\u00b9[\u00bb\\\u00bd]\u00bf"+
|
||||||
"\2\u00b7Z\u00b9[\u00bb\\\u00bd]\3\2\f\3\2))\4\2BBaa\5\2<<BBaa\3\2$$\3"+
|
"^\3\2\f\3\2))\4\2BBaa\5\2<<BBaa\3\2$$\3\2bb\4\2--//\3\2\62;\3\2C\\\4\2"+
|
||||||
"\2bb\4\2--//\3\2\62;\3\2C\\\4\2\f\f\17\17\5\2\13\f\17\17\"\"\u0331\2\3"+
|
"\f\f\17\17\5\2\13\f\17\17\"\"\u0335\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2"+
|
||||||
"\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2"+
|
"\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23"+
|
||||||
"\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31"+
|
"\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2"+
|
||||||
"\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2"+
|
"\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2"+
|
||||||
"\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2"+
|
"\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65\3"+
|
||||||
"\61\3\2\2\2\2\63\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2"+
|
"\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2"+
|
||||||
"\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2\2\2"+
|
"\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2"+
|
||||||
"I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2U\3"+
|
"\2O\3\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y\3\2\2\2\2["+
|
||||||
"\2\2\2\2W\3\2\2\2\2Y\3\2\2\2\2[\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3\2\2"+
|
"\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3\2\2\2\2c\3\2\2\2\2e\3\2\2\2\2g\3\2"+
|
||||||
"\2\2c\3\2\2\2\2e\3\2\2\2\2g\3\2\2\2\2i\3\2\2\2\2k\3\2\2\2\2m\3\2\2\2\2"+
|
"\2\2\2i\3\2\2\2\2k\3\2\2\2\2m\3\2\2\2\2o\3\2\2\2\2q\3\2\2\2\2s\3\2\2\2"+
|
||||||
"o\3\2\2\2\2q\3\2\2\2\2s\3\2\2\2\2u\3\2\2\2\2w\3\2\2\2\2y\3\2\2\2\2{\3"+
|
"\2u\3\2\2\2\2w\3\2\2\2\2y\3\2\2\2\2{\3\2\2\2\2}\3\2\2\2\2\177\3\2\2\2"+
|
||||||
"\2\2\2\2}\3\2\2\2\2\177\3\2\2\2\2\u0081\3\2\2\2\2\u0083\3\2\2\2\2\u0085"+
|
"\2\u0081\3\2\2\2\2\u0083\3\2\2\2\2\u0085\3\2\2\2\2\u0087\3\2\2\2\2\u0089"+
|
||||||
"\3\2\2\2\2\u0087\3\2\2\2\2\u0089\3\2\2\2\2\u008b\3\2\2\2\2\u008d\3\2\2"+
|
"\3\2\2\2\2\u008b\3\2\2\2\2\u008d\3\2\2\2\2\u008f\3\2\2\2\2\u0091\3\2\2"+
|
||||||
"\2\2\u008f\3\2\2\2\2\u0091\3\2\2\2\2\u0093\3\2\2\2\2\u0095\3\2\2\2\2\u0097"+
|
"\2\2\u0093\3\2\2\2\2\u0095\3\2\2\2\2\u0097\3\2\2\2\2\u0099\3\2\2\2\2\u009b"+
|
||||||
"\3\2\2\2\2\u0099\3\2\2\2\2\u009b\3\2\2\2\2\u009d\3\2\2\2\2\u009f\3\2\2"+
|
"\3\2\2\2\2\u009d\3\2\2\2\2\u009f\3\2\2\2\2\u00a1\3\2\2\2\2\u00a3\3\2\2"+
|
||||||
"\2\2\u00a1\3\2\2\2\2\u00a3\3\2\2\2\2\u00a5\3\2\2\2\2\u00a7\3\2\2\2\2\u00a9"+
|
"\2\2\u00a5\3\2\2\2\2\u00a7\3\2\2\2\2\u00a9\3\2\2\2\2\u00ab\3\2\2\2\2\u00ad"+
|
||||||
"\3\2\2\2\2\u00ab\3\2\2\2\2\u00ad\3\2\2\2\2\u00af\3\2\2\2\2\u00b7\3\2\2"+
|
"\3\2\2\2\2\u00af\3\2\2\2\2\u00b1\3\2\2\2\2\u00b9\3\2\2\2\2\u00bb\3\2\2"+
|
||||||
"\2\2\u00b9\3\2\2\2\2\u00bb\3\2\2\2\2\u00bd\3\2\2\2\3\u00bf\3\2\2\2\5\u00c1"+
|
"\2\2\u00bd\3\2\2\2\2\u00bf\3\2\2\2\3\u00c1\3\2\2\2\5\u00c3\3\2\2\2\7\u00c5"+
|
||||||
"\3\2\2\2\7\u00c3\3\2\2\2\t\u00c5\3\2\2\2\13\u00c9\3\2\2\2\r\u00d1\3\2"+
|
"\3\2\2\2\t\u00c7\3\2\2\2\13\u00c9\3\2\2\2\r\u00cd\3\2\2\2\17\u00d5\3\2"+
|
||||||
"\2\2\17\u00da\3\2\2\2\21\u00de\3\2\2\2\23\u00e2\3\2\2\2\25\u00e5\3\2\2"+
|
"\2\2\21\u00de\3\2\2\2\23\u00e2\3\2\2\2\25\u00e6\3\2\2\2\27\u00e9\3\2\2"+
|
||||||
"\2\27\u00e9\3\2\2\2\31\u00f1\3\2\2\2\33\u00f4\3\2\2\2\35\u00f9\3\2\2\2"+
|
"\2\31\u00ed\3\2\2\2\33\u00f5\3\2\2\2\35\u00f8\3\2\2\2\37\u00fd\3\2\2\2"+
|
||||||
"\37\u0101\3\2\2\2!\u0107\3\2\2\2#\u010c\3\2\2\2%\u0115\3\2\2\2\'\u011e"+
|
"!\u0105\3\2\2\2#\u010b\3\2\2\2%\u0110\3\2\2\2\'\u0119\3\2\2\2)\u0122\3"+
|
||||||
"\3\2\2\2)\u0125\3\2\2\2+\u0130\3\2\2\2-\u0137\3\2\2\2/\u013f\3\2\2\2\61"+
|
"\2\2\2+\u0129\3\2\2\2-\u0134\3\2\2\2/\u013b\3\2\2\2\61\u0143\3\2\2\2\63"+
|
||||||
"\u0147\3\2\2\2\63\u014d\3\2\2\2\65\u0154\3\2\2\2\67\u0159\3\2\2\29\u015e"+
|
"\u014b\3\2\2\2\65\u0151\3\2\2\2\67\u0158\3\2\2\29\u015d\3\2\2\2;\u0162"+
|
||||||
"\3\2\2\2;\u0168\3\2\2\2=\u0171\3\2\2\2?\u0177\3\2\2\2A\u017e\3\2\2\2C"+
|
"\3\2\2\2=\u016c\3\2\2\2?\u0175\3\2\2\2A\u017b\3\2\2\2C\u0182\3\2\2\2E"+
|
||||||
"\u0181\3\2\2\2E\u0187\3\2\2\2G\u018a\3\2\2\2I\u018f\3\2\2\2K\u0194\3\2"+
|
"\u0185\3\2\2\2G\u018b\3\2\2\2I\u018e\3\2\2\2K\u0193\3\2\2\2M\u0198\3\2"+
|
||||||
"\2\2M\u0199\3\2\2\2O\u019f\3\2\2\2Q\u01a6\3\2\2\2S\u01ac\3\2\2\2U\u01b4"+
|
"\2\2O\u019d\3\2\2\2Q\u01a3\3\2\2\2S\u01aa\3\2\2\2U\u01b0\3\2\2\2W\u01b8"+
|
||||||
"\3\2\2\2W\u01b8\3\2\2\2Y\u01bd\3\2\2\2[\u01c0\3\2\2\2]\u01ca\3\2\2\2_"+
|
"\3\2\2\2Y\u01bc\3\2\2\2[\u01c1\3\2\2\2]\u01c4\3\2\2\2_\u01ce\3\2\2\2a"+
|
||||||
"\u01cd\3\2\2\2a\u01d3\3\2\2\2c\u01d9\3\2\2\2e\u01e0\3\2\2\2g\u01e9\3\2"+
|
"\u01d1\3\2\2\2c\u01d7\3\2\2\2e\u01dd\3\2\2\2g\u01e4\3\2\2\2i\u01ed\3\2"+
|
||||||
"\2\2i\u01ee\3\2\2\2k\u01f4\3\2\2\2m\u01fa\3\2\2\2o\u0200\3\2\2\2q\u0208"+
|
"\2\2k\u01f2\3\2\2\2m\u01f8\3\2\2\2o\u01fe\3\2\2\2q\u0204\3\2\2\2s\u020c"+
|
||||||
"\3\2\2\2s\u020f\3\2\2\2u\u0214\3\2\2\2w\u0218\3\2\2\2y\u021f\3\2\2\2{"+
|
"\3\2\2\2u\u0213\3\2\2\2w\u0218\3\2\2\2y\u021c\3\2\2\2{\u0223\3\2\2\2}"+
|
||||||
"\u0224\3\2\2\2}\u0229\3\2\2\2\177\u022f\3\2\2\2\u0081\u0235\3\2\2\2\u0083"+
|
"\u0228\3\2\2\2\177\u022d\3\2\2\2\u0081\u0233\3\2\2\2\u0083\u0239\3\2\2"+
|
||||||
"\u023c\3\2\2\2\u0085\u0242\3\2\2\2\u0087\u0247\3\2\2\2\u0089\u0250\3\2"+
|
"\2\u0085\u0240\3\2\2\2\u0087\u0246\3\2\2\2\u0089\u024b\3\2\2\2\u008b\u0254"+
|
||||||
"\2\2\u008b\u0252\3\2\2\2\u008d\u0254\3\2\2\2\u008f\u0257\3\2\2\2\u0091"+
|
"\3\2\2\2\u008d\u0256\3\2\2\2\u008f\u0258\3\2\2\2\u0091\u025b\3\2\2\2\u0093"+
|
||||||
"\u0259\3\2\2\2\u0093\u025c\3\2\2\2\u0095\u025e\3\2\2\2\u0097\u0260\3\2"+
|
"\u025d\3\2\2\2\u0095\u0260\3\2\2\2\u0097\u0262\3\2\2\2\u0099\u0264\3\2"+
|
||||||
"\2\2\u0099\u0262\3\2\2\2\u009b\u0264\3\2\2\2\u009d\u0266\3\2\2\2\u009f"+
|
"\2\2\u009b\u0266\3\2\2\2\u009d\u0268\3\2\2\2\u009f\u026a\3\2\2\2\u00a1"+
|
||||||
"\u0269\3\2\2\2\u00a1\u026b\3\2\2\2\u00a3\u0277\3\2\2\2\u00a5\u02a5\3\2"+
|
"\u026d\3\2\2\2\u00a3\u026f\3\2\2\2\u00a5\u027b\3\2\2\2\u00a7\u02a9\3\2"+
|
||||||
"\2\2\u00a7\u02a9\3\2\2\2\u00a9\u02b3\3\2\2\2\u00ab\u02bf\3\2\2\2\u00ad"+
|
"\2\2\u00a9\u02ad\3\2\2\2\u00ab\u02b7\3\2\2\2\u00ad\u02c3\3\2\2\2\u00af"+
|
||||||
"\u02c3\3\2\2\2\u00af\u02ce\3\2\2\2\u00b1\u02d9\3\2\2\2\u00b3\u02e2\3\2"+
|
"\u02c7\3\2\2\2\u00b1\u02d2\3\2\2\2\u00b3\u02dd\3\2\2\2\u00b5\u02e6\3\2"+
|
||||||
"\2\2\u00b5\u02e4\3\2\2\2\u00b7\u02e6\3\2\2\2\u00b9\u02f7\3\2\2\2\u00bb"+
|
"\2\2\u00b7\u02e8\3\2\2\2\u00b9\u02ea\3\2\2\2\u00bb\u02fb\3\2\2\2\u00bd"+
|
||||||
"\u0307\3\2\2\2\u00bd\u030d\3\2\2\2\u00bf\u00c0\7*\2\2\u00c0\4\3\2\2\2"+
|
"\u030b\3\2\2\2\u00bf\u0311\3\2\2\2\u00c1\u00c2\7*\2\2\u00c2\4\3\2\2\2"+
|
||||||
"\u00c1\u00c2\7+\2\2\u00c2\6\3\2\2\2\u00c3\u00c4\7.\2\2\u00c4\b\3\2\2\2"+
|
"\u00c3\u00c4\7+\2\2\u00c4\6\3\2\2\2\u00c5\u00c6\7.\2\2\u00c6\b\3\2\2\2"+
|
||||||
"\u00c5\u00c6\7C\2\2\u00c6\u00c7\7N\2\2\u00c7\u00c8\7N\2\2\u00c8\n\3\2"+
|
"\u00c7\u00c8\7<\2\2\u00c8\n\3\2\2\2\u00c9\u00ca\7C\2\2\u00ca\u00cb\7N"+
|
||||||
"\2\2\u00c9\u00ca\7C\2\2\u00ca\u00cb\7P\2\2\u00cb\u00cc\7C\2\2\u00cc\u00cd"+
|
"\2\2\u00cb\u00cc\7N\2\2\u00cc\f\3\2\2\2\u00cd\u00ce\7C\2\2\u00ce\u00cf"+
|
||||||
"\7N\2\2\u00cd\u00ce\7[\2\2\u00ce\u00cf\7\\\2\2\u00cf\u00d0\7G\2\2\u00d0"+
|
"\7P\2\2\u00cf\u00d0\7C\2\2\u00d0\u00d1\7N\2\2\u00d1\u00d2\7[\2\2\u00d2"+
|
||||||
"\f\3\2\2\2\u00d1\u00d2\7C\2\2\u00d2\u00d3\7P\2\2\u00d3\u00d4\7C\2\2\u00d4"+
|
"\u00d3\7\\\2\2\u00d3\u00d4\7G\2\2\u00d4\16\3\2\2\2\u00d5\u00d6\7C\2\2"+
|
||||||
"\u00d5\7N\2\2\u00d5\u00d6\7[\2\2\u00d6\u00d7\7\\\2\2\u00d7\u00d8\7G\2"+
|
"\u00d6\u00d7\7P\2\2\u00d7\u00d8\7C\2\2\u00d8\u00d9\7N\2\2\u00d9\u00da"+
|
||||||
"\2\u00d8\u00d9\7F\2\2\u00d9\16\3\2\2\2\u00da\u00db\7C\2\2\u00db\u00dc"+
|
"\7[\2\2\u00da\u00db\7\\\2\2\u00db\u00dc\7G\2\2\u00dc\u00dd\7F\2\2\u00dd"+
|
||||||
"\7P\2\2\u00dc\u00dd\7F\2\2\u00dd\20\3\2\2\2\u00de\u00df\7C\2\2\u00df\u00e0"+
|
"\20\3\2\2\2\u00de\u00df\7C\2\2\u00df\u00e0\7P\2\2\u00e0\u00e1\7F\2\2\u00e1"+
|
||||||
"\7P\2\2\u00e0\u00e1\7[\2\2\u00e1\22\3\2\2\2\u00e2\u00e3\7C\2\2\u00e3\u00e4"+
|
"\22\3\2\2\2\u00e2\u00e3\7C\2\2\u00e3\u00e4\7P\2\2\u00e4\u00e5\7[\2\2\u00e5"+
|
||||||
"\7U\2\2\u00e4\24\3\2\2\2\u00e5\u00e6\7C\2\2\u00e6\u00e7\7U\2\2\u00e7\u00e8"+
|
"\24\3\2\2\2\u00e6\u00e7\7C\2\2\u00e7\u00e8\7U\2\2\u00e8\26\3\2\2\2\u00e9"+
|
||||||
"\7E\2\2\u00e8\26\3\2\2\2\u00e9\u00ea\7D\2\2\u00ea\u00eb\7G\2\2\u00eb\u00ec"+
|
"\u00ea\7C\2\2\u00ea\u00eb\7U\2\2\u00eb\u00ec\7E\2\2\u00ec\30\3\2\2\2\u00ed"+
|
||||||
"\7V\2\2\u00ec\u00ed\7Y\2\2\u00ed\u00ee\7G\2\2\u00ee\u00ef\7G\2\2\u00ef"+
|
"\u00ee\7D\2\2\u00ee\u00ef\7G\2\2\u00ef\u00f0\7V\2\2\u00f0\u00f1\7Y\2\2"+
|
||||||
"\u00f0\7P\2\2\u00f0\30\3\2\2\2\u00f1\u00f2\7D\2\2\u00f2\u00f3\7[\2\2\u00f3"+
|
"\u00f1\u00f2\7G\2\2\u00f2\u00f3\7G\2\2\u00f3\u00f4\7P\2\2\u00f4\32\3\2"+
|
||||||
"\32\3\2\2\2\u00f4\u00f5\7E\2\2\u00f5\u00f6\7C\2\2\u00f6\u00f7\7U\2\2\u00f7"+
|
"\2\2\u00f5\u00f6\7D\2\2\u00f6\u00f7\7[\2\2\u00f7\34\3\2\2\2\u00f8\u00f9"+
|
||||||
"\u00f8\7V\2\2\u00f8\34\3\2\2\2\u00f9\u00fa\7E\2\2\u00fa\u00fb\7Q\2\2\u00fb"+
|
"\7E\2\2\u00f9\u00fa\7C\2\2\u00fa\u00fb\7U\2\2\u00fb\u00fc\7V\2\2\u00fc"+
|
||||||
"\u00fc\7N\2\2\u00fc\u00fd\7W\2\2\u00fd\u00fe\7O\2\2\u00fe\u00ff\7P\2\2"+
|
"\36\3\2\2\2\u00fd\u00fe\7E\2\2\u00fe\u00ff\7Q\2\2\u00ff\u0100\7N\2\2\u0100"+
|
||||||
"\u00ff\u0100\7U\2\2\u0100\36\3\2\2\2\u0101\u0102\7F\2\2\u0102\u0103\7"+
|
"\u0101\7W\2\2\u0101\u0102\7O\2\2\u0102\u0103\7P\2\2\u0103\u0104\7U\2\2"+
|
||||||
"G\2\2\u0103\u0104\7D\2\2\u0104\u0105\7W\2\2\u0105\u0106\7I\2\2\u0106 "+
|
"\u0104 \3\2\2\2\u0105\u0106\7F\2\2\u0106\u0107\7G\2\2\u0107\u0108\7D\2"+
|
||||||
"\3\2\2\2\u0107\u0108\7F\2\2\u0108\u0109\7G\2\2\u0109\u010a\7U\2\2\u010a"+
|
"\2\u0108\u0109\7W\2\2\u0109\u010a\7I\2\2\u010a\"\3\2\2\2\u010b\u010c\7"+
|
||||||
"\u010b\7E\2\2\u010b\"\3\2\2\2\u010c\u010d\7F\2\2\u010d\u010e\7G\2\2\u010e"+
|
"F\2\2\u010c\u010d\7G\2\2\u010d\u010e\7U\2\2\u010e\u010f\7E\2\2\u010f$"+
|
||||||
"\u010f\7U\2\2\u010f\u0110\7E\2\2\u0110\u0111\7T\2\2\u0111\u0112\7K\2\2"+
|
"\3\2\2\2\u0110\u0111\7F\2\2\u0111\u0112\7G\2\2\u0112\u0113\7U\2\2\u0113"+
|
||||||
"\u0112\u0113\7D\2\2\u0113\u0114\7G\2\2\u0114$\3\2\2\2\u0115\u0116\7F\2"+
|
"\u0114\7E\2\2\u0114\u0115\7T\2\2\u0115\u0116\7K\2\2\u0116\u0117\7D\2\2"+
|
||||||
"\2\u0116\u0117\7K\2\2\u0117\u0118\7U\2\2\u0118\u0119\7V\2\2\u0119\u011a"+
|
"\u0117\u0118\7G\2\2\u0118&\3\2\2\2\u0119\u011a\7F\2\2\u011a\u011b\7K\2"+
|
||||||
"\7K\2\2\u011a\u011b\7P\2\2\u011b\u011c\7E\2\2\u011c\u011d\7V\2\2\u011d"+
|
"\2\u011b\u011c\7U\2\2\u011c\u011d\7V\2\2\u011d\u011e\7K\2\2\u011e\u011f"+
|
||||||
"&\3\2\2\2\u011e\u011f\7G\2\2\u011f\u0120\7U\2\2\u0120\u0121\7E\2\2\u0121"+
|
"\7P\2\2\u011f\u0120\7E\2\2\u0120\u0121\7V\2\2\u0121(\3\2\2\2\u0122\u0123"+
|
||||||
"\u0122\7C\2\2\u0122\u0123\7R\2\2\u0123\u0124\7G\2\2\u0124(\3\2\2\2\u0125"+
|
"\7G\2\2\u0123\u0124\7U\2\2\u0124\u0125\7E\2\2\u0125\u0126\7C\2\2\u0126"+
|
||||||
"\u0126\7G\2\2\u0126\u0127\7Z\2\2\u0127\u0128\7G\2\2\u0128\u0129\7E\2\2"+
|
"\u0127\7R\2\2\u0127\u0128\7G\2\2\u0128*\3\2\2\2\u0129\u012a\7G\2\2\u012a"+
|
||||||
"\u0129\u012a\7W\2\2\u012a\u012b\7V\2\2\u012b\u012c\7C\2\2\u012c\u012d"+
|
"\u012b\7Z\2\2\u012b\u012c\7G\2\2\u012c\u012d\7E\2\2\u012d\u012e\7W\2\2"+
|
||||||
"\7D\2\2\u012d\u012e\7N\2\2\u012e\u012f\7G\2\2\u012f*\3\2\2\2\u0130\u0131"+
|
"\u012e\u012f\7V\2\2\u012f\u0130\7C\2\2\u0130\u0131\7D\2\2\u0131\u0132"+
|
||||||
"\7G\2\2\u0131\u0132\7Z\2\2\u0132\u0133\7K\2\2\u0133\u0134\7U\2\2\u0134"+
|
"\7N\2\2\u0132\u0133\7G\2\2\u0133,\3\2\2\2\u0134\u0135\7G\2\2\u0135\u0136"+
|
||||||
"\u0135\7V\2\2\u0135\u0136\7U\2\2\u0136,\3\2\2\2\u0137\u0138\7G\2\2\u0138"+
|
"\7Z\2\2\u0136\u0137\7K\2\2\u0137\u0138\7U\2\2\u0138\u0139\7V\2\2\u0139"+
|
||||||
"\u0139\7Z\2\2\u0139\u013a\7R\2\2\u013a\u013b\7N\2\2\u013b\u013c\7C\2\2"+
|
"\u013a\7U\2\2\u013a.\3\2\2\2\u013b\u013c\7G\2\2\u013c\u013d\7Z\2\2\u013d"+
|
||||||
"\u013c\u013d\7K\2\2\u013d\u013e\7P\2\2\u013e.\3\2\2\2\u013f\u0140\7G\2"+
|
"\u013e\7R\2\2\u013e\u013f\7N\2\2\u013f\u0140\7C\2\2\u0140\u0141\7K\2\2"+
|
||||||
"\2\u0140\u0141\7Z\2\2\u0141\u0142\7V\2\2\u0142\u0143\7T\2\2\u0143\u0144"+
|
"\u0141\u0142\7P\2\2\u0142\60\3\2\2\2\u0143\u0144\7G\2\2\u0144\u0145\7"+
|
||||||
"\7C\2\2\u0144\u0145\7E\2\2\u0145\u0146\7V\2\2\u0146\60\3\2\2\2\u0147\u0148"+
|
"Z\2\2\u0145\u0146\7V\2\2\u0146\u0147\7T\2\2\u0147\u0148\7C\2\2\u0148\u0149"+
|
||||||
"\7H\2\2\u0148\u0149\7C\2\2\u0149\u014a\7N\2\2\u014a\u014b\7U\2\2\u014b"+
|
"\7E\2\2\u0149\u014a\7V\2\2\u014a\62\3\2\2\2\u014b\u014c\7H\2\2\u014c\u014d"+
|
||||||
"\u014c\7G\2\2\u014c\62\3\2\2\2\u014d\u014e\7H\2\2\u014e\u014f\7Q\2\2\u014f"+
|
"\7C\2\2\u014d\u014e\7N\2\2\u014e\u014f\7U\2\2\u014f\u0150\7G\2\2\u0150"+
|
||||||
"\u0150\7T\2\2\u0150\u0151\7O\2\2\u0151\u0152\7C\2\2\u0152\u0153\7V\2\2"+
|
"\64\3\2\2\2\u0151\u0152\7H\2\2\u0152\u0153\7Q\2\2\u0153\u0154\7T\2\2\u0154"+
|
||||||
"\u0153\64\3\2\2\2\u0154\u0155\7H\2\2\u0155\u0156\7T\2\2\u0156\u0157\7"+
|
"\u0155\7O\2\2\u0155\u0156\7C\2\2\u0156\u0157\7V\2\2\u0157\66\3\2\2\2\u0158"+
|
||||||
"Q\2\2\u0157\u0158\7O\2\2\u0158\66\3\2\2\2\u0159\u015a\7H\2\2\u015a\u015b"+
|
"\u0159\7H\2\2\u0159\u015a\7T\2\2\u015a\u015b\7Q\2\2\u015b\u015c\7O\2\2"+
|
||||||
"\7W\2\2\u015b\u015c\7N\2\2\u015c\u015d\7N\2\2\u015d8\3\2\2\2\u015e\u015f"+
|
"\u015c8\3\2\2\2\u015d\u015e\7H\2\2\u015e\u015f\7W\2\2\u015f\u0160\7N\2"+
|
||||||
"\7H\2\2\u015f\u0160\7W\2\2\u0160\u0161\7P\2\2\u0161\u0162\7E\2\2\u0162"+
|
"\2\u0160\u0161\7N\2\2\u0161:\3\2\2\2\u0162\u0163\7H\2\2\u0163\u0164\7"+
|
||||||
"\u0163\7V\2\2\u0163\u0164\7K\2\2\u0164\u0165\7Q\2\2\u0165\u0166\7P\2\2"+
|
"W\2\2\u0164\u0165\7P\2\2\u0165\u0166\7E\2\2\u0166\u0167\7V\2\2\u0167\u0168"+
|
||||||
"\u0166\u0167\7U\2\2\u0167:\3\2\2\2\u0168\u0169\7I\2\2\u0169\u016a\7T\2"+
|
"\7K\2\2\u0168\u0169\7Q\2\2\u0169\u016a\7P\2\2\u016a\u016b\7U\2\2\u016b"+
|
||||||
"\2\u016a\u016b\7C\2\2\u016b\u016c\7R\2\2\u016c\u016d\7J\2\2\u016d\u016e"+
|
"<\3\2\2\2\u016c\u016d\7I\2\2\u016d\u016e\7T\2\2\u016e\u016f\7C\2\2\u016f"+
|
||||||
"\7X\2\2\u016e\u016f\7K\2\2\u016f\u0170\7\\\2\2\u0170<\3\2\2\2\u0171\u0172"+
|
"\u0170\7R\2\2\u0170\u0171\7J\2\2\u0171\u0172\7X\2\2\u0172\u0173\7K\2\2"+
|
||||||
"\7I\2\2\u0172\u0173\7T\2\2\u0173\u0174\7Q\2\2\u0174\u0175\7W\2\2\u0175"+
|
"\u0173\u0174\7\\\2\2\u0174>\3\2\2\2\u0175\u0176\7I\2\2\u0176\u0177\7T"+
|
||||||
"\u0176\7R\2\2\u0176>\3\2\2\2\u0177\u0178\7J\2\2\u0178\u0179\7C\2\2\u0179"+
|
"\2\2\u0177\u0178\7Q\2\2\u0178\u0179\7W\2\2\u0179\u017a\7R\2\2\u017a@\3"+
|
||||||
"\u017a\7X\2\2\u017a\u017b\7K\2\2\u017b\u017c\7P\2\2\u017c\u017d\7I\2\2"+
|
"\2\2\2\u017b\u017c\7J\2\2\u017c\u017d\7C\2\2\u017d\u017e\7X\2\2\u017e"+
|
||||||
"\u017d@\3\2\2\2\u017e\u017f\7K\2\2\u017f\u0180\7P\2\2\u0180B\3\2\2\2\u0181"+
|
"\u017f\7K\2\2\u017f\u0180\7P\2\2\u0180\u0181\7I\2\2\u0181B\3\2\2\2\u0182"+
|
||||||
"\u0182\7K\2\2\u0182\u0183\7P\2\2\u0183\u0184\7P\2\2\u0184\u0185\7G\2\2"+
|
"\u0183\7K\2\2\u0183\u0184\7P\2\2\u0184D\3\2\2\2\u0185\u0186\7K\2\2\u0186"+
|
||||||
"\u0185\u0186\7T\2\2\u0186D\3\2\2\2\u0187\u0188\7K\2\2\u0188\u0189\7U\2"+
|
"\u0187\7P\2\2\u0187\u0188\7P\2\2\u0188\u0189\7G\2\2\u0189\u018a\7T\2\2"+
|
||||||
"\2\u0189F\3\2\2\2\u018a\u018b\7L\2\2\u018b\u018c\7Q\2\2\u018c\u018d\7"+
|
"\u018aF\3\2\2\2\u018b\u018c\7K\2\2\u018c\u018d\7U\2\2\u018dH\3\2\2\2\u018e"+
|
||||||
"K\2\2\u018d\u018e\7P\2\2\u018eH\3\2\2\2\u018f\u0190\7N\2\2\u0190\u0191"+
|
"\u018f\7L\2\2\u018f\u0190\7Q\2\2\u0190\u0191\7K\2\2\u0191\u0192\7P\2\2"+
|
||||||
"\7G\2\2\u0191\u0192\7H\2\2\u0192\u0193\7V\2\2\u0193J\3\2\2\2\u0194\u0195"+
|
"\u0192J\3\2\2\2\u0193\u0194\7N\2\2\u0194\u0195\7G\2\2\u0195\u0196\7H\2"+
|
||||||
"\7N\2\2\u0195\u0196\7K\2\2\u0196\u0197\7M\2\2\u0197\u0198\7G\2\2\u0198"+
|
"\2\u0196\u0197\7V\2\2\u0197L\3\2\2\2\u0198\u0199\7N\2\2\u0199\u019a\7"+
|
||||||
"L\3\2\2\2\u0199\u019a\7N\2\2\u019a\u019b\7K\2\2\u019b\u019c\7O\2\2\u019c"+
|
"K\2\2\u019a\u019b\7M\2\2\u019b\u019c\7G\2\2\u019cN\3\2\2\2\u019d\u019e"+
|
||||||
"\u019d\7K\2\2\u019d\u019e\7V\2\2\u019eN\3\2\2\2\u019f\u01a0\7O\2\2\u01a0"+
|
"\7N\2\2\u019e\u019f\7K\2\2\u019f\u01a0\7O\2\2\u01a0\u01a1\7K\2\2\u01a1"+
|
||||||
"\u01a1\7C\2\2\u01a1\u01a2\7R\2\2\u01a2\u01a3\7R\2\2\u01a3\u01a4\7G\2\2"+
|
"\u01a2\7V\2\2\u01a2P\3\2\2\2\u01a3\u01a4\7O\2\2\u01a4\u01a5\7C\2\2\u01a5"+
|
||||||
"\u01a4\u01a5\7F\2\2\u01a5P\3\2\2\2\u01a6\u01a7\7O\2\2\u01a7\u01a8\7C\2"+
|
"\u01a6\7R\2\2\u01a6\u01a7\7R\2\2\u01a7\u01a8\7G\2\2\u01a8\u01a9\7F\2\2"+
|
||||||
"\2\u01a8\u01a9\7V\2\2\u01a9\u01aa\7E\2\2\u01aa\u01ab\7J\2\2\u01abR\3\2"+
|
"\u01a9R\3\2\2\2\u01aa\u01ab\7O\2\2\u01ab\u01ac\7C\2\2\u01ac\u01ad\7V\2"+
|
||||||
"\2\2\u01ac\u01ad\7P\2\2\u01ad\u01ae\7C\2\2\u01ae\u01af\7V\2\2\u01af\u01b0"+
|
"\2\u01ad\u01ae\7E\2\2\u01ae\u01af\7J\2\2\u01afT\3\2\2\2\u01b0\u01b1\7"+
|
||||||
"\7W\2\2\u01b0\u01b1\7T\2\2\u01b1\u01b2\7C\2\2\u01b2\u01b3\7N\2\2\u01b3"+
|
"P\2\2\u01b1\u01b2\7C\2\2\u01b2\u01b3\7V\2\2\u01b3\u01b4\7W\2\2\u01b4\u01b5"+
|
||||||
"T\3\2\2\2\u01b4\u01b5\7P\2\2\u01b5\u01b6\7Q\2\2\u01b6\u01b7\7V\2\2\u01b7"+
|
"\7T\2\2\u01b5\u01b6\7C\2\2\u01b6\u01b7\7N\2\2\u01b7V\3\2\2\2\u01b8\u01b9"+
|
||||||
"V\3\2\2\2\u01b8\u01b9\7P\2\2\u01b9\u01ba\7W\2\2\u01ba\u01bb\7N\2\2\u01bb"+
|
"\7P\2\2\u01b9\u01ba\7Q\2\2\u01ba\u01bb\7V\2\2\u01bbX\3\2\2\2\u01bc\u01bd"+
|
||||||
"\u01bc\7N\2\2\u01bcX\3\2\2\2\u01bd\u01be\7Q\2\2\u01be\u01bf\7P\2\2\u01bf"+
|
"\7P\2\2\u01bd\u01be\7W\2\2\u01be\u01bf\7N\2\2\u01bf\u01c0\7N\2\2\u01c0"+
|
||||||
"Z\3\2\2\2\u01c0\u01c1\7Q\2\2\u01c1\u01c2\7R\2\2\u01c2\u01c3\7V\2\2\u01c3"+
|
"Z\3\2\2\2\u01c1\u01c2\7Q\2\2\u01c2\u01c3\7P\2\2\u01c3\\\3\2\2\2\u01c4"+
|
||||||
"\u01c4\7K\2\2\u01c4\u01c5\7O\2\2\u01c5\u01c6\7K\2\2\u01c6\u01c7\7\\\2"+
|
"\u01c5\7Q\2\2\u01c5\u01c6\7R\2\2\u01c6\u01c7\7V\2\2\u01c7\u01c8\7K\2\2"+
|
||||||
"\2\u01c7\u01c8\7G\2\2\u01c8\u01c9\7F\2\2\u01c9\\\3\2\2\2\u01ca\u01cb\7"+
|
"\u01c8\u01c9\7O\2\2\u01c9\u01ca\7K\2\2\u01ca\u01cb\7\\\2\2\u01cb\u01cc"+
|
||||||
"Q\2\2\u01cb\u01cc\7T\2\2\u01cc^\3\2\2\2\u01cd\u01ce\7Q\2\2\u01ce\u01cf"+
|
"\7G\2\2\u01cc\u01cd\7F\2\2\u01cd^\3\2\2\2\u01ce\u01cf\7Q\2\2\u01cf\u01d0"+
|
||||||
"\7T\2\2\u01cf\u01d0\7F\2\2\u01d0\u01d1\7G\2\2\u01d1\u01d2\7T\2\2\u01d2"+
|
"\7T\2\2\u01d0`\3\2\2\2\u01d1\u01d2\7Q\2\2\u01d2\u01d3\7T\2\2\u01d3\u01d4"+
|
||||||
"`\3\2\2\2\u01d3\u01d4\7Q\2\2\u01d4\u01d5\7W\2\2\u01d5\u01d6\7V\2\2\u01d6"+
|
"\7F\2\2\u01d4\u01d5\7G\2\2\u01d5\u01d6\7T\2\2\u01d6b\3\2\2\2\u01d7\u01d8"+
|
||||||
"\u01d7\7G\2\2\u01d7\u01d8\7T\2\2\u01d8b\3\2\2\2\u01d9\u01da\7R\2\2\u01da"+
|
"\7Q\2\2\u01d8\u01d9\7W\2\2\u01d9\u01da\7V\2\2\u01da\u01db\7G\2\2\u01db"+
|
||||||
"\u01db\7C\2\2\u01db\u01dc\7T\2\2\u01dc\u01dd\7U\2\2\u01dd\u01de\7G\2\2"+
|
"\u01dc\7T\2\2\u01dcd\3\2\2\2\u01dd\u01de\7R\2\2\u01de\u01df\7C\2\2\u01df"+
|
||||||
"\u01de\u01df\7F\2\2\u01dfd\3\2\2\2\u01e0\u01e1\7R\2\2\u01e1\u01e2\7J\2"+
|
"\u01e0\7T\2\2\u01e0\u01e1\7U\2\2\u01e1\u01e2\7G\2\2\u01e2\u01e3\7F\2\2"+
|
||||||
"\2\u01e2\u01e3\7[\2\2\u01e3\u01e4\7U\2\2\u01e4\u01e5\7K\2\2\u01e5\u01e6"+
|
"\u01e3f\3\2\2\2\u01e4\u01e5\7R\2\2\u01e5\u01e6\7J\2\2\u01e6\u01e7\7[\2"+
|
||||||
"\7E\2\2\u01e6\u01e7\7C\2\2\u01e7\u01e8\7N\2\2\u01e8f\3\2\2\2\u01e9\u01ea"+
|
"\2\u01e7\u01e8\7U\2\2\u01e8\u01e9\7K\2\2\u01e9\u01ea\7E\2\2\u01ea\u01eb"+
|
||||||
"\7R\2\2\u01ea\u01eb\7N\2\2\u01eb\u01ec\7C\2\2\u01ec\u01ed\7P\2\2\u01ed"+
|
"\7C\2\2\u01eb\u01ec\7N\2\2\u01ech\3\2\2\2\u01ed\u01ee\7R\2\2\u01ee\u01ef"+
|
||||||
"h\3\2\2\2\u01ee\u01ef\7T\2\2\u01ef\u01f0\7K\2\2\u01f0\u01f1\7I\2\2\u01f1"+
|
"\7N\2\2\u01ef\u01f0\7C\2\2\u01f0\u01f1\7P\2\2\u01f1j\3\2\2\2\u01f2\u01f3"+
|
||||||
"\u01f2\7J\2\2\u01f2\u01f3\7V\2\2\u01f3j\3\2\2\2\u01f4\u01f5\7T\2\2\u01f5"+
|
"\7T\2\2\u01f3\u01f4\7K\2\2\u01f4\u01f5\7I\2\2\u01f5\u01f6\7J\2\2\u01f6"+
|
||||||
"\u01f6\7N\2\2\u01f6\u01f7\7K\2\2\u01f7\u01f8\7M\2\2\u01f8\u01f9\7G\2\2"+
|
"\u01f7\7V\2\2\u01f7l\3\2\2\2\u01f8\u01f9\7T\2\2\u01f9\u01fa\7N\2\2\u01fa"+
|
||||||
"\u01f9l\3\2\2\2\u01fa\u01fb\7S\2\2\u01fb\u01fc\7W\2\2\u01fc\u01fd\7G\2"+
|
"\u01fb\7K\2\2\u01fb\u01fc\7M\2\2\u01fc\u01fd\7G\2\2\u01fdn\3\2\2\2\u01fe"+
|
||||||
"\2\u01fd\u01fe\7T\2\2\u01fe\u01ff\7[\2\2\u01ffn\3\2\2\2\u0200\u0201\7"+
|
"\u01ff\7S\2\2\u01ff\u0200\7W\2\2\u0200\u0201\7G\2\2\u0201\u0202\7T\2\2"+
|
||||||
"U\2\2\u0201\u0202\7E\2\2\u0202\u0203\7J\2\2\u0203\u0204\7G\2\2\u0204\u0205"+
|
"\u0202\u0203\7[\2\2\u0203p\3\2\2\2\u0204\u0205\7U\2\2\u0205\u0206\7E\2"+
|
||||||
"\7O\2\2\u0205\u0206\7C\2\2\u0206\u0207\7U\2\2\u0207p\3\2\2\2\u0208\u0209"+
|
"\2\u0206\u0207\7J\2\2\u0207\u0208\7G\2\2\u0208\u0209\7O\2\2\u0209\u020a"+
|
||||||
"\7U\2\2\u0209\u020a\7G\2\2\u020a\u020b\7N\2\2\u020b\u020c\7G\2\2\u020c"+
|
"\7C\2\2\u020a\u020b\7U\2\2\u020br\3\2\2\2\u020c\u020d\7U\2\2\u020d\u020e"+
|
||||||
"\u020d\7E\2\2\u020d\u020e\7V\2\2\u020er\3\2\2\2\u020f\u0210\7U\2\2\u0210"+
|
"\7G\2\2\u020e\u020f\7N\2\2\u020f\u0210\7G\2\2\u0210\u0211\7E\2\2\u0211"+
|
||||||
"\u0211\7J\2\2\u0211\u0212\7Q\2\2\u0212\u0213\7Y\2\2\u0213t\3\2\2\2\u0214"+
|
"\u0212\7V\2\2\u0212t\3\2\2\2\u0213\u0214\7U\2\2\u0214\u0215\7J\2\2\u0215"+
|
||||||
"\u0215\7U\2\2\u0215\u0216\7[\2\2\u0216\u0217\7U\2\2\u0217v\3\2\2\2\u0218"+
|
"\u0216\7Q\2\2\u0216\u0217\7Y\2\2\u0217v\3\2\2\2\u0218\u0219\7U\2\2\u0219"+
|
||||||
"\u0219\7V\2\2\u0219\u021a\7C\2\2\u021a\u021b\7D\2\2\u021b\u021c\7N\2\2"+
|
"\u021a\7[\2\2\u021a\u021b\7U\2\2\u021bx\3\2\2\2\u021c\u021d\7V\2\2\u021d"+
|
||||||
"\u021c\u021d\7G\2\2\u021d\u021e\7U\2\2\u021ex\3\2\2\2\u021f\u0220\7V\2"+
|
"\u021e\7C\2\2\u021e\u021f\7D\2\2\u021f\u0220\7N\2\2\u0220\u0221\7G\2\2"+
|
||||||
"\2\u0220\u0221\7G\2\2\u0221\u0222\7Z\2\2\u0222\u0223\7V\2\2\u0223z\3\2"+
|
"\u0221\u0222\7U\2\2\u0222z\3\2\2\2\u0223\u0224\7V\2\2\u0224\u0225\7G\2"+
|
||||||
"\2\2\u0224\u0225\7V\2\2\u0225\u0226\7T\2\2\u0226\u0227\7W\2\2\u0227\u0228"+
|
"\2\u0225\u0226\7Z\2\2\u0226\u0227\7V\2\2\u0227|\3\2\2\2\u0228\u0229\7"+
|
||||||
"\7G\2\2\u0228|\3\2\2\2\u0229\u022a\7V\2\2\u022a\u022b\7[\2\2\u022b\u022c"+
|
"V\2\2\u0229\u022a\7T\2\2\u022a\u022b\7W\2\2\u022b\u022c\7G\2\2\u022c~"+
|
||||||
"\7R\2\2\u022c\u022d\7G\2\2\u022d\u022e\7U\2\2\u022e~\3\2\2\2\u022f\u0230"+
|
"\3\2\2\2\u022d\u022e\7V\2\2\u022e\u022f\7[\2\2\u022f\u0230\7R\2\2\u0230"+
|
||||||
"\7W\2\2\u0230\u0231\7U\2\2\u0231\u0232\7K\2\2\u0232\u0233\7P\2\2\u0233"+
|
"\u0231\7G\2\2\u0231\u0232\7U\2\2\u0232\u0080\3\2\2\2\u0233\u0234\7W\2"+
|
||||||
"\u0234\7I\2\2\u0234\u0080\3\2\2\2\u0235\u0236\7X\2\2\u0236\u0237\7G\2"+
|
"\2\u0234\u0235\7U\2\2\u0235\u0236\7K\2\2\u0236\u0237\7P\2\2\u0237\u0238"+
|
||||||
"\2\u0237\u0238\7T\2\2\u0238\u0239\7K\2\2\u0239\u023a\7H\2\2\u023a\u023b"+
|
"\7I\2\2\u0238\u0082\3\2\2\2\u0239\u023a\7X\2\2\u023a\u023b\7G\2\2\u023b"+
|
||||||
"\7[\2\2\u023b\u0082\3\2\2\2\u023c\u023d\7Y\2\2\u023d\u023e\7J\2\2\u023e"+
|
"\u023c\7T\2\2\u023c\u023d\7K\2\2\u023d\u023e\7H\2\2\u023e\u023f\7[\2\2"+
|
||||||
"\u023f\7G\2\2\u023f\u0240\7T\2\2\u0240\u0241\7G\2\2\u0241\u0084\3\2\2"+
|
"\u023f\u0084\3\2\2\2\u0240\u0241\7Y\2\2\u0241\u0242\7J\2\2\u0242\u0243"+
|
||||||
"\2\u0242\u0243\7Y\2\2\u0243\u0244\7K\2\2\u0244\u0245\7V\2\2\u0245\u0246"+
|
"\7G\2\2\u0243\u0244\7T\2\2\u0244\u0245\7G\2\2\u0245\u0086\3\2\2\2\u0246"+
|
||||||
"\7J\2\2\u0246\u0086\3\2\2\2\u0247\u0248\7?\2\2\u0248\u0088\3\2\2\2\u0249"+
|
"\u0247\7Y\2\2\u0247\u0248\7K\2\2\u0248\u0249\7V\2\2\u0249\u024a\7J\2\2"+
|
||||||
"\u024a\7>\2\2\u024a\u0251\7@\2\2\u024b\u024c\7#\2\2\u024c\u0251\7?\2\2"+
|
"\u024a\u0088\3\2\2\2\u024b\u024c\7?\2\2\u024c\u008a\3\2\2\2\u024d\u024e"+
|
||||||
"\u024d\u024e\7>\2\2\u024e\u024f\7?\2\2\u024f\u0251\7@\2\2\u0250\u0249"+
|
"\7>\2\2\u024e\u0255\7@\2\2\u024f\u0250\7#\2\2\u0250\u0255\7?\2\2\u0251"+
|
||||||
"\3\2\2\2\u0250\u024b\3\2\2\2\u0250\u024d\3\2\2\2\u0251\u008a\3\2\2\2\u0252"+
|
"\u0252\7>\2\2\u0252\u0253\7?\2\2\u0253\u0255\7@\2\2\u0254\u024d\3\2\2"+
|
||||||
"\u0253\7>\2\2\u0253\u008c\3\2\2\2\u0254\u0255\7>\2\2\u0255\u0256\7?\2"+
|
"\2\u0254\u024f\3\2\2\2\u0254\u0251\3\2\2\2\u0255\u008c\3\2\2\2\u0256\u0257"+
|
||||||
"\2\u0256\u008e\3\2\2\2\u0257\u0258\7@\2\2\u0258\u0090\3\2\2\2\u0259\u025a"+
|
"\7>\2\2\u0257\u008e\3\2\2\2\u0258\u0259\7>\2\2\u0259\u025a\7?\2\2\u025a"+
|
||||||
"\7@\2\2\u025a\u025b\7?\2\2\u025b\u0092\3\2\2\2\u025c\u025d\7-\2\2\u025d"+
|
"\u0090\3\2\2\2\u025b\u025c\7@\2\2\u025c\u0092\3\2\2\2\u025d\u025e\7@\2"+
|
||||||
"\u0094\3\2\2\2\u025e\u025f\7/\2\2\u025f\u0096\3\2\2\2\u0260\u0261\7,\2"+
|
"\2\u025e\u025f\7?\2\2\u025f\u0094\3\2\2\2\u0260\u0261\7-\2\2\u0261\u0096"+
|
||||||
"\2\u0261\u0098\3\2\2\2\u0262\u0263\7\61\2\2\u0263\u009a\3\2\2\2\u0264"+
|
"\3\2\2\2\u0262\u0263\7/\2\2\u0263\u0098\3\2\2\2\u0264\u0265\7,\2\2\u0265"+
|
||||||
"\u0265\7\'\2\2\u0265\u009c\3\2\2\2\u0266\u0267\7~\2\2\u0267\u0268\7~\2"+
|
"\u009a\3\2\2\2\u0266\u0267\7\61\2\2\u0267\u009c\3\2\2\2\u0268\u0269\7"+
|
||||||
"\2\u0268\u009e\3\2\2\2\u0269\u026a\7\60\2\2\u026a\u00a0\3\2\2\2\u026b"+
|
"\'\2\2\u0269\u009e\3\2\2\2\u026a\u026b\7~\2\2\u026b\u026c\7~\2\2\u026c"+
|
||||||
"\u0271\7)\2\2\u026c\u0270\n\2\2\2\u026d\u026e\7)\2\2\u026e\u0270\7)\2"+
|
"\u00a0\3\2\2\2\u026d\u026e\7\60\2\2\u026e\u00a2\3\2\2\2\u026f\u0275\7"+
|
||||||
"\2\u026f\u026c\3\2\2\2\u026f\u026d\3\2\2\2\u0270\u0273\3\2\2\2\u0271\u026f"+
|
")\2\2\u0270\u0274\n\2\2\2\u0271\u0272\7)\2\2\u0272\u0274\7)\2\2\u0273"+
|
||||||
"\3\2\2\2\u0271\u0272\3\2\2\2\u0272\u0274\3\2\2\2\u0273\u0271\3\2\2\2\u0274"+
|
"\u0270\3\2\2\2\u0273\u0271\3\2\2\2\u0274\u0277\3\2\2\2\u0275\u0273\3\2"+
|
||||||
"\u0275\7)\2\2\u0275\u00a2\3\2\2\2\u0276\u0278\5\u00b3Z\2\u0277\u0276\3"+
|
"\2\2\u0275\u0276\3\2\2\2\u0276\u0278\3\2\2\2\u0277\u0275\3\2\2\2\u0278"+
|
||||||
"\2\2\2\u0278\u0279\3\2\2\2\u0279\u0277\3\2\2\2\u0279\u027a\3\2\2\2\u027a"+
|
"\u0279\7)\2\2\u0279\u00a4\3\2\2\2\u027a\u027c\5\u00b5[\2\u027b\u027a\3"+
|
||||||
"\u00a4\3\2\2\2\u027b\u027d\5\u00b3Z\2\u027c\u027b\3\2\2\2\u027d\u027e"+
|
"\2\2\2\u027c\u027d\3\2\2\2\u027d\u027b\3\2\2\2\u027d\u027e\3\2\2\2\u027e"+
|
||||||
"\3\2\2\2\u027e\u027c\3\2\2\2\u027e\u027f\3\2\2\2\u027f\u0280\3\2\2\2\u0280"+
|
"\u00a6\3\2\2\2\u027f\u0281\5\u00b5[\2\u0280\u027f\3\2\2\2\u0281\u0282"+
|
||||||
"\u0284\5\u009fP\2\u0281\u0283\5\u00b3Z\2\u0282\u0281\3\2\2\2\u0283\u0286"+
|
"\3\2\2\2\u0282\u0280\3\2\2\2\u0282\u0283\3\2\2\2\u0283\u0284\3\2\2\2\u0284"+
|
||||||
"\3\2\2\2\u0284\u0282\3\2\2\2\u0284\u0285\3\2\2\2\u0285\u02a6\3\2\2\2\u0286"+
|
"\u0288\5\u00a1Q\2\u0285\u0287\5\u00b5[\2\u0286\u0285\3\2\2\2\u0287\u028a"+
|
||||||
"\u0284\3\2\2\2\u0287\u0289\5\u009fP\2\u0288\u028a\5\u00b3Z\2\u0289\u0288"+
|
"\3\2\2\2\u0288\u0286\3\2\2\2\u0288\u0289\3\2\2\2\u0289\u02aa\3\2\2\2\u028a"+
|
||||||
"\3\2\2\2\u028a\u028b\3\2\2\2\u028b\u0289\3\2\2\2\u028b\u028c\3\2\2\2\u028c"+
|
"\u0288\3\2\2\2\u028b\u028d\5\u00a1Q\2\u028c\u028e\5\u00b5[\2\u028d\u028c"+
|
||||||
"\u02a6\3\2\2\2\u028d\u028f\5\u00b3Z\2\u028e\u028d\3\2\2\2\u028f\u0290"+
|
"\3\2\2\2\u028e\u028f\3\2\2\2\u028f\u028d\3\2\2\2\u028f\u0290\3\2\2\2\u0290"+
|
||||||
"\3\2\2\2\u0290\u028e\3\2\2\2\u0290\u0291\3\2\2\2\u0291\u0299\3\2\2\2\u0292"+
|
"\u02aa\3\2\2\2\u0291\u0293\5\u00b5[\2\u0292\u0291\3\2\2\2\u0293\u0294"+
|
||||||
"\u0296\5\u009fP\2\u0293\u0295\5\u00b3Z\2\u0294\u0293\3\2\2\2\u0295\u0298"+
|
"\3\2\2\2\u0294\u0292\3\2\2\2\u0294\u0295\3\2\2\2\u0295\u029d\3\2\2\2\u0296"+
|
||||||
"\3\2\2\2\u0296\u0294\3\2\2\2\u0296\u0297\3\2\2\2\u0297\u029a\3\2\2\2\u0298"+
|
"\u029a\5\u00a1Q\2\u0297\u0299\5\u00b5[\2\u0298\u0297\3\2\2\2\u0299\u029c"+
|
||||||
"\u0296\3\2\2\2\u0299\u0292\3\2\2\2\u0299\u029a\3\2\2\2\u029a\u029b\3\2"+
|
"\3\2\2\2\u029a\u0298\3\2\2\2\u029a\u029b\3\2\2\2\u029b\u029e\3\2\2\2\u029c"+
|
||||||
"\2\2\u029b\u029c\5\u00b1Y\2\u029c\u02a6\3\2\2\2\u029d\u029f\5\u009fP\2"+
|
"\u029a\3\2\2\2\u029d\u0296\3\2\2\2\u029d\u029e\3\2\2\2\u029e\u029f\3\2"+
|
||||||
"\u029e\u02a0\5\u00b3Z\2\u029f\u029e\3\2\2\2\u02a0\u02a1\3\2\2\2\u02a1"+
|
"\2\2\u029f\u02a0\5\u00b3Z\2\u02a0\u02aa\3\2\2\2\u02a1\u02a3\5\u00a1Q\2"+
|
||||||
"\u029f\3\2\2\2\u02a1\u02a2\3\2\2\2\u02a2\u02a3\3\2\2\2\u02a3\u02a4\5\u00b1"+
|
"\u02a2\u02a4\5\u00b5[\2\u02a3\u02a2\3\2\2\2\u02a4\u02a5\3\2\2\2\u02a5"+
|
||||||
"Y\2\u02a4\u02a6\3\2\2\2\u02a5\u027c\3\2\2\2\u02a5\u0287\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"+
|
||||||
"\u028e\3\2\2\2\u02a5\u029d\3\2\2\2\u02a6\u00a6\3\2\2\2\u02a7\u02aa\5\u00b5"+
|
"Z\2\u02a8\u02aa\3\2\2\2\u02a9\u0280\3\2\2\2\u02a9\u028b\3\2\2\2\u02a9"+
|
||||||
"[\2\u02a8\u02aa\7a\2\2\u02a9\u02a7\3\2\2\2\u02a9\u02a8\3\2\2\2\u02aa\u02b0"+
|
"\u0292\3\2\2\2\u02a9\u02a1\3\2\2\2\u02aa\u00a8\3\2\2\2\u02ab\u02ae\5\u00b7"+
|
||||||
"\3\2\2\2\u02ab\u02af\5\u00b5[\2\u02ac\u02af\5\u00b3Z\2\u02ad\u02af\t\3"+
|
"\\\2\u02ac\u02ae\7a\2\2\u02ad\u02ab\3\2\2\2\u02ad\u02ac\3\2\2\2\u02ae"+
|
||||||
"\2\2\u02ae\u02ab\3\2\2\2\u02ae\u02ac\3\2\2\2\u02ae\u02ad\3\2\2\2\u02af"+
|
"\u02b4\3\2\2\2\u02af\u02b3\5\u00b7\\\2\u02b0\u02b3\5\u00b5[\2\u02b1\u02b3"+
|
||||||
"\u02b2\3\2\2\2\u02b0\u02ae\3\2\2\2\u02b0\u02b1\3\2\2\2\u02b1\u00a8\3\2"+
|
"\t\3\2\2\u02b2\u02af\3\2\2\2\u02b2\u02b0\3\2\2\2\u02b2\u02b1\3\2\2\2\u02b3"+
|
||||||
"\2\2\u02b2\u02b0\3\2\2\2\u02b3\u02b7\5\u00b3Z\2\u02b4\u02b8\5\u00b5[\2"+
|
"\u02b6\3\2\2\2\u02b4\u02b2\3\2\2\2\u02b4\u02b5\3\2\2\2\u02b5\u00aa\3\2"+
|
||||||
"\u02b5\u02b8\5\u00b3Z\2\u02b6\u02b8\t\4\2\2\u02b7\u02b4\3\2\2\2\u02b7"+
|
"\2\2\u02b6\u02b4\3\2\2\2\u02b7\u02bb\5\u00b5[\2\u02b8\u02bc\5\u00b7\\"+
|
||||||
"\u02b5\3\2\2\2\u02b7\u02b6\3\2\2\2\u02b8\u02b9\3\2\2\2\u02b9\u02b7\3\2"+
|
"\2\u02b9\u02bc\5\u00b5[\2\u02ba\u02bc\t\4\2\2\u02bb\u02b8\3\2\2\2\u02bb"+
|
||||||
"\2\2\u02b9\u02ba\3\2\2\2\u02ba\u00aa\3\2\2\2\u02bb\u02c0\5\u00b5[\2\u02bc"+
|
"\u02b9\3\2\2\2\u02bb\u02ba\3\2\2\2\u02bc\u02bd\3\2\2\2\u02bd\u02bb\3\2"+
|
||||||
"\u02c0\5\u00b3Z\2\u02bd\u02c0\t\3\2\2\u02be\u02c0\5\u0097L\2\u02bf\u02bb"+
|
"\2\2\u02bd\u02be\3\2\2\2\u02be\u00ac\3\2\2\2\u02bf\u02c4\5\u00b7\\\2\u02c0"+
|
||||||
"\3\2\2\2\u02bf\u02bc\3\2\2\2\u02bf\u02bd\3\2\2\2\u02bf\u02be\3\2\2\2\u02c0"+
|
"\u02c4\5\u00b5[\2\u02c1\u02c4\t\3\2\2\u02c2\u02c4\5\u0099M\2\u02c3\u02bf"+
|
||||||
"\u02c1\3\2\2\2\u02c1\u02bf\3\2\2\2\u02c1\u02c2\3\2\2\2\u02c2\u00ac\3\2"+
|
"\3\2\2\2\u02c3\u02c0\3\2\2\2\u02c3\u02c1\3\2\2\2\u02c3\u02c2\3\2\2\2\u02c4"+
|
||||||
"\2\2\u02c3\u02c9\7$\2\2\u02c4\u02c8\n\5\2\2\u02c5\u02c6\7$\2\2\u02c6\u02c8"+
|
"\u02c5\3\2\2\2\u02c5\u02c3\3\2\2\2\u02c5\u02c6\3\2\2\2\u02c6\u00ae\3\2"+
|
||||||
"\7$\2\2\u02c7\u02c4\3\2\2\2\u02c7\u02c5\3\2\2\2\u02c8\u02cb\3\2\2\2\u02c9"+
|
"\2\2\u02c7\u02cd\7$\2\2\u02c8\u02cc\n\5\2\2\u02c9\u02ca\7$\2\2\u02ca\u02cc"+
|
||||||
"\u02c7\3\2\2\2\u02c9\u02ca\3\2\2\2\u02ca\u02cc\3\2\2\2\u02cb\u02c9\3\2"+
|
"\7$\2\2\u02cb\u02c8\3\2\2\2\u02cb\u02c9\3\2\2\2\u02cc\u02cf\3\2\2\2\u02cd"+
|
||||||
"\2\2\u02cc\u02cd\7$\2\2\u02cd\u00ae\3\2\2\2\u02ce\u02d4\7b\2\2\u02cf\u02d3"+
|
"\u02cb\3\2\2\2\u02cd\u02ce\3\2\2\2\u02ce\u02d0\3\2\2\2\u02cf\u02cd\3\2"+
|
||||||
"\n\6\2\2\u02d0\u02d1\7b\2\2\u02d1\u02d3\7b\2\2\u02d2\u02cf\3\2\2\2\u02d2"+
|
"\2\2\u02d0\u02d1\7$\2\2\u02d1\u00b0\3\2\2\2\u02d2\u02d8\7b\2\2\u02d3\u02d7"+
|
||||||
"\u02d0\3\2\2\2\u02d3\u02d6\3\2\2\2\u02d4\u02d2\3\2\2\2\u02d4\u02d5\3\2"+
|
"\n\6\2\2\u02d4\u02d5\7b\2\2\u02d5\u02d7\7b\2\2\u02d6\u02d3\3\2\2\2\u02d6"+
|
||||||
"\2\2\u02d5\u02d7\3\2\2\2\u02d6\u02d4\3\2\2\2\u02d7\u02d8\7b\2\2\u02d8"+
|
"\u02d4\3\2\2\2\u02d7\u02da\3\2\2\2\u02d8\u02d6\3\2\2\2\u02d8\u02d9\3\2"+
|
||||||
"\u00b0\3\2\2\2\u02d9\u02db\7G\2\2\u02da\u02dc\t\7\2\2\u02db\u02da\3\2"+
|
"\2\2\u02d9\u02db\3\2\2\2\u02da\u02d8\3\2\2\2\u02db\u02dc\7b\2\2\u02dc"+
|
||||||
"\2\2\u02db\u02dc\3\2\2\2\u02dc\u02de\3\2\2\2\u02dd\u02df\5\u00b3Z\2\u02de"+
|
"\u00b2\3\2\2\2\u02dd\u02df\7G\2\2\u02de\u02e0\t\7\2\2\u02df\u02de\3\2"+
|
||||||
"\u02dd\3\2\2\2\u02df\u02e0\3\2\2\2\u02e0\u02de\3\2\2\2\u02e0\u02e1\3\2"+
|
"\2\2\u02df\u02e0\3\2\2\2\u02e0\u02e2\3\2\2\2\u02e1\u02e3\5\u00b5[\2\u02e2"+
|
||||||
"\2\2\u02e1\u00b2\3\2\2\2\u02e2\u02e3\t\b\2\2\u02e3\u00b4\3\2\2\2\u02e4"+
|
"\u02e1\3\2\2\2\u02e3\u02e4\3\2\2\2\u02e4\u02e2\3\2\2\2\u02e4\u02e5\3\2"+
|
||||||
"\u02e5\t\t\2\2\u02e5\u00b6\3\2\2\2\u02e6\u02e7\7/\2\2\u02e7\u02e8\7/\2"+
|
"\2\2\u02e5\u00b4\3\2\2\2\u02e6\u02e7\t\b\2\2\u02e7\u00b6\3\2\2\2\u02e8"+
|
||||||
"\2\u02e8\u02ec\3\2\2\2\u02e9\u02eb\n\n\2\2\u02ea\u02e9\3\2\2\2\u02eb\u02ee"+
|
"\u02e9\t\t\2\2\u02e9\u00b8\3\2\2\2\u02ea\u02eb\7/\2\2\u02eb\u02ec\7/\2"+
|
||||||
"\3\2\2\2\u02ec\u02ea\3\2\2\2\u02ec\u02ed\3\2\2\2\u02ed\u02f0\3\2\2\2\u02ee"+
|
"\2\u02ec\u02f0\3\2\2\2\u02ed\u02ef\n\n\2\2\u02ee\u02ed\3\2\2\2\u02ef\u02f2"+
|
||||||
"\u02ec\3\2\2\2\u02ef\u02f1\7\17\2\2\u02f0\u02ef\3\2\2\2\u02f0\u02f1\3"+
|
"\3\2\2\2\u02f0\u02ee\3\2\2\2\u02f0\u02f1\3\2\2\2\u02f1\u02f4\3\2\2\2\u02f2"+
|
||||||
"\2\2\2\u02f1\u02f3\3\2\2\2\u02f2\u02f4\7\f\2\2\u02f3\u02f2\3\2\2\2\u02f3"+
|
"\u02f0\3\2\2\2\u02f3\u02f5\7\17\2\2\u02f4\u02f3\3\2\2\2\u02f4\u02f5\3"+
|
||||||
"\u02f4\3\2\2\2\u02f4\u02f5\3\2\2\2\u02f5\u02f6\b\\\2\2\u02f6\u00b8\3\2"+
|
"\2\2\2\u02f5\u02f7\3\2\2\2\u02f6\u02f8\7\f\2\2\u02f7\u02f6\3\2\2\2\u02f7"+
|
||||||
"\2\2\u02f7\u02f8\7\61\2\2\u02f8\u02f9\7,\2\2\u02f9\u02fe\3\2\2\2\u02fa"+
|
"\u02f8\3\2\2\2\u02f8\u02f9\3\2\2\2\u02f9\u02fa\b]\2\2\u02fa\u00ba\3\2"+
|
||||||
"\u02fd\5\u00b9]\2\u02fb\u02fd\13\2\2\2\u02fc\u02fa\3\2\2\2\u02fc\u02fb"+
|
"\2\2\u02fb\u02fc\7\61\2\2\u02fc\u02fd\7,\2\2\u02fd\u0302\3\2\2\2\u02fe"+
|
||||||
"\3\2\2\2\u02fd\u0300\3\2\2\2\u02fe\u02ff\3\2\2\2\u02fe\u02fc\3\2\2\2\u02ff"+
|
"\u0301\5\u00bb^\2\u02ff\u0301\13\2\2\2\u0300\u02fe\3\2\2\2\u0300\u02ff"+
|
||||||
"\u0301\3\2\2\2\u0300\u02fe\3\2\2\2\u0301\u0302\7,\2\2\u0302\u0303\7\61"+
|
"\3\2\2\2\u0301\u0304\3\2\2\2\u0302\u0303\3\2\2\2\u0302\u0300\3\2\2\2\u0303"+
|
||||||
"\2\2\u0303\u0304\3\2\2\2\u0304\u0305\b]\2\2\u0305\u00ba\3\2\2\2\u0306"+
|
"\u0305\3\2\2\2\u0304\u0302\3\2\2\2\u0305\u0306\7,\2\2\u0306\u0307\7\61"+
|
||||||
"\u0308\t\13\2\2\u0307\u0306\3\2\2\2\u0308\u0309\3\2\2\2\u0309\u0307\3"+
|
"\2\2\u0307\u0308\3\2\2\2\u0308\u0309\b^\2\2\u0309\u00bc\3\2\2\2\u030a"+
|
||||||
"\2\2\2\u0309\u030a\3\2\2\2\u030a\u030b\3\2\2\2\u030b\u030c\b^\2\2\u030c"+
|
"\u030c\t\13\2\2\u030b\u030a\3\2\2\2\u030c\u030d\3\2\2\2\u030d\u030b\3"+
|
||||||
"\u00bc\3\2\2\2\u030d\u030e\13\2\2\2\u030e\u00be\3\2\2\2\"\2\u0250\u026f"+
|
"\2\2\2\u030d\u030e\3\2\2\2\u030e\u030f\3\2\2\2\u030f\u0310\b_\2\2\u0310"+
|
||||||
"\u0271\u0279\u027e\u0284\u028b\u0290\u0296\u0299\u02a1\u02a5\u02a9\u02ae"+
|
"\u00be\3\2\2\2\u0311\u0312\13\2\2\2\u0312\u00c0\3\2\2\2\"\2\u0254\u0273"+
|
||||||
"\u02b0\u02b7\u02b9\u02bf\u02c1\u02c7\u02c9\u02d2\u02d4\u02db\u02e0\u02ec"+
|
"\u0275\u027d\u0282\u0288\u028f\u0294\u029a\u029d\u02a5\u02a9\u02ad\u02b2"+
|
||||||
"\u02f0\u02f3\u02fc\u02fe\u0309\3\2\3\2";
|
"\u02b4\u02bb\u02bd\u02c3\u02c5\u02cb\u02cd\u02d6\u02d8\u02df\u02e4\u02f0"+
|
||||||
|
"\u02f4\u02f7\u0300\u0302\u030d\3\2\3\2";
|
||||||
public static final ATN _ATN =
|
public static final ATN _ATN =
|
||||||
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
|
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
|
||||||
static {
|
static {
|
||||||
|
|
|
@ -22,20 +22,20 @@ class SqlBaseParser extends Parser {
|
||||||
protected static final PredictionContextCache _sharedContextCache =
|
protected static final PredictionContextCache _sharedContextCache =
|
||||||
new PredictionContextCache();
|
new PredictionContextCache();
|
||||||
public static final int
|
public static final int
|
||||||
T__0=1, T__1=2, T__2=3, ALL=4, ANALYZE=5, ANALYZED=6, AND=7, ANY=8, AS=9,
|
T__0=1, T__1=2, T__2=3, T__3=4, ALL=5, ANALYZE=6, ANALYZED=7, AND=8, ANY=9,
|
||||||
ASC=10, BETWEEN=11, BY=12, CAST=13, COLUMNS=14, DEBUG=15, DESC=16, DESCRIBE=17,
|
AS=10, ASC=11, BETWEEN=12, BY=13, CAST=14, COLUMNS=15, DEBUG=16, DESC=17,
|
||||||
DISTINCT=18, ESCAPE=19, EXECUTABLE=20, EXISTS=21, EXPLAIN=22, EXTRACT=23,
|
DESCRIBE=18, DISTINCT=19, ESCAPE=20, EXECUTABLE=21, EXISTS=22, EXPLAIN=23,
|
||||||
FALSE=24, FORMAT=25, FROM=26, FULL=27, FUNCTIONS=28, GRAPHVIZ=29, GROUP=30,
|
EXTRACT=24, FALSE=25, FORMAT=26, FROM=27, FULL=28, FUNCTIONS=29, GRAPHVIZ=30,
|
||||||
HAVING=31, IN=32, INNER=33, IS=34, JOIN=35, LEFT=36, LIKE=37, LIMIT=38,
|
GROUP=31, HAVING=32, IN=33, INNER=34, IS=35, JOIN=36, LEFT=37, LIKE=38,
|
||||||
MAPPED=39, MATCH=40, NATURAL=41, NOT=42, NULL=43, ON=44, OPTIMIZED=45,
|
LIMIT=39, MAPPED=40, MATCH=41, NATURAL=42, NOT=43, NULL=44, ON=45, OPTIMIZED=46,
|
||||||
OR=46, ORDER=47, OUTER=48, PARSED=49, PHYSICAL=50, PLAN=51, RIGHT=52,
|
OR=47, ORDER=48, OUTER=49, PARSED=50, PHYSICAL=51, PLAN=52, RIGHT=53,
|
||||||
RLIKE=53, QUERY=54, SCHEMAS=55, SELECT=56, SHOW=57, SYS=58, TABLES=59,
|
RLIKE=54, QUERY=55, SCHEMAS=56, SELECT=57, SHOW=58, SYS=59, TABLES=60,
|
||||||
TEXT=60, TRUE=61, TYPES=62, USING=63, VERIFY=64, WHERE=65, WITH=66, EQ=67,
|
TEXT=61, TRUE=62, TYPES=63, USING=64, VERIFY=65, WHERE=66, WITH=67, EQ=68,
|
||||||
NEQ=68, LT=69, LTE=70, GT=71, GTE=72, PLUS=73, MINUS=74, ASTERISK=75,
|
NEQ=69, LT=70, LTE=71, GT=72, GTE=73, PLUS=74, MINUS=75, ASTERISK=76,
|
||||||
SLASH=76, PERCENT=77, CONCAT=78, DOT=79, STRING=80, INTEGER_VALUE=81,
|
SLASH=77, PERCENT=78, CONCAT=79, DOT=80, STRING=81, INTEGER_VALUE=82,
|
||||||
DECIMAL_VALUE=82, IDENTIFIER=83, DIGIT_IDENTIFIER=84, TABLE_IDENTIFIER=85,
|
DECIMAL_VALUE=83, IDENTIFIER=84, DIGIT_IDENTIFIER=85, TABLE_IDENTIFIER=86,
|
||||||
QUOTED_IDENTIFIER=86, BACKQUOTED_IDENTIFIER=87, SIMPLE_COMMENT=88, BRACKETED_COMMENT=89,
|
QUOTED_IDENTIFIER=87, BACKQUOTED_IDENTIFIER=88, SIMPLE_COMMENT=89, BRACKETED_COMMENT=90,
|
||||||
WS=90, UNRECOGNIZED=91, DELIMITER=92;
|
WS=91, UNRECOGNIZED=92, DELIMITER=93;
|
||||||
public static final int
|
public static final int
|
||||||
RULE_singleStatement = 0, RULE_singleExpression = 1, RULE_statement = 2,
|
RULE_singleStatement = 0, RULE_singleExpression = 1, RULE_statement = 2,
|
||||||
RULE_query = 3, RULE_queryNoWith = 4, RULE_queryTerm = 5, RULE_orderBy = 6,
|
RULE_query = 3, RULE_queryNoWith = 4, RULE_queryTerm = 5, RULE_orderBy = 6,
|
||||||
|
@ -61,8 +61,8 @@ class SqlBaseParser extends Parser {
|
||||||
};
|
};
|
||||||
|
|
||||||
private static final String[] _LITERAL_NAMES = {
|
private static final String[] _LITERAL_NAMES = {
|
||||||
null, "'('", "')'", "','", "'ALL'", "'ANALYZE'", "'ANALYZED'", "'AND'",
|
null, "'('", "')'", "','", "':'", "'ALL'", "'ANALYZE'", "'ANALYZED'",
|
||||||
"'ANY'", "'AS'", "'ASC'", "'BETWEEN'", "'BY'", "'CAST'", "'COLUMNS'",
|
"'AND'", "'ANY'", "'AS'", "'ASC'", "'BETWEEN'", "'BY'", "'CAST'", "'COLUMNS'",
|
||||||
"'DEBUG'", "'DESC'", "'DESCRIBE'", "'DISTINCT'", "'ESCAPE'", "'EXECUTABLE'",
|
"'DEBUG'", "'DESC'", "'DESCRIBE'", "'DISTINCT'", "'ESCAPE'", "'EXECUTABLE'",
|
||||||
"'EXISTS'", "'EXPLAIN'", "'EXTRACT'", "'FALSE'", "'FORMAT'", "'FROM'",
|
"'EXISTS'", "'EXPLAIN'", "'EXTRACT'", "'FALSE'", "'FORMAT'", "'FROM'",
|
||||||
"'FULL'", "'FUNCTIONS'", "'GRAPHVIZ'", "'GROUP'", "'HAVING'", "'IN'",
|
"'FULL'", "'FUNCTIONS'", "'GRAPHVIZ'", "'GROUP'", "'HAVING'", "'IN'",
|
||||||
|
@ -75,8 +75,8 @@ class SqlBaseParser extends Parser {
|
||||||
"'||'", "'.'"
|
"'||'", "'.'"
|
||||||
};
|
};
|
||||||
private static final String[] _SYMBOLIC_NAMES = {
|
private static final String[] _SYMBOLIC_NAMES = {
|
||||||
null, null, null, null, "ALL", "ANALYZE", "ANALYZED", "AND", "ANY", "AS",
|
null, null, null, null, null, "ALL", "ANALYZE", "ANALYZED", "AND", "ANY",
|
||||||
"ASC", "BETWEEN", "BY", "CAST", "COLUMNS", "DEBUG", "DESC", "DESCRIBE",
|
"AS", "ASC", "BETWEEN", "BY", "CAST", "COLUMNS", "DEBUG", "DESC", "DESCRIBE",
|
||||||
"DISTINCT", "ESCAPE", "EXECUTABLE", "EXISTS", "EXPLAIN", "EXTRACT", "FALSE",
|
"DISTINCT", "ESCAPE", "EXECUTABLE", "EXISTS", "EXPLAIN", "EXTRACT", "FALSE",
|
||||||
"FORMAT", "FROM", "FULL", "FUNCTIONS", "GRAPHVIZ", "GROUP", "HAVING",
|
"FORMAT", "FROM", "FULL", "FUNCTIONS", "GRAPHVIZ", "GROUP", "HAVING",
|
||||||
"IN", "INNER", "IS", "JOIN", "LEFT", "LIKE", "LIMIT", "MAPPED", "MATCH",
|
"IN", "INNER", "IS", "JOIN", "LEFT", "LIKE", "LIMIT", "MAPPED", "MATCH",
|
||||||
|
@ -572,7 +572,7 @@ class SqlBaseParser extends Parser {
|
||||||
setState(93);
|
setState(93);
|
||||||
_errHandler.sync(this);
|
_errHandler.sync(this);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
while (((((_la - 25)) & ~0x3f) == 0 && ((1L << (_la - 25)) & ((1L << (FORMAT - 25)) | (1L << (PLAN - 25)) | (1L << (VERIFY - 25)))) != 0)) {
|
while (((((_la - 26)) & ~0x3f) == 0 && ((1L << (_la - 26)) & ((1L << (FORMAT - 26)) | (1L << (PLAN - 26)) | (1L << (VERIFY - 26)))) != 0)) {
|
||||||
{
|
{
|
||||||
setState(91);
|
setState(91);
|
||||||
switch (_input.LA(1)) {
|
switch (_input.LA(1)) {
|
||||||
|
@ -1607,7 +1607,7 @@ class SqlBaseParser extends Parser {
|
||||||
match(T__0);
|
match(T__0);
|
||||||
setState(266);
|
setState(266);
|
||||||
_la = _input.LA(1);
|
_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 << TABLES) | (1L << TEXT) | (1L << TRUE) | (1L << TYPES))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 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)) {
|
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)) {
|
||||||
{
|
{
|
||||||
setState(258);
|
setState(258);
|
||||||
expression();
|
expression();
|
||||||
|
@ -1807,7 +1807,7 @@ class SqlBaseParser extends Parser {
|
||||||
expression();
|
expression();
|
||||||
setState(285);
|
setState(285);
|
||||||
_la = _input.LA(1);
|
_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 << TABLES) | (1L << TEXT) | (1L << TYPES))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (VERIFY - 64)) | (1L << (IDENTIFIER - 64)) | (1L << (DIGIT_IDENTIFIER - 64)) | (1L << (QUOTED_IDENTIFIER - 64)) | (1L << (BACKQUOTED_IDENTIFIER - 64)))) != 0)) {
|
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)) {
|
||||||
{
|
{
|
||||||
setState(282);
|
setState(282);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
|
@ -2292,7 +2292,7 @@ class SqlBaseParser extends Parser {
|
||||||
tableIdentifier();
|
tableIdentifier();
|
||||||
setState(345);
|
setState(345);
|
||||||
_la = _input.LA(1);
|
_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 << TABLES) | (1L << TEXT) | (1L << TYPES))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (VERIFY - 64)) | (1L << (IDENTIFIER - 64)) | (1L << (DIGIT_IDENTIFIER - 64)) | (1L << (QUOTED_IDENTIFIER - 64)) | (1L << (BACKQUOTED_IDENTIFIER - 64)))) != 0)) {
|
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)) {
|
||||||
{
|
{
|
||||||
setState(342);
|
setState(342);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
|
@ -2322,7 +2322,7 @@ class SqlBaseParser extends Parser {
|
||||||
match(T__1);
|
match(T__1);
|
||||||
setState(354);
|
setState(354);
|
||||||
_la = _input.LA(1);
|
_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 << TABLES) | (1L << TEXT) | (1L << TYPES))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (VERIFY - 64)) | (1L << (IDENTIFIER - 64)) | (1L << (DIGIT_IDENTIFIER - 64)) | (1L << (QUOTED_IDENTIFIER - 64)) | (1L << (BACKQUOTED_IDENTIFIER - 64)))) != 0)) {
|
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)) {
|
||||||
{
|
{
|
||||||
setState(351);
|
setState(351);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
|
@ -2352,7 +2352,7 @@ class SqlBaseParser extends Parser {
|
||||||
match(T__1);
|
match(T__1);
|
||||||
setState(363);
|
setState(363);
|
||||||
_la = _input.LA(1);
|
_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 << TABLES) | (1L << TEXT) | (1L << TYPES))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (VERIFY - 64)) | (1L << (IDENTIFIER - 64)) | (1L << (DIGIT_IDENTIFIER - 64)) | (1L << (QUOTED_IDENTIFIER - 64)) | (1L << (BACKQUOTED_IDENTIFIER - 64)))) != 0)) {
|
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)) {
|
||||||
{
|
{
|
||||||
setState(360);
|
setState(360);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
|
@ -3288,6 +3288,9 @@ class SqlBaseParser extends Parser {
|
||||||
case PLAN:
|
case PLAN:
|
||||||
case RLIKE:
|
case RLIKE:
|
||||||
case QUERY:
|
case QUERY:
|
||||||
|
case SCHEMAS:
|
||||||
|
case SHOW:
|
||||||
|
case SYS:
|
||||||
case TABLES:
|
case TABLES:
|
||||||
case TEXT:
|
case TEXT:
|
||||||
case TRUE:
|
case TRUE:
|
||||||
|
@ -3353,7 +3356,7 @@ class SqlBaseParser extends Parser {
|
||||||
setState(493);
|
setState(493);
|
||||||
((ArithmeticBinaryContext)_localctx).operator = _input.LT(1);
|
((ArithmeticBinaryContext)_localctx).operator = _input.LT(1);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
if ( !(((((_la - 75)) & ~0x3f) == 0 && ((1L << (_la - 75)) & ((1L << (ASTERISK - 75)) | (1L << (SLASH - 75)) | (1L << (PERCENT - 75)))) != 0)) ) {
|
if ( !(((((_la - 76)) & ~0x3f) == 0 && ((1L << (_la - 76)) & ((1L << (ASTERISK - 76)) | (1L << (SLASH - 76)) | (1L << (PERCENT - 76)))) != 0)) ) {
|
||||||
((ArithmeticBinaryContext)_localctx).operator = (Token)_errHandler.recoverInline(this);
|
((ArithmeticBinaryContext)_localctx).operator = (Token)_errHandler.recoverInline(this);
|
||||||
} else {
|
} else {
|
||||||
consume();
|
consume();
|
||||||
|
@ -3685,7 +3688,7 @@ class SqlBaseParser extends Parser {
|
||||||
{
|
{
|
||||||
setState(526);
|
setState(526);
|
||||||
_la = _input.LA(1);
|
_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 << TABLES) | (1L << TEXT) | (1L << TYPES))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (VERIFY - 64)) | (1L << (IDENTIFIER - 64)) | (1L << (DIGIT_IDENTIFIER - 64)) | (1L << (QUOTED_IDENTIFIER - 64)) | (1L << (BACKQUOTED_IDENTIFIER - 64)))) != 0)) {
|
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)) {
|
||||||
{
|
{
|
||||||
setState(523);
|
setState(523);
|
||||||
qualifiedName();
|
qualifiedName();
|
||||||
|
@ -3708,7 +3711,7 @@ class SqlBaseParser extends Parser {
|
||||||
match(T__0);
|
match(T__0);
|
||||||
setState(542);
|
setState(542);
|
||||||
_la = _input.LA(1);
|
_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 << TABLES) | (1L << TEXT) | (1L << TRUE) | (1L << TYPES))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 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)) {
|
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)) {
|
||||||
{
|
{
|
||||||
setState(532);
|
setState(532);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
|
@ -3993,7 +3996,7 @@ class SqlBaseParser extends Parser {
|
||||||
{
|
{
|
||||||
setState(568);
|
setState(568);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
if ( !(((((_la - 67)) & ~0x3f) == 0 && ((1L << (_la - 67)) & ((1L << (EQ - 67)) | (1L << (NEQ - 67)) | (1L << (LT - 67)) | (1L << (LTE - 67)) | (1L << (GT - 67)) | (1L << (GTE - 67)))) != 0)) ) {
|
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)) ) {
|
||||||
_errHandler.recoverInline(this);
|
_errHandler.recoverInline(this);
|
||||||
} else {
|
} else {
|
||||||
consume();
|
consume();
|
||||||
|
@ -4239,6 +4242,9 @@ class SqlBaseParser extends Parser {
|
||||||
case PLAN:
|
case PLAN:
|
||||||
case RLIKE:
|
case RLIKE:
|
||||||
case QUERY:
|
case QUERY:
|
||||||
|
case SCHEMAS:
|
||||||
|
case SHOW:
|
||||||
|
case SYS:
|
||||||
case TABLES:
|
case TABLES:
|
||||||
case TEXT:
|
case TEXT:
|
||||||
case TYPES:
|
case TYPES:
|
||||||
|
@ -4267,9 +4273,14 @@ class SqlBaseParser extends Parser {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class TableIdentifierContext extends ParserRuleContext {
|
public static class TableIdentifierContext extends ParserRuleContext {
|
||||||
|
public IdentifierContext catalog;
|
||||||
|
public IdentifierContext name;
|
||||||
public TerminalNode TABLE_IDENTIFIER() { return getToken(SqlBaseParser.TABLE_IDENTIFIER, 0); }
|
public TerminalNode TABLE_IDENTIFIER() { return getToken(SqlBaseParser.TABLE_IDENTIFIER, 0); }
|
||||||
public IdentifierContext identifier() {
|
public List<IdentifierContext> identifier() {
|
||||||
return getRuleContext(IdentifierContext.class,0);
|
return getRuleContexts(IdentifierContext.class);
|
||||||
|
}
|
||||||
|
public IdentifierContext identifier(int i) {
|
||||||
|
return getRuleContext(IdentifierContext.class,i);
|
||||||
}
|
}
|
||||||
public TableIdentifierContext(ParserRuleContext parent, int invokingState) {
|
public TableIdentifierContext(ParserRuleContext parent, int invokingState) {
|
||||||
super(parent, invokingState);
|
super(parent, invokingState);
|
||||||
|
@ -4293,48 +4304,48 @@ class SqlBaseParser extends Parser {
|
||||||
public final TableIdentifierContext tableIdentifier() throws RecognitionException {
|
public final TableIdentifierContext tableIdentifier() throws RecognitionException {
|
||||||
TableIdentifierContext _localctx = new TableIdentifierContext(_ctx, getState());
|
TableIdentifierContext _localctx = new TableIdentifierContext(_ctx, getState());
|
||||||
enterRule(_localctx, 66, RULE_tableIdentifier);
|
enterRule(_localctx, 66, RULE_tableIdentifier);
|
||||||
|
int _la;
|
||||||
try {
|
try {
|
||||||
setState(590);
|
setState(600);
|
||||||
switch (_input.LA(1)) {
|
_errHandler.sync(this);
|
||||||
case TABLE_IDENTIFIER:
|
switch ( getInterpreter().adaptivePredict(_input,85,_ctx) ) {
|
||||||
|
case 1:
|
||||||
enterOuterAlt(_localctx, 1);
|
enterOuterAlt(_localctx, 1);
|
||||||
{
|
{
|
||||||
setState(588);
|
setState(591);
|
||||||
|
_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)) {
|
||||||
|
{
|
||||||
|
setState(588);
|
||||||
|
((TableIdentifierContext)_localctx).catalog = identifier();
|
||||||
|
setState(589);
|
||||||
|
match(T__3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setState(593);
|
||||||
match(TABLE_IDENTIFIER);
|
match(TABLE_IDENTIFIER);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ANALYZE:
|
case 2:
|
||||||
case ANALYZED:
|
|
||||||
case COLUMNS:
|
|
||||||
case DEBUG:
|
|
||||||
case EXECUTABLE:
|
|
||||||
case EXPLAIN:
|
|
||||||
case FORMAT:
|
|
||||||
case FUNCTIONS:
|
|
||||||
case GRAPHVIZ:
|
|
||||||
case MAPPED:
|
|
||||||
case OPTIMIZED:
|
|
||||||
case PARSED:
|
|
||||||
case PHYSICAL:
|
|
||||||
case PLAN:
|
|
||||||
case RLIKE:
|
|
||||||
case QUERY:
|
|
||||||
case TABLES:
|
|
||||||
case TEXT:
|
|
||||||
case TYPES:
|
|
||||||
case VERIFY:
|
|
||||||
case IDENTIFIER:
|
|
||||||
case DIGIT_IDENTIFIER:
|
|
||||||
case QUOTED_IDENTIFIER:
|
|
||||||
case BACKQUOTED_IDENTIFIER:
|
|
||||||
enterOuterAlt(_localctx, 2);
|
enterOuterAlt(_localctx, 2);
|
||||||
{
|
{
|
||||||
setState(589);
|
setState(597);
|
||||||
identifier();
|
_errHandler.sync(this);
|
||||||
|
switch ( getInterpreter().adaptivePredict(_input,84,_ctx) ) {
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
setState(594);
|
||||||
|
((TableIdentifierContext)_localctx).catalog = identifier();
|
||||||
|
setState(595);
|
||||||
|
match(T__3);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
setState(599);
|
||||||
|
((TableIdentifierContext)_localctx).name = identifier();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
|
||||||
throw new NoViableAltException(this);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (RecognitionException re) {
|
catch (RecognitionException re) {
|
||||||
|
@ -4398,13 +4409,13 @@ class SqlBaseParser extends Parser {
|
||||||
QuoteIdentifierContext _localctx = new QuoteIdentifierContext(_ctx, getState());
|
QuoteIdentifierContext _localctx = new QuoteIdentifierContext(_ctx, getState());
|
||||||
enterRule(_localctx, 68, RULE_quoteIdentifier);
|
enterRule(_localctx, 68, RULE_quoteIdentifier);
|
||||||
try {
|
try {
|
||||||
setState(594);
|
setState(604);
|
||||||
switch (_input.LA(1)) {
|
switch (_input.LA(1)) {
|
||||||
case QUOTED_IDENTIFIER:
|
case QUOTED_IDENTIFIER:
|
||||||
_localctx = new QuotedIdentifierContext(_localctx);
|
_localctx = new QuotedIdentifierContext(_localctx);
|
||||||
enterOuterAlt(_localctx, 1);
|
enterOuterAlt(_localctx, 1);
|
||||||
{
|
{
|
||||||
setState(592);
|
setState(602);
|
||||||
match(QUOTED_IDENTIFIER);
|
match(QUOTED_IDENTIFIER);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -4412,7 +4423,7 @@ class SqlBaseParser extends Parser {
|
||||||
_localctx = new BackQuotedIdentifierContext(_localctx);
|
_localctx = new BackQuotedIdentifierContext(_localctx);
|
||||||
enterOuterAlt(_localctx, 2);
|
enterOuterAlt(_localctx, 2);
|
||||||
{
|
{
|
||||||
setState(593);
|
setState(603);
|
||||||
match(BACKQUOTED_IDENTIFIER);
|
match(BACKQUOTED_IDENTIFIER);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -4484,13 +4495,13 @@ class SqlBaseParser extends Parser {
|
||||||
UnquoteIdentifierContext _localctx = new UnquoteIdentifierContext(_ctx, getState());
|
UnquoteIdentifierContext _localctx = new UnquoteIdentifierContext(_ctx, getState());
|
||||||
enterRule(_localctx, 70, RULE_unquoteIdentifier);
|
enterRule(_localctx, 70, RULE_unquoteIdentifier);
|
||||||
try {
|
try {
|
||||||
setState(599);
|
setState(609);
|
||||||
switch (_input.LA(1)) {
|
switch (_input.LA(1)) {
|
||||||
case IDENTIFIER:
|
case IDENTIFIER:
|
||||||
_localctx = new UnquotedIdentifierContext(_localctx);
|
_localctx = new UnquotedIdentifierContext(_localctx);
|
||||||
enterOuterAlt(_localctx, 1);
|
enterOuterAlt(_localctx, 1);
|
||||||
{
|
{
|
||||||
setState(596);
|
setState(606);
|
||||||
match(IDENTIFIER);
|
match(IDENTIFIER);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -4510,6 +4521,9 @@ class SqlBaseParser extends Parser {
|
||||||
case PLAN:
|
case PLAN:
|
||||||
case RLIKE:
|
case RLIKE:
|
||||||
case QUERY:
|
case QUERY:
|
||||||
|
case SCHEMAS:
|
||||||
|
case SHOW:
|
||||||
|
case SYS:
|
||||||
case TABLES:
|
case TABLES:
|
||||||
case TEXT:
|
case TEXT:
|
||||||
case TYPES:
|
case TYPES:
|
||||||
|
@ -4517,7 +4531,7 @@ class SqlBaseParser extends Parser {
|
||||||
_localctx = new UnquotedIdentifierContext(_localctx);
|
_localctx = new UnquotedIdentifierContext(_localctx);
|
||||||
enterOuterAlt(_localctx, 2);
|
enterOuterAlt(_localctx, 2);
|
||||||
{
|
{
|
||||||
setState(597);
|
setState(607);
|
||||||
nonReserved();
|
nonReserved();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -4525,7 +4539,7 @@ class SqlBaseParser extends Parser {
|
||||||
_localctx = new DigitIdentifierContext(_localctx);
|
_localctx = new DigitIdentifierContext(_localctx);
|
||||||
enterOuterAlt(_localctx, 3);
|
enterOuterAlt(_localctx, 3);
|
||||||
{
|
{
|
||||||
setState(598);
|
setState(608);
|
||||||
match(DIGIT_IDENTIFIER);
|
match(DIGIT_IDENTIFIER);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -4594,13 +4608,13 @@ class SqlBaseParser extends Parser {
|
||||||
NumberContext _localctx = new NumberContext(_ctx, getState());
|
NumberContext _localctx = new NumberContext(_ctx, getState());
|
||||||
enterRule(_localctx, 72, RULE_number);
|
enterRule(_localctx, 72, RULE_number);
|
||||||
try {
|
try {
|
||||||
setState(603);
|
setState(613);
|
||||||
switch (_input.LA(1)) {
|
switch (_input.LA(1)) {
|
||||||
case DECIMAL_VALUE:
|
case DECIMAL_VALUE:
|
||||||
_localctx = new DecimalLiteralContext(_localctx);
|
_localctx = new DecimalLiteralContext(_localctx);
|
||||||
enterOuterAlt(_localctx, 1);
|
enterOuterAlt(_localctx, 1);
|
||||||
{
|
{
|
||||||
setState(601);
|
setState(611);
|
||||||
match(DECIMAL_VALUE);
|
match(DECIMAL_VALUE);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -4608,7 +4622,7 @@ class SqlBaseParser extends Parser {
|
||||||
_localctx = new IntegerLiteralContext(_localctx);
|
_localctx = new IntegerLiteralContext(_localctx);
|
||||||
enterOuterAlt(_localctx, 2);
|
enterOuterAlt(_localctx, 2);
|
||||||
{
|
{
|
||||||
setState(602);
|
setState(612);
|
||||||
match(INTEGER_VALUE);
|
match(INTEGER_VALUE);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -4644,6 +4658,9 @@ class SqlBaseParser extends Parser {
|
||||||
public TerminalNode PLAN() { return getToken(SqlBaseParser.PLAN, 0); }
|
public TerminalNode PLAN() { return getToken(SqlBaseParser.PLAN, 0); }
|
||||||
public TerminalNode QUERY() { return getToken(SqlBaseParser.QUERY, 0); }
|
public TerminalNode QUERY() { return getToken(SqlBaseParser.QUERY, 0); }
|
||||||
public TerminalNode RLIKE() { return getToken(SqlBaseParser.RLIKE, 0); }
|
public TerminalNode RLIKE() { return getToken(SqlBaseParser.RLIKE, 0); }
|
||||||
|
public TerminalNode SCHEMAS() { return getToken(SqlBaseParser.SCHEMAS, 0); }
|
||||||
|
public TerminalNode SHOW() { return getToken(SqlBaseParser.SHOW, 0); }
|
||||||
|
public TerminalNode SYS() { return getToken(SqlBaseParser.SYS, 0); }
|
||||||
public TerminalNode TABLES() { return getToken(SqlBaseParser.TABLES, 0); }
|
public TerminalNode TABLES() { return getToken(SqlBaseParser.TABLES, 0); }
|
||||||
public TerminalNode TEXT() { return getToken(SqlBaseParser.TEXT, 0); }
|
public TerminalNode TEXT() { return getToken(SqlBaseParser.TEXT, 0); }
|
||||||
public TerminalNode TYPES() { return getToken(SqlBaseParser.TYPES, 0); }
|
public TerminalNode TYPES() { return getToken(SqlBaseParser.TYPES, 0); }
|
||||||
|
@ -4674,9 +4691,9 @@ class SqlBaseParser extends Parser {
|
||||||
try {
|
try {
|
||||||
enterOuterAlt(_localctx, 1);
|
enterOuterAlt(_localctx, 1);
|
||||||
{
|
{
|
||||||
setState(605);
|
setState(615);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
if ( !(((((_la - 5)) & ~0x3f) == 0 && ((1L << (_la - 5)) & ((1L << (ANALYZE - 5)) | (1L << (ANALYZED - 5)) | (1L << (COLUMNS - 5)) | (1L << (DEBUG - 5)) | (1L << (EXECUTABLE - 5)) | (1L << (EXPLAIN - 5)) | (1L << (FORMAT - 5)) | (1L << (FUNCTIONS - 5)) | (1L << (GRAPHVIZ - 5)) | (1L << (MAPPED - 5)) | (1L << (OPTIMIZED - 5)) | (1L << (PARSED - 5)) | (1L << (PHYSICAL - 5)) | (1L << (PLAN - 5)) | (1L << (RLIKE - 5)) | (1L << (QUERY - 5)) | (1L << (TABLES - 5)) | (1L << (TEXT - 5)) | (1L << (TYPES - 5)) | (1L << (VERIFY - 5)))) != 0)) ) {
|
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)) ) {
|
||||||
_errHandler.recoverInline(this);
|
_errHandler.recoverInline(this);
|
||||||
} else {
|
} else {
|
||||||
consume();
|
consume();
|
||||||
|
@ -4725,7 +4742,7 @@ class SqlBaseParser extends Parser {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final String _serializedATN =
|
public static final String _serializedATN =
|
||||||
"\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\3^\u0262\4\2\t\2\4"+
|
"\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\3_\u026c\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"+
|
"\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"+
|
"\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"+
|
"\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"+
|
||||||
|
@ -4772,201 +4789,204 @@ class SqlBaseParser extends Parser {
|
||||||
"\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"+
|
"\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\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"+
|
"\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#\5#\u0251\n#\3$\3$\5$\u0255"+
|
"!\u0247\13!\3!\3!\3\"\3\"\5\"\u024d\n\"\3#\3#\3#\5#\u0252\n#\3#\3#\3#"+
|
||||||
"\n$\3%\3%\3%\5%\u025a\n%\3&\3&\5&\u025e\n&\3\'\3\'\3\'\2\4,\64(\2\4\6"+
|
"\3#\5#\u0258\n#\3#\5#\u025b\n#\3$\3$\5$\u025f\n$\3%\3%\3%\5%\u0264\n%"+
|
||||||
"\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJL\2\17"+
|
"\3&\3&\5&\u0268\n&\3\'\3\'\3\'\2\4,\64(\2\4\6\b\n\f\16\20\22\24\26\30"+
|
||||||
"\b\2\6\6\b\b\26\26))//\63\63\4\2\37\37>>\4\2\b\b//\4\2\34\34\"\"\3\2\22"+
|
"\32\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJL\2\17\b\2\7\7\t\t\27\27**\60"+
|
||||||
"\23\4\2\6\6SS\4\2\f\f\22\22\4\2\6\6\24\24\3\2KL\3\2MO\3\2EJ\4\2\32\32"+
|
"\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"+
|
||||||
"??\17\2\7\b\20\21\26\26\30\30\33\33\36\37))//\63\65\678=>@@BB\u02b3\2"+
|
"\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"+
|
||||||
"N\3\2\2\2\4Q\3\2\2\2\6\u00a6\3\2\2\2\b\u00b1\3\2\2\2\n\u00b5\3\2\2\2\f"+
|
"\27\31\31\34\34\37 **\60\60\64\668:<?AACC\u02bf\2N\3\2\2\2\4Q\3\2\2\2"+
|
||||||
"\u00cb\3\2\2\2\16\u00cd\3\2\2\2\20\u00d1\3\2\2\2\22\u00ed\3\2\2\2\24\u00f7"+
|
"\6\u00a6\3\2\2\2\b\u00b1\3\2\2\2\n\u00b5\3\2\2\2\f\u00cb\3\2\2\2\16\u00cd"+
|
||||||
"\3\2\2\2\26\u0101\3\2\2\2\30\u0110\3\2\2\2\32\u0112\3\2\2\2\34\u0118\3"+
|
"\3\2\2\2\20\u00d1\3\2\2\2\22\u00ed\3\2\2\2\24\u00f7\3\2\2\2\26\u0101\3"+
|
||||||
"\2\2\2\36\u011a\3\2\2\2 \u0121\3\2\2\2\"\u0133\3\2\2\2$\u0144\3\2\2\2"+
|
"\2\2\2\30\u0110\3\2\2\2\32\u0112\3\2\2\2\34\u0118\3\2\2\2\36\u011a\3\2"+
|
||||||
"&\u0154\3\2\2\2(\u016f\3\2\2\2*\u0171\3\2\2\2,\u01a2\3\2\2\2.\u01af\3"+
|
"\2\2 \u0121\3\2\2\2\"\u0133\3\2\2\2$\u0144\3\2\2\2&\u0154\3\2\2\2(\u016f"+
|
||||||
"\2\2\2\60\u01e1\3\2\2\2\62\u01e3\3\2\2\2\64\u01ec\3\2\2\2\66\u022e\3\2"+
|
"\3\2\2\2*\u0171\3\2\2\2,\u01a2\3\2\2\2.\u01af\3\2\2\2\60\u01e1\3\2\2\2"+
|
||||||
"\2\28\u0238\3\2\2\2:\u023a\3\2\2\2<\u023c\3\2\2\2>\u023e\3\2\2\2@\u0245"+
|
"\62\u01e3\3\2\2\2\64\u01ec\3\2\2\2\66\u022e\3\2\2\28\u0238\3\2\2\2:\u023a"+
|
||||||
"\3\2\2\2B\u024c\3\2\2\2D\u0250\3\2\2\2F\u0254\3\2\2\2H\u0259\3\2\2\2J"+
|
"\3\2\2\2<\u023c\3\2\2\2>\u023e\3\2\2\2@\u0245\3\2\2\2B\u024c\3\2\2\2D"+
|
||||||
"\u025d\3\2\2\2L\u025f\3\2\2\2NO\5\6\4\2OP\7\2\2\3P\3\3\2\2\2QR\5*\26\2"+
|
"\u025a\3\2\2\2F\u025e\3\2\2\2H\u0263\3\2\2\2J\u0267\3\2\2\2L\u0269\3\2"+
|
||||||
"RS\7\2\2\3S\5\3\2\2\2T\u00a7\5\b\5\2Uc\7\30\2\2V_\7\3\2\2WX\7\65\2\2X"+
|
"\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"+
|
||||||
"^\t\2\2\2YZ\7\33\2\2Z^\t\3\2\2[\\\7B\2\2\\^\5<\37\2]W\3\2\2\2]Y\3\2\2"+
|
"\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][\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"+
|
"\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"+
|
||||||
"\2cV\3\2\2\2cd\3\2\2\2de\3\2\2\2e\u00a7\5\6\4\2fr\7\21\2\2gn\7\3\2\2h"+
|
"\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"+
|
||||||
"i\7\65\2\2im\t\4\2\2jk\7\33\2\2km\t\3\2\2lh\3\2\2\2lj\3\2\2\2mp\3\2\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"+
|
||||||
"\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"+
|
"\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"+
|
||||||
"\2st\3\2\2\2t\u00a7\5\6\4\2uv\7;\2\2v{\7=\2\2wy\7\'\2\2xw\3\2\2\2xy\3"+
|
"\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"+
|
||||||
"\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"+
|
"\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"+
|
||||||
"\2~\177\7\20\2\2\177\u0080\t\5\2\2\u0080\u00a7\5D#\2\u0081\u0082\t\6\2"+
|
"\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\u0082\u00a7\5D#\2\u0083\u0084\7;\2\2\u0084\u0089\7\36\2\2\u0085\u0087"+
|
"\2\2\u0080\u00a7\5D#\2\u0081\u0082\t\6\2\2\u0082\u00a7\5D#\2\u0083\u0084"+
|
||||||
"\7\'\2\2\u0086\u0085\3\2\2\2\u0086\u0087\3\2\2\2\u0087\u0088\3\2\2\2\u0088"+
|
"\7<\2\2\u0084\u0089\7\37\2\2\u0085\u0087\7(\2\2\u0086\u0085\3\2\2\2\u0086"+
|
||||||
"\u008a\5\62\32\2\u0089\u0086\3\2\2\2\u0089\u008a\3\2\2\2\u008a\u00a7\3"+
|
"\u0087\3\2\2\2\u0087\u0088\3\2\2\2\u0088\u008a\5\62\32\2\u0089\u0086\3"+
|
||||||
"\2\2\2\u008b\u008c\7;\2\2\u008c\u00a7\79\2\2\u008d\u008e\7<\2\2\u008e"+
|
"\2\2\2\u0089\u008a\3\2\2\2\u008a\u00a7\3\2\2\2\u008b\u008c\7<\2\2\u008c"+
|
||||||
"\u0093\7=\2\2\u008f\u0091\7\'\2\2\u0090\u008f\3\2\2\2\u0090\u0091\3\2"+
|
"\u00a7\7:\2\2\u008d\u008e\7=\2\2\u008e\u0093\7>\2\2\u008f\u0091\7(\2\2"+
|
||||||
"\2\2\u0091\u0092\3\2\2\2\u0092\u0094\5\62\32\2\u0093\u0090\3\2\2\2\u0093"+
|
"\u0090\u008f\3\2\2\2\u0090\u0091\3\2\2\2\u0091\u0092\3\2\2\2\u0092\u0094"+
|
||||||
"\u0094\3\2\2\2\u0094\u00a7\3\2\2\2\u0095\u0096\7<\2\2\u0096\u009c\7\20"+
|
"\5\62\32\2\u0093\u0090\3\2\2\2\u0093\u0094\3\2\2\2\u0094\u00a7\3\2\2\2"+
|
||||||
"\2\2\u0097\u0099\7=\2\2\u0098\u009a\7\'\2\2\u0099\u0098\3\2\2\2\u0099"+
|
"\u0095\u0096\7=\2\2\u0096\u009c\7\21\2\2\u0097\u0099\7>\2\2\u0098\u009a"+
|
||||||
"\u009a\3\2\2\2\u009a\u009b\3\2\2\2\u009b\u009d\5\62\32\2\u009c\u0097\3"+
|
"\7(\2\2\u0099\u0098\3\2\2\2\u0099\u009a\3\2\2\2\u009a\u009b\3\2\2\2\u009b"+
|
||||||
"\2\2\2\u009c\u009d\3\2\2\2\u009d\u00a2\3\2\2\2\u009e\u00a0\7\'\2\2\u009f"+
|
"\u009d\5\62\32\2\u009c\u0097\3\2\2\2\u009c\u009d\3\2\2\2\u009d\u00a2\3"+
|
||||||
"\u009e\3\2\2\2\u009f\u00a0\3\2\2\2\u00a0\u00a1\3\2\2\2\u00a1\u00a3\5\62"+
|
"\2\2\2\u009e\u00a0\7(\2\2\u009f\u009e\3\2\2\2\u009f\u00a0\3\2\2\2\u00a0"+
|
||||||
"\32\2\u00a2\u009f\3\2\2\2\u00a2\u00a3\3\2\2\2\u00a3\u00a7\3\2\2\2\u00a4"+
|
"\u00a1\3\2\2\2\u00a1\u00a3\5\62\32\2\u00a2\u009f\3\2\2\2\u00a2\u00a3\3"+
|
||||||
"\u00a5\7<\2\2\u00a5\u00a7\7@\2\2\u00a6T\3\2\2\2\u00a6U\3\2\2\2\u00a6f"+
|
"\2\2\2\u00a3\u00a7\3\2\2\2\u00a4\u00a5\7=\2\2\u00a5\u00a7\7A\2\2\u00a6"+
|
||||||
"\3\2\2\2\u00a6u\3\2\2\2\u00a6}\3\2\2\2\u00a6\u0081\3\2\2\2\u00a6\u0083"+
|
"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"+
|
||||||
"\3\2\2\2\u00a6\u008b\3\2\2\2\u00a6\u008d\3\2\2\2\u00a6\u0095\3\2\2\2\u00a6"+
|
"\u00a6\u0081\3\2\2\2\u00a6\u0083\3\2\2\2\u00a6\u008b\3\2\2\2\u00a6\u008d"+
|
||||||
"\u00a4\3\2\2\2\u00a7\7\3\2\2\2\u00a8\u00a9\7D\2\2\u00a9\u00ae\5\32\16"+
|
"\3\2\2\2\u00a6\u0095\3\2\2\2\u00a6\u00a4\3\2\2\2\u00a7\7\3\2\2\2\u00a8"+
|
||||||
"\2\u00aa\u00ab\7\5\2\2\u00ab\u00ad\5\32\16\2\u00ac\u00aa\3\2\2\2\u00ad"+
|
"\u00a9\7E\2\2\u00a9\u00ae\5\32\16\2\u00aa\u00ab\7\5\2\2\u00ab\u00ad\5"+
|
||||||
"\u00b0\3\2\2\2\u00ae\u00ac\3\2\2\2\u00ae\u00af\3\2\2\2\u00af\u00b2\3\2"+
|
"\32\16\2\u00ac\u00aa\3\2\2\2\u00ad\u00b0\3\2\2\2\u00ae\u00ac\3\2\2\2\u00ae"+
|
||||||
"\2\2\u00b0\u00ae\3\2\2\2\u00b1\u00a8\3\2\2\2\u00b1\u00b2\3\2\2\2\u00b2"+
|
"\u00af\3\2\2\2\u00af\u00b2\3\2\2\2\u00b0\u00ae\3\2\2\2\u00b1\u00a8\3\2"+
|
||||||
"\u00b3\3\2\2\2\u00b3\u00b4\5\n\6\2\u00b4\t\3\2\2\2\u00b5\u00c0\5\f\7\2"+
|
"\2\2\u00b1\u00b2\3\2\2\2\u00b2\u00b3\3\2\2\2\u00b3\u00b4\5\n\6\2\u00b4"+
|
||||||
"\u00b6\u00b7\7\61\2\2\u00b7\u00b8\7\16\2\2\u00b8\u00bd\5\16\b\2\u00b9"+
|
"\t\3\2\2\2\u00b5\u00c0\5\f\7\2\u00b6\u00b7\7\62\2\2\u00b7\u00b8\7\17\2"+
|
||||||
"\u00ba\7\5\2\2\u00ba\u00bc\5\16\b\2\u00bb\u00b9\3\2\2\2\u00bc\u00bf\3"+
|
"\2\u00b8\u00bd\5\16\b\2\u00b9\u00ba\7\5\2\2\u00ba\u00bc\5\16\b\2\u00bb"+
|
||||||
"\2\2\2\u00bd\u00bb\3\2\2\2\u00bd\u00be\3\2\2\2\u00be\u00c1\3\2\2\2\u00bf"+
|
"\u00b9\3\2\2\2\u00bc\u00bf\3\2\2\2\u00bd\u00bb\3\2\2\2\u00bd\u00be\3\2"+
|
||||||
"\u00bd\3\2\2\2\u00c0\u00b6\3\2\2\2\u00c0\u00c1\3\2\2\2\u00c1\u00c4\3\2"+
|
"\2\2\u00be\u00c1\3\2\2\2\u00bf\u00bd\3\2\2\2\u00c0\u00b6\3\2\2\2\u00c0"+
|
||||||
"\2\2\u00c2\u00c3\7(\2\2\u00c3\u00c5\t\7\2\2\u00c4\u00c2\3\2\2\2\u00c4"+
|
"\u00c1\3\2\2\2\u00c1\u00c4\3\2\2\2\u00c2\u00c3\7)\2\2\u00c3\u00c5\t\7"+
|
||||||
"\u00c5\3\2\2\2\u00c5\13\3\2\2\2\u00c6\u00cc\5\20\t\2\u00c7\u00c8\7\3\2"+
|
"\2\2\u00c4\u00c2\3\2\2\2\u00c4\u00c5\3\2\2\2\u00c5\13\3\2\2\2\u00c6\u00cc"+
|
||||||
"\2\u00c8\u00c9\5\n\6\2\u00c9\u00ca\7\4\2\2\u00ca\u00cc\3\2\2\2\u00cb\u00c6"+
|
"\5\20\t\2\u00c7\u00c8\7\3\2\2\u00c8\u00c9\5\n\6\2\u00c9\u00ca\7\4\2\2"+
|
||||||
"\3\2\2\2\u00cb\u00c7\3\2\2\2\u00cc\r\3\2\2\2\u00cd\u00cf\5*\26\2\u00ce"+
|
"\u00ca\u00cc\3\2\2\2\u00cb\u00c6\3\2\2\2\u00cb\u00c7\3\2\2\2\u00cc\r\3"+
|
||||||
"\u00d0\t\b\2\2\u00cf\u00ce\3\2\2\2\u00cf\u00d0\3\2\2\2\u00d0\17\3\2\2"+
|
"\2\2\2\u00cd\u00cf\5*\26\2\u00ce\u00d0\t\b\2\2\u00cf\u00ce\3\2\2\2\u00cf"+
|
||||||
"\2\u00d1\u00d3\7:\2\2\u00d2\u00d4\5\34\17\2\u00d3\u00d2\3\2\2\2\u00d3"+
|
"\u00d0\3\2\2\2\u00d0\17\3\2\2\2\u00d1\u00d3\7;\2\2\u00d2\u00d4\5\34\17"+
|
||||||
"\u00d4\3\2\2\2\u00d4\u00d5\3\2\2\2\u00d5\u00da\5\36\20\2\u00d6\u00d7\7"+
|
"\2\u00d3\u00d2\3\2\2\2\u00d3\u00d4\3\2\2\2\u00d4\u00d5\3\2\2\2\u00d5\u00da"+
|
||||||
"\5\2\2\u00d7\u00d9\5\36\20\2\u00d8\u00d6\3\2\2\2\u00d9\u00dc\3\2\2\2\u00da"+
|
"\5\36\20\2\u00d6\u00d7\7\5\2\2\u00d7\u00d9\5\36\20\2\u00d8\u00d6\3\2\2"+
|
||||||
"\u00d8\3\2\2\2\u00da\u00db\3\2\2\2\u00db\u00de\3\2\2\2\u00dc\u00da\3\2"+
|
"\2\u00d9\u00dc\3\2\2\2\u00da\u00d8\3\2\2\2\u00da\u00db\3\2\2\2\u00db\u00de"+
|
||||||
"\2\2\u00dd\u00df\5\22\n\2\u00de\u00dd\3\2\2\2\u00de\u00df\3\2\2\2\u00df"+
|
"\3\2\2\2\u00dc\u00da\3\2\2\2\u00dd\u00df\5\22\n\2\u00de\u00dd\3\2\2\2"+
|
||||||
"\u00e2\3\2\2\2\u00e0\u00e1\7C\2\2\u00e1\u00e3\5,\27\2\u00e2\u00e0\3\2"+
|
"\u00de\u00df\3\2\2\2\u00df\u00e2\3\2\2\2\u00e0\u00e1\7D\2\2\u00e1\u00e3"+
|
||||||
"\2\2\u00e2\u00e3\3\2\2\2\u00e3\u00e7\3\2\2\2\u00e4\u00e5\7 \2\2\u00e5"+
|
"\5,\27\2\u00e2\u00e0\3\2\2\2\u00e2\u00e3\3\2\2\2\u00e3\u00e7\3\2\2\2\u00e4"+
|
||||||
"\u00e6\7\16\2\2\u00e6\u00e8\5\24\13\2\u00e7\u00e4\3\2\2\2\u00e7\u00e8"+
|
"\u00e5\7!\2\2\u00e5\u00e6\7\17\2\2\u00e6\u00e8\5\24\13\2\u00e7\u00e4\3"+
|
||||||
"\3\2\2\2\u00e8\u00eb\3\2\2\2\u00e9\u00ea\7!\2\2\u00ea\u00ec\5,\27\2\u00eb"+
|
"\2\2\2\u00e7\u00e8\3\2\2\2\u00e8\u00eb\3\2\2\2\u00e9\u00ea\7\"\2\2\u00ea"+
|
||||||
"\u00e9\3\2\2\2\u00eb\u00ec\3\2\2\2\u00ec\21\3\2\2\2\u00ed\u00ee\7\34\2"+
|
"\u00ec\5,\27\2\u00eb\u00e9\3\2\2\2\u00eb\u00ec\3\2\2\2\u00ec\21\3\2\2"+
|
||||||
"\2\u00ee\u00f3\5 \21\2\u00ef\u00f0\7\5\2\2\u00f0\u00f2\5 \21\2\u00f1\u00ef"+
|
"\2\u00ed\u00ee\7\35\2\2\u00ee\u00f3\5 \21\2\u00ef\u00f0\7\5\2\2\u00f0"+
|
||||||
"\3\2\2\2\u00f2\u00f5\3\2\2\2\u00f3\u00f1\3\2\2\2\u00f3\u00f4\3\2\2\2\u00f4"+
|
"\u00f2\5 \21\2\u00f1\u00ef\3\2\2\2\u00f2\u00f5\3\2\2\2\u00f3\u00f1\3\2"+
|
||||||
"\23\3\2\2\2\u00f5\u00f3\3\2\2\2\u00f6\u00f8\5\34\17\2\u00f7\u00f6\3\2"+
|
"\2\2\u00f3\u00f4\3\2\2\2\u00f4\23\3\2\2\2\u00f5\u00f3\3\2\2\2\u00f6\u00f8"+
|
||||||
"\2\2\u00f7\u00f8\3\2\2\2\u00f8\u00f9\3\2\2\2\u00f9\u00fe\5\26\f\2\u00fa"+
|
"\5\34\17\2\u00f7\u00f6\3\2\2\2\u00f7\u00f8\3\2\2\2\u00f8\u00f9\3\2\2\2"+
|
||||||
"\u00fb\7\5\2\2\u00fb\u00fd\5\26\f\2\u00fc\u00fa\3\2\2\2\u00fd\u0100\3"+
|
"\u00f9\u00fe\5\26\f\2\u00fa\u00fb\7\5\2\2\u00fb\u00fd\5\26\f\2\u00fc\u00fa"+
|
||||||
"\2\2\2\u00fe\u00fc\3\2\2\2\u00fe\u00ff\3\2\2\2\u00ff\25\3\2\2\2\u0100"+
|
"\3\2\2\2\u00fd\u0100\3\2\2\2\u00fe\u00fc\3\2\2\2\u00fe\u00ff\3\2\2\2\u00ff"+
|
||||||
"\u00fe\3\2\2\2\u0101\u0102\5\30\r\2\u0102\27\3\2\2\2\u0103\u010c\7\3\2"+
|
"\25\3\2\2\2\u0100\u00fe\3\2\2\2\u0101\u0102\5\30\r\2\u0102\27\3\2\2\2"+
|
||||||
"\2\u0104\u0109\5*\26\2\u0105\u0106\7\5\2\2\u0106\u0108\5*\26\2\u0107\u0105"+
|
"\u0103\u010c\7\3\2\2\u0104\u0109\5*\26\2\u0105\u0106\7\5\2\2\u0106\u0108"+
|
||||||
"\3\2\2\2\u0108\u010b\3\2\2\2\u0109\u0107\3\2\2\2\u0109\u010a\3\2\2\2\u010a"+
|
"\5*\26\2\u0107\u0105\3\2\2\2\u0108\u010b\3\2\2\2\u0109\u0107\3\2\2\2\u0109"+
|
||||||
"\u010d\3\2\2\2\u010b\u0109\3\2\2\2\u010c\u0104\3\2\2\2\u010c\u010d\3\2"+
|
"\u010a\3\2\2\2\u010a\u010d\3\2\2\2\u010b\u0109\3\2\2\2\u010c\u0104\3\2"+
|
||||||
"\2\2\u010d\u010e\3\2\2\2\u010e\u0111\7\4\2\2\u010f\u0111\5*\26\2\u0110"+
|
"\2\2\u010c\u010d\3\2\2\2\u010d\u010e\3\2\2\2\u010e\u0111\7\4\2\2\u010f"+
|
||||||
"\u0103\3\2\2\2\u0110\u010f\3\2\2\2\u0111\31\3\2\2\2\u0112\u0113\5B\"\2"+
|
"\u0111\5*\26\2\u0110\u0103\3\2\2\2\u0110\u010f\3\2\2\2\u0111\31\3\2\2"+
|
||||||
"\u0113\u0114\7\13\2\2\u0114\u0115\7\3\2\2\u0115\u0116\5\n\6\2\u0116\u0117"+
|
"\2\u0112\u0113\5B\"\2\u0113\u0114\7\f\2\2\u0114\u0115\7\3\2\2\u0115\u0116"+
|
||||||
"\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\n\6\2\u0116\u0117\7\4\2\2\u0117\33\3\2\2\2\u0118\u0119\t\t\2\2\u0119"+
|
||||||
"\5*\26\2\u011b\u011d\7\13\2\2\u011c\u011b\3\2\2\2\u011c\u011d\3\2\2\2"+
|
"\35\3\2\2\2\u011a\u011f\5*\26\2\u011b\u011d\7\f\2\2\u011c\u011b\3\2\2"+
|
||||||
"\u011d\u011e\3\2\2\2\u011e\u0120\5B\"\2\u011f\u011c\3\2\2\2\u011f\u0120"+
|
"\2\u011c\u011d\3\2\2\2\u011d\u011e\3\2\2\2\u011e\u0120\5B\"\2\u011f\u011c"+
|
||||||
"\3\2\2\2\u0120\37\3\2\2\2\u0121\u0125\5(\25\2\u0122\u0124\5\"\22\2\u0123"+
|
"\3\2\2\2\u011f\u0120\3\2\2\2\u0120\37\3\2\2\2\u0121\u0125\5(\25\2\u0122"+
|
||||||
"\u0122\3\2\2\2\u0124\u0127\3\2\2\2\u0125\u0123\3\2\2\2\u0125\u0126\3\2"+
|
"\u0124\5\"\22\2\u0123\u0122\3\2\2\2\u0124\u0127\3\2\2\2\u0125\u0123\3"+
|
||||||
"\2\2\u0126!\3\2\2\2\u0127\u0125\3\2\2\2\u0128\u0129\5$\23\2\u0129\u012a"+
|
"\2\2\2\u0125\u0126\3\2\2\2\u0126!\3\2\2\2\u0127\u0125\3\2\2\2\u0128\u0129"+
|
||||||
"\7%\2\2\u012a\u012c\5(\25\2\u012b\u012d\5&\24\2\u012c\u012b\3\2\2\2\u012c"+
|
"\5$\23\2\u0129\u012a\7&\2\2\u012a\u012c\5(\25\2\u012b\u012d\5&\24\2\u012c"+
|
||||||
"\u012d\3\2\2\2\u012d\u0134\3\2\2\2\u012e\u012f\7+\2\2\u012f\u0130\5$\23"+
|
"\u012b\3\2\2\2\u012c\u012d\3\2\2\2\u012d\u0134\3\2\2\2\u012e\u012f\7,"+
|
||||||
"\2\u0130\u0131\7%\2\2\u0131\u0132\5(\25\2\u0132\u0134\3\2\2\2\u0133\u0128"+
|
"\2\2\u012f\u0130\5$\23\2\u0130\u0131\7&\2\2\u0131\u0132\5(\25\2\u0132"+
|
||||||
"\3\2\2\2\u0133\u012e\3\2\2\2\u0134#\3\2\2\2\u0135\u0137\7#\2\2\u0136\u0135"+
|
"\u0134\3\2\2\2\u0133\u0128\3\2\2\2\u0133\u012e\3\2\2\2\u0134#\3\2\2\2"+
|
||||||
"\3\2\2\2\u0136\u0137\3\2\2\2\u0137\u0145\3\2\2\2\u0138\u013a\7&\2\2\u0139"+
|
"\u0135\u0137\7$\2\2\u0136\u0135\3\2\2\2\u0136\u0137\3\2\2\2\u0137\u0145"+
|
||||||
"\u013b\7\62\2\2\u013a\u0139\3\2\2\2\u013a\u013b\3\2\2\2\u013b\u0145\3"+
|
"\3\2\2\2\u0138\u013a\7\'\2\2\u0139\u013b\7\63\2\2\u013a\u0139\3\2\2\2"+
|
||||||
"\2\2\2\u013c\u013e\7\66\2\2\u013d\u013f\7\62\2\2\u013e\u013d\3\2\2\2\u013e"+
|
"\u013a\u013b\3\2\2\2\u013b\u0145\3\2\2\2\u013c\u013e\7\67\2\2\u013d\u013f"+
|
||||||
"\u013f\3\2\2\2\u013f\u0145\3\2\2\2\u0140\u0142\7\35\2\2\u0141\u0143\7"+
|
"\7\63\2\2\u013e\u013d\3\2\2\2\u013e\u013f\3\2\2\2\u013f\u0145\3\2\2\2"+
|
||||||
"\62\2\2\u0142\u0141\3\2\2\2\u0142\u0143\3\2\2\2\u0143\u0145\3\2\2\2\u0144"+
|
"\u0140\u0142\7\36\2\2\u0141\u0143\7\63\2\2\u0142\u0141\3\2\2\2\u0142\u0143"+
|
||||||
"\u0136\3\2\2\2\u0144\u0138\3\2\2\2\u0144\u013c\3\2\2\2\u0144\u0140\3\2"+
|
"\3\2\2\2\u0143\u0145\3\2\2\2\u0144\u0136\3\2\2\2\u0144\u0138\3\2\2\2\u0144"+
|
||||||
"\2\2\u0145%\3\2\2\2\u0146\u0147\7.\2\2\u0147\u0155\5,\27\2\u0148\u0149"+
|
"\u013c\3\2\2\2\u0144\u0140\3\2\2\2\u0145%\3\2\2\2\u0146\u0147\7/\2\2\u0147"+
|
||||||
"\7A\2\2\u0149\u014a\7\3\2\2\u014a\u014f\5B\"\2\u014b\u014c\7\5\2\2\u014c"+
|
"\u0155\5,\27\2\u0148\u0149\7B\2\2\u0149\u014a\7\3\2\2\u014a\u014f\5B\""+
|
||||||
"\u014e\5B\"\2\u014d\u014b\3\2\2\2\u014e\u0151\3\2\2\2\u014f\u014d\3\2"+
|
"\2\u014b\u014c\7\5\2\2\u014c\u014e\5B\"\2\u014d\u014b\3\2\2\2\u014e\u0151"+
|
||||||
"\2\2\u014f\u0150\3\2\2\2\u0150\u0152\3\2\2\2\u0151\u014f\3\2\2\2\u0152"+
|
"\3\2\2\2\u014f\u014d\3\2\2\2\u014f\u0150\3\2\2\2\u0150\u0152\3\2\2\2\u0151"+
|
||||||
"\u0153\7\4\2\2\u0153\u0155\3\2\2\2\u0154\u0146\3\2\2\2\u0154\u0148\3\2"+
|
"\u014f\3\2\2\2\u0152\u0153\7\4\2\2\u0153\u0155\3\2\2\2\u0154\u0146\3\2"+
|
||||||
"\2\2\u0155\'\3\2\2\2\u0156\u015b\5D#\2\u0157\u0159\7\13\2\2\u0158\u0157"+
|
"\2\2\u0154\u0148\3\2\2\2\u0155\'\3\2\2\2\u0156\u015b\5D#\2\u0157\u0159"+
|
||||||
"\3\2\2\2\u0158\u0159\3\2\2\2\u0159\u015a\3\2\2\2\u015a\u015c\5@!\2\u015b"+
|
"\7\f\2\2\u0158\u0157\3\2\2\2\u0158\u0159\3\2\2\2\u0159\u015a\3\2\2\2\u015a"+
|
||||||
"\u0158\3\2\2\2\u015b\u015c\3\2\2\2\u015c\u0170\3\2\2\2\u015d\u015e\7\3"+
|
"\u015c\5@!\2\u015b\u0158\3\2\2\2\u015b\u015c\3\2\2\2\u015c\u0170\3\2\2"+
|
||||||
"\2\2\u015e\u015f\5\n\6\2\u015f\u0164\7\4\2\2\u0160\u0162\7\13\2\2\u0161"+
|
"\2\u015d\u015e\7\3\2\2\u015e\u015f\5\n\6\2\u015f\u0164\7\4\2\2\u0160\u0162"+
|
||||||
"\u0160\3\2\2\2\u0161\u0162\3\2\2\2\u0162\u0163\3\2\2\2\u0163\u0165\5@"+
|
"\7\f\2\2\u0161\u0160\3\2\2\2\u0161\u0162\3\2\2\2\u0162\u0163\3\2\2\2\u0163"+
|
||||||
"!\2\u0164\u0161\3\2\2\2\u0164\u0165\3\2\2\2\u0165\u0170\3\2\2\2\u0166"+
|
"\u0165\5@!\2\u0164\u0161\3\2\2\2\u0164\u0165\3\2\2\2\u0165\u0170\3\2\2"+
|
||||||
"\u0167\7\3\2\2\u0167\u0168\5 \21\2\u0168\u016d\7\4\2\2\u0169\u016b\7\13"+
|
"\2\u0166\u0167\7\3\2\2\u0167\u0168\5 \21\2\u0168\u016d\7\4\2\2\u0169\u016b"+
|
||||||
"\2\2\u016a\u0169\3\2\2\2\u016a\u016b\3\2\2\2\u016b\u016c\3\2\2\2\u016c"+
|
"\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"+
|
"\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)"+
|
"\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"+
|
"\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\27\2\2\u0177\u0178\7\3"+
|
"\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"+
|
"\2\2\u0178\u0179\5\b\5\2\u0179\u017a\7\4\2\2\u017a\u01a3\3\2\2\2\u017b"+
|
||||||
"\u017c\78\2\2\u017c\u017d\7\3\2\2\u017d\u0182\7R\2\2\u017e\u017f\7\5\2"+
|
"\u017c\79\2\2\u017c\u017d\7\3\2\2\u017d\u0182\7S\2\2\u017e\u017f\7\5\2"+
|
||||||
"\2\u017f\u0181\7R\2\2\u0180\u017e\3\2\2\2\u0181\u0184\3\2\2\2\u0182\u0180"+
|
"\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"+
|
"\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@!"+
|
"\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\7R\2\2\u018b\u018c\7\5\2\2\u018c\u018e"+
|
"\2\u0189\u018a\7\5\2\2\u018a\u018f\7S\2\2\u018b\u018c\7\5\2\2\u018c\u018e"+
|
||||||
"\7R\2\2\u018d\u018b\3\2\2\2\u018e\u0191\3\2\2\2\u018f\u018d\3\2\2\2\u018f"+
|
"\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"+
|
"\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"+
|
"\2\2\u0193\u01a3\3\2\2\2\u0194\u0195\7+\2\2\u0195\u0196\7\3\2\2\u0196"+
|
||||||
"\u0197\7R\2\2\u0197\u0198\7\5\2\2\u0198\u019d\7R\2\2\u0199\u019a\7\5\2"+
|
"\u0197\7S\2\2\u0197\u0198\7\5\2\2\u0198\u019d\7S\2\2\u0199\u019a\7\5\2"+
|
||||||
"\2\u019a\u019c\7R\2\2\u019b\u0199\3\2\2\2\u019c\u019f\3\2\2\2\u019d\u019b"+
|
"\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"+
|
"\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"+
|
"\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"+
|
"\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\t"+
|
"\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\60\2\2\u01a9"+
|
"\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"+
|
"\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"+
|
"\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"+
|
"\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\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\r\2\2\u01b7"+
|
"\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\t\2\2\u01b9\u01ba\5\64\33\2\u01ba\u01e2"+
|
"\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"+
|
"\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*"+
|
"\u01be\3\2\2\2\u01be\u01bf\7#\2\2\u01bf\u01c0\7\3\2\2\u01c0\u01c5\5*\26"+
|
||||||
"\26\2\u01c1\u01c2\7\5\2\2\u01c2\u01c4\5*\26\2\u01c3\u01c1\3\2\2\2\u01c4"+
|
"\2\u01c1\u01c2\7\5\2\2\u01c2\u01c4\5*\26\2\u01c3\u01c1\3\2\2\2\u01c4\u01c7"+
|
||||||
"\u01c7\3\2\2\2\u01c5\u01c3\3\2\2\2\u01c5\u01c6\3\2\2\2\u01c6\u01c8\3\2"+
|
"\3\2\2\2\u01c5\u01c3\3\2\2\2\u01c5\u01c6\3\2\2\2\u01c6\u01c8\3\2\2\2\u01c7"+
|
||||||
"\2\2\u01c7\u01c5\3\2\2\2\u01c8\u01c9\7\4\2\2\u01c9\u01e2\3\2\2\2\u01ca"+
|
"\u01c5\3\2\2\2\u01c8\u01c9\7\4\2\2\u01c9\u01e2\3\2\2\2\u01ca\u01cc\7-"+
|
||||||
"\u01cc\7,\2\2\u01cb\u01ca\3\2\2\2\u01cb\u01cc\3\2\2\2\u01cc\u01cd\3\2"+
|
"\2\2\u01cb\u01ca\3\2\2\2\u01cb\u01cc\3\2\2\2\u01cc\u01cd\3\2\2\2\u01cd"+
|
||||||
"\2\2\u01cd\u01ce\7\"\2\2\u01ce\u01cf\7\3\2\2\u01cf\u01d0\5\b\5\2\u01d0"+
|
"\u01ce\7#\2\2\u01ce\u01cf\7\3\2\2\u01cf\u01d0\5\b\5\2\u01d0\u01d1\7\4"+
|
||||||
"\u01d1\7\4\2\2\u01d1\u01e2\3\2\2\2\u01d2\u01d4\7,\2\2\u01d3\u01d2\3\2"+
|
"\2\2\u01d1\u01e2\3\2\2\2\u01d2\u01d4\7-\2\2\u01d3\u01d2\3\2\2\2\u01d3"+
|
||||||
"\2\2\u01d3\u01d4\3\2\2\2\u01d4\u01d5\3\2\2\2\u01d5\u01d6\7\'\2\2\u01d6"+
|
"\u01d4\3\2\2\2\u01d4\u01d5\3\2\2\2\u01d5\u01d6\7(\2\2\u01d6\u01e2\5\62"+
|
||||||
"\u01e2\5\62\32\2\u01d7\u01d9\7,\2\2\u01d8\u01d7\3\2\2\2\u01d8\u01d9\3"+
|
"\32\2\u01d7\u01d9\7-\2\2\u01d8\u01d7\3\2\2\2\u01d8\u01d9\3\2\2\2\u01d9"+
|
||||||
"\2\2\2\u01d9\u01da\3\2\2\2\u01da\u01db\7\67\2\2\u01db\u01e2\7R\2\2\u01dc"+
|
"\u01da\3\2\2\2\u01da\u01db\78\2\2\u01db\u01e2\7S\2\2\u01dc\u01de\7%\2"+
|
||||||
"\u01de\7$\2\2\u01dd\u01df\7,\2\2\u01de\u01dd\3\2\2\2\u01de\u01df\3\2\2"+
|
"\2\u01dd\u01df\7-\2\2\u01de\u01dd\3\2\2\2\u01de\u01df\3\2\2\2\u01df\u01e0"+
|
||||||
"\2\u01df\u01e0\3\2\2\2\u01e0\u01e2\7-\2\2\u01e1\u01b4\3\2\2\2\u01e1\u01bc"+
|
"\3\2\2\2\u01e0\u01e2\7.\2\2\u01e1\u01b4\3\2\2\2\u01e1\u01bc\3\2\2\2\u01e1"+
|
||||||
"\3\2\2\2\u01e1\u01cb\3\2\2\2\u01e1\u01d3\3\2\2\2\u01e1\u01d8\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"+
|
||||||
"\u01dc\3\2\2\2\u01e2\61\3\2\2\2\u01e3\u01e6\7R\2\2\u01e4\u01e5\7\25\2"+
|
"\2\2\u01e2\61\3\2\2\2\u01e3\u01e6\7S\2\2\u01e4\u01e5\7\26\2\2\u01e5\u01e7"+
|
||||||
"\2\u01e5\u01e7\7R\2\2\u01e6\u01e4\3\2\2\2\u01e6\u01e7\3\2\2\2\u01e7\63"+
|
"\7S\2\2\u01e6\u01e4\3\2\2\2\u01e6\u01e7\3\2\2\2\u01e7\63\3\2\2\2\u01e8"+
|
||||||
"\3\2\2\2\u01e8\u01e9\b\33\1\2\u01e9\u01ed\5\66\34\2\u01ea\u01eb\t\n\2"+
|
"\u01e9\b\33\1\2\u01e9\u01ed\5\66\34\2\u01ea\u01eb\t\n\2\2\u01eb\u01ed"+
|
||||||
"\2\u01eb\u01ed\5\64\33\6\u01ec\u01e8\3\2\2\2\u01ec\u01ea\3\2\2\2\u01ed"+
|
"\5\64\33\6\u01ec\u01e8\3\2\2\2\u01ec\u01ea\3\2\2\2\u01ed\u01fa\3\2\2\2"+
|
||||||
"\u01fa\3\2\2\2\u01ee\u01ef\f\5\2\2\u01ef\u01f0\t\13\2\2\u01f0\u01f9\5"+
|
"\u01ee\u01ef\f\5\2\2\u01ef\u01f0\t\13\2\2\u01f0\u01f9\5\64\33\6\u01f1"+
|
||||||
"\64\33\6\u01f1\u01f2\f\4\2\2\u01f2\u01f3\t\n\2\2\u01f3\u01f9\5\64\33\5"+
|
"\u01f2\f\4\2\2\u01f2\u01f3\t\n\2\2\u01f3\u01f9\5\64\33\5\u01f4\u01f5\f"+
|
||||||
"\u01f4\u01f5\f\3\2\2\u01f5\u01f6\5:\36\2\u01f6\u01f7\5\64\33\4\u01f7\u01f9"+
|
"\3\2\2\u01f5\u01f6\5:\36\2\u01f6\u01f7\5\64\33\4\u01f7\u01f9\3\2\2\2\u01f8"+
|
||||||
"\3\2\2\2\u01f8\u01ee\3\2\2\2\u01f8\u01f1\3\2\2\2\u01f8\u01f4\3\2\2\2\u01f9"+
|
"\u01ee\3\2\2\2\u01f8\u01f1\3\2\2\2\u01f8\u01f4\3\2\2\2\u01f9\u01fc\3\2"+
|
||||||
"\u01fc\3\2\2\2\u01fa\u01f8\3\2\2\2\u01fa\u01fb\3\2\2\2\u01fb\65\3\2\2"+
|
"\2\2\u01fa\u01f8\3\2\2\2\u01fa\u01fb\3\2\2\2\u01fb\65\3\2\2\2\u01fc\u01fa"+
|
||||||
"\2\u01fc\u01fa\3\2\2\2\u01fd\u01fe\7\17\2\2\u01fe\u01ff\7\3\2\2\u01ff"+
|
"\3\2\2\2\u01fd\u01fe\7\20\2\2\u01fe\u01ff\7\3\2\2\u01ff\u0200\5*\26\2"+
|
||||||
"\u0200\5*\26\2\u0200\u0201\7\13\2\2\u0201\u0202\5> \2\u0202\u0203\7\4"+
|
"\u0200\u0201\7\f\2\2\u0201\u0202\5> \2\u0202\u0203\7\4\2\2\u0203\u022f"+
|
||||||
"\2\2\u0203\u022f\3\2\2\2\u0204\u0205\7\31\2\2\u0205\u0206\7\3\2\2\u0206"+
|
"\3\2\2\2\u0204\u0205\7\32\2\2\u0205\u0206\7\3\2\2\u0206\u0207\5B\"\2\u0207"+
|
||||||
"\u0207\5B\"\2\u0207\u0208\7\34\2\2\u0208\u0209\5\64\33\2\u0209\u020a\7"+
|
"\u0208\7\35\2\2\u0208\u0209\5\64\33\2\u0209\u020a\7\4\2\2\u020a\u022f"+
|
||||||
"\4\2\2\u020a\u022f\3\2\2\2\u020b\u022f\58\35\2\u020c\u022f\7M\2\2\u020d"+
|
"\3\2\2\2\u020b\u022f\58\35\2\u020c\u022f\7N\2\2\u020d\u020e\5@!\2\u020e"+
|
||||||
"\u020e\5@!\2\u020e\u020f\7Q\2\2\u020f\u0211\3\2\2\2\u0210\u020d\3\2\2"+
|
"\u020f\7R\2\2\u020f\u0211\3\2\2\2\u0210\u020d\3\2\2\2\u0210\u0211\3\2"+
|
||||||
"\2\u0210\u0211\3\2\2\2\u0211\u0212\3\2\2\2\u0212\u022f\7M\2\2\u0213\u0214"+
|
"\2\2\u0211\u0212\3\2\2\2\u0212\u022f\7N\2\2\u0213\u0214\5B\"\2\u0214\u0220"+
|
||||||
"\5B\"\2\u0214\u0220\7\3\2\2\u0215\u0217\5\34\17\2\u0216\u0215\3\2\2\2"+
|
"\7\3\2\2\u0215\u0217\5\34\17\2\u0216\u0215\3\2\2\2\u0216\u0217\3\2\2\2"+
|
||||||
"\u0216\u0217\3\2\2\2\u0217\u0218\3\2\2\2\u0218\u021d\5*\26\2\u0219\u021a"+
|
"\u0217\u0218\3\2\2\2\u0218\u021d\5*\26\2\u0219\u021a\7\5\2\2\u021a\u021c"+
|
||||||
"\7\5\2\2\u021a\u021c\5*\26\2\u021b\u0219\3\2\2\2\u021c\u021f\3\2\2\2\u021d"+
|
"\5*\26\2\u021b\u0219\3\2\2\2\u021c\u021f\3\2\2\2\u021d\u021b\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"+
|
"\u021e\3\2\2\2\u021e\u0221\3\2\2\2\u021f\u021d\3\2\2\2\u0220\u0216\3\2"+
|
||||||
"\2\2\u0220\u0216\3\2\2\2\u0220\u0221\3\2\2\2\u0221\u0222\3\2\2\2\u0222"+
|
"\2\2\u0220\u0221\3\2\2\2\u0221\u0222\3\2\2\2\u0222\u0223\7\4\2\2\u0223"+
|
||||||
"\u0223\7\4\2\2\u0223\u022f\3\2\2\2\u0224\u0225\7\3\2\2\u0225\u0226\5\b"+
|
"\u022f\3\2\2\2\u0224\u0225\7\3\2\2\u0225\u0226\5\b\5\2\u0226\u0227\7\4"+
|
||||||
"\5\2\u0226\u0227\7\4\2\2\u0227\u022f\3\2\2\2\u0228\u022f\5B\"\2\u0229"+
|
"\2\2\u0227\u022f\3\2\2\2\u0228\u022f\5B\"\2\u0229\u022f\5@!\2\u022a\u022b"+
|
||||||
"\u022f\5@!\2\u022a\u022b\7\3\2\2\u022b\u022c\5*\26\2\u022c\u022d\7\4\2"+
|
"\7\3\2\2\u022b\u022c\5*\26\2\u022c\u022d\7\4\2\2\u022d\u022f\3\2\2\2\u022e"+
|
||||||
"\2\u022d\u022f\3\2\2\2\u022e\u01fd\3\2\2\2\u022e\u0204\3\2\2\2\u022e\u020b"+
|
"\u01fd\3\2\2\2\u022e\u0204\3\2\2\2\u022e\u020b\3\2\2\2\u022e\u020c\3\2"+
|
||||||
"\3\2\2\2\u022e\u020c\3\2\2\2\u022e\u0210\3\2\2\2\u022e\u0213\3\2\2\2\u022e"+
|
"\2\2\u022e\u0210\3\2\2\2\u022e\u0213\3\2\2\2\u022e\u0224\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"+
|
"\u0228\3\2\2\2\u022e\u0229\3\2\2\2\u022e\u022a\3\2\2\2\u022f\67\3\2\2"+
|
||||||
"\2\2\u022f\67\3\2\2\2\u0230\u0239\7-\2\2\u0231\u0239\5J&\2\u0232\u0239"+
|
"\2\u0230\u0239\7.\2\2\u0231\u0239\5J&\2\u0232\u0239\5<\37\2\u0233\u0235"+
|
||||||
"\5<\37\2\u0233\u0235\7R\2\2\u0234\u0233\3\2\2\2\u0235\u0236\3\2\2\2\u0236"+
|
"\7S\2\2\u0234\u0233\3\2\2\2\u0235\u0236\3\2\2\2\u0236\u0234\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"+
|
"\u0237\3\2\2\2\u0237\u0239\3\2\2\2\u0238\u0230\3\2\2\2\u0238\u0231\3\2"+
|
||||||
"\2\2\u0238\u0231\3\2\2\2\u0238\u0232\3\2\2\2\u0238\u0234\3\2\2\2\u0239"+
|
"\2\2\u0238\u0232\3\2\2\2\u0238\u0234\3\2\2\2\u02399\3\2\2\2\u023a\u023b"+
|
||||||
"9\3\2\2\2\u023a\u023b\t\f\2\2\u023b;\3\2\2\2\u023c\u023d\t\r\2\2\u023d"+
|
"\t\f\2\2\u023b;\3\2\2\2\u023c\u023d\t\r\2\2\u023d=\3\2\2\2\u023e\u023f"+
|
||||||
"=\3\2\2\2\u023e\u023f\5B\"\2\u023f?\3\2\2\2\u0240\u0241\5B\"\2\u0241\u0242"+
|
"\5B\"\2\u023f?\3\2\2\2\u0240\u0241\5B\"\2\u0241\u0242\7R\2\2\u0242\u0244"+
|
||||||
"\7Q\2\2\u0242\u0244\3\2\2\2\u0243\u0240\3\2\2\2\u0244\u0247\3\2\2\2\u0245"+
|
"\3\2\2\2\u0243\u0240\3\2\2\2\u0244\u0247\3\2\2\2\u0245\u0243\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"+
|
"\u0246\3\2\2\2\u0246\u0248\3\2\2\2\u0247\u0245\3\2\2\2\u0248\u0249\5B"+
|
||||||
"\2\2\u0248\u0249\5B\"\2\u0249A\3\2\2\2\u024a\u024d\5F$\2\u024b\u024d\5"+
|
"\"\2\u0249A\3\2\2\2\u024a\u024d\5F$\2\u024b\u024d\5H%\2\u024c\u024a\3"+
|
||||||
"H%\2\u024c\u024a\3\2\2\2\u024c\u024b\3\2\2\2\u024dC\3\2\2\2\u024e\u0251"+
|
"\2\2\2\u024c\u024b\3\2\2\2\u024dC\3\2\2\2\u024e\u024f\5B\"\2\u024f\u0250"+
|
||||||
"\7W\2\2\u024f\u0251\5B\"\2\u0250\u024e\3\2\2\2\u0250\u024f\3\2\2\2\u0251"+
|
"\7\6\2\2\u0250\u0252\3\2\2\2\u0251\u024e\3\2\2\2\u0251\u0252\3\2\2\2\u0252"+
|
||||||
"E\3\2\2\2\u0252\u0255\7X\2\2\u0253\u0255\7Y\2\2\u0254\u0252\3\2\2\2\u0254"+
|
"\u0253\3\2\2\2\u0253\u025b\7X\2\2\u0254\u0255\5B\"\2\u0255\u0256\7\6\2"+
|
||||||
"\u0253\3\2\2\2\u0255G\3\2\2\2\u0256\u025a\7U\2\2\u0257\u025a\5L\'\2\u0258"+
|
"\2\u0256\u0258\3\2\2\2\u0257\u0254\3\2\2\2\u0257\u0258\3\2\2\2\u0258\u0259"+
|
||||||
"\u025a\7V\2\2\u0259\u0256\3\2\2\2\u0259\u0257\3\2\2\2\u0259\u0258\3\2"+
|
"\3\2\2\2\u0259\u025b\5B\"\2\u025a\u0251\3\2\2\2\u025a\u0257\3\2\2\2\u025b"+
|
||||||
"\2\2\u025aI\3\2\2\2\u025b\u025e\7T\2\2\u025c\u025e\7S\2\2\u025d\u025b"+
|
"E\3\2\2\2\u025c\u025f\7Y\2\2\u025d\u025f\7Z\2\2\u025e\u025c\3\2\2\2\u025e"+
|
||||||
"\3\2\2\2\u025d\u025c\3\2\2\2\u025eK\3\2\2\2\u025f\u0260\t\16\2\2\u0260"+
|
"\u025d\3\2\2\2\u025fG\3\2\2\2\u0260\u0264\7V\2\2\u0261\u0264\5L\'\2\u0262"+
|
||||||
"M\3\2\2\2Y]_clnrx{\u0086\u0089\u0090\u0093\u0099\u009c\u009f\u00a2\u00a6"+
|
"\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"+
|
"\u00ae\u00b1\u00bd\u00c0\u00c4\u00cb\u00cf\u00d3\u00da\u00de\u00e2\u00e7"+
|
||||||
"\u00eb\u00f3\u00f7\u00fe\u0109\u010c\u0110\u011c\u011f\u0125\u012c\u0133"+
|
"\u00eb\u00f3\u00f7\u00fe\u0109\u010c\u0110\u011c\u011f\u0125\u012c\u0133"+
|
||||||
"\u0136\u013a\u013e\u0142\u0144\u014f\u0154\u0158\u015b\u0161\u0164\u016a"+
|
"\u0136\u013a\u013e\u0142\u0144\u014f\u0154\u0158\u015b\u0161\u0164\u016a"+
|
||||||
"\u016d\u016f\u0182\u018f\u019d\u01a2\u01aa\u01ac\u01b1\u01b4\u01bc\u01c5"+
|
"\u016d\u016f\u0182\u018f\u019d\u01a2\u01aa\u01ac\u01b1\u01b4\u01bc\u01c5"+
|
||||||
"\u01cb\u01d3\u01d8\u01de\u01e1\u01e6\u01ec\u01f8\u01fa\u0210\u0216\u021d"+
|
"\u01cb\u01d3\u01d8\u01de\u01e1\u01e6\u01ec\u01f8\u01fa\u0210\u0216\u021d"+
|
||||||
"\u0220\u022e\u0236\u0238\u0245\u024c\u0250\u0254\u0259\u025d";
|
"\u0220\u022e\u0236\u0238\u0245\u024c\u0251\u0257\u025a\u025e\u0263\u0267";
|
||||||
public static final ATN _ATN =
|
public static final ATN _ATN =
|
||||||
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
|
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
|
||||||
static {
|
static {
|
||||||
|
|
|
@ -11,21 +11,28 @@ import java.util.Objects;
|
||||||
|
|
||||||
public class TableIdentifier {
|
public class TableIdentifier {
|
||||||
|
|
||||||
private final String index;
|
|
||||||
private final Location location;
|
private final Location location;
|
||||||
|
|
||||||
public TableIdentifier(Location location, String index) {
|
private final String cluster;
|
||||||
|
private final String index;
|
||||||
|
|
||||||
|
public TableIdentifier(Location location, String catalog, String index) {
|
||||||
this.location = location;
|
this.location = location;
|
||||||
|
this.cluster = catalog;
|
||||||
this.index = index;
|
this.index = index;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String cluster() {
|
||||||
|
return cluster;
|
||||||
|
}
|
||||||
|
|
||||||
public String index() {
|
public String index() {
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return Objects.hash(index);
|
return Objects.hash(cluster, index);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -39,7 +46,7 @@ public class TableIdentifier {
|
||||||
}
|
}
|
||||||
|
|
||||||
TableIdentifier other = (TableIdentifier) obj;
|
TableIdentifier other = (TableIdentifier) obj;
|
||||||
return Objects.equals(index, other.index);
|
return Objects.equals(index, other.index) && Objects.equals(cluster, other.cluster);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Location location() {
|
public Location location() {
|
||||||
|
@ -49,7 +56,11 @@ public class TableIdentifier {
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
builder.append("[index=");
|
builder.append("[");
|
||||||
|
if (cluster != null) {
|
||||||
|
builder.append(cluster);
|
||||||
|
}
|
||||||
|
builder.append("][index=");
|
||||||
builder.append(index);
|
builder.append(index);
|
||||||
builder.append("]");
|
builder.append("]");
|
||||||
return builder.toString();
|
return builder.toString();
|
||||||
|
|
|
@ -7,6 +7,7 @@ package org.elasticsearch.xpack.sql.session;
|
||||||
|
|
||||||
import org.elasticsearch.action.ActionListener;
|
import org.elasticsearch.action.ActionListener;
|
||||||
import org.elasticsearch.client.Client;
|
import org.elasticsearch.client.Client;
|
||||||
|
import org.elasticsearch.common.Strings;
|
||||||
import org.elasticsearch.xpack.sql.analysis.analyzer.Analyzer;
|
import org.elasticsearch.xpack.sql.analysis.analyzer.Analyzer;
|
||||||
import org.elasticsearch.xpack.sql.analysis.analyzer.PreAnalyzer;
|
import org.elasticsearch.xpack.sql.analysis.analyzer.PreAnalyzer;
|
||||||
import org.elasticsearch.xpack.sql.analysis.analyzer.PreAnalyzer.PreAnalysis;
|
import org.elasticsearch.xpack.sql.analysis.analyzer.PreAnalyzer.PreAnalysis;
|
||||||
|
@ -16,6 +17,7 @@ import org.elasticsearch.xpack.sql.analysis.index.MappingException;
|
||||||
import org.elasticsearch.xpack.sql.expression.function.FunctionRegistry;
|
import org.elasticsearch.xpack.sql.expression.function.FunctionRegistry;
|
||||||
import org.elasticsearch.xpack.sql.optimizer.Optimizer;
|
import org.elasticsearch.xpack.sql.optimizer.Optimizer;
|
||||||
import org.elasticsearch.xpack.sql.parser.SqlParser;
|
import org.elasticsearch.xpack.sql.parser.SqlParser;
|
||||||
|
import org.elasticsearch.xpack.sql.plan.TableIdentifier;
|
||||||
import org.elasticsearch.xpack.sql.plan.logical.LogicalPlan;
|
import org.elasticsearch.xpack.sql.plan.logical.LogicalPlan;
|
||||||
import org.elasticsearch.xpack.sql.plan.physical.PhysicalPlan;
|
import org.elasticsearch.xpack.sql.plan.physical.PhysicalPlan;
|
||||||
import org.elasticsearch.xpack.sql.planner.Planner;
|
import org.elasticsearch.xpack.sql.planner.Planner;
|
||||||
|
@ -115,8 +117,15 @@ public class SqlSession {
|
||||||
// Note: JOINs are not supported but we detect them when
|
// Note: JOINs are not supported but we detect them when
|
||||||
listener.onFailure(new MappingException("Queries with multiple indices are not supported"));
|
listener.onFailure(new MappingException("Queries with multiple indices are not supported"));
|
||||||
} else if (preAnalysis.indices.size() == 1) {
|
} else if (preAnalysis.indices.size() == 1) {
|
||||||
String indexName = preAnalysis.indices.get(0);
|
TableIdentifier table = preAnalysis.indices.get(0);
|
||||||
indexResolver.resolveWithSameMapping(indexName, null,
|
|
||||||
|
String cluster = table.cluster();
|
||||||
|
|
||||||
|
if (Strings.hasText(cluster) && !indexResolver.clusterName().equals(cluster)) {
|
||||||
|
listener.onFailure(new MappingException("Cannot inspect indices in cluster/catalog [{}]", cluster));
|
||||||
|
}
|
||||||
|
|
||||||
|
indexResolver.resolveWithSameMapping(table.index(), null,
|
||||||
wrap(indexResult -> listener.onResponse(action.apply(indexResult)), listener::onFailure));
|
wrap(indexResult -> listener.onResponse(action.apply(indexResult)), listener::onFailure));
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -11,7 +11,8 @@ import org.elasticsearch.xpack.sql.parser.SqlParser;
|
||||||
import org.elasticsearch.xpack.sql.plan.logical.LogicalPlan;
|
import org.elasticsearch.xpack.sql.plan.logical.LogicalPlan;
|
||||||
import org.joda.time.DateTimeZone;
|
import org.joda.time.DateTimeZone;
|
||||||
|
|
||||||
import static org.hamcrest.Matchers.contains;
|
import static org.hamcrest.CoreMatchers.nullValue;
|
||||||
|
import static org.hamcrest.Matchers.hasSize;
|
||||||
import static org.hamcrest.Matchers.is;
|
import static org.hamcrest.Matchers.is;
|
||||||
|
|
||||||
public class PreAnalyzerTests extends ESTestCase {
|
public class PreAnalyzerTests extends ESTestCase {
|
||||||
|
@ -23,20 +24,53 @@ public class PreAnalyzerTests extends ESTestCase {
|
||||||
LogicalPlan plan = parser.createStatement("SELECT * FROM index");
|
LogicalPlan plan = parser.createStatement("SELECT * FROM index");
|
||||||
PreAnalysis result = preAnalyzer.preAnalyze(plan);
|
PreAnalysis result = preAnalyzer.preAnalyze(plan);
|
||||||
assertThat(plan.preAnalyzed(), is(true));
|
assertThat(plan.preAnalyzed(), is(true));
|
||||||
assertThat(result.indices, contains("index"));
|
assertThat(result.indices, hasSize(1));
|
||||||
|
assertThat(result.indices.get(0).cluster(), nullValue());
|
||||||
|
assertThat(result.indices.get(0).index(), is("index"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testBasicIndexWithCatalog() {
|
||||||
|
LogicalPlan plan = parser.createStatement("SELECT * FROM elastic:index");
|
||||||
|
PreAnalysis result = preAnalyzer.preAnalyze(plan);
|
||||||
|
assertThat(plan.preAnalyzed(), is(true));
|
||||||
|
assertThat(result.indices, hasSize(1));
|
||||||
|
assertThat(result.indices.get(0).cluster(), is("elastic"));
|
||||||
|
assertThat(result.indices.get(0).index(), is("index"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testWildIndexWithCatalog() {
|
||||||
|
LogicalPlan plan = parser.createStatement("SELECT * FROM elastic:index*");
|
||||||
|
PreAnalysis result = preAnalyzer.preAnalyze(plan);
|
||||||
|
assertThat(plan.preAnalyzed(), is(true));
|
||||||
|
assertThat(result.indices, hasSize(1));
|
||||||
|
assertThat(result.indices.get(0).cluster(), is("elastic"));
|
||||||
|
assertThat(result.indices.get(0).index(), is("index*"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testQuotedIndex() {
|
public void testQuotedIndex() {
|
||||||
LogicalPlan plan = parser.createStatement("SELECT * FROM \"aaa\"");
|
LogicalPlan plan = parser.createStatement("SELECT * FROM \"aaa\"");
|
||||||
PreAnalysis result = preAnalyzer.preAnalyze(plan);
|
PreAnalysis result = preAnalyzer.preAnalyze(plan);
|
||||||
assertThat(plan.preAnalyzed(), is(true));
|
assertThat(plan.preAnalyzed(), is(true));
|
||||||
assertThat(result.indices, contains("aaa"));
|
assertThat(result.indices, hasSize(1));
|
||||||
|
assertThat(result.indices.get(0).cluster(), nullValue());
|
||||||
|
assertThat(result.indices.get(0).index(), is("aaa"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testQuotedCatalog() {
|
||||||
|
LogicalPlan plan = parser.createStatement("SELECT * FROM \"elastic\":\"aaa\"");
|
||||||
|
PreAnalysis result = preAnalyzer.preAnalyze(plan);
|
||||||
|
assertThat(plan.preAnalyzed(), is(true));
|
||||||
|
assertThat(result.indices, hasSize(1));
|
||||||
|
assertThat(result.indices.get(0).cluster(), is("elastic"));
|
||||||
|
assertThat(result.indices.get(0).index(), is("aaa"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testComplicatedQuery() {
|
public void testComplicatedQuery() {
|
||||||
LogicalPlan plan = parser.createStatement("SELECT MAX(a) FROM aaa WHERE d > 10 GROUP BY b HAVING AVG(c) ORDER BY e ASC");
|
LogicalPlan plan = parser.createStatement("SELECT MAX(a) FROM aaa WHERE d > 10 GROUP BY b HAVING AVG(c) ORDER BY e ASC");
|
||||||
PreAnalysis result = preAnalyzer.preAnalyze(plan);
|
PreAnalysis result = preAnalyzer.preAnalyze(plan);
|
||||||
assertThat(plan.preAnalyzed(), is(true));
|
assertThat(plan.preAnalyzed(), is(true));
|
||||||
assertThat(result.indices, contains("aaa"));
|
assertThat(result.indices, hasSize(1));
|
||||||
|
assertThat(result.indices.get(0).cluster(), nullValue());
|
||||||
|
assertThat(result.indices.get(0).index(), is("aaa"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@ import static org.elasticsearch.test.EqualsHashCodeTestUtils.checkEqualsAndHashC
|
||||||
public class UnresolvedRelationTests extends ESTestCase {
|
public class UnresolvedRelationTests extends ESTestCase {
|
||||||
public void testEqualsAndHashCode() {
|
public void testEqualsAndHashCode() {
|
||||||
Location location = new Location(between(1, 1000), between(1, 1000));
|
Location location = new Location(between(1, 1000), between(1, 1000));
|
||||||
TableIdentifier table = new TableIdentifier(location, randomAlphaOfLength(5));
|
TableIdentifier table = new TableIdentifier(location, randomAlphaOfLength(5), randomAlphaOfLength(5));
|
||||||
String alias = randomBoolean() ? null : randomAlphaOfLength(5);
|
String alias = randomBoolean() ? null : randomAlphaOfLength(5);
|
||||||
String unresolvedMessage = randomAlphaOfLength(5);
|
String unresolvedMessage = randomAlphaOfLength(5);
|
||||||
UnresolvedRelation relation = new UnresolvedRelation(location, table, alias, unresolvedMessage);
|
UnresolvedRelation relation = new UnresolvedRelation(location, table, alias, unresolvedMessage);
|
||||||
|
@ -32,7 +32,7 @@ public class UnresolvedRelationTests extends ESTestCase {
|
||||||
r.unresolvedMessage()));
|
r.unresolvedMessage()));
|
||||||
mutators.add(r -> new UnresolvedRelation(
|
mutators.add(r -> new UnresolvedRelation(
|
||||||
r.location(),
|
r.location(),
|
||||||
new TableIdentifier(r.location(), r.table().index() + "m"),
|
new TableIdentifier(r.location(), r.table().cluster(), r.table().index() + "m"),
|
||||||
r.alias(),
|
r.alias(),
|
||||||
r.unresolvedMessage()));
|
r.unresolvedMessage()));
|
||||||
mutators.add(r -> new UnresolvedRelation(
|
mutators.add(r -> new UnresolvedRelation(
|
||||||
|
|
|
@ -20,7 +20,7 @@ public class CliExplainIT extends CliIntegrationTestCase {
|
||||||
assertThat(readLine(), startsWith("----------"));
|
assertThat(readLine(), startsWith("----------"));
|
||||||
assertThat(readLine(), startsWith("With[{}]"));
|
assertThat(readLine(), startsWith("With[{}]"));
|
||||||
assertThat(readLine(), startsWith("\\_Project[[?*]]"));
|
assertThat(readLine(), startsWith("\\_Project[[?*]]"));
|
||||||
assertThat(readLine(), startsWith(" \\_UnresolvedRelation[[index=test],null,Unknown index [test]]"));
|
assertThat(readLine(), startsWith(" \\_UnresolvedRelation[[][index=test],null,Unknown index [test]]"));
|
||||||
assertEquals("", readLine());
|
assertEquals("", readLine());
|
||||||
|
|
||||||
assertThat(command("EXPLAIN " + (randomBoolean() ? "" : "(PLAN ANALYZED) ") + "SELECT * FROM test"), containsString("plan"));
|
assertThat(command("EXPLAIN " + (randomBoolean() ? "" : "(PLAN ANALYZED) ") + "SELECT * FROM test"), containsString("plan"));
|
||||||
|
@ -66,7 +66,7 @@ public class CliExplainIT extends CliIntegrationTestCase {
|
||||||
assertThat(readLine(), startsWith("With[{}]"));
|
assertThat(readLine(), startsWith("With[{}]"));
|
||||||
assertThat(readLine(), startsWith("\\_Project[[?*]]"));
|
assertThat(readLine(), startsWith("\\_Project[[?*]]"));
|
||||||
assertThat(readLine(), startsWith(" \\_Filter[?i = 2]"));
|
assertThat(readLine(), startsWith(" \\_Filter[?i = 2]"));
|
||||||
assertThat(readLine(), startsWith(" \\_UnresolvedRelation[[index=test],null,Unknown index [test]]"));
|
assertThat(readLine(), startsWith(" \\_UnresolvedRelation[[][index=test],null,Unknown index [test]]"));
|
||||||
assertEquals("", readLine());
|
assertEquals("", readLine());
|
||||||
|
|
||||||
assertThat(command("EXPLAIN " + (randomBoolean() ? "" : "(PLAN ANALYZED) ") + "SELECT * FROM test WHERE i = 2"),
|
assertThat(command("EXPLAIN " + (randomBoolean() ? "" : "(PLAN ANALYZED) ") + "SELECT * FROM test WHERE i = 2"),
|
||||||
|
@ -124,7 +124,7 @@ public class CliExplainIT extends CliIntegrationTestCase {
|
||||||
assertThat(readLine(), startsWith("----------"));
|
assertThat(readLine(), startsWith("----------"));
|
||||||
assertThat(readLine(), startsWith("With[{}]"));
|
assertThat(readLine(), startsWith("With[{}]"));
|
||||||
assertThat(readLine(), startsWith("\\_Project[[?COUNT(?*)]]"));
|
assertThat(readLine(), startsWith("\\_Project[[?COUNT(?*)]]"));
|
||||||
assertThat(readLine(), startsWith(" \\_UnresolvedRelation[[index=test],null,Unknown index [test]]"));
|
assertThat(readLine(), startsWith(" \\_UnresolvedRelation[[][index=test],null,Unknown index [test]]"));
|
||||||
assertEquals("", readLine());
|
assertEquals("", readLine());
|
||||||
|
|
||||||
assertThat(command("EXPLAIN " + (randomBoolean() ? "" : "(PLAN ANALYZED) ") + "SELECT COUNT(*) FROM test"),
|
assertThat(command("EXPLAIN " + (randomBoolean() ? "" : "(PLAN ANALYZED) ") + "SELECT COUNT(*) FROM test"),
|
||||||
|
|
Loading…
Reference in New Issue