diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/schema/IoTDBAlterTimeSeriesTypeIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/schema/IoTDBAlterTimeSeriesTypeIT.java index 3effc3a8b8306..e5fa5ca59a7fe 100644 --- a/integration-test/src/test/java/org/apache/iotdb/db/it/schema/IoTDBAlterTimeSeriesTypeIT.java +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/schema/IoTDBAlterTimeSeriesTypeIT.java @@ -26,8 +26,8 @@ import org.apache.iotdb.isession.SessionDataSet; import org.apache.iotdb.it.env.EnvFactory; import org.apache.iotdb.it.framework.IoTDBTestRunner; -import org.apache.iotdb.itbase.category.TableClusterIT; -import org.apache.iotdb.itbase.category.TableLocalStandaloneIT; +import org.apache.iotdb.itbase.category.ClusterIT; +import org.apache.iotdb.itbase.category.LocalStandaloneIT; import org.apache.iotdb.rpc.IoTDBConnectionException; import org.apache.iotdb.rpc.StatementExecutionException; @@ -87,7 +87,7 @@ @SuppressWarnings("ResultOfMethodCallIgnored") @RunWith(IoTDBTestRunner.class) -@Category({TableLocalStandaloneIT.class, TableClusterIT.class}) +@Category({LocalStandaloneIT.class, ClusterIT.class}) public class IoTDBAlterTimeSeriesTypeIT { private static final Logger log = LoggerFactory.getLogger(IoTDBAlterTimeSeriesTypeIT.class); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/FileLoaderUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/FileLoaderUtils.java index 9b341dc997171..3eff3b9a53fbc 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/FileLoaderUtils.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/FileLoaderUtils.java @@ -40,7 +40,6 @@ import org.apache.iotdb.db.utils.SchemaUtils; import org.apache.tsfile.enums.TSDataType; -import org.apache.tsfile.file.metadata.AbstractAlignedChunkMetadata; import org.apache.tsfile.file.metadata.AbstractAlignedTimeSeriesMetadata; import org.apache.tsfile.file.metadata.AlignedTimeSeriesMetadata; import org.apache.tsfile.file.metadata.IChunkMetadata; @@ -113,13 +112,11 @@ public static TimeseriesMetadata loadTimeSeriesMetadata( context.isDebug(), context); if (timeSeriesMetadata != null) { - SchemaUtils.changeMetadataModified(timeSeriesMetadata, seriesPath.getSeriesType()); long t2 = System.nanoTime(); List pathModifications = context.getPathModifications( resource, seriesPath.getDeviceId(), seriesPath.getMeasurement()); - timeSeriesMetadata.setModified( - timeSeriesMetadata.isModified() || !pathModifications.isEmpty()); + timeSeriesMetadata.setModified(!pathModifications.isEmpty()); timeSeriesMetadata.setChunkMetadataLoader( new DiskChunkMetadataLoader(resource, context, globalTimeFilter, pathModifications)); int modificationCount = pathModifications.size(); @@ -141,13 +138,14 @@ public static TimeseriesMetadata loadTimeSeriesMetadata( timeSeriesMetadata = (TimeseriesMetadata) resource.getTimeSeriesMetadata(seriesPath, globalTimeFilter); if (timeSeriesMetadata != null) { - SchemaUtils.changeMetadataModified(timeSeriesMetadata, seriesPath.getSeriesType()); timeSeriesMetadata.setChunkMetadataLoader( new MemChunkMetadataLoader(resource, seriesPath, context, globalTimeFilter)); } } if (timeSeriesMetadata != null) { + SchemaUtils.changeTimeseriesMetadataModified( + timeSeriesMetadata, seriesPath.getSeriesType()); if (timeSeriesMetadata.getStatistics().getStartTime() > timeSeriesMetadata.getStatistics().getEndTime()) { return null; @@ -209,15 +207,12 @@ public static AbstractAlignedTimeSeriesMetadata loadAlignedTimeSeriesMetadata( alignedTimeSeriesMetadata = loadAlignedTimeSeriesMetadataFromDisk( resource, alignedPath, context, globalTimeFilter, ignoreAllNullRows); - SchemaUtils.changeAlignedMetadataModified(alignedTimeSeriesMetadata, targetDataTypeList); } else { // if the tsfile is unclosed, we just get it directly from TsFileResource loadFromMem = true; alignedTimeSeriesMetadata = (AbstractAlignedTimeSeriesMetadata) resource.getTimeSeriesMetadata(alignedPath, globalTimeFilter); if (alignedTimeSeriesMetadata != null) { - SchemaUtils.changeAlignedMetadataModified(alignedTimeSeriesMetadata, targetDataTypeList); - alignedTimeSeriesMetadata.setChunkMetadataLoader( new MemAlignedChunkMetadataLoader( resource, alignedPath, context, globalTimeFilter, ignoreAllNullRows)); @@ -226,6 +221,8 @@ public static AbstractAlignedTimeSeriesMetadata loadAlignedTimeSeriesMetadata( } if (alignedTimeSeriesMetadata != null) { + SchemaUtils.changeAlignedTimeseriesMetadataModified( + alignedTimeSeriesMetadata, targetDataTypeList); if (alignedTimeSeriesMetadata.getTimeseriesMetadata().getStatistics().getStartTime() > alignedTimeSeriesMetadata.getTimeseriesMetadata().getStatistics().getEndTime()) { return null; @@ -320,25 +317,18 @@ private static AbstractAlignedTimeSeriesMetadata loadAlignedTimeSeriesMetadataFr new ArrayList<>(valueMeasurementList.size()); // if all the queried aligned sensors does not exist, we will return null boolean exist = false; - int i = 0; - for (String valueMeasurement : valueMeasurementList) { + for (String measurement : valueMeasurementList) { TimeseriesMetadata valueColumn = cache.get( filePath, - new TimeSeriesMetadataCacheKey( - resource.getTsFileID(), deviceId, valueMeasurement), + new TimeSeriesMetadataCacheKey(resource.getTsFileID(), deviceId, measurement), allSensors, context.ignoreNotExistsDevice() || resource.getTimeIndexType() == ITimeIndex.FILE_TIME_INDEX_TYPE, isDebug, context); exist = (exist || (valueColumn != null)); - if (valueColumn != null) { - SchemaUtils.changeAlignedMetadataModified( - valueColumn, alignedPath.getSchemaList().get(i).getType()); - } valueTimeSeriesMetadataList.add(valueColumn); - i++; } if (!ignoreAllNullRows || exist) { alignedTimeSeriesMetadata = @@ -458,55 +448,23 @@ public static List loadChunkMetadataList(ITimeSeriesMetadata tim * IOException will be thrown */ public static List loadPageReaderList( - IChunkMetadata chunkMetaData, - Filter globalTimeFilter, - boolean isAligned, - List targetDataTypeList) + IChunkMetadata chunkMetaData, Filter globalTimeFilter, List targetDataTypeList) throws IOException { checkArgument(chunkMetaData != null, "Can't init null chunkMeta"); + IChunkLoader chunkLoader = chunkMetaData.getChunkLoader(); IChunkReader chunkReader; - boolean isModified = false; - if (isAligned) { - AbstractAlignedChunkMetadata alignedChunkMetadata = - (AbstractAlignedChunkMetadata) chunkMetaData; - for (int i = 0; i < alignedChunkMetadata.getValueChunkMetadataList().size(); i++) { - if (alignedChunkMetadata.getValueChunkMetadataList().get(i) != null) { - if (!SchemaUtils.isUsingSameStatistics( - alignedChunkMetadata.getValueChunkMetadataList().get(i).getDataType(), - targetDataTypeList.get(i)) - && !SchemaUtils.canUseStatisticsAfterAlter(targetDataTypeList.get(i))) { - isModified = true; - alignedChunkMetadata.getValueChunkMetadataList().get(i).setModified(true); - } - } - } - IChunkLoader chunkLoader = alignedChunkMetadata.getChunkLoader(); - chunkReader = chunkLoader.getChunkReader(alignedChunkMetadata, globalTimeFilter); - } else { - if (!SchemaUtils.isUsingSameStatistics(chunkMetaData.getDataType(), targetDataTypeList.get(0)) - && !SchemaUtils.canUseStatisticsAfterAlter(targetDataTypeList.get(0))) { - isModified = true; - chunkMetaData.setModified(true); - } - IChunkLoader chunkLoader = chunkMetaData.getChunkLoader(); - try { - chunkReader = chunkLoader.getChunkReader(chunkMetaData, globalTimeFilter); - } catch (ChunkTypeInconsistentException e) { - // if the chunk in tsfile is a value chunk of aligned series, we should skip all data of - // this chunk. - return Collections.emptyList(); - } + try { + chunkReader = chunkLoader.getChunkReader(chunkMetaData, globalTimeFilter); + } catch (ChunkTypeInconsistentException e) { + // if the chunk in tsfile is a value chunk of aligned series but registered series is + // non-aligned, we should skip all data of this chunk. + return Collections.emptyList(); } - - return isModified - ? chunkReader.loadPageReaderList().stream() - .peek( - iPageReader -> { - iPageReader.setModified(true); - }) - .collect(Collectors.toList()) - : chunkReader.loadPageReaderList(); + if (chunkMetaData.isDataTypeModifiedAndCannotUseStatistics()) { + chunkReader.markDataTypeModifiedAndCannotUseStatistics(); + } + return chunkReader.loadPageReaderList(); } /** diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/SeriesScanUtil.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/SeriesScanUtil.java index 1e1cffba5ffc6..5e7111bf09cd0 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/SeriesScanUtil.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/SeriesScanUtil.java @@ -45,8 +45,6 @@ import org.apache.tsfile.block.column.Column; import org.apache.tsfile.common.conf.TSFileDescriptor; import org.apache.tsfile.enums.TSDataType; -import org.apache.tsfile.file.metadata.AbstractAlignedChunkMetadata; -import org.apache.tsfile.file.metadata.ChunkMetadata; import org.apache.tsfile.file.metadata.IChunkMetadata; import org.apache.tsfile.file.metadata.IDeviceID; import org.apache.tsfile.file.metadata.IMetadata; @@ -453,15 +451,6 @@ private void initFirstChunkMetadata() throws IOException { orderUtils.getOverlapCheckTime(firstChunkMetadata.getStatistics())); unpackAllOverlappedTimeSeriesMetadataToCachedChunkMetadata( orderUtils.getOverlapCheckTime(firstChunkMetadata.getStatistics()), false); - if (isAligned) { - SchemaUtils.changeAlignedMetadataModified( - (AbstractAlignedChunkMetadata) firstChunkMetadata, - firstChunkMetadata.getDataType(), - getTsDataTypeList()); - } else { - SchemaUtils.changeMetadataModified( - firstChunkMetadata, firstChunkMetadata.getDataType(), dataType); - } if (firstChunkMetadata.equals(cachedChunkMetadata.peek())) { firstChunkMetadata = cachedChunkMetadata.poll(); break; @@ -489,45 +478,13 @@ private void unpackAllOverlappedTimeSeriesMetadataToCachedChunkMetadata( if (init && firstChunkMetadata == null && !cachedChunkMetadata.isEmpty()) { firstChunkMetadata = cachedChunkMetadata.poll(); - if (isAligned) { - SchemaUtils.changeAlignedMetadataModified( - (AbstractAlignedChunkMetadata) firstChunkMetadata, - firstChunkMetadata.getDataType(), - getTsDataTypeList()); - } else { - SchemaUtils.changeMetadataModified( - firstChunkMetadata, firstChunkMetadata.getDataType(), dataType); - } } } protected void unpackOneTimeSeriesMetadata(ITimeSeriesMetadata timeSeriesMetadata) { List chunkMetadataList = FileLoaderUtils.loadChunkMetadataList(timeSeriesMetadata); - chunkMetadataList.forEach( - chunkMetadata -> { - if (chunkMetadata instanceof AbstractAlignedChunkMetadata) { - AbstractAlignedChunkMetadata alignedChunkMetadata = - (AbstractAlignedChunkMetadata) chunkMetadata; - for (int i = 0; i < alignedChunkMetadata.getValueChunkMetadataList().size(); i++) { - if ((alignedChunkMetadata.getValueChunkMetadataList().get(i) != null) - && !SchemaUtils.isUsingSameStatistics( - alignedChunkMetadata.getValueChunkMetadataList().get(i).getDataType(), - getTsDataTypeList().get(i)) - && !SchemaUtils.canUseStatisticsAfterAlter(getTsDataTypeList().get(i))) { - alignedChunkMetadata.getValueChunkMetadataList().get(i).setModified(true); - } - } - chunkMetadata = alignedChunkMetadata; - } else if (chunkMetadata instanceof ChunkMetadata) { - if (!SchemaUtils.isUsingSameStatistics( - chunkMetadata.getDataType(), getTsDataTypeList().get(0)) - && !SchemaUtils.canUseStatisticsAfterAlter(getTsDataTypeList().get(0))) { - chunkMetadata.setModified(true); - } - } - chunkMetadata.setSeq(timeSeriesMetadata.isSeq()); - }); + chunkMetadataList.forEach(chunkMetadata -> chunkMetadata.setSeq(timeSeriesMetadata.isSeq())); cachedChunkMetadata.addAll(chunkMetadataList); } @@ -704,7 +661,7 @@ private void unpackOneChunkMetaData(IChunkMetadata chunkMetaData) throws IOExcep } List pageReaderList = FileLoaderUtils.loadPageReaderList( - chunkMetaData, scanOptions.getGlobalTimeFilter(), isAligned, getTsDataTypeList()); + chunkMetaData, scanOptions.getGlobalTimeFilter(), getTsDataTypeList()); // init TsBlockBuilder for each page reader pageReaderList.forEach(p -> p.initTsBlockBuilder(getTsDataTypeList())); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/utils/ResourceByPathUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/utils/ResourceByPathUtils.java index 690cea9f03b06..adb76d9bbddc3 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/utils/ResourceByPathUtils.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/utils/ResourceByPathUtils.java @@ -364,7 +364,7 @@ private static void rewriteStatistics( TSDataType targetDataType = measurementMap.get(measurement); if (valueChunkMetadata.getDataType() != targetDataType) { SchemaUtils.rewriteAlignedChunkMetadataStatistics(alignedChunkMetadata, i, targetDataType); - alignedChunkMetadata.setModified(true); + alignedChunkMetadata.setDataTypeModifiedAndCannotUseStatistics(true); } } } @@ -571,7 +571,7 @@ public ITimeSeriesMetadata generateTimeSeriesMetadata( return null; } chunkMetadataList.set(index, chunkMetadata); - chunkMetadata.setModified(true); + chunkMetadata.setDataTypeModifiedAndCannotUseStatistics(true); } if (!useFakeStatistics) { if (chunkMetadata != null && targetDataType.isCompatible(chunkMetadata.getDataType())) { @@ -597,7 +597,7 @@ public ITimeSeriesMetadata generateTimeSeriesMetadata( return null; } memChunk.setChunkMetadata(rewritedChunkMetadata); - memChunk.getChunkMetaData().setModified(true); + memChunk.getChunkMetaData().setDataTypeModifiedAndCannotUseStatistics(true); } if (useFakeStatistics) { memChunk.initChunkMetaFromTVListsWithFakeStatistics(); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedChunkReader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedChunkReader.java index 093ae9cc32708..169dec4addce8 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedChunkReader.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedChunkReader.java @@ -85,6 +85,11 @@ public void close() { // Do nothing because mem chunk reader will not open files } + @Override + public void markDataTypeModifiedAndCannotUseStatistics() { + // Do nothing because MemPageReader.setModified() is empty + } + @Override public List loadPageReaderList() { return this.pageReaderList; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemChunkReader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemChunkReader.java index 4b21d87d114d2..04c953144753b 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemChunkReader.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemChunkReader.java @@ -129,6 +129,11 @@ public void close() { // Do nothing because mem chunk reader will not open files } + @Override + public void markDataTypeModifiedAndCannotUseStatistics() { + // Do nothing because MemPageReader.setModified() is empty + } + @Override public List loadPageReaderList() { return this.pageReaderList; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/SchemaUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/SchemaUtils.java index 6044b2331d138..281b1be2b353b 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/SchemaUtils.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/SchemaUtils.java @@ -40,6 +40,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.annotation.Nullable; + import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.Collections; @@ -314,120 +316,58 @@ public static boolean isUsingSameColumn(TSDataType originalDataType, TSDataType dataTypeColumnClassMap.get(originalDataType), dataTypeColumnClassMap.get(dataType)); } - public static boolean isUsingSameStatistics(TSDataType originalDataType, TSDataType dataType) { - if (originalDataType == dataType) { - return true; - } - if (!dataTypeColumnStatisticsClassMap.containsKey(originalDataType) - || !dataTypeColumnStatisticsClassMap.containsKey(dataType)) { - return false; - } - return Objects.equals( - dataTypeColumnStatisticsClassMap.get(originalDataType), - dataTypeColumnStatisticsClassMap.get(dataType)); - } - - public static boolean canUseStatisticsAfterAlter(TSDataType dataType) { - return !canNotUseStatisticAfterAlterClassSet.contains(dataType); - } - - public static void changeMetadataModified( - TimeseriesMetadata timeseriesMetadata, TSDataType targetDataType) { + public static void changeTimeseriesMetadataModified( + @Nullable TimeseriesMetadata timeseriesMetadata, TSDataType targetDataType) { if (timeseriesMetadata == null) { return; } - if (!SchemaUtils.isUsingSameStatistics(timeseriesMetadata.getTsDataType(), targetDataType) - && !SchemaUtils.canUseStatisticsAfterAlter(targetDataType)) { - timeseriesMetadata.setModified(true); - List chunkMetadataList = timeseriesMetadata.getChunkMetadataList(); - if (chunkMetadataList != null) { - for (IChunkMetadata chunkMetadata : chunkMetadataList) { - if (chunkMetadata != null) { - chunkMetadata.setModified(true); - } - } - } + if (!SchemaUtils.canUseStatisticsAfterAlter( + timeseriesMetadata.getTsDataType(), targetDataType)) { + timeseriesMetadata.setDataTypeModifiedAndCannotUseStatistics(true); } } - public static void changeAlignedMetadataModified( - AbstractAlignedTimeSeriesMetadata alignedTimeSeriesMetadata, + public static void changeAlignedTimeseriesMetadataModified( + @Nullable AbstractAlignedTimeSeriesMetadata alignedTimeSeriesMetadata, List targetDataTypeList) { if (alignedTimeSeriesMetadata == null) { return; } - - int i = 0; - for (TimeseriesMetadata timeseriesMetadata : - alignedTimeSeriesMetadata.getValueTimeseriesMetadataList()) { - if ((timeseriesMetadata != null) - && !SchemaUtils.isUsingSameStatistics( - timeseriesMetadata.getTsDataType(), targetDataTypeList.get(i)) - && !SchemaUtils.canUseStatisticsAfterAlter(targetDataTypeList.get(i))) { - timeseriesMetadata.setModified(true); - alignedTimeSeriesMetadata.setModified(true); - List chunkMetadataList = timeseriesMetadata.getChunkMetadataList(); - if (chunkMetadataList != null) { - for (IChunkMetadata chunkMetadata : chunkMetadataList) { - if (chunkMetadata != null) { - chunkMetadata.setModified(true); - } - } - } + for (int i = 0; i < alignedTimeSeriesMetadata.getValueTimeseriesMetadataList().size(); i++) { + TimeseriesMetadata valueTimeseriesMetadata = + alignedTimeSeriesMetadata.getValueTimeseriesMetadataList().get(i); + if (valueTimeseriesMetadata != null + && !SchemaUtils.canUseStatisticsAfterAlter( + valueTimeseriesMetadata.getTsDataType(), targetDataTypeList.get(i))) { + alignedTimeSeriesMetadata.setDataTypeModifiedAndCannotUseStatistics(true); + return; } - i++; } } - public static void changeAlignedMetadataModified( - TimeseriesMetadata timeseriesMetadata, TSDataType targetDataType) { - if (timeseriesMetadata == null) { - return; - } - - if (!SchemaUtils.isUsingSameStatistics(timeseriesMetadata.getTsDataType(), targetDataType) - && !SchemaUtils.canUseStatisticsAfterAlter(targetDataType)) { - timeseriesMetadata.setModified(true); - List chunkMetadataList = timeseriesMetadata.getChunkMetadataList(); - if (chunkMetadataList != null) { - for (IChunkMetadata chunkMetadata : chunkMetadataList) { - if (chunkMetadata != null) { - chunkMetadata.setModified(true); - } - } - } + public static boolean canUseStatisticsAfterAlter( + TSDataType originalDataType, TSDataType targetDataType) { + if (isUsingSameStatistics(originalDataType, targetDataType)) { + return true; } + return canUseStatisticsAfterAlter(targetDataType); } - public static void changeMetadataModified( - IChunkMetadata chunkMetadata, TSDataType sourceDataType, TSDataType targetDataType) { - if (chunkMetadata == null) { - return; + private static boolean isUsingSameStatistics(TSDataType originalDataType, TSDataType dataType) { + if (originalDataType == dataType) { + return true; } - if (!SchemaUtils.isUsingSameStatistics(sourceDataType, targetDataType) - && !SchemaUtils.canUseStatisticsAfterAlter(targetDataType)) { - chunkMetadata.setModified(true); + if (!dataTypeColumnStatisticsClassMap.containsKey(originalDataType) + || !dataTypeColumnStatisticsClassMap.containsKey(dataType)) { + return false; } + return Objects.equals( + dataTypeColumnStatisticsClassMap.get(originalDataType), + dataTypeColumnStatisticsClassMap.get(dataType)); } - public static void changeAlignedMetadataModified( - AbstractAlignedChunkMetadata chunkMetadata, - TSDataType sourceDataType, - List targetDataTypeList) { - if (chunkMetadata == null) { - return; - } - int i = 0; - for (IChunkMetadata iChunkMetadata : chunkMetadata.getValueChunkMetadataList()) { - if ((iChunkMetadata != null) - && !SchemaUtils.isUsingSameStatistics( - iChunkMetadata.getDataType(), targetDataTypeList.get(i)) - && !SchemaUtils.canUseStatisticsAfterAlter(targetDataTypeList.get(i))) { - iChunkMetadata.setModified(true); - chunkMetadata.setModified(true); - } - i++; - } + private static boolean canUseStatisticsAfterAlter(TSDataType dataType) { + return !canNotUseStatisticAfterAlterClassSet.contains(dataType); } public static void rewriteAlignedChunkMetadataStatistics( diff --git a/pom.xml b/pom.xml index 9be2fa2359ab4..99ba9725ca636 100644 --- a/pom.xml +++ b/pom.xml @@ -173,7 +173,7 @@ 0.14.1 1.9 1.5.6-3 - 2.2.1-260203-SNAPSHOT + 2.2.1-260206-SNAPSHOT