[ 
https://issues.apache.org/jira/browse/HIVE-23455?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17105967#comment-17105967
 ] 

Mustafa Iman commented on HIVE-23455:
-------------------------------------

[~ashutoshc] The error happens when populating loop does not visit all the 
indices. The loop does not visit all the indices -> there are nulls in the 
array. Therefore the extra assertion loop. Regarding TestNegativeCliDriver, I 
tried that but it shows only generic task error at the end of the output in 
both cases.

Anyway, [~gopalv] thinks this is breaking schema evolution. I still do not see 
it as this codepath fails in very next method 
call(EncodedTreeReaderFactory#createRootTreeReader) with NullPointerException 
anyway.

I also tried the sample query he gave with mini llap drivers:
{code:java}
create external table foo(x int);
insert into foo values(1);
alter table foo add column (y int);
select sum(x) from foo;
{code}
It works for me. So I did not close the ticket but please do not merge yet.

> Improve error message for external orc table
> --------------------------------------------
>
>                 Key: HIVE-23455
>                 URL: https://issues.apache.org/jira/browse/HIVE-23455
>             Project: Hive
>          Issue Type: Improvement
>            Reporter: Mustafa Iman
>            Assignee: Mustafa Iman
>            Priority: Major
>         Attachments: HIVE-23455.patch, acid_table_as_external.q, 
> acid_table_as_external.q.out
>
>
> Since there is no schema validation for external tables, users may face 
> various errors if their orc data and external table schema does not match. If 
> orc schema has fewer columns than projection OrcEncodedDataConsumer may 
> receive an incomplete TypeDescription array which will manifest itself as 
> NullPointerException later.
> We can at least verify that OrcEncodedDataConsumer gets enough 
> TypeDescriptions. If assertion fails, user sees there is something wrong with 
> the schema and hopefully resolves the problem quickly. If there are enough 
> columns in the file but the schema of the query does not match, user 
> generally sees a ClassCastException. If there are enough columns and types 
> accidentally match, there is nothing we can do as this is an external table.
> We have seen this when trying to use a managed table as external table 
> location. Although user facing schemas are the same, managed table has acid 
> related metadata. I am adding a q file demonstrating NullPointerException 
> with TestMiniLlapLocalCliDriver and the output after the fix. I haven't added 
> this to precommit tests as it is hard to assert the exception message from 
> mini driver framework and effectively it is just changing the error.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to