diff options
-rw-r--r-- | exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/Metadata.java | 19 | ||||
-rw-r--r-- | exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/ParquetGroupScan.java | 6 |
2 files changed, 21 insertions, 4 deletions
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/Metadata.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/Metadata.java index 25b93b731..952f37905 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/Metadata.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/Metadata.java @@ -493,6 +493,8 @@ public class Metadata { @JsonIgnore public abstract PrimitiveTypeName getPrimitiveType(String[] columnName); @JsonIgnore public abstract OriginalType getOriginalType(String[] columnName); + + @JsonIgnore public abstract ParquetTableMetadataBase clone(); } public static abstract class ParquetFileMetadata { @@ -542,8 +544,7 @@ public class Metadata { super(); } - public ParquetTableMetadata_v1(ParquetTableMetadataBase p, List<ParquetFileMetadata_v1> files, - List<String> directories) { + public ParquetTableMetadata_v1(List<ParquetFileMetadata_v1> files, List<String> directories) { this.files = files; this.directories = directories; } @@ -571,6 +572,10 @@ public class Metadata { @JsonIgnore @Override public OriginalType getOriginalType(String[] columnName) { return null; } + + @JsonIgnore @Override public ParquetTableMetadataBase clone() { + return new ParquetTableMetadata_v1(files, directories); + } } @@ -787,6 +792,13 @@ public class Metadata { this.columnTypeInfo = ((ParquetTableMetadata_v2) parquetTable).columnTypeInfo; } + public ParquetTableMetadata_v2(List<ParquetFileMetadata_v2> files, List<String> directories, + ConcurrentHashMap<ColumnTypeMetadata_v2.Key, ColumnTypeMetadata_v2> columnTypeInfo) { + this.files = files; + this.directories = directories; + this.columnTypeInfo = columnTypeInfo; + } + public ColumnTypeMetadata_v2 getColumnTypeInfo(String[] name) { return columnTypeInfo.get(new ColumnTypeMetadata_v2.Key(name)); } @@ -815,6 +827,9 @@ public class Metadata { return getColumnTypeInfo(columnName).originalType; } + @JsonIgnore @Override public ParquetTableMetadataBase clone() { + return new ParquetTableMetadata_v2(files, directories, columnTypeInfo); + } } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/ParquetGroupScan.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/ParquetGroupScan.java index b8ae92c9d..ccfca4157 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/ParquetGroupScan.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/ParquetGroupScan.java @@ -712,8 +712,10 @@ public class ParquetGroupScan extends AbstractFileGroupScan { newFileMetadataList.add(file); } } - parquetTableMetadata.assignFiles(newFileMetadataList); - return parquetTableMetadata; + + ParquetTableMetadataBase metadata = parquetTableMetadata.clone(); + metadata.assignFiles(newFileMetadataList); + return metadata; } /** |