Github user vvysotskyi commented on a diff in the pull request: https://github.com/apache/drill/pull/1138#discussion_r172620291 --- Diff: exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroDrillTable.java --- @@ -58,16 +65,31 @@ public AvroDrillTable(String storageEngineName, @Override public RelDataType getRowType(RelDataTypeFactory typeFactory) { - List<RelDataType> typeList = Lists.newArrayList(); - List<String> fieldNameList = Lists.newArrayList(); + // ExtendableRelDataTypeHolder is reused to preserve previously added implicit columns + if (holder == null) { + List<RelDataType> typeList = Lists.newArrayList(); + List<String> fieldNameList = Lists.newArrayList(); - Schema schema = reader.getSchema(); - for (Field field : schema.getFields()) { - fieldNameList.add(field.name()); - typeList.add(getNullableRelDataTypeFromAvroType(typeFactory, field.schema())); + // adds partition columns to RowType + List<String> partitions = ColumnExplorer.getPartitions(((FormatSelection) getSelection()).getSelection(), schemaConfig); --- End diff -- 1. Yes, it is safe, since we are using the same `FormatSelection` instance as we passed to the parent constructor. 2. Thanks, done.
---