Skip to content

Commit aaff74e

Browse files
authored
Merge branch 'master' into fix-bvar-leak-when-alter-table-failed
2 parents ca05909 + 643caa7 commit aaff74e

File tree

18 files changed

+125
-96
lines changed

18 files changed

+125
-96
lines changed

be/src/vec/exec/scan/file_scanner.cpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1154,7 +1154,17 @@ Status FileScanner::_get_next_reader() {
11541154
}
11551155

11561156
_cur_reader->set_push_down_agg_type(_get_push_down_agg_type());
1157-
RETURN_IF_ERROR(_set_fill_or_truncate_columns(need_to_get_parsed_schema));
1157+
if (_get_push_down_agg_type() == TPushAggOp::type::COUNT &&
1158+
range.__isset.table_format_params &&
1159+
range.table_format_params.table_level_row_count >= 0) {
1160+
// This is a table level count push down operation, no need to call
1161+
// _set_fill_or_truncate_columns.
1162+
// in _set_fill_or_truncate_columns, we will use [range.start_offset, end offset]
1163+
// to filter the row group. But if this is count push down, the offset is undefined,
1164+
// causing incorrect row group filter and may return empty result.
1165+
} else {
1166+
RETURN_IF_ERROR(_set_fill_or_truncate_columns(need_to_get_parsed_schema));
1167+
}
11581168
_cur_reader_eof = false;
11591169
break;
11601170
}

cloud/script/start.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,8 @@ if [[ ${enable_hdfs} -eq 1 ]]; then
129129
done
130130
fi
131131

132-
export CLASSPATH="${DORIS_CLASSPATH}"
132+
# and conf/ dir so that hadoop libhdfs can read .xml config file in conf/
133+
export CLASSPATH="${DORIS_HOME}/conf/:${DORIS_CLASSPATH}:${CLASSPATH}"
133134

134135
export LD_LIBRARY_PATH="${JAVA_HOME}/lib/server:${LD_LIBRARY_PATH}"
135136

fe/fe-core/src/main/java/org/apache/doris/datasource/hive/source/HiveScanNode.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -467,10 +467,12 @@ protected void setScanParams(TFileRangeDesc rangeDesc, Split split) {
467467
}
468468
transactionalHiveDesc.setDeleteDeltas(deleteDeltaDescs);
469469
tableFormatFileDesc.setTransactionalHiveParams(transactionalHiveDesc);
470+
tableFormatFileDesc.setTableLevelRowCount(-1);
470471
rangeDesc.setTableFormatParams(tableFormatFileDesc);
471472
} else {
472473
TTableFormatFileDesc tableFormatFileDesc = new TTableFormatFileDesc();
473474
tableFormatFileDesc.setTableFormatType(TableFormatType.HIVE.value());
475+
tableFormatFileDesc.setTableLevelRowCount(-1);
474476
rangeDesc.setTableFormatParams(tableFormatFileDesc);
475477
}
476478
}
@@ -593,3 +595,4 @@ protected TFileCompressType getFileCompressType(FileSplit fileSplit) throws User
593595
}
594596
}
595597

598+

fe/fe-core/src/main/java/org/apache/doris/datasource/iceberg/source/IcebergScanNode.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,9 @@ private void setIcebergParams(TFileRangeDesc rangeDesc, IcebergSplit icebergSpli
181181
tableFormatFileDesc.setTableFormatType(icebergSplit.getTableFormatType().value());
182182
if (tableLevelPushDownCount) {
183183
tableFormatFileDesc.setTableLevelRowCount(icebergSplit.getTableLevelRowCount());
184+
} else {
185+
// MUST explicitly set to -1, to be distinct from valid row count >= 0
186+
tableFormatFileDesc.setTableLevelRowCount(-1);
184187
}
185188
TIcebergFileDesc fileDesc = new TIcebergFileDesc();
186189
fileDesc.setFormatVersion(formatVersion);
@@ -621,3 +624,4 @@ private Optional<NotSupportedException> checkNotSupportedException(Exception e)
621624
return Optional.empty();
622625
}
623626
}
627+

fe/fe-core/src/main/java/org/apache/doris/datasource/paimon/source/PaimonScanNode.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,9 @@ private void setPaimonParams(TFileRangeDesc rangeDesc, PaimonSplit paimonSplit)
243243
}
244244
if (paimonSplit.getRowCount().isPresent()) {
245245
tableFormatFileDesc.setTableLevelRowCount(paimonSplit.getRowCount().get());
246+
} else {
247+
// MUST explicitly set to -1, to be distinct from valid row count >= 0
248+
tableFormatFileDesc.setTableLevelRowCount(-1);
246249
}
247250
tableFormatFileDesc.setPaimonParams(fileDesc);
248251
Map<String, String> partitionValues = paimonSplit.getPaimonPartitionValues();
@@ -714,3 +717,4 @@ private Table getProcessedTable() throws UserException {
714717
return baseTable;
715718
}
716719
}
720+

