[jira] [Commented] (CALCITE-3051) Babel parser should parse special table expressions

2019-05-07 Thread Muhammad Gelbana (JIRA)


[ 
https://issues.apache.org/jira/browse/CALCITE-3051?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16835071#comment-16835071
 ] 

Muhammad Gelbana commented on CALCITE-3051:
---

Thanks for the heads up [~zhztheplayer], I closed this one as a duplicate.

> Babel parser should parse special table expressions
> ---
>
> Key: CALCITE-3051
> URL: https://issues.apache.org/jira/browse/CALCITE-3051
> Project: Calcite
>  Issue Type: Improvement
>  Components: babel
>Affects Versions: 1.19.0
>Reporter: Muhammad Gelbana
>Priority: Major
>  Labels: postgresql
>
> PostgreSQL query
> {code:sql}
> SELECT * FROM "
> (
> (
>   (S.C c INNER JOIN S.N n ON n.id = c.id)
>   INNER JOIN S.A a ON (NOT a.isactive)
> ) INNER JOIN S.T t ON t.id = a.id
> )
> {code}
> Reproduction code
> {code:java}
> import static org.apache.calcite.sql.parser.SqlParser.configBuilder;
> import org.apache.calcite.sql.parser.SqlParseException;
> import org.apache.calcite.sql.parser.SqlParser.Config;
> import org.apache.calcite.sql.parser.babel.SqlBabelParserImpl;
> import org.apache.calcite.sql.validate.SqlConformanceEnum;
> import org.apache.calcite.tools.FrameworkConfig;
> import org.apache.calcite.tools.Frameworks;
> import org.apache.calcite.tools.Planner;
> public class Test {
> public static void main(String[] args) throws SqlParseException {
> Config parserConfig = 
> configBuilder().setConformance(SqlConformanceEnum.BABEL).setParserFactory(SqlBabelParserImpl.FACTORY).build();
> FrameworkConfig frameworkConfig = 
> Frameworks.newConfigBuilder().parserConfig(parserConfig).build();
> Planner planner = Frameworks.getPlanner(frameworkConfig);
> planner.parse("SELECT * FROM (((S.C c INNER JOIN S.N n ON n.id = 
> c.id) INNER JOIN S.A a ON (NOT a.isactive)) INNER JOIN S.T t ON t.id = 
> a.id)");
> }
> }
> {code}
> Returned exception
> {noformat}
> Exception in thread "main" org.apache.calcite.sql.parser.SqlParseException: 
> Non-query expression encountered in illegal context
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.convertException(SqlBabelParserImpl.java:355)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.normalizeException(SqlBabelParserImpl.java:143)
>   at 
> org.apache.calcite.sql.parser.SqlParser.parseQuery(SqlParser.java:156)
>   at org.apache.calcite.sql.parser.SqlParser.parseStmt(SqlParser.java:181)
>   at org.apache.calcite.prepare.PlannerImpl.parse(PlannerImpl.java:174)
>   at org.apache.calcite.tools.Planner.parse(Planner.java:50)
>   at com.lab.calcite.Test.main(Test.java:20)
> Caused by: org.apache.calcite.runtime.CalciteException: Non-query expression 
> encountered in illegal context
>   at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>   at 
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
>   at 
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>   at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
>   at 
> org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:463)
>   at org.apache.calcite.runtime.Resources$ExInst.ex(Resources.java:572)
>   at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:787)
>   at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:772)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.checkNonQueryExpression(SqlBabelParserImpl.java:299)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.Expression3(SqlBabelParserImpl.java:3387)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.Expression2b(SqlBabelParserImpl.java:3117)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.Expression2(SqlBabelParserImpl.java:3158)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.Expression(SqlBabelParserImpl.java:3095)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.LeafQueryOrExpr(SqlBabelParserImpl.java:3077)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.QueryOrExpr(SqlBabelParserImpl.java:2999)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.OrderedQueryOrExpr(SqlBabelParserImpl.java:471)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.ParenthesizedQueryOrCommaList(SqlBabelParserImpl.java:638)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.Expression3(SqlBabelParserImpl.java:3411)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.Expression2b(SqlBabelParserImpl.java:3117)
>   at 
> 

