You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@spark.apache.org by "Takuya Ueshin (JIRA)" <ji...@apache.org> on 2014/11/07 07:03:33 UTC

[jira] [Created] (SPARK-4293) Make Cast be able to handle complex types.

Takuya Ueshin created SPARK-4293:
------------------------------------

             Summary: Make Cast be able to handle complex types.
                 Key: SPARK-4293
                 URL: https://issues.apache.org/jira/browse/SPARK-4293
             Project: Spark
          Issue Type: Improvement
          Components: SQL
            Reporter: Takuya Ueshin


Inserting data of type including {{ArrayType.containsNull == false}} or {{MapType.valueContainsNull == false}} or {{StructType.fields.exists(_.nullable == false)}} into Hive table will fail because {{Cast}} inserted by {{HiveMetastoreCatalog.PreInsertionCasts}} rule of {{Analyzer}} can't handle these types correctly.

Complex type cast rule proposal:

* Cast for non-complex types should be able to cast the same as before.
* Cast for {{ArrayType}} can evaluate if
** Element type can cast
** Nullability rule doesn't break
* Cast for {{MapType}} can evaluate if
** Key type can cast
** Nullability for casted key type is {{false}}
** Value type can cast
** Nullability rule for value type doesn't break
* Cast for {{StructType}} can evaluate if
** The field size is the same
** Each field can cast
** Nullability rule for each field doesn't break
* The nested structure should be the same.

Nullability rule:

* If the casted type is {{nullable == true}}, the target nullability should be {{true}}




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

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