Sahil Kumar Singh created SPARK-54634:
-----------------------------------------
Summary: Improve error message for empty IN clause: IN ()
Key: SPARK-54634
URL: https://issues.apache.org/jira/browse/SPARK-54634
Project: Spark
Issue Type: Improvement
Components: SQL
Affects Versions: 4.0.1
Reporter: Sahil Kumar Singh
When users write SQL queries with an empty IN clause like:
_SELECT * FROM table WHERE col IN ()_
Spark currently produces a cryptic ANTLR parser error that is difficult to
understand and doesn't help users identify the issue.
*Current behaviour:*
The parser fails with a confusing syntax error.
*Expected behaviour:*
A clear error message should be displayed, indicating that IN predicates
require at least one value, along with suggestions for alternatives.
*Reproduction:*
{code:java}
spark.sql("SELECT * FROM range(10) WHERE id IN ()").show(){code}
*Error:*
{code:java}
org.apache.spark.sql.catalyst.parser.ParseException:
[PARSE_SYNTAX_ERROR] Syntax error at or near 'IN'. SQLSTATE: 42601 (line 1, pos
33)
== SQL ==
SELECT * FROM range(10) WHERE id IN ()
---------------------------------^^^
at
org.apache.spark.sql.catalyst.parser.ParseException.withCommand(parsers.scala:285)
at org.apache.spark.sql.catalyst.parser.AbstractParser.parse(parsers.scala:97)
at
org.apache.spark.sql.execution.SparkSqlParser.parse(SparkSqlParser.scala:54)
at
org.apache.spark.sql.catalyst.parser.AbstractSqlParser.parsePlan(AbstractSqlParser.scala:93)
at
org.apache.spark.sql.classic.SparkSession.$anonfun$sql$5(SparkSession.scala:492)
at
org.apache.spark.sql.catalyst.QueryPlanningTracker.measurePhase(QueryPlanningTracker.scala:148)
at
org.apache.spark.sql.classic.SparkSession.$anonfun$sql$4(SparkSession.scala:491)
at org.apache.spark.sql.SparkSession.withActive(SparkSession.scala:804)
at org.apache.spark.sql.classic.SparkSession.sql(SparkSession.scala:490)
at org.apache.spark.sql.classic.SparkSession.sql(SparkSession.scala:504)
at org.apache.spark.sql.classic.SparkSession.sql(SparkSession.scala:513)
at org.apache.spark.sql.classic.SparkSession.sql(SparkSession.scala:91)
... 42 elided{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]