branch-2.1: [bugfix](query) Fix for incorrect query results of variant type #51651 (#51707)

### What problem does this PR solve?

Cherry-picked from #51651

### Release note

None

### Check List (For Author)

- Test <!-- At least one of them must be included. -->
    - [ ] Regression test
    - [ ] Unit Test
    - [ ] Manual test (add detailed scripts or steps below)
    - [ ] No need to test or manual test. Explain why:
- [ ] This is a refactor/code format and no logic has been changed.
        - [ ] Previous test can cover this change.
        - [ ] No code files have been changed.
        - [ ] Other reason <!-- Add your reason?  -->

- Behavior changed:
    - [ ] No.
    - [ ] Yes. <!-- Explain the behavior change -->

- Does this need documentation?
    - [ ] No.
- [ ] Yes. <!-- Add document PR link here. eg:
https://github.com/apache/doris-website/pull/1214 -->

### Check List (For Reviewer who merge this PR)

- [ ] Confirm the release note
- [ ] Confirm test cases
- [ ] Confirm document
- [ ] Add branch pick label <!-- Add branch pick label that this PR
should merge into -->
This commit is contained in:
lw112
2025-06-20 14:03:04 +08:00
committed by GitHub
parent 7ef4824575
commit 956fb96dcd
3 changed files with 31 additions and 6 deletions

View File

@ -65,6 +65,9 @@ public class LogicalResultSinkToShortCircuitPointQuery implements RewriteRuleFac
return false;
}
OlapTable olapTable = olapScan.getTable();
if (olapTable.hasVariantColumns()) {
return false;
}
return olapTable.getEnableLightSchemaChange() && olapTable.getEnableUniqueKeyMergeOnWrite()
&& olapTable.storeRowColumn();
}

View File

@ -199,3 +199,5 @@ user_guid feature sk feature_value 2021-01-01T00:00
-- !point_select --
-- !sql --
v1

View File

@ -279,8 +279,8 @@ suite("test_point_query", "nonConcurrent") {
PROPERTIES (
"replication_allocation" = "tag.location.default: 1",
"store_row_column" = "true"
);
"""
);
"""
sql "insert into test_ODS_EBA_LLREPORT(RPTNO) values('567890')"
sql "select /*+ SET_VAR(enable_nereids_planner=true) */ substr(RPTNO,2,5) from test_ODS_EBA_LLREPORT where RPTNO = '567890'"
@ -297,14 +297,14 @@ suite("test_point_query", "nonConcurrent") {
"enable_unique_key_merge_on_write" = "true",
"store_row_column" = "true"
);
"""
"""
sql """insert into `test_cc_aaaid2` values('1111111')"""
qt_sql """SELECT
`__DORIS_DELETE_SIGN__`,
aaaid
FROM
`test_cc_aaaid2`
`test_cc_aaaid2`
WHERE
aaaid = '1111111'"""
} finally {
@ -333,7 +333,7 @@ suite("test_point_query", "nonConcurrent") {
explain {
sql("select * from table_3821461 where col1 = -10 and col2 = 20 and loc3 = 'aabc'")
contains "SHORT-CIRCUIT"
}
}
qt_sql "select * from table_3821461 where col1 = 10 and col2 = 20 and loc3 = 'aabc';"
sql "delete from table_3821461 where col1 = 10 and col2 = 20 and loc3 = 'aabc';"
qt_sql "select * from table_3821461 where col1 = 10 and col2 = 20 and loc3 = 'aabc';"
@ -419,4 +419,24 @@ suite("test_point_query", "nonConcurrent") {
assertNotEquals(result1, result2)
}
}
}
// test variant type
sql "DROP TABLE IF EXISTS test_with_variant"
sql """
CREATE TABLE `test_with_variant` (
`col1` bigint NULL,
`col2` variant NULL
) ENGINE=OLAP
UNIQUE KEY(`col1`)
DISTRIBUTED BY HASH(`col1`) BUCKETS 1
PROPERTIES (
"replication_allocation" = "tag.location.default: 1",
"enable_unique_key_merge_on_write" = "true",
"store_row_column" = "true"
);
"""
sql """
INSERT INTO test_with_variant VALUES(1, '{"k1":"v1", "k2": 200}');
"""
qt_sql "select col2['k1'] from test_with_variant where col1=1"
}