fe/fe-core/src/main/java/org/apache/doris/nereids/NereidsPlanner.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -983,7 +983,7 @@ public static PhysicalProperties buildInitRequireProperties() {
983983
return PhysicalProperties.GATHER;
984984
}
985985

986-
private ExplainLevel getExplainLevel(ExplainOptions explainOptions) {
986+
protected ExplainLevel getExplainLevel(ExplainOptions explainOptions) {
987987
if (explainOptions == null) {
988988
return ExplainLevel.NONE;
989989
}

fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/ExpressionAnalyzer.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,11 @@
7474
import org.apache.doris.nereids.trees.expressions.functions.agg.NullableAggregateFunction;
7575
import org.apache.doris.nereids.trees.expressions.functions.agg.SupportMultiDistinct;
7676
import org.apache.doris.nereids.trees.expressions.functions.scalar.Lambda;
77-
import org.apache.doris.nereids.trees.expressions.functions.scalar.PreparePlaceholder;
7877
import org.apache.doris.nereids.trees.expressions.functions.udf.AliasUdfBuilder;
7978
import org.apache.doris.nereids.trees.expressions.functions.udf.JavaUdaf;
8079
import org.apache.doris.nereids.trees.expressions.functions.udf.JavaUdf;
8180
import org.apache.doris.nereids.trees.expressions.functions.udf.UdfBuilder;
8281
import org.apache.doris.nereids.trees.expressions.literal.IntegerLikeLiteral;
83-
import org.apache.doris.nereids.trees.expressions.literal.IntegerLiteral;
8482
import org.apache.doris.nereids.trees.expressions.literal.Literal;
8583
import org.apache.doris.nereids.trees.expressions.literal.NullLiteral;
8684
import org.apache.doris.nereids.trees.expressions.literal.StringLiteral;
@@ -652,7 +650,7 @@ public Expression visitPlaceholder(Placeholder placeholder, ExpressionRewriteCon
652650
// In prepare stage, the realExpr has not been set, set it to StringLiteral so that we can plan the statement
653651
// and get the output slots in prepare stage, which is required by Mysql api definition.
654652
if (realExpr == null && context.cascadesContext.getStatementContext().isPrepareStage()) {
655-
realExpr = new PreparePlaceholder(new IntegerLiteral(1));
653+
realExpr = new StringLiteral(String.valueOf(placeholder.getPlaceholderId().asInt()));
656654
}
657655
return visit(realExpr, context);
658656
}

fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/LogicalResultSinkToShortCircuitPointQuery.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import org.apache.doris.nereids.trees.expressions.EqualTo;
2727
import org.apache.doris.nereids.trees.expressions.Expression;
2828
import org.apache.doris.nereids.trees.expressions.SlotReference;
29-
import org.apache.doris.nereids.trees.expressions.functions.scalar.PreparePlaceholder;
3029
import org.apache.doris.nereids.trees.plans.Plan;
3130
import org.apache.doris.nereids.trees.plans.logical.LogicalFilter;
3231
import org.apache.doris.nereids.trees.plans.logical.LogicalOlapScan;
@@ -58,8 +57,7 @@ private boolean filterMatchShortCircuitCondition(LogicalFilter<LogicalOlapScan>
5857
&& (removeCast(expression.child(0)).isKeyColumnFromTable()
5958
|| (expression.child(0) instanceof SlotReference
6059
&& ((SlotReference) expression.child(0)).getName().equals(Column.DELETE_SIGN)))
61-
&& (expression.child(1).isLiteral()
62-
|| removeCast(expression.child(1)) instanceof PreparePlaceholder));
60+
&& expression.child(1).isLiteral());
6361
}
6462

6563
private boolean scanMatchShortCircuitCondition(LogicalOlapScan olapScan) {

fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Placeholder.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
2525
import org.apache.doris.nereids.trees.plans.PlaceholderId;
2626
import org.apache.doris.nereids.types.DataType;
27-
import org.apache.doris.nereids.types.NullType;
27+
import org.apache.doris.nereids.types.StringType;
2828

2929
import java.util.Optional;
3030

@@ -78,7 +78,7 @@ public int fastChildrenHashCode() {
7878

7979
@Override
8080
public DataType getDataType() throws UnboundException {
81-
return NullType.INSTANCE;
81+
return StringType.INSTANCE;
8282
}
8383

8484
public Placeholder withNewMysqlColType(int mysqlTypeCode) {

fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/PreparePlaceholder.java

Lines changed: 0 additions & 73 deletions
This file was deleted.

0 commit comments

Comments
 (0)