Details
Description
CREATE TABLE example_table ( id INT, value DECIMAL(18,2), PRIMARY KEY (id, value) ) PARTITION BY RANGE (value) ( PARTITION VALUES <= 1000.00, PARTITION 1000.00 < VALUES <= 5000.00, PARTITION 5000.00 < VALUES <= 10000.00, PARTITION 10000.00 < VALUES ) STORED AS KUDU;
This leads to an IllegalStateException.
I0428 14:17:47.564204 10195 jni-util.cc:288] 8f47bda158e1bba1:1d38855b00000000] java.lang.IllegalStateException at com.google.common.base.Preconditions.checkState(Preconditions.java:492) at org.apache.impala.analysis.RangePartition.analyzeBoundaryValue(RangePartition.java:180) at org.apache.impala.analysis.RangePartition.analyzeBoundaryValues(RangePartition.java:150) at org.apache.impala.analysis.RangePartition.analyze(RangePartition.java:135) at org.apache.impala.analysis.KuduPartitionParam.analyzeRangeParam(KuduPartitionParam.java:144) at org.apache.impala.analysis.KuduPartitionParam.analyze(KuduPartitionParam.java:132) at org.apache.impala.analysis.CreateTableStmt.analyzeKuduPartitionParams(CreateTableStmt.java:550) at org.apache.impala.analysis.CreateTableStmt.analyzeSynchronizedKuduTableParams(CreateTableStmt.java:502) at org.apache.impala.analysis.CreateTableStmt.analyzeKuduFormat(CreateTableStmt.java:352) at org.apache.impala.analysis.CreateTableStmt.analyze(CreateTableStmt.java:266) at org.apache.impala.analysis.AnalysisContext.analyze(AnalysisContext.java:521) at org.apache.impala.analysis.AnalysisContext.analyzeAndAuthorize(AnalysisContext.java:468) at org.apache.impala.service.Frontend.doCreateExecRequest(Frontend.java:2059) at org.apache.impala.service.Frontend.getTExecRequest(Frontend.java:1967) at org.apache.impala.service.Frontend.createExecRequest(Frontend.java:1788) at org.apache.impala.service.JniFrontend.createExecRequest(JniFrontend.java:164)
Instead of running into a Precondition check failure we should detect unsupported types beforehand and return and fail the query with a proper error message.