Serge Rielau created SPARK-42623:
------------------------------------

             Summary: parameter markers not blocked in DDL
                 Key: SPARK-42623
                 URL: https://issues.apache.org/jira/browse/SPARK-42623
             Project: Spark
          Issue Type: Bug
          Components: Spark Core
    Affects Versions: 3.4.0
            Reporter: Serge Rielau
             Fix For: 3.4.0


The parameterized query code does not block DDL statements from referencing 
parameter markers.
E.g. a 

 
{code:java}
scala> spark.sql(sqlText = "CREATE VIEW v1 AS SELECT current_timestamp() + 
:later as stamp, :x * :x AS square", args = Map("later" -> "INTERVAL'3' HOUR", 
"x" -> "15.0")).show()
++
||
++
++
{code}
It appears we have some protection that fails us when the view is invoked:

 
{code:java}
scala> spark.sql(sqlText = "SELECT * FROM v1", args = Map("later" -> 
"INTERVAL'3' HOUR", "x" -> "15.0")).show()
org.apache.spark.sql.AnalysisException: [UNBOUND_SQL_PARAMETER] Found the 
unbound parameter: `later`. Please, fix `args` and provide a mapping of the 
parameter to a SQL literal.; line 1 pos 29
{code}

Right now I think affected are:
* DEFAULT definition
* VIEW definition

but any other future standard expression popping up is at risk, such as SQL 
Functions, or GENERATED COLUMN.

CREATE TABLE AS is debatable, since it it executes the query at definition only.
For simplicity I propose to block the feature from ANY DDL statement (CREATE, 
ALTER).

 

 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org
For additional commands, e-mail: issues-h...@spark.apache.org

Reply via email to