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 <pxl...@qq.com> 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: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org