[ https://issues.apache.org/jira/browse/SPARK-27209?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Apache Spark reassigned SPARK-27209: ------------------------------------ Assignee: Apache Spark > Split parsing of SELECT and INSERT into two top-level rules in the grammar > file. > -------------------------------------------------------------------------------- > > Key: SPARK-27209 > URL: https://issues.apache.org/jira/browse/SPARK-27209 > Project: Spark > Issue Type: Improvement > Components: SQL > Affects Versions: 2.4.0 > Reporter: Dilip Biswal > Assignee: Apache Spark > Priority: Major > > Currently in the grammar file the rule `query` is responsible to parse both > select and insert statements. As a result, we need to have more semantic > checks in the code to guard against in valid insert constructs in a query. > Couple of examples are in the `visitCreateView` and `visitAlterView` > functions. One other issue is that, we don't catch the `invalid insert > constructs` in all the places. Here are couple of examples : > {code:sql} > select * from (insert into bar values (2)); > {code} > {code:scala} > Error in query: unresolved operator 'Project [*]; > 'Project [*] > +- SubqueryAlias `__auto_generated_subquery_name` > +- InsertIntoHiveTable `default`.`bar`, > org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, false, false, [c1] > +- Project [cast(col1#18 as int) AS c1#20] > +- LocalRelation [col1#18] > {code} > {code:sql} > select * from foo where c1 in (insert into bar values (2)) > {code} > {code:scala} > Error in query: cannot resolve '(default.foo.`c1` IN (listquery()))' due to > data type mismatch: > The number of columns in the left hand side of an IN subquery does not match > the > number of columns in the output of subquery. > #columns in left hand side: 1. > #columns in right hand side: 0. > Left side columns: > [default.foo.`c1`]. > Right side columns: > [].;; > 'Project [*] > +- 'Filter c1#6 IN (list#5 []) > : +- InsertIntoHiveTable `default`.`bar`, > org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, false, false, [c1] > : +- Project [cast(col1#7 as int) AS c1#9] > : +- LocalRelation [col1#7] > +- SubqueryAlias `default`.`foo` > +- HiveTableRelation `default`.`foo`, > org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, [c1#6] > {code} > We should have two top-level parser rules to parse `SELECT` and `INSERT` > respectively. -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org For additional commands, e-mail: issues-h...@spark.apache.org