shuwenwei commented on code in PR #17172:
URL: https://github.com/apache/iotdb/pull/17172#discussion_r2769564200
##########
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/SchemaUtils.java:
##########
@@ -314,120 +317,67 @@ 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<IChunkMetadata> chunkMetadataList =
timeseriesMetadata.getChunkMetadataList();
- if (chunkMetadataList != null) {
- for (IChunkMetadata chunkMetadata : chunkMetadataList) {
- if (chunkMetadata != null) {
- chunkMetadata.setModified(true);
- }
- }
- }
+ if (!SchemaUtils.canUseStatisticsAfterAlter(
+ timeseriesMetadata.getTsDataType(), targetDataType)) {
+ markAllChunkMetadataModified(timeseriesMetadata);
}
}
- public static void changeAlignedMetadataModified(
- AbstractAlignedTimeSeriesMetadata alignedTimeSeriesMetadata,
+ public static void changeAlignedTimeseriesMetadataModified(
+ @Nullable AbstractAlignedTimeSeriesMetadata alignedTimeSeriesMetadata,
List<TSDataType> 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<IChunkMetadata> 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))) {
+
markAllChunkMetadataModified(alignedTimeSeriesMetadata.getTimeseriesMetadata());
+ 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<IChunkMetadata> chunkMetadataList =
timeseriesMetadata.getChunkMetadataList();
- if (chunkMetadataList != null) {
- for (IChunkMetadata chunkMetadata : chunkMetadataList) {
- if (chunkMetadata != null) {
- chunkMetadata.setModified(true);
- }
- }
+ private static void markAllChunkMetadataModified(@NotNull TimeseriesMetadata
timeseriesMetadata) {
+ timeseriesMetadata.setModified(true);
+ for (IChunkMetadata iChunkMetadata :
timeseriesMetadata.getChunkMetadataList()) {
+ if (iChunkMetadata != null) {
+ iChunkMetadata.setModified(true);
Review Comment:
<img width="1015" height="474" alt="Image"
src="https://github.com/user-attachments/assets/db0866de-af90-4b66-adaf-c31f0161d8bd"
/>
<img width="661" height="387" alt="Image"
src="https://github.com/user-attachments/assets/06613540-72d2-42bc-ba25-89bea7940b2e"
/>
This won't work
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]