This is an automated email from the ASF dual-hosted git repository.
panxiaolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 841f2485d1a [Bug](query) fix meet invalid column when direct scan on
mow mv (#36483)
841f2485d1a is described below
commit 841f2485d1affd55e2ebba58f9ff1485df9edf91
Author: Pxl <[email protected]>
AuthorDate: Wed Jun 19 12:39:53 2024 +0800
[Bug](query) fix meet invalid column when direct scan on mow mv (#36483)
## Proposed changes
fix meet invalid column when direct scan on mow mv
```
2024-06-11 18:01:14,079 [query]
|Client=|User=root|Ctl=internal|Db=__internal_schema|State=OK|ErrorCode=0|ErrorMessage=|Time(ms)=3601|ScanBytes=57344|ScanRows=1|ReturnRows=0|StmtId=0|QueryId=67799c8ba77d4ffb-8a80c73b94bb784c|IsQuery=true|isNereids=true|feIp=10.16.10.8|Stmt=SELECT
SUBSTRING(CAST(MIN(`mv_(k2 + k3)`) AS STRING), 1, 1024) as min,
SUBSTRING(CAST(MAX(`mv_(k2 + k3)`) AS STRING), 1, 1024) as max FROM
`regression_test_mv_p0_test_mv_mow`.`u_table` index `k123p`|CpuTimeMS=3544|S
[...]
2024-06-11 18:01:08,291 WARN (Analysis Job Executor-0|521)
[Coordinator.getNext():1109] Query 67799c8ba77d4ffb-8a80c73b94bb784c
coordinator get next fail,
(hk2.dev.selectdb-in.cc)[INTERNAL_ERROR]SegmentIterator meet invalid column,
id=1, name=mv_(k2 + k3), need cancel
```
---
.../apache/doris/nereids/rules/analysis/BindRelation.java | 10 +++-------
.../test_mv_mow.out => test_mv_mor/test_mv_mor.out} | 12 ++++++++++++
regression-test/data/mv_p0/test_mv_mow/test_mv_mow.out | 12 ++++++++++++
.../test_mv_mow.groovy => test_mv_mor/test_mv_mor.groovy} | 15 ++++++++++-----
.../suites/mv_p0/test_mv_mow/test_mv_mow.groovy | 8 ++++++--
5 files changed, 43 insertions(+), 14 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindRelation.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindRelation.java
index d66b20e36a8..47201680fea 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindRelation.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindRelation.java
@@ -18,7 +18,6 @@
package org.apache.doris.nereids.rules.analysis;
import org.apache.doris.catalog.Column;
-import org.apache.doris.catalog.KeysType;
import org.apache.doris.catalog.OlapTable;
import org.apache.doris.catalog.Partition;
import org.apache.doris.catalog.TableIf;
@@ -201,10 +200,8 @@ public class BindRelation extends OneAnalysisRuleFactory {
throw new AnalysisException("Table " + olapTable.getName()
+ " doesn't have materialized view " +
indexName.get());
}
- PreAggStatus preAggStatus
- =
olapTable.getIndexMetaByIndexId(indexId).getKeysType().equals(KeysType.DUP_KEYS)
- ? PreAggStatus.unset()
- : PreAggStatus.off("For direct index scan.");
+ PreAggStatus preAggStatus =
olapTable.isDupKeysOrMergeOnWrite() ? PreAggStatus.unset()
+ : PreAggStatus.off("For direct index scan on
mor/agg.");
scan = new LogicalOlapScan(unboundRelation.getRelationId(),
(OlapTable) table, tableQualifier, tabletIds, indexId,
@@ -216,8 +213,7 @@ public class BindRelation extends OneAnalysisRuleFactory {
}
}
if (!Util.showHiddenColumns() && scan.getTable().hasDeleteSign()
- && !ConnectContext.get().getSessionVariable().skipDeleteSign()
- && !scan.isDirectMvScan()) {
+ &&
!ConnectContext.get().getSessionVariable().skipDeleteSign()) {
// table qualifier is catalog.db.table, we make db.table.column
Slot deleteSlot = null;
for (Slot slot : scan.getOutput()) {
diff --git a/regression-test/data/mv_p0/test_mv_mow/test_mv_mow.out
b/regression-test/data/mv_p0/test_mv_mor/test_mv_mor.out
similarity index 63%
copy from regression-test/data/mv_p0/test_mv_mow/test_mv_mow.out
copy to regression-test/data/mv_p0/test_mv_mor/test_mv_mor.out
index 8f75424779a..fbf59000daf 100644
--- a/regression-test/data/mv_p0/test_mv_mow/test_mv_mow.out
+++ b/regression-test/data/mv_p0/test_mv_mor/test_mv_mor.out
@@ -3,3 +3,15 @@
1 2
1 3
+-- !select_mv --
+1 2
+1 3
+
+-- !select_mv --
+1
+1
+
+-- !select_mv --
+2
+3
+
diff --git a/regression-test/data/mv_p0/test_mv_mow/test_mv_mow.out
b/regression-test/data/mv_p0/test_mv_mow/test_mv_mow.out
index 8f75424779a..fbf59000daf 100644
--- a/regression-test/data/mv_p0/test_mv_mow/test_mv_mow.out
+++ b/regression-test/data/mv_p0/test_mv_mow/test_mv_mow.out
@@ -3,3 +3,15 @@
1 2
1 3
+-- !select_mv --
+1 2
+1 3
+
+-- !select_mv --
+1
+1
+
+-- !select_mv --
+2
+3
+
diff --git a/regression-test/suites/mv_p0/test_mv_mow/test_mv_mow.groovy
b/regression-test/suites/mv_p0/test_mv_mor/test_mv_mor.groovy
similarity index 74%
copy from regression-test/suites/mv_p0/test_mv_mow/test_mv_mow.groovy
copy to regression-test/suites/mv_p0/test_mv_mor/test_mv_mor.groovy
index dfe08f4dcd0..1ca52c75e86 100644
--- a/regression-test/suites/mv_p0/test_mv_mow/test_mv_mow.groovy
+++ b/regression-test/suites/mv_p0/test_mv_mor/test_mv_mor.groovy
@@ -15,7 +15,7 @@
// specific language governing permissions and limitations
// under the License.
-suite ("test_mv_mow") {
+suite ("test_mv_mor") {
sql """ drop table if exists u_table; """
sql """
@@ -29,19 +29,24 @@ suite ("test_mv_mow") {
distributed BY hash(k1) buckets 3
properties(
"replication_num" = "1",
- "enable_unique_key_merge_on_write" = "true"
+ "enable_unique_key_merge_on_write" = "false"
);
"""
sql "insert into u_table select 1,1,1,1;"
sql "insert into u_table select 1,2,1,1;"
createMV("create materialized view k123p as select k1,k2+k3 from u_table;")
- sql "insert into u_table select 1,1,1,1;"
- sql "insert into u_table select 1,2,1,1;"
+ sql "insert into u_table select 1,1,1,2;"
+ sql "insert into u_table select 1,2,1,2;"
+ // do not match mv coz preagg is off, mv need contains all key column to
make row count correct
explain {
sql("select k1,k2+k3 from u_table order by k1;")
- contains "(k123p)"
+ contains "(u_table)"
}
qt_select_mv "select k1,k2+k3 from u_table order by k1;"
+
+ qt_select_mv "select * from `u_table` index `k123p` order by 1,2;"
+ qt_select_mv "select mv_k1 from `u_table` index `k123p` order by 1;"
+ qt_select_mv "select `mv_(k2 + k3)` from `u_table` index `k123p` order by
1;"
}
diff --git a/regression-test/suites/mv_p0/test_mv_mow/test_mv_mow.groovy
b/regression-test/suites/mv_p0/test_mv_mow/test_mv_mow.groovy
index dfe08f4dcd0..4187ed94431 100644
--- a/regression-test/suites/mv_p0/test_mv_mow/test_mv_mow.groovy
+++ b/regression-test/suites/mv_p0/test_mv_mow/test_mv_mow.groovy
@@ -36,12 +36,16 @@ suite ("test_mv_mow") {
sql "insert into u_table select 1,2,1,1;"
createMV("create materialized view k123p as select k1,k2+k3 from u_table;")
- sql "insert into u_table select 1,1,1,1;"
- sql "insert into u_table select 1,2,1,1;"
+ sql "insert into u_table select 1,1,1,2;"
+ sql "insert into u_table select 1,2,1,2;"
explain {
sql("select k1,k2+k3 from u_table order by k1;")
contains "(k123p)"
}
qt_select_mv "select k1,k2+k3 from u_table order by k1;"
+
+ qt_select_mv "select * from `u_table` index `k123p` order by 1,2;"
+ qt_select_mv "select mv_k1 from `u_table` index `k123p` order by 1;"
+ qt_select_mv "select `mv_(k2 + k3)` from `u_table` index `k123p` order by
1;"
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]