You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by "S. Alex Smith (JIRA)" <ji...@apache.org> on 2009/02/22 10:13:02 UTC
[jira] Updated: (HIVE-297) Parses doesn't catch certain type
errors.
[ https://issues.apache.org/jira/browse/HIVE-297?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
S. Alex Smith updated HIVE-297:
-------------------------------
Description:
The following query:
FROM (
FROM (FROM my_table
SELECT CAST(userid AS BIGINT) AS userid a
SELECT userid
UNION ALL
FROM (FROM my_table
SELECT CAST(userid AS STRING) AS userid) b
SELECT userid
) unioned
SELECT DISTINCT userid;
Is accepted by the parse, but throws the following at run-time:
java.lang.RuntimeException: org.apache.hadoop.hive.serde2.SerDeException: java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String
(Note that this seems less silly if the inner queries are different tables with userid stored as a bigint and a string, respectively)
I have interpreted this as a bug in the parser, but it could also be viewed as a bug about not auto-casting.
This can be worked around by using explicit CAST statements.
was:
If table_a and table_c have schemas:
userid bigint
and table_b has a schema:
userid string
Then the following with make it through the parser, but will fail when running:
FROM (
FROM table_a
SELECT userid
UNION ALL
FROM table_b
SELECT userid) unioned
INSERT OVERWRITE TABLE table_c
SELECT *;
Specifically, the map step with throw:
java.lang.RuntimeException: org.apache.hadoop.hive.serde2.SerDeException: java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String
I have interpreted this as a bug in the parser, but it could also be viewed as a bug about not auto-casting.
Note that this can be worked around by using explicit CAST statements.
Correcting example to one which actually exhibits the problem.
> Parses doesn't catch certain type errors.
> -----------------------------------------
>
> Key: HIVE-297
> URL: https://issues.apache.org/jira/browse/HIVE-297
> Project: Hadoop Hive
> Issue Type: Bug
> Components: Query Processor
> Reporter: S. Alex Smith
>
> The following query:
> FROM (
> FROM (FROM my_table
> SELECT CAST(userid AS BIGINT) AS userid a
> SELECT userid
> UNION ALL
> FROM (FROM my_table
> SELECT CAST(userid AS STRING) AS userid) b
> SELECT userid
> ) unioned
> SELECT DISTINCT userid;
> Is accepted by the parse, but throws the following at run-time:
> java.lang.RuntimeException: org.apache.hadoop.hive.serde2.SerDeException: java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String
> (Note that this seems less silly if the inner queries are different tables with userid stored as a bigint and a string, respectively)
> I have interpreted this as a bug in the parser, but it could also be viewed as a bug about not auto-casting.
> This can be worked around by using explicit CAST statements.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.