[Fix](stats) Stats persistence failed when a column is all null values (#19412)

This commit is contained in:
AKIRA
2023-05-11 18:44:44 +09:00
committed by GitHub
parent e8f1ce4eaa
commit 45c89c1d3c
3 changed files with 10 additions and 2 deletions

View File

@ -126,6 +126,10 @@ public class ColumnDef {
this(name, typeDef, false, null, false, DefaultValue.NOT_SET, "");
}
public ColumnDef(String name, TypeDef typeDef, boolean isAllowNull) {
this(name, typeDef, false, null, isAllowNull, DefaultValue.NOT_SET, "");
}
public ColumnDef(String name, TypeDef typeDef, boolean isKey, AggregateType aggregateType,
boolean isAllowNull, DefaultValue defaultValue, String comment) {
this(name, typeDef, isKey, aggregateType, isAllowNull, defaultValue, comment, true);

View File

@ -159,8 +159,8 @@ public class InternalSchemaInitializer extends Thread {
columnDefs.add(new ColumnDef("count", TypeDef.create(PrimitiveType.BIGINT)));
columnDefs.add(new ColumnDef("ndv", TypeDef.create(PrimitiveType.BIGINT)));
columnDefs.add(new ColumnDef("null_count", TypeDef.create(PrimitiveType.BIGINT)));
columnDefs.add(new ColumnDef("min", TypeDef.createVarchar(ScalarType.MAX_VARCHAR_LENGTH)));
columnDefs.add(new ColumnDef("max", TypeDef.createVarchar(ScalarType.MAX_VARCHAR_LENGTH)));
columnDefs.add(new ColumnDef("min", TypeDef.createVarchar(ScalarType.MAX_VARCHAR_LENGTH), true));
columnDefs.add(new ColumnDef("max", TypeDef.createVarchar(ScalarType.MAX_VARCHAR_LENGTH), true));
columnDefs.add(new ColumnDef("data_size_in_bytes", TypeDef.create(PrimitiveType.BIGINT)));
columnDefs.add(new ColumnDef("update_time", TypeDef.create(PrimitiveType.DATETIME)));
String engineName = "olap";

View File

@ -147,10 +147,14 @@ public class ColumnStatistic {
if (!StatisticsUtil.isNullOrEmpty(min)) {
columnStatisticBuilder.setMinValue(StatisticsUtil.convertToDouble(col.getType(), min));
columnStatisticBuilder.setMinExpr(StatisticsUtil.readableValue(col.getType(), min));
} else {
columnStatisticBuilder.setMinValue(Double.NaN);
}
if (!StatisticsUtil.isNullOrEmpty(max)) {
columnStatisticBuilder.setMaxValue(StatisticsUtil.convertToDouble(col.getType(), max));
columnStatisticBuilder.setMaxExpr(StatisticsUtil.readableValue(col.getType(), max));
} else {
columnStatisticBuilder.setMinValue(Double.NaN);
}
columnStatisticBuilder.setSelectivity(1.0);
columnStatisticBuilder.setOriginalNdv(ndv);