[jira] [Commented] (CALCITE-3051) Babel parser should parse special table expressions

2019-05-07 Thread Muhammad Gelbana (JIRA)


[ 
https://issues.apache.org/jira/browse/CALCITE-3051?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16834664#comment-16834664
 ] 

Muhammad Gelbana commented on CALCITE-3051:
---

I'm not sure what that syntax could be called. If anyone does, please update 
the issue title accordingly.
Also any ideas about where this could be fix in the babel parser are most 
welcome. I'm already working on it.

> Babel parser should parse special table expressions
> ---
>
> Key: CALCITE-3051
> URL: https://issues.apache.org/jira/browse/CALCITE-3051
> Project: Calcite
>  Issue Type: Improvement
>  Components: babel
>Affects Versions: 1.19.0
>Reporter: Muhammad Gelbana
>Priority: Major
>  Labels: postgresql
>
> PostgreSQL query
> {code:sql}
> SELECT * FROM "
> (
> (
>   (S.C c INNER JOIN S.N n ON n.id = c.id)
>   INNER JOIN S.A a ON (NOT a.isactive)
> ) INNER JOIN S.T t ON t.id = a.id
> )
> {code}
> Returned exception
> {noformat}
> Exception in thread "main" org.apache.calcite.sql.parser.SqlParseException: 
> Non-query expression encountered in illegal context
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.convertException(SqlBabelParserImpl.java:355)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.normalizeException(SqlBabelParserImpl.java:143)
>   at 
> org.apache.calcite.sql.parser.SqlParser.parseQuery(SqlParser.java:156)
>   at org.apache.calcite.sql.parser.SqlParser.parseStmt(SqlParser.java:181)
>   at org.apache.calcite.prepare.PlannerImpl.parse(PlannerImpl.java:174)
>   at org.apache.calcite.tools.Planner.parse(Planner.java:50)
>   at com.lab.calcite.App3.main(App3.java:69)
> Caused by: org.apache.calcite.runtime.CalciteException: Non-query expression 
> encountered in illegal context
>   at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>   at 
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
>   at 
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>   at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
>   at 
> org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:463)
>   at org.apache.calcite.runtime.Resources$ExInst.ex(Resources.java:572)
>   at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:787)
>   at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:772)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.checkNonQueryExpression(SqlBabelParserImpl.java:299)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.Expression3(SqlBabelParserImpl.java:3387)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.Expression2b(SqlBabelParserImpl.java:3117)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.Expression2(SqlBabelParserImpl.java:3158)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.Expression(SqlBabelParserImpl.java:3095)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.LeafQueryOrExpr(SqlBabelParserImpl.java:3077)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.QueryOrExpr(SqlBabelParserImpl.java:2999)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.OrderedQueryOrExpr(SqlBabelParserImpl.java:471)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.ParenthesizedQueryOrCommaList(SqlBabelParserImpl.java:638)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.Expression3(SqlBabelParserImpl.java:3411)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.Expression2b(SqlBabelParserImpl.java:3117)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.Expression2(SqlBabelParserImpl.java:3158)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.Expression(SqlBabelParserImpl.java:3095)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.LeafQueryOrExpr(SqlBabelParserImpl.java:3077)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.QueryOrExpr(SqlBabelParserImpl.java:2999)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.OrderedQueryOrExpr(SqlBabelParserImpl.java:471)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.ParenthesizedQueryOrCommaList(SqlBabelParserImpl.java:638)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.Expression3(SqlBabelParserImpl.java:3411)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.Expression2b(SqlBabelParserImpl.java:3117)
>   at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.Expression2(SqlBabelParserImpl.java:3158)
>