Anshul Baliga created SPARK-61132:
-------------------------------------

             Summary: Raise a clear error for TIMESTAMP_NTZ columns in the Hive 
ORC data source
                 Key: SPARK-61132
                 URL: https://issues.apache.org/jira/browse/SPARK-61132
             Project: Spark
          Issue Type: Bug
          Components: SQL
    Affects Versions: 4.4.0
            Reporter: Anshul Baliga


The Hive ORC data source (\{{spark.sql.orc.impl=hive}}) has no mapping for 
\{{TIMESTAMP_NTZ}}. \{{OrcSerializer.toHiveCompatibleDataType}} rewrites only 
the nanosecond timestamp types and collated strings, so a \{{TIMESTAMP_NTZ}} 
column reaches Hive's type parser as the string \{{timestamp_ntz}} and the 
write fails with a Hive internal error that does not say which column is wrong 
or why.

SPARK-60545 fixed the same problem for Hive serde tables by rejecting 
\{{TIMESTAMP_NTZ}} in \{{HiveFileFormat.supportDataType}} with 
\{{UNSUPPORTED_DATA_TYPE_FOR_DATASOURCE}}, but the sibling 
\{{OrcFileFormat.supportDataType}} in \{{sql/hive}} was not updated. The three 
earlier rejections in that method (\{{TIME}} in SPARK-51590, the nanosecond 
timestamps in SPARK-57166, the geospatial types in SPARK-60519) were applied to 
both methods.

*Steps to reproduce (verified on master):*
{code:sql}
SET spark.sql.orc.impl=hive;
CREATE TABLE t (ts TIMESTAMP_NTZ) USING ORC;                 -- succeeds
INSERT INTO t VALUES (TIMESTAMP_NTZ'1970-01-01 00:00:01');  -- fails inside Hive
{code}

*Expected:* \{{CREATE TABLE}} fails with 
\{{[UNSUPPORTED_DATA_TYPE_FOR_DATASOURCE] The ORC datasource doesn't support 
the column `ts` of the type "TIMESTAMP_NTZ".}}, like the Hive serde format and 
like the other unsupported types in Hive ORC.

*Proposed fix:* add \{{case _: TimestampNTZType => false}} to 
\{{org.apache.spark.sql.hive.orc.OrcFileFormat.supportDataType}}, with a test 
in \{{HiveOrcQuerySuite}} covering the write path (top-level and nested), the 
read path with a user-specified schema, and \{{CREATE TABLE ... USING ORC}}.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

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

Reply via email to