-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Exasol support #2046
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Exasol support #2046
Changes from 3 commits
1155036
618acbb
6941dc3
0b4512e
d05c21b
7db7578
6cdfe31
a90ad74
345ec1b
09ea6b8
351a61d
eb7e1b8
45c7ef0
ed99a28
862c5b1
8080357
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,126 +1,126 @@ | ||
| /*- | ||
| * #%L | ||
| * JSQLParser library | ||
| * %% | ||
| * Copyright (C) 2004 - 2019 JSQLParser | ||
| * %% | ||
| * Dual licensed under GNU LGPL 2.1 or Apache License 2.0 | ||
| * #L% | ||
| */ | ||
| package net.sf.jsqlparser.expression.operators.relational; | ||
|
|
||
| import net.sf.jsqlparser.expression.BinaryExpression; | ||
| import net.sf.jsqlparser.expression.Expression; | ||
| import net.sf.jsqlparser.expression.ExpressionVisitor; | ||
|
|
||
| public class LikeExpression extends BinaryExpression { | ||
| private boolean not = false; | ||
| private boolean useBinary = false; | ||
| private Expression escapeExpression = null; | ||
| private KeyWord likeKeyWord = KeyWord.LIKE; | ||
|
|
||
| public boolean isNot() { | ||
| return not; | ||
| } | ||
|
|
||
| public void setNot(boolean b) { | ||
| not = b; | ||
| } | ||
|
|
||
| public boolean isUseBinary() { | ||
| return useBinary; | ||
| } | ||
|
|
||
| public LikeExpression setUseBinary(boolean useBinary) { | ||
| this.useBinary = useBinary; | ||
| return this; | ||
| } | ||
|
|
||
| @Override | ||
| public <T, S> T accept(ExpressionVisitor<T> expressionVisitor, S context) { | ||
| return expressionVisitor.visit(this, context); | ||
| } | ||
|
|
||
| @Deprecated | ||
| @Override | ||
| public String getStringExpression() { | ||
| return likeKeyWord.toString(); | ||
| } | ||
|
|
||
| @Override | ||
| public String toString() { | ||
| String retval = getLeftExpression() + " " + (not ? "NOT " : "") | ||
| + (likeKeyWord == KeyWord.SIMILAR_TO ? "SIMILAR TO" : likeKeyWord) + " " | ||
| + (useBinary ? "BINARY " : "") + getRightExpression(); | ||
| if (escapeExpression != null) { | ||
| retval += " ESCAPE " + escapeExpression; | ||
| } | ||
| return retval; | ||
| } | ||
|
|
||
| public Expression getEscape() { | ||
| return escapeExpression; | ||
| } | ||
|
|
||
| public void setEscape(Expression escapeExpression) { | ||
| this.escapeExpression = escapeExpression; | ||
| } | ||
|
|
||
| @Deprecated | ||
| public boolean isCaseInsensitive() { | ||
| return likeKeyWord == KeyWord.ILIKE; | ||
| } | ||
|
|
||
| @Deprecated | ||
| public void setCaseInsensitive(boolean caseInsensitive) { | ||
| this.likeKeyWord = KeyWord.ILIKE; | ||
| } | ||
|
|
||
| public KeyWord getLikeKeyWord() { | ||
| return likeKeyWord; | ||
| } | ||
|
|
||
| public LikeExpression setLikeKeyWord(KeyWord likeKeyWord) { | ||
| this.likeKeyWord = likeKeyWord; | ||
| return this; | ||
| } | ||
|
|
||
| public LikeExpression setLikeKeyWord(String likeKeyWord) { | ||
| this.likeKeyWord = KeyWord.from(likeKeyWord); | ||
| return this; | ||
| } | ||
|
|
||
| public LikeExpression withEscape(Expression escape) { | ||
| this.setEscape(escape); | ||
| return this; | ||
| } | ||
|
|
||
| @Deprecated | ||
| public LikeExpression withCaseInsensitive(boolean caseInsensitive) { | ||
| this.setCaseInsensitive(caseInsensitive); | ||
| return this; | ||
| } | ||
|
|
||
| public LikeExpression withNot(boolean not) { | ||
| this.setNot(not); | ||
| return this; | ||
| } | ||
|
|
||
| @Override | ||
| public LikeExpression withLeftExpression(Expression arg0) { | ||
| return (LikeExpression) super.withLeftExpression(arg0); | ||
| } | ||
|
|
||
| @Override | ||
| public LikeExpression withRightExpression(Expression arg0) { | ||
| return (LikeExpression) super.withRightExpression(arg0); | ||
| } | ||
|
|
||
| public enum KeyWord { | ||
| LIKE, ILIKE, RLIKE, REGEXP, SIMILAR_TO; | ||
|
|
||
| public static KeyWord from(String keyword) { | ||
| return Enum.valueOf(KeyWord.class, keyword.toUpperCase().replaceAll("\\s+", "_")); | ||
| } | ||
| } | ||
| } | ||
| /*- | ||
| * #%L | ||
| * JSQLParser library | ||
| * %% | ||
| * Copyright (C) 2004 - 2019 JSQLParser | ||
| * %% | ||
| * Dual licensed under GNU LGPL 2.1 or Apache License 2.0 | ||
| * #L% | ||
| */ | ||
| package net.sf.jsqlparser.expression.operators.relational; | ||
| import net.sf.jsqlparser.expression.BinaryExpression; | ||
| import net.sf.jsqlparser.expression.Expression; | ||
| import net.sf.jsqlparser.expression.ExpressionVisitor; | ||
| public class LikeExpression extends BinaryExpression { | ||
| private boolean not = false; | ||
| private boolean useBinary = false; | ||
| private Expression escapeExpression = null; | ||
| private KeyWord likeKeyWord = KeyWord.LIKE; | ||
| public boolean isNot() { | ||
| return not; | ||
| } | ||
| public void setNot(boolean b) { | ||
| not = b; | ||
| } | ||
| public boolean isUseBinary() { | ||
| return useBinary; | ||
| } | ||
| public LikeExpression setUseBinary(boolean useBinary) { | ||
| this.useBinary = useBinary; | ||
| return this; | ||
| } | ||
| @Override | ||
| public <T, S> T accept(ExpressionVisitor<T> expressionVisitor, S context) { | ||
| return expressionVisitor.visit(this, context); | ||
| } | ||
| @Deprecated | ||
| @Override | ||
| public String getStringExpression() { | ||
| return likeKeyWord.toString(); | ||
| } | ||
| @Override | ||
| public String toString() { | ||
| String retval = getLeftExpression() + " " + (not ? "NOT " : "") | ||
| + (likeKeyWord == KeyWord.SIMILAR_TO ? "SIMILAR TO" : likeKeyWord) + " " | ||
| + (useBinary ? "BINARY " : "") + getRightExpression(); | ||
| if (escapeExpression != null) { | ||
| retval += " ESCAPE " + escapeExpression; | ||
| } | ||
| return retval; | ||
| } | ||
| public Expression getEscape() { | ||
| return escapeExpression; | ||
| } | ||
| public void setEscape(Expression escapeExpression) { | ||
| this.escapeExpression = escapeExpression; | ||
| } | ||
| @Deprecated | ||
| public boolean isCaseInsensitive() { | ||
| return likeKeyWord == KeyWord.ILIKE; | ||
| } | ||
| @Deprecated | ||
| public void setCaseInsensitive(boolean caseInsensitive) { | ||
| this.likeKeyWord = KeyWord.ILIKE; | ||
| } | ||
| public KeyWord getLikeKeyWord() { | ||
| return likeKeyWord; | ||
| } | ||
| public LikeExpression setLikeKeyWord(KeyWord likeKeyWord) { | ||
| this.likeKeyWord = likeKeyWord; | ||
| return this; | ||
| } | ||
| public LikeExpression setLikeKeyWord(String likeKeyWord) { | ||
| this.likeKeyWord = KeyWord.from(likeKeyWord); | ||
| return this; | ||
| } | ||
| public LikeExpression withEscape(Expression escape) { | ||
| this.setEscape(escape); | ||
| return this; | ||
| } | ||
| @Deprecated | ||
| public LikeExpression withCaseInsensitive(boolean caseInsensitive) { | ||
| this.setCaseInsensitive(caseInsensitive); | ||
| return this; | ||
| } | ||
| public LikeExpression withNot(boolean not) { | ||
| this.setNot(not); | ||
| return this; | ||
| } | ||
| @Override | ||
| public LikeExpression withLeftExpression(Expression arg0) { | ||
| return (LikeExpression) super.withLeftExpression(arg0); | ||
| } | ||
| @Override | ||
| public LikeExpression withRightExpression(Expression arg0) { | ||
| return (LikeExpression) super.withRightExpression(arg0); | ||
| } | ||
| public enum KeyWord { | ||
| LIKE, ILIKE, RLIKE, REGEXP_LIKE, REGEXP, SIMILAR_TO; | ||
| public static KeyWord from(String keyword) { | ||
| return Enum.valueOf(KeyWord.class, keyword.toUpperCase().replaceAll("\\s+", "_")); | ||
| } | ||
| } | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -396,6 +396,7 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */ | |
| | <K_REGEXP: "REGEXP"> | ||
| | <K_RESPECT: "RESPECT"> | ||
| | <K_RLIKE: "RLIKE"> | ||
| | <K_REGEXP_LIKE: "REGEXP_LIKE"> | ||
| | <K_REGISTER: "REGISTER"> | ||
| | <K_REMOTE: "REMOTE"> | ||
| | <K_RENAME:"RENAME"> | ||
|
|
@@ -1958,8 +1959,8 @@ The following tokens are allowed as Names for Schema, Table, Column and Aliases | |
| String RelObjectNameWithoutValue() : | ||
| { Token tk = null; } | ||
| { | ||
| ( tk=<DATA_TYPE> | tk=<S_IDENTIFIER> | tk=<S_QUOTED_IDENTIFIER> | tk=<K_DATE_LITERAL> | tk=<K_DATETIMELITERAL> | tk=<K_STRING_FUNCTION_NAME> | tk=<K_ISOLATION> | tk=<K_TIME_KEY_EXPR> | tk=<K_TEXT_LITERAL> | ||
|
ssteinhauser marked this conversation as resolved.
|
||
| | tk="ACTION" | tk="ACTIVE" | tk="ADD" | tk="ADVANCE" | tk="ADVISE" | tk="AGAINST" | tk="ALGORITHM" | tk="ALTER" | tk="ANALYZE" | tk="APPLY" | tk="APPROXIMATE" | tk="ARCHIVE" | tk="ARRAY" | tk="ASC" | tk="AT" | tk="AUTHORIZATION" | tk="AUTO" | tk="BASE64" | tk="BEGIN" | tk="BERNOULLI" | tk="BINARY" | tk="BIT" | tk="BLOCK" | tk="BROWSE" | tk="BUFFERS" | tk="BY" | tk="BYTE" | tk="BYTES" | tk="CACHE" | tk="CALL" | tk="CASCADE" | tk="CASE" | tk="CAST" | tk="CHANGE" | tk="CHANGES" | tk="CHAR" | tk="CHARACTER" | tk="CHECKPOINT" | tk="CLOSE" | tk="COLLATE" | tk="COLUMN" | tk="COLUMNS" | tk="COMMENT" | tk="COMMIT" | tk="CONCURRENTLY" | tk="CONFLICT" | tk="CONSTRAINTS" | tk="CONVERT" | tk="COSTS" | tk="CS" | tk="CYCLE" | tk="DATA" | tk="DATABASE" | tk="DATETIME" | tk="DBA_RECYCLEBIN" | tk="DDL" | tk="DECLARE" | tk="DEFAULT" | tk="DEFERRABLE" | tk="DELAYED" | tk="DELETE" | tk="DESC" | tk="DESCRIBE" | tk="DISABLE" | tk="DISCONNECT" | tk="DIV" | tk="DML" | tk="DO" | tk="DOMAIN" | tk="DROP" | tk="DUMP" | tk="DUPLICATE" | tk="ELEMENTS" | tk="EMIT" | tk="ENABLE" | tk="END" | tk="ESCAPE" | tk="EXCLUDE" | tk="EXEC" | tk="EXECUTE" | tk="EXPLAIN" | tk="EXPLICIT" | tk="EXTENDED" | tk="EXTRACT" | tk="FALSE" | tk="FILTER" | tk="FIRST" | tk="FLUSH" | tk="FN" | tk="FOLLOWING" | tk="FORMAT" | tk="FULLTEXT" | tk="FUNCTION" | tk="GRANT" | tk="GROUP_CONCAT" | tk="GUARD" | tk="HASH" | tk="HIGH_PRIORITY" | tk="HISTORY" | tk="HOPPING" | tk="INCLUDE" | tk="INCLUDE_NULL_VALUES" | tk="INCREMENT" | tk="INDEX" | tk="INSERT" | tk="INTERLEAVE" | tk="INTERPRET" | tk="INVALIDATE" | tk="ISNULL" | tk="JSON" | tk="JSON_ARRAY" | tk="JSON_ARRAYAGG" | tk="JSON_OBJECT" | tk="JSON_OBJECTAGG" | tk="KEEP" | tk="KEY" | tk="KEYS" | tk="LAST" | tk="LEADING" | tk="LINK" | tk="LOCAL" | tk="LOCKED" | tk="LOG" | tk="LONGTEXT" | tk="LOOP" | tk="LOW_PRIORITY" | tk="MATCH" | tk="MATCHED" | tk="MATERIALIZED" | tk="MAX" | tk="MAXVALUE" | tk="MEDIUMTEXT" | tk="MEMBER" | tk="MERGE" | tk="MIN" | tk="MINVALUE" | tk="MODIFY" | tk="MOVEMENT" | tk="NEXT" | tk="NO" | tk="NOCACHE" | tk="NOKEEP" | tk="NOLOCK" | tk="NOMAXVALUE" | tk="NOMINVALUE" | tk="NOORDER" | tk="NOTHING" | tk="NOTNULL" | tk="NOVALIDATE" | tk="NOWAIT" | tk="NULLS" | tk="OF" | tk="OFF" | tk="OPEN" | tk="OVER" | tk="OVERLAPS" | tk="PARALLEL" | tk="PARENT" | tk="PARTITION" | tk="PATH" | tk="PERCENT" | tk="PLACING" | tk="PRECEDING" | tk="PRIMARY" | tk="PRIOR" | tk="PURGE" | tk="QUERY" | tk="QUICK" | tk="QUIESCE" | tk="RANGE" | tk="RAW" | tk="READ" | tk="RECURSIVE" | tk="RECYCLEBIN" | tk="REFERENCES" | tk="REFRESH" | tk="REGEXP" | tk="REGISTER" | tk="REMOTE" | tk="RENAME" | tk="REPEATABLE" | tk="REPLACE" | tk="RESET" | tk="RESPECT" | tk="RESTART" | tk="RESTRICT" | tk="RESTRICTED" | tk="RESUMABLE" | tk="RESUME" | tk="RETURN" | tk="RLIKE" | tk="ROLLBACK" | tk="ROLLUP" | tk="ROOT" | tk="ROW" | tk="ROWS" | tk="RR" | tk="RS" | tk="SAFE_CAST" | tk="SAVEPOINT" | tk="SCHEMA" | tk="SECURE" | tk="SEED" | tk="SEPARATOR" | tk="SEQUENCE" | tk="SESSION" | tk="SETS" | tk="SHARE" | tk="SHOW" | tk="SHUTDOWN" | tk="SIBLINGS" | tk="SIGNED" | tk="SIMILAR" | tk="SIZE" | tk="SKIP" | tk="STORED" | tk="STRING" | tk="STRUCT" | tk="SUSPEND" | tk="SWITCH" | tk="SYNONYM" | tk="SYSTEM" | tk="TABLE" | tk="TABLESPACE" | tk="TEMP" | tk="TEMPORARY" | tk="TEXT" | tk="THEN" | tk="TIMEOUT" | tk="TIMESTAMPTZ" | tk="TIMEZONE" | tk="TINYTEXT" | tk="TO" | tk="TRIGGER" | tk="TRUE" | tk="TRUNCATE" | tk="TRY_CAST" | tk="TUMBLING" | tk="TYPE" | tk="UNLOGGED" | tk="UNQIESCE" | tk="UNSIGNED" | tk="UPDATE" | tk="UPSERT" | tk="UR" | tk="USER" | tk="VALIDATE" | tk="VERBOSE" | tk="VIEW" | tk="VOLATILE" | tk="WAIT" | tk="WITHIN" | tk="WITHOUT" | tk="WITHOUT_ARRAY_WRAPPER" | tk="WORK" | tk="XML" | tk="XMLAGG" | tk="XMLDATA" | tk="XMLSCHEMA" | tk="XMLTEXT" | tk="XSINIL" | tk="YAML" | tk="YES" | tk="ZONE" ) | ||
| ( tk=<DATA_TYPE> | tk=<S_IDENTIFIER> | tk=<S_QUOTED_IDENTIFIER> | tk=<K_DATE_LITERAL> | tk=<K_DATETIMELITERAL> | tk=<K_STRING_FUNCTION_NAME> | tk=<K_ISOLATION> | tk=<K_TIME_KEY_EXPR> | ||
| | tk="ACTION" | tk="ACTIVE" | tk="ADD" | tk="ADVANCE" | tk="ADVISE" | tk="AGAINST" | tk="ALGORITHM" | tk="ALTER" | tk="ANALYZE" | tk="APPLY" | tk="APPROXIMATE" | tk="ARCHIVE" | tk="ARRAY" | tk="ASC" | tk="AT" | tk="AUTHORIZATION" | tk="AUTO" | tk="BASE64" | tk="BEGIN" | tk="BERNOULLI" | tk="BINARY" | tk="BIT" | tk="BLOCK" | tk="BROWSE" | tk="BUFFERS" | tk="BY" | tk="BYTE" | tk="BYTES" | tk="CACHE" | tk="CALL" | tk="CASCADE" | tk="CASE" | tk="CAST" | tk="CHANGE" | tk="CHANGES" | tk="CHAR" | tk="CHARACTER" | tk="CHECKPOINT" | tk="CLOSE" | tk="COLLATE" | tk="COLUMN" | tk="COLUMNS" | tk="COMMENT" | tk="COMMIT" | tk="CONCURRENTLY" | tk="CONFLICT" | tk="CONSTRAINTS" | tk="CONVERT" | tk="COSTS" | tk="CS" | tk="CYCLE" | tk="DATA" | tk="DATABASE" | tk="DATETIME" | tk="DBA_RECYCLEBIN" | tk="DDL" | tk="DECLARE" | tk="DEFAULT" | tk="DEFERRABLE" | tk="DELAYED" | tk="DELETE" | tk="DESC" | tk="DESCRIBE" | tk="DISABLE" | tk="DISCONNECT" | tk="DIV" | tk="DML" | tk="DO" | tk="DOMAIN" | tk="DROP" | tk="DUMP" | tk="DUPLICATE" | tk="ELEMENTS" | tk="EMIT" | tk="ENABLE" | tk="END" | tk="ESCAPE" | tk="EXCLUDE" | tk="EXEC" | tk="EXECUTE" | tk="EXPLAIN" | tk="EXPLICIT" | tk="EXTENDED" | tk="EXTRACT" | tk="FALSE" | tk="FILTER" | tk="FIRST" | tk="FLUSH" | tk="FN" | tk="FOLLOWING" | tk="FORMAT" | tk="FULLTEXT" | tk="FUNCTION" | tk="GRANT" | tk="GROUP_CONCAT" | tk="GUARD" | tk="HASH" | tk="HIGH_PRIORITY" | tk="HISTORY" | tk="HOPPING" | tk="INCLUDE" | tk="INCLUDE_NULL_VALUES" | tk="INCREMENT" | tk="INDEX" | tk="INSERT" | tk="INTERLEAVE" | tk="INTERPRET" | tk="INVALIDATE" | tk="ISNULL" | tk="JSON" | tk="JSON_ARRAY" | tk="JSON_ARRAYAGG" | tk="JSON_OBJECT" | tk="JSON_OBJECTAGG" | tk="KEEP" | tk="KEY" | tk="KEYS" | tk="LAST" | tk="LEADING" | tk="LINK" | tk="LOCAL" | tk="LOCKED" | tk="LOG" | tk="LONGTEXT" | tk="LOOP" | tk="LOW_PRIORITY" | tk="MATCH" | tk="MATCHED" | tk="MATERIALIZED" | tk="MAX" | tk="MAXVALUE" | tk="MEDIUMTEXT" | tk="MEMBER" | tk="MERGE" | tk="MIN" | tk="MINVALUE" | tk="MODIFY" | tk="MOVEMENT" | tk="NEXT" | tk="NO" | tk="NOCACHE" | tk="NOKEEP" | tk="NOLOCK" | tk="NOMAXVALUE" | tk="NOMINVALUE" | tk="NOORDER" | tk="NOTHING" | tk="NOTNULL" | tk="NOVALIDATE" | tk="NOWAIT" | tk="NULLS" | tk="OF" | tk="OFF" | tk="OPEN" | tk="OVER" | tk="OVERLAPS" | tk="PARALLEL" | tk="PARENT" | tk="PARTITION" | tk="PATH" | tk="PERCENT" | tk="PLACING" | tk="PRECEDING" | tk="PRIMARY" | tk="PRIOR" | tk="PURGE" | tk="QUERY" | tk="QUICK" | tk="QUIESCE" | tk="RANGE" | tk="RAW" | tk="READ" | tk="RECURSIVE" | tk="RECYCLEBIN" | tk="REFERENCES" | tk="REFRESH" | tk="REGEXP" | tk="REGEXP_LIKE" | tk="REGISTER" | tk="REMOTE" | tk="RENAME" | tk="REPEATABLE" | tk="REPLACE" | tk="RESET" | tk="RESPECT" | tk="RESTART" | tk="RESTRICT" | tk="RESTRICTED" | tk="RESUMABLE" | tk="RESUME" | tk="RETURN" | tk="RLIKE" | tk="ROLLBACK" | tk="ROLLUP" | tk="ROOT" | tk="ROW" | tk="ROWS" | tk="RR" | tk="RS" | tk="SAFE_CAST" | tk="SAVEPOINT" | tk="SCHEMA" | tk="SECURE" | tk="SEED" | tk="SEPARATOR" | tk="SEQUENCE" | tk="SESSION" | tk="SETS" | tk="SHARE" | tk="SHOW" | tk="SHUTDOWN" | tk="SIBLINGS" | tk="SIGNED" | tk="SIMILAR" | tk="SIZE" | tk="SKIP" | tk="STORED" | tk="STRING" | tk="STRUCT" | tk="SUSPEND" | tk="SWITCH" | tk="SYNONYM" | tk="SYSTEM" | tk="TABLE" | tk="TABLESPACE" | tk="TEMP" | tk="TEMPORARY" | tk="TEXT" | tk="THEN" | tk="TIMEOUT" | tk="TIMESTAMPTZ" | tk="TIMEZONE" | tk="TINYTEXT" | tk="TO" | tk="TRIGGER" | tk="TRUE" | tk="TRUNCATE" | tk="TRY_CAST" | tk="TUMBLING" | tk="TYPE" | tk="UNLOGGED" | tk="UNQIESCE" | tk="UNSIGNED" | tk="UPDATE" | tk="UPSERT" | tk="UR" | tk="USER" | tk="VALIDATE" | tk="VERBOSE" | tk="VIEW" | tk="VOLATILE" | tk="WAIT" | tk="WITHIN" | tk="WITHOUT" | tk="WITHOUT_ARRAY_WRAPPER" | tk="WORK" | tk="XML" | tk="XMLAGG" | tk="XMLDATA" | tk="XMLSCHEMA" | tk="XMLTEXT" | tk="XSINIL" | tk="YAML" | tk="YES" | tk="ZONE" ) | ||
| { return tk.image; } | ||
| } | ||
|
|
||
|
|
@@ -3916,6 +3917,7 @@ Expression LikeExpression(Expression leftExpression) #LikeExpression: | |
| token = <K_LIKE> | ||
| | token = <K_ILIKE> | ||
| | token = <K_RLIKE> | ||
| | token = <K_REGEXP_LIKE> | ||
| | token = <K_REGEXP> | ||
| | token = <K_SIMILAR_TO> | ||
| ) { result.setLikeKeyWord( LikeExpression.KeyWord.from(token.image)); } | ||
|
|
@@ -4527,6 +4529,8 @@ Expression PrimaryExpression() #PrimaryExpression: | |
|
|
||
| | LOOKAHEAD( ParenthesedSelect() , {!interrupted} ) retval=ParenthesedSelect() | ||
|
|
||
| | LOOKAHEAD( Select() , {!interrupted} ) retval=Select() | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please where is this coming from and why do we need it?
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It is very possible that the two performance tests fail now because of this one.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This comes (at least) from the need to support sub selects (without parentheses) as function arguments for functions with mutliple parameters, like the example implemented in the unit tests: From what I could see, this is a
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Another example would be the following query, that won't be parsable without that change: |
||
|
|
||
| | | ||
| ( | ||
| list=ParenthesedExpressionList() | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.