Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 1d8f6d7

Browse filesBrowse files
authored
[feat](nereids)set runtime filter wait time according to table row count and table type (#42640)
## Proposed changes adjust compute rf wait time according to max table row count, if wait time is not default value - olap: -- row < 1G: 1 sec -- 1G <= row < 10G: 5 sec -- 10G < row: 20 sec - external: -- row < 1G: 5 sec -- 1G <= row < 10G: 10 sec -- 10G < row: 50 sec Issue Number: close #xxx <!--Describe your changes.-->
1 parent cd514b6 commit 1d8f6d7
Copy full SHA for 1d8f6d7

18 files changed

+87
-92
lines changed

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

Copy file name to clipboardExpand all lines: fe/fe-core/src/main/java/org/apache/doris/nereids/NereidsPlanner.java
+44Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@
5959
import org.apache.doris.nereids.trees.plans.distribute.DistributePlanner;
6060
import org.apache.doris.nereids.trees.plans.distribute.DistributedPlan;
6161
import org.apache.doris.nereids.trees.plans.distribute.FragmentIdMapping;
62+
import org.apache.doris.nereids.trees.plans.logical.LogicalCatalogRelation;
63+
import org.apache.doris.nereids.trees.plans.logical.LogicalOlapScan;
6264
import org.apache.doris.nereids.trees.plans.logical.LogicalPlan;
6365
import org.apache.doris.nereids.trees.plans.logical.LogicalSqlCache;
6466
import org.apache.doris.nereids.trees.plans.physical.PhysicalPlan;
@@ -73,6 +75,7 @@
7375
import org.apache.doris.qe.ConnectContext;
7476
import org.apache.doris.qe.ResultSet;
7577
import org.apache.doris.qe.SessionVariable;
78+
import org.apache.doris.qe.VariableMgr;
7679
import org.apache.doris.thrift.TQueryCacheParam;
7780

7881
import com.google.common.annotations.VisibleForTesting;
@@ -279,6 +282,8 @@ protected Plan planWithoutLock(
279282
disableJoinReorderReason.ifPresent(statementContext::setDisableJoinReorderReason);
280283
}
281284

285+
setRuntimeFilterWaitTimeByTableRowCountAndType();
286+
282287
optimize();
283288
if (statementContext.getConnectContext().getExecutor() != null) {
284289
statementContext.getConnectContext().getExecutor().getSummaryProfile().setNereidsOptimizeTime();
@@ -315,6 +320,45 @@ protected LogicalPlan preprocess(LogicalPlan logicalPlan) {
315320
return new PlanPreprocessors(statementContext).process(logicalPlan);
316321
}
317322

323+
/**
324+
* compute rf wait time according to max table row count, if wait time is not default value
325+
* olap:
326+
* row < 1G: 1 sec
327+
* 1G <= row < 10G: 5 sec
328+
* 10G < row: 20 sec
329+
* external:
330+
* row < 1G: 5 sec
331+
* 1G <= row < 10G: 10 sec
332+
* 10G < row: 50 sec
333+
*/
334+
private void setRuntimeFilterWaitTimeByTableRowCountAndType() {
335+
if (ConnectContext.get() != null && ConnectContext.get().getSessionVariable().getRuntimeFilterWaitTimeMs()
336+
!= VariableMgr.getDefaultSessionVariable().getRuntimeFilterWaitTimeMs()) {
337+
List<LogicalCatalogRelation> scans = cascadesContext.getRewritePlan()
338+
.collectToList(LogicalCatalogRelation.class::isInstance);
339+
double maxRow = StatsCalculator.getMaxTableRowCount(scans, cascadesContext);
340+
boolean hasExternalTable = scans.stream().anyMatch(scan -> !(scan instanceof LogicalOlapScan));
341+
SessionVariable sessionVariable = ConnectContext.get().getSessionVariable();
342+
if (hasExternalTable) {
343+
if (maxRow < 1_000_000_000L) {
344+
sessionVariable.setVarOnce(SessionVariable.RUNTIME_FILTER_WAIT_TIME_MS, "5000");
345+
} else if (maxRow < 10_000_000_000L) {
346+
sessionVariable.setVarOnce(SessionVariable.RUNTIME_FILTER_WAIT_TIME_MS, "20000");
347+
} else {
348+
sessionVariable.setVarOnce(SessionVariable.RUNTIME_FILTER_WAIT_TIME_MS, "50000");
349+
}
350+
} else {
351+
if (maxRow < 1_000_000_000L) {
352+
sessionVariable.setVarOnce(SessionVariable.RUNTIME_FILTER_WAIT_TIME_MS, "1000");
353+
} else if (maxRow < 10_000_000_000L) {
354+
sessionVariable.setVarOnce(SessionVariable.RUNTIME_FILTER_WAIT_TIME_MS, "5000");
355+
} else {
356+
sessionVariable.setVarOnce(SessionVariable.RUNTIME_FILTER_WAIT_TIME_MS, "20000");
357+
}
358+
}
359+
}
360+
}
361+
318362
private void initCascadesContext(LogicalPlan plan, PhysicalProperties requireProperties) {
319363
cascadesContext = CascadesContext.initContext(statementContext, plan, requireProperties);
320364
if (statementContext.getConnectContext().getTables() != null) {

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

Copy file name to clipboardExpand all lines: fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/EliminateLogicalSelectHint.java
+4-6Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
package org.apache.doris.nereids.rules.analysis;
1919

20-
import org.apache.doris.common.DdlException;
2120
import org.apache.doris.nereids.CascadesContext;
2221
import org.apache.doris.nereids.StatementContext;
2322
import org.apache.doris.nereids.hint.Hint;
@@ -36,6 +35,7 @@
3635
import org.apache.doris.nereids.trees.plans.Plan;
3736
import org.apache.doris.nereids.trees.plans.logical.LogicalSelectHint;
3837
import org.apache.doris.qe.ConnectContext;
38+
import org.apache.doris.qe.SessionVariable;
3939

4040
import org.slf4j.Logger;
4141
import org.slf4j.LoggerFactory;
@@ -55,11 +55,9 @@ public Rule build() {
5555
if (hintName.equalsIgnoreCase("SET_VAR")) {
5656
((SelectHintSetVar) hint).setVarOnceInSql(ctx.statementContext);
5757
} else if (hintName.equalsIgnoreCase("ORDERED")) {
58-
try {
59-
ctx.cascadesContext.getConnectContext().getSessionVariable()
60-
.disableNereidsJoinReorderOnce();
61-
} catch (DdlException e) {
62-
throw new RuntimeException(e);
58+
if (!ctx.cascadesContext.getConnectContext().getSessionVariable()
59+
.setVarOnce(SessionVariable.DISABLE_JOIN_REORDER, "true")) {
60+
throw new RuntimeException("set DISABLE_JOIN_REORDER=true once failed");
6361
}
6462
OrderedHint ordered = new OrderedHint("Ordered");
6563
ordered.setStatus(Hint.HintStatus.SUCCESS);

‎fe/fe-core/src/main/java/org/apache/doris/nereids/stats/StatsCalculator.java

Copy file name to clipboardExpand all lines: fe/fe-core/src/main/java/org/apache/doris/nereids/stats/StatsCalculator.java
+23-1Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@
7272
import org.apache.doris.nereids.trees.plans.logical.LogicalCTEAnchor;
7373
import org.apache.doris.nereids.trees.plans.logical.LogicalCTEConsumer;
7474
import org.apache.doris.nereids.trees.plans.logical.LogicalCTEProducer;
75+
import org.apache.doris.nereids.trees.plans.logical.LogicalCatalogRelation;
7576
import org.apache.doris.nereids.trees.plans.logical.LogicalDeferMaterializeOlapScan;
7677
import org.apache.doris.nereids.trees.plans.logical.LogicalDeferMaterializeTopN;
7778
import org.apache.doris.nereids.trees.plans.logical.LogicalEmptyRelation;
@@ -137,6 +138,7 @@
137138
import org.apache.doris.nereids.types.DataType;
138139
import org.apache.doris.nereids.util.PlanUtils;
139140
import org.apache.doris.qe.ConnectContext;
141+
import org.apache.doris.qe.SessionVariable;
140142
import org.apache.doris.statistics.AnalysisManager;
141143
import org.apache.doris.statistics.ColumnStatistic;
142144
import org.apache.doris.statistics.ColumnStatisticBuilder;
@@ -220,6 +222,25 @@ public Map<String, ColumnStatistic> getTotalColumnStatisticMap() {
220222
return totalColumnStatisticMap;
221223
}
222224

225+
/**
226+
*
227+
* get the max row count of tables used in a query
228+
*/
229+
public static double getMaxTableRowCount(List<LogicalCatalogRelation> scans, CascadesContext context) {
230+
StatsCalculator calculator = new StatsCalculator(context);
231+
double max = -1;
232+
for (LogicalCatalogRelation scan : scans) {
233+
double row;
234+
if (scan instanceof LogicalOlapScan) {
235+
row = calculator.getOlapTableRowCount((LogicalOlapScan) scan);
236+
} else {
237+
row = scan.getTable().getRowCount();
238+
}
239+
max = Math.max(row, max);
240+
}
241+
return max;
242+
}
243+
223244
/**
224245
* disable join reorder if
225246
* 1. any table rowCount is not available, or
@@ -246,7 +267,8 @@ public static Optional<String> disableJoinReorderIfStatsInvalid(List<CatalogRela
246267
Optional<String> reason = calculator.checkNdvValidation((OlapScan) scan, rowCount);
247268
if (reason.isPresent()) {
248269
try {
249-
ConnectContext.get().getSessionVariable().disableNereidsJoinReorderOnce();
270+
ConnectContext.get().getSessionVariable()
271+
.setVarOnce(SessionVariable.DISABLE_JOIN_REORDER, "true");
250272
LOG.info("disable join reorder since col stats invalid: "
251273
+ reason.get());
252274
} catch (Exception e) {

‎fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreateTableCommand.java

Copy file name to clipboardExpand all lines: fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreateTableCommand.java
+2-1Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
import org.apache.doris.nereids.util.TypeCoercionUtils;
5555
import org.apache.doris.qe.ConnectContext;
5656
import org.apache.doris.qe.QueryState.MysqlStateType;
57+
import org.apache.doris.qe.SessionVariable;
5758
import org.apache.doris.qe.StmtExecutor;
5859

5960
import com.google.common.collect.ImmutableList;
@@ -98,7 +99,7 @@ public void run(ConnectContext ctx, StmtExecutor executor) throws Exception {
9899
List<String> ctasCols = createTableInfo.getCtasColumns();
99100
NereidsPlanner planner = new NereidsPlanner(ctx.getStatementContext());
100101
// must disable constant folding by be, because be constant folding may return wrong type
101-
ctx.getSessionVariable().disableConstantFoldingByBEOnce();
102+
ctx.getSessionVariable().setVarOnce(SessionVariable.ENABLE_FOLD_CONSTANT_BY_BE, "false");
102103
Plan plan = planner.planWithLock(new UnboundResultSink<>(query), PhysicalProperties.ANY, ExplainLevel.NONE);
103104
if (ctasCols == null) {
104105
// we should analyze the plan firstly to get the columns' name.

‎fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateMTMVInfo.java

Copy file name to clipboardExpand all lines: fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateMTMVInfo.java
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ public void analyzeQuery(ConnectContext ctx, Map<String, String> mvProperties) t
253253
// this is for expression column name infer when not use alias
254254
LogicalSink<Plan> logicalSink = new UnboundResultSink<>(logicalQuery);
255255
// must disable constant folding by be, because be constant folding may return wrong type
256-
ctx.getSessionVariable().disableConstantFoldingByBEOnce();
256+
ctx.getSessionVariable().setVarOnce(SessionVariable.ENABLE_FOLD_CONSTANT_BY_BE, "false");
257257
Plan plan = planner.planWithLock(logicalSink, PhysicalProperties.ANY, ExplainLevel.ALL_PLAN);
258258
// can not contain VIEW or MTMV
259259
analyzeBaseTables(planner.getAnalyzedPlan());

‎fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java

Copy file name to clipboardExpand all lines: fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
+12-20Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4204,27 +4204,19 @@ public void setEnableStrictConsistencyDml(boolean value) {
42044204
this.enableStrictConsistencyDml = value;
42054205
}
42064206

4207-
public void disableStrictConsistencyDmlOnce() throws DdlException {
4208-
if (!enableStrictConsistencyDml) {
4209-
return;
4210-
}
4211-
setIsSingleSetVar(true);
4212-
VariableMgr.setVar(this,
4213-
new SetVar(SessionVariable.ENABLE_STRICT_CONSISTENCY_DML, new StringLiteral("false")));
4214-
}
4215-
4216-
public void disableConstantFoldingByBEOnce() throws DdlException {
4217-
if (!enableFoldConstantByBe) {
4218-
return;
4207+
/**
4208+
*
4209+
* @return true iff set success
4210+
*/
4211+
public boolean setVarOnce(String varName, String value) {
4212+
try {
4213+
setIsSingleSetVar(true);
4214+
VariableMgr.setVar(this, new SetVar(varName, new StringLiteral(value)));
4215+
return true;
4216+
} catch (DdlException e) {
4217+
LOG.warn("set onece {} = {} failed", varName, value);
4218+
return false;
42194219
}
4220-
setIsSingleSetVar(true);
4221-
VariableMgr.setVar(this,
4222-
new SetVar(SessionVariable.ENABLE_FOLD_CONSTANT_BY_BE, new StringLiteral("false")));
4223-
}
4224-
4225-
public void disableNereidsJoinReorderOnce() throws DdlException {
4226-
setIsSingleSetVar(true);
4227-
VariableMgr.setVar(this, new SetVar(SessionVariable.DISABLE_JOIN_REORDER, new StringLiteral("true")));
42284220
}
42294221

42304222
// return number of variables by given variable annotation

‎fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java

Copy file name to clipboardExpand all lines: fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3557,7 +3557,7 @@ public HttpStreamParams generateHttpStreamPlan(TUniqueId queryId) throws Excepti
35573557
try {
35583558
try {
35593559
// disable shuffle for http stream (only 1 sink)
3560-
sessionVariable.disableStrictConsistencyDmlOnce();
3560+
sessionVariable.setVarOnce(SessionVariable.ENABLE_STRICT_CONSISTENCY_DML, "false");
35613561
httpStreamParams = generateHttpStreamNereidsPlan(queryId);
35623562
} catch (NereidsException | ParseException e) {
35633563
if (context.getMinidump() != null && context.getMinidump().toString(4) != null) {

‎tools/tpcds-tools/bin/run-tpcds-queries.sh

Copy file name to clipboardExpand all lines: tools/tpcds-tools/bin/run-tpcds-queries.sh
-31Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -81,19 +81,15 @@ fi
8181
if [[ ${SCALE_FACTOR} -eq 1 ]]; then
8282
echo "Running tpcds sf 1 queries"
8383
TPCDS_QUERIES_DIR="${CURDIR}/../queries/sf1"
84-
TPCDS_OPT_CONF="${CURDIR}/../conf/opt/opt_sf1.sql"
8584
elif [[ ${SCALE_FACTOR} -eq 100 ]]; then
8685
echo "Running tpcds sf 100 queries"
8786
TPCDS_QUERIES_DIR="${CURDIR}/../queries/sf100"
88-
TPCDS_OPT_CONF="${CURDIR}/../conf/opt/opt_sf100.sql"
8987
elif [[ ${SCALE_FACTOR} -eq 1000 ]]; then
9088
echo "Running tpcds sf 1000 queries"
9189
TPCDS_QUERIES_DIR="${CURDIR}/../queries/sf1000"
92-
TPCDS_OPT_CONF="${CURDIR}/../conf/opt/opt_sf1000.sql"
9390
elif [[ ${SCALE_FACTOR} -eq 10000 ]]; then
9491
echo "Running tpcds sf 10000 queries"
9592
TPCDS_QUERIES_DIR="${CURDIR}/../queries/sf10000"
96-
TPCDS_OPT_CONF="${CURDIR}/../conf/opt/opt_sf10000.sql"
9793
else
9894
echo "${SCALE_FACTOR} scale is NOT support currently."
9995
exit 1
@@ -123,32 +119,7 @@ run_sql() {
123119
echo "$*"
124120
mysql -h"${FE_HOST}" -u"${USER}" -P"${FE_QUERY_PORT}" -D"${DB}" -e "$*"
125121
}
126-
get_session_variable() {
127-
k="$1"
128-
v=$(mysql -h"${FE_HOST}" -u"${USER}" -P"${FE_QUERY_PORT}" -D"${DB}" -e"show variables like '${k}'\G" | grep " Value: ")
129-
echo "${v/*Value: /}"
130-
}
131-
backup_session_variables_file="${CURDIR}/../conf/opt/backup_session_variables.sql"
132-
backup_session_variables() {
133-
rm -f "${backup_session_variables_file}"
134-
touch "${backup_session_variables_file}"
135-
while IFS= read -r line; do
136-
k="${line/set global /}"
137-
k="${k%=*}"
138-
v=$(get_session_variable "${k}")
139-
echo "set global ${k}='${v}';" >>"${backup_session_variables_file}"
140-
done < <(grep -v '^ *#' <"${TPCDS_OPT_CONF}")
141-
}
142-
clean_up() {
143-
echo "restore session variables:"
144-
cat "${backup_session_variables_file}"
145-
mysql -h"${FE_HOST}" -u"${USER}" -P"${FE_QUERY_PORT}" -D"${DB}" -e"source ${backup_session_variables_file};"
146-
}
147-
backup_session_variables
148122

149-
echo '============================================'
150-
echo "Optimize session variables"
151-
run_sql "source ${TPCDS_OPT_CONF};"
152123
echo '============================================'
153124
run_sql "show variables;"
154125
echo '============================================'
@@ -205,5 +176,3 @@ done
205176
echo "Total cold run time: ${cold_run_sum} ms"
206177
echo "Total hot run time: ${best_hot_run_sum} ms"
207178
echo 'Finish tpcds queries.'
208-
209-
clean_up

‎tools/tpcds-tools/conf/opt/opt_sf1.sql

Copy file name to clipboardExpand all lines: tools/tpcds-tools/conf/opt/opt_sf1.sql
Whitespace-only changes.

‎tools/tpcds-tools/conf/opt/opt_sf100.sql

Copy file name to clipboardExpand all lines: tools/tpcds-tools/conf/opt/opt_sf100.sql
Whitespace-only changes.

‎tools/tpcds-tools/conf/opt/opt_sf1000.sql

Copy file name to clipboardExpand all lines: tools/tpcds-tools/conf/opt/opt_sf1000.sql
-1Lines changed: 0 additions & 1 deletion
This file was deleted.

‎tools/tpcds-tools/conf/opt/opt_sf10000.sql

Copy file name to clipboardExpand all lines: tools/tpcds-tools/conf/opt/opt_sf10000.sql
-1Lines changed: 0 additions & 1 deletion
This file was deleted.

‎tools/tpch-tools/bin/run-tpch-queries.sh

Copy file name to clipboardExpand all lines: tools/tpch-tools/bin/run-tpch-queries.sh
-27Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -81,16 +81,12 @@ fi
8181
TPCH_QUERIES_DIR="${CURDIR}/../queries"
8282
if [[ ${SCALE_FACTOR} -eq 1 ]]; then
8383
echo "Running tpch sf 1 queries"
84-
TPCH_OPT_CONF="${CURDIR}/../conf/opt/opt_sf1.sql"
8584
elif [[ ${SCALE_FACTOR} -eq 100 ]]; then
8685
echo "Running tpch sf 100 queries"
87-
TPCH_OPT_CONF="${CURDIR}/../conf/opt/opt_sf100.sql"
8886
elif [[ ${SCALE_FACTOR} -eq 1000 ]]; then
8987
echo "Running tpch sf 1000 queries"
90-
TPCH_OPT_CONF="${CURDIR}/../conf/opt/opt_sf1000.sql"
9188
elif [[ ${SCALE_FACTOR} -eq 10000 ]]; then
9289
echo "Running tpch sf 10000 queries"
93-
TPCH_OPT_CONF="${CURDIR}/../conf/opt/opt_sf10000.sql"
9490
else
9591
echo "${SCALE_FACTOR} scale is NOT support currently."
9692
exit 1
@@ -120,26 +116,7 @@ run_sql() {
120116
echo "$*"
121117
mysql -h"${FE_HOST}" -u"${USER}" -P"${FE_QUERY_PORT}" -D"${DB}" -e "$*"
122118
}
123-
get_session_variable() {
124-
k="$1"
125-
v=$(mysql -h"${FE_HOST}" -u"${USER}" -P"${FE_QUERY_PORT}" -D"${DB}" -e"show variables like '${k}'\G" | grep " Value: ")
126-
echo "${v/*Value: /}"
127-
}
128-
backup_session_variables_file="${CURDIR}/../conf/opt/backup_session_variables.sql"
129-
backup_session_variables() {
130-
touch "${backup_session_variables_file}"
131-
while IFS= read -r line; do
132-
k="${line/set global /}"
133-
k="${k%=*}"
134-
v=$(get_session_variable "${k}")
135-
echo "set global ${k}=${v};" >>"${backup_session_variables_file}"
136-
done < <(grep -v '^ *#' <"${TPCH_OPT_CONF}")
137-
}
138-
backup_session_variables
139119

140-
echo '============================================'
141-
echo "Optimize session variables"
142-
run_sql "source ${TPCH_OPT_CONF};"
143120
echo '============================================'
144121
run_sql "show variables;"
145122
echo '============================================'
@@ -197,7 +174,3 @@ echo "Total cold run time: ${cold_run_sum} ms"
197174
# tpch 流水线依赖这个'Total hot run time'字符串
198175
echo "Total hot run time: ${best_hot_run_sum} ms"
199176
echo 'Finish tpch queries.'
200-
201-
echo "Restore session variables"
202-
run_sql "source ${backup_session_variables_file};"
203-
rm -f "${backup_session_variables_file}"

‎tools/tpch-tools/conf/opt/backup_session_variables.sql

Copy file name to clipboardExpand all lines: tools/tpch-tools/conf/opt/backup_session_variables.sql
Whitespace-only changes.

‎tools/tpch-tools/conf/opt/opt_sf1.sql

Copy file name to clipboardExpand all lines: tools/tpch-tools/conf/opt/opt_sf1.sql
Whitespace-only changes.

‎tools/tpch-tools/conf/opt/opt_sf100.sql

Copy file name to clipboardExpand all lines: tools/tpch-tools/conf/opt/opt_sf100.sql
Whitespace-only changes.

‎tools/tpch-tools/conf/opt/opt_sf1000.sql

Copy file name to clipboardExpand all lines: tools/tpch-tools/conf/opt/opt_sf1000.sql
-1Lines changed: 0 additions & 1 deletion
This file was deleted.

‎tools/tpch-tools/conf/opt/opt_sf10000.sql

Copy file name to clipboardExpand all lines: tools/tpch-tools/conf/opt/opt_sf10000.sql
-1Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.