diff --git llap-server/src/java/org/apache/hadoop/hive/llap/io/api/impl/LlapRecordReader.java llap-server/src/java/org/apache/hadoop/hive/llap/io/api/impl/LlapRecordReader.java index be748e9..3455d16 100644 --- llap-server/src/java/org/apache/hadoop/hive/llap/io/api/impl/LlapRecordReader.java +++ llap-server/src/java/org/apache/hadoop/hive/llap/io/api/impl/LlapRecordReader.java @@ -289,68 +289,10 @@ public void start() { executor.submit(rp.getReadCallable()); } - private boolean hasSchemaEvolutionStringFamilyTruncateIssue(SchemaEvolution evolution) { - return hasStringFamilyTruncateTypeIssue(evolution, evolution.getReaderSchema()); - } - - // We recurse through the types. - private boolean hasStringFamilyTruncateTypeIssue(SchemaEvolution evolution, - TypeDescription readerType) { - TypeDescription fileType = evolution.getFileType(readerType); - if (fileType == null) { - return false; - } - switch (fileType.getCategory()) { - case BOOLEAN: - case BYTE: - case SHORT: - case INT: - case LONG: - case DOUBLE: - case FLOAT: - case STRING: - case TIMESTAMP: - case BINARY: - case DATE: - case DECIMAL: - // We are only looking for the CHAR/VARCHAR truncate issue. - return false; - case CHAR: - case VARCHAR: - if (readerType.getCategory().equals(TypeDescription.Category.CHAR) || - readerType.getCategory().equals(TypeDescription.Category.VARCHAR)) { - return (fileType.getMaxLength() > readerType.getMaxLength()); - } - return false; - case UNION: - case MAP: - case LIST: - case STRUCT: - { - List readerChildren = readerType.getChildren(); - final int childCount = readerChildren.size(); - for (int i = 0; i < childCount; ++i) { - if (hasStringFamilyTruncateTypeIssue(evolution, readerChildren.get(i))) { - return true; - } - } - } - return false; - default: - throw new IllegalArgumentException("Unknown type " + fileType); - } - } - private boolean checkOrcSchemaEvolution() { SchemaEvolution evolution = rp.getSchemaEvolution(); - /* - * FUTURE: When SchemaEvolution.isOnlyImplicitConversion becomes available: - * 1) Replace the hasSchemaEvolutionStringFamilyTruncateIssue call with - * !isOnlyImplicitConversion. - * 2) Delete hasSchemaEvolutionStringFamilyTruncateIssue code. - */ - if (evolution.hasConversion() && hasSchemaEvolutionStringFamilyTruncateIssue(evolution)) { + if (evolution.hasConversion() && !evolution.isOnlyImplicitConversion()) { // We do not support data type conversion when reading encoded ORC data. return false;