You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@spark.apache.org by "Sifan Huang (Jira)" <ji...@apache.org> on 2023/04/24 16:37:00 UTC
[jira] [Created] (SPARK-43267) Support creating data frame from a Postgres table that contains user-defined array column
Sifan Huang created SPARK-43267:
-----------------------------------
Summary: Support creating data frame from a Postgres table that contains user-defined array column
Key: SPARK-43267
URL: https://issues.apache.org/jira/browse/SPARK-43267
Project: Spark
Issue Type: New Feature
Components: SQL
Affects Versions: 3.3.2, 2.4.0
Reporter: Sifan Huang
Spark SQL now doesn’t support creating data frame from a Postgres table that contains user-defined array column. However, it used to allow such type before the Postgres JDBC commit (https://github.com/pgjdbc/pgjdbc/commit/375cb3795c3330f9434cee9353f0791b86125914). The previous behavior was to handle user-defined array column as String.
Given:
* Postgres table with user-defined array column
* Function: DataFrameReader.jdbc - https://spark.apache.org/docs/2.4.0/api/java/org/apache/spark/sql/DataFrameReader.html#jdbc-java.lang.String-java.lang.String-java.util.Properties-
Results:
* Exception “java.sql.SQLException: Unsupported type ARRAY” is thrown
Expectation after the change:
* Function call succeeds
* User-defined array is converted as a string in Spark DataFrame
Suggested fix:
* Update “getCatalystType” function in “PostgresDialect” as
**
{code:java}
val catalystType = toCatalystType(typeName.drop(1), size, scale).map(ArrayType(_))
if (catalystType.isEmpty) Some(StringType) else catalystType{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@spark.apache.org
For additional commands, e-mail: issues-help@spark.apache.org