Github user danielvdende commented on a diff in the pull request:
https://github.com/apache/spark/pull/20057#discussion_r168929874
--- Diff: docs/sql-programming-guide.md ---
@@ -1372,6 +1372,13 @@ the following case-insensitive options:
This is a JDBC writer related option. When
<code>SaveMode.Overwrite</code> is enabled, this option causes Spark to
truncate an existing table instead of dropping and recreating it. This can be
more efficient, and prevents the table metadata (e.g., indices) from being
removed. However, it will not work in some cases, such as when the new data has
a different schema. It defaults to <code>false</code>. This option applies only
to writing.
</td>
</tr>
+
+ <tr>
+ <td><code>cascadeTruncate</code></td>
+ <td>
+ This is a JDBC writer related option. If enabled and supported by
the JDBC database (PostgreSQL and Oracle at the moment), this options allows
execution of a <code>TRUNCATE TABLE t CASCADE</code>. This will affect other
tables, and thus should be used with care. This option applies only to writing.
It defaults to the default cascading truncate behaviour of the JDBC database in
question, specified in the <code>isCascadeTruncate</code> in each JDBCDialect.
--- End diff --
Yeah, so the "problem" there is that PostgreSQL has inheritance across
tables (as we discovered in
[SPARK-22729](https://github.com/apache/spark/pull/19911). To be completely
transparent to users, I think the `ONLY` part of the query for PostgreSQL
should also be configurable, but I think that's outside the scope of this PR.
I've added a comment saying that for PostgreSQL a `ONLY` is added to prevent
descendant tables from being truncated.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]