This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch branch-4.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-4.1 by this push:
new 805fa7db777 branch-4.1: [fix](regression) Align remote Doris VARIANT
checks with current semantics #68165 (#68228)
805fa7db777 is described below
commit 805fa7db7774688ca18b5efb62dec8ba7831ba53
Author: Gabriel <[email protected]>
AuthorDate: Sun Sep 20 17:49:50 2026 +0800
branch-4.1: [fix](regression) Align remote Doris VARIANT checks with
current semantics #68165 (#68228)
### What problem does this PR solve?
Related PR: #68165
Problem Summary: Backport the remote Doris VARIANT regression update
from #68165 to branch-4.1. String casts now preserve strings, while this
case expects structured JSON values and compares against obsolete golden
output. Parse valid JSON fixtures explicitly, cast numeric predicates,
and compare catalog reads with the internal source table. Two known
predicate-result checks prevent empty nested-path results from passing
both sides.
The Parquet runtime-filter change from #68165 is not included because
that suite is disabled on branch-4.1.
### Release note
None
### Check List (For Author)
- Test
- [ ] Regression test
- [ ] Unit Test
- [x] Manual test
Verified Groovy syntax compilation, branch-4.1 DSL/API availability, and
`git diff --check`. The external Doris regression suite was not run
locally; CI is requested.
- Behavior changed:
- [x] No production behavior changes.
- [ ] Yes.
- Does this need documentation?
- [x] No.
- [ ] Yes.
### Check List (For Reviewer who merge this PR)
- [ ] Confirm the release note
- [ ] Confirm test cases
- [ ] Confirm document
- [ ] Add branch pick label
---
.../test_remote_doris_variant_select.out | 81 ----------------------
.../test_remote_doris_variant_select.groovy | 70 +++++++++++++------
2 files changed, 49 insertions(+), 102 deletions(-)
diff --git
a/regression-test/data/external_table_p0/remote_doris/test_remote_doris_variant_select.out
b/regression-test/data/external_table_p0/remote_doris/test_remote_doris_variant_select.out
deleted file mode 100644
index 438583116fb..00000000000
---
a/regression-test/data/external_table_p0/remote_doris/test_remote_doris_variant_select.out
+++ /dev/null
@@ -1,81 +0,0 @@
--- This file is automatically generated. You should know what you did if you
want to edit this
--- !sql --
-1 {}
-2 \N
-3 true
-4 -17
-5 123.12
-6 1.912
-7 "A quote"
-8 [-1,12,false]
-9 {"x":"abc","y":0,"z":10}
-10 "2021-01-01"
-11 {"a":"a","b":"0.1","c":{"c1":"c1","c2":"1"}}
-12 {"a":"b","b":"0.1X","c":{"c1":"2","c2":"2"}}
-13 "{\\"a\\":\\"ab\\"cde\\", \\"b\\":NULL, \\"d\\":{\\"d1\\":NULL,
\\"d2\\":NULL}}"
-14 "{\\"a\\":\\"ab{{c\\"de\\"}}\\""
-15 "{\\"a\\":\\"abc{{{de\\""
-
--- !sql --
-11 {"a":"a","b":"0.1","c":{"c1":"c1","c2":"1"}}
-
--- !sql --
-12 {"a":"b","b":"0.1X","c":{"c1":"2","c2":"2"}}
-
--- !sql --
-\N
-\N
-\N
-\N
-\N
-\N
-\N
-\N
-\N
-\N
-a
-b
-\N
-\N
-\N
-
--- !sql --
-\N
-\N
-\N
-\N
-\N
-\N
-\N
-\N
-\N
-\N
-0.1
-0.1X
-\N
-\N
-\N
-
--- !sql --
-0.1
-
--- !sql --
-\N
-\N
-\N
-\N
-\N
-\N
-\N
-\N
-\N
-\N
-c1
-2
-\N
-\N
-\N
-
--- !sql --
-2
-
diff --git
a/regression-test/suites/external_table_p0/remote_doris/test_remote_doris_variant_select.groovy
b/regression-test/suites/external_table_p0/remote_doris/test_remote_doris_variant_select.groovy
index 72346c7168b..2a359b1a851 100644
---
a/regression-test/suites/external_table_p0/remote_doris/test_remote_doris_variant_select.groovy
+++
b/regression-test/suites/external_table_p0/remote_doris/test_remote_doris_variant_select.groovy
@@ -54,20 +54,21 @@ suite("test_remote_doris_variant_select",
"p0,external,doris,external_docker,ext
);
"""
+ // String-to-VARIANT casts preserve strings; parse JSON explicitly to
exercise nested paths.
sql """
INSERT INTO `${db_name}`.`test_remote_doris_variant_select_t` values
- (1, 'null'),
+ (1, parse_to_variant('null')),
(2, NULL),
- (3, 'true'),
- (4, '-17'),
- (5, '123.12'),
- (6, '1.912'),
- (7, '"A quote"'),
- (8, '[-1, 12, false]'),
- (9, '{ "x": "abc", "y": false, "z": 10 }'),
- (10, '"2021-01-01"'),
- (11, '{"a":"a", "b":"0.1", "c":{"c1":"c1", "c2":"1"}}'),
- (12, '{"a":"b", "b":"0.1X", "c":{"c1":"2", "c2":"2"}}'),
+ (3, parse_to_variant('true')),
+ (4, parse_to_variant('-17')),
+ (5, parse_to_variant('123.12')),
+ (6, parse_to_variant('1.912')),
+ (7, parse_to_variant('"A quote"')),
+ (8, parse_to_variant('[-1, 12, false]')),
+ (9, parse_to_variant('{ "x": "abc", "y": false, "z": 10 }')),
+ (10, parse_to_variant('"2021-01-01"')),
+ (11, parse_to_variant('{"a":"a", "b":"0.1", "c":{"c1":"c1",
"c2":"1"}}')),
+ (12, parse_to_variant('{"a":"b", "b":"0.1X", "c":{"c1":"2",
"c2":"2"}}')),
(13, '{"a":"ab\\"cde", "b":NULL, "d":{"d1":NULL, "d2":NULL}}'),
(14, '{"a":"ab{{c\\"de\\"}}"'),
(15, '{"a":"abc{{{de"');
@@ -104,8 +105,21 @@ suite("test_remote_doris_variant_select",
"p0,external,doris,external_docker,ext
);
"""
- qt_sql """
+ // Keep nested-path coverage non-empty before comparing catalog reads with
the source table.
+ check_sqls_result_equal """
+ select id from
`internal`.`${db_name}`.`test_remote_doris_variant_select_t`
+ where cast(v['b'] as double) >= 0 order by id
+ """, "select 11"
+ check_sqls_result_equal """
+ select id from
`internal`.`${db_name}`.`test_remote_doris_variant_select_t`
+ where cast(v['c']['c2'] as int) > 1 order by id
+ """, "select 12"
+
+ // Compare with the source instead of golden text tied to an older VARIANT
representation.
+ check_sqls_result_equal """
select * from
`${catalog_name}`.`${db_name}`.`test_remote_doris_variant_select_t` order by id
+ """, """
+ select * from
`internal`.`${db_name}`.`test_remote_doris_variant_select_t` order by id
"""
test {
sql """
@@ -116,32 +130,46 @@ suite("test_remote_doris_variant_select",
"p0,external,doris,external_docker,ext
+ "file format ARROW is not supported")
}
- qt_sql """
- select * from
`${catalog_name}`.`${db_name}`.`test_remote_doris_variant_select_t` where
v['b'] >= 0 order by id
+ check_sqls_result_equal """
+ select * from
`${catalog_name}`.`${db_name}`.`test_remote_doris_variant_select_t` where
cast(v['b'] as double) >= 0 order by id
+ """, """
+ select * from
`internal`.`${db_name}`.`test_remote_doris_variant_select_t` where cast(v['b']
as double) >= 0 order by id
"""
- qt_sql """
- select * from
`${catalog_name}`.`${db_name}`.`test_remote_doris_variant_select_t` where
v['c']['c2'] > 1 order by id
+ check_sqls_result_equal """
+ select * from
`${catalog_name}`.`${db_name}`.`test_remote_doris_variant_select_t` where
cast(v['c']['c2'] as int) > 1 order by id
+ """, """
+ select * from
`internal`.`${db_name}`.`test_remote_doris_variant_select_t` where
cast(v['c']['c2'] as int) > 1 order by id
"""
- qt_sql """
+ check_sqls_result_equal """
select v['a'] from
`${catalog_name}`.`${db_name}`.`test_remote_doris_variant_select_t` order by id
+ """, """
+ select v['a'] from
`internal`.`${db_name}`.`test_remote_doris_variant_select_t` order by id
"""
- qt_sql """
+ check_sqls_result_equal """
select v['b'] from
`${catalog_name}`.`${db_name}`.`test_remote_doris_variant_select_t` order by id
+ """, """
+ select v['b'] from
`internal`.`${db_name}`.`test_remote_doris_variant_select_t` order by id
"""
- qt_sql """
+ check_sqls_result_equal """
select sum(cast(v['b'] as double)) from
`${catalog_name}`.`${db_name}`.`test_remote_doris_variant_select_t`
+ """, """
+ select sum(cast(v['b'] as double)) from
`internal`.`${db_name}`.`test_remote_doris_variant_select_t`
"""
- qt_sql """
+ check_sqls_result_equal """
select v['c']['c1'] from
`${catalog_name}`.`${db_name}`.`test_remote_doris_variant_select_t` order by id
+ """, """
+ select v['c']['c1'] from
`internal`.`${db_name}`.`test_remote_doris_variant_select_t` order by id
"""
- qt_sql """
+ check_sqls_result_equal """
select sum(cast(v['c']['c1'] as double)) from
`${catalog_name}`.`${db_name}`.`test_remote_doris_variant_select_t`
+ """, """
+ select sum(cast(v['c']['c1'] as double)) from
`internal`.`${db_name}`.`test_remote_doris_variant_select_t`
"""
sql """ DROP DATABASE IF EXISTS `${db_name}` """
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]