[ 
https://issues.apache.org/jira/browse/SPARK-58330?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Anurag Mantripragada updated SPARK-58330:
-----------------------------------------
    Description: 
Spark supports a per-statement `WITH (key = value)` dynamic table options 
clause on DMLs. When a single statement references the same table more than 
once with different options, only the first-resolved reference's options are 
honored; the other reference's options are silently dropped.

Examples (each drops one side's options):

{{INSERT INTO t WITH (`write.split-size` = 10) SELECT * FROM t}}


{{MERGE INTO t WITH (`write.split-size` = 10)}}
{{USING t WITH (`split-size` = 5) s}}
{{ON t.id = s.id}}
{{WHEN MATCHED THEN UPDATE SET ...}}


{{UPDATE t WITH (`write.split-size` = 10) SET ...}}
{{WHERE id IN (SELECT id FROM t WITH (`split-size` = 5))}}

  was:
Spark supports a per-statement `WITH (key = value)` dynamic table options 
clause on DMLs. When a single statement references the same table more than 
once with different options, only the first-resolved reference's options are 
honored; the other reference's options are silently dropped.

Examples (each drops one side's options):

```sql
– INSERT self-select: the target's write options are dropped
INSERT INTO t WITH (`write.split-size` = 10) SELECT * FROM t

– MERGE self-merge: the source's read options are dropped
MERGE INTO t WITH (`write.split-size` = 10)
USING t WITH (`split-size` = 5) s
ON t.id = s.id
WHEN MATCHED THEN UPDATE SET ...

– UPDATE self-reference in a subquery/CTE: the subquery's options are dropped
UPDATE t WITH (`write.split-size` = 10) SET ...
WHERE id IN (SELECT id FROM t WITH (`split-size` = 5))
```


> Prevent silent dropping of dynamic options on same table references in DML
> --------------------------------------------------------------------------
>
>                 Key: SPARK-58330
>                 URL: https://issues.apache.org/jira/browse/SPARK-58330
>             Project: Spark
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 4.2.0
>            Reporter: Anurag Mantripragada
>            Priority: Major
>
> Spark supports a per-statement `WITH (key = value)` dynamic table options 
> clause on DMLs. When a single statement references the same table more than 
> once with different options, only the first-resolved reference's options are 
> honored; the other reference's options are silently dropped.
> Examples (each drops one side's options):
> {{INSERT INTO t WITH (`write.split-size` = 10) SELECT * FROM t}}
> {{MERGE INTO t WITH (`write.split-size` = 10)}}
> {{USING t WITH (`split-size` = 5) s}}
> {{ON t.id = s.id}}
> {{WHEN MATCHED THEN UPDATE SET ...}}
> {{UPDATE t WITH (`write.split-size` = 10) SET ...}}
> {{WHERE id IN (SELECT id FROM t WITH (`split-size` = 5))}}



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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to