pvary opened a new pull request #2254:
URL: https://github.com/apache/iceberg/pull/2254


   When Hive query `SELECT * from date_test WHERE d_date='1998-02-19'` contains 
a date literal as a predicated Iceberg filter fails with the following 
exception:
   ```
   Caused by: org.apache.hive.service.cli.HiveSQLException: 
java.io.IOException: java.lang.IllegalStateException: Not an instance of 
java.lang.Integer: 2130-01-20
           at 
org.apache.hive.service.cli.operation.SQLOperation.getNextRowSet(SQLOperation.java:499)
           at 
org.apache.hive.service.cli.operation.OperationManager.getOperationNextRowSet(OperationManager.java:307)
           at 
org.apache.hive.service.cli.session.HiveSessionImpl.fetchResults(HiveSessionImpl.java:878)
           at 
org.apache.hive.service.cli.CLIService.fetchResults(CLIService.java:559)
           at 
org.apache.hive.service.cli.CLIService.fetchResults(CLIService.java:551)
           at 
org.apache.iceberg.mr.hive.TestHiveShell.executeStatement(TestHiveShell.java:143)
           ... 62 more
   Caused by: java.io.IOException: java.lang.IllegalStateException: Not an 
instance of java.lang.Integer: 2130-01-20
           at 
org.apache.hadoop.hive.ql.exec.FetchOperator.getNextRow(FetchOperator.java:521)
           at 
org.apache.hadoop.hive.ql.exec.FetchOperator.pushRow(FetchOperator.java:428)
           at org.apache.hadoop.hive.ql.exec.FetchTask.fetch(FetchTask.java:147)
           at org.apache.hadoop.hive.ql.Driver.getResults(Driver.java:2208)
           at 
org.apache.hive.service.cli.operation.SQLOperation.getNextRowSet(SQLOperation.java:494)
           ... 67 more
   Caused by: java.lang.IllegalStateException: Not an instance of 
java.lang.Integer: 2130-01-20
           at org.apache.iceberg.data.GenericRecord.get(GenericRecord.java:123)
           at 
org.apache.iceberg.Accessors$PositionAccessor.get(Accessors.java:71)
           at 
org.apache.iceberg.Accessors$PositionAccessor.get(Accessors.java:58)
           at 
org.apache.iceberg.expressions.BoundReference.eval(BoundReference.java:39)
           at 
org.apache.iceberg.expressions.Evaluator$EvalVisitor.eq(Evaluator.java:132)
           at 
org.apache.iceberg.expressions.Evaluator$EvalVisitor.eq(Evaluator.java:52)
           at 
org.apache.iceberg.expressions.ExpressionVisitors$BoundVisitor.predicate(ExpressionVisitors.java:249)
           at 
org.apache.iceberg.expressions.ExpressionVisitors.visitEvaluator(ExpressionVisitors.java:346)
           at 
org.apache.iceberg.expressions.Evaluator$EvalVisitor.eval(Evaluator.java:57)
           at 
org.apache.iceberg.expressions.Evaluator$EvalVisitor.access$100(Evaluator.java:52)
           at org.apache.iceberg.expressions.Evaluator.eval(Evaluator.java:49)
           at 
org.apache.iceberg.mr.mapreduce.IcebergInputFormat$IcebergRecordReader.lambda$applyResidualFiltering$0(IcebergInputFormat.java:288)
           at 
org.apache.iceberg.io.CloseableIterable$3.shouldKeep(CloseableIterable.java:82)
           at 
org.apache.iceberg.io.FilterIterator.advance(FilterIterator.java:67)
           at 
org.apache.iceberg.io.FilterIterator.hasNext(FilterIterator.java:50)
           at 
org.apache.iceberg.mr.mapreduce.IcebergInputFormat$IcebergRecordReader.nextKeyValue(IcebergInputFormat.java:202)
           at 
org.apache.iceberg.mr.mapred.MapredIcebergInputFormat$MapredIcebergRecordReader.next(MapredIcebergInputFormat.java:104)
           at 
org.apache.iceberg.mr.mapred.MapredIcebergInputFormat$MapredIcebergRecordReader.next(MapredIcebergInputFormat.java:81)
           at 
org.apache.hadoop.hive.ql.exec.FetchOperator.getNextRow(FetchOperator.java:488)
           ... 71 more
   ```
   
   There are 2 issue:
   1. Literal conversion is problematic as Hive uses Date with local timezone, 
so we have to fix the conversion
   2. When comparing the Record with the literal `GenericRecord.get()` expect 
the value to be as an Integer, but it gets LocalDate instead.


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]



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

Reply via email to