Files
greptimedb/tests/cases/standalone/common/function/string/replace.result
T
discord9andNing Sun 94d7e2c7fc feat!: upgrade DataFusion to 55 (#8555)
* feat!: upgrade DataFusion dependencies to 55

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* refactor: migrate DataFusion 55 APIs

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* fix: preserve table function planning behavior

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* fix: preserve PostgreSQL query compatibility

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* fix: preserve distributed execution plan behavior

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* test: cover DataFusion 55 behavior regressions

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* test: update DataFusion 55 SQLness expectations

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* fix: complete DataFusion 55 test API migration

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* fix: address DataFusion 55 CI regressions

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* fix: address remaining DataFusion 55 regressions

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* fix: adapt latest base code to DataFusion 55

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* test: normalize environment-specific DataFusion 55 plans

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* test: align final DataFusion 55 expectations

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* test: isolate DataFusion 55 regression cases

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* test: preserve empty result schema in timestamp widening

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* test: preserve JSON source column order

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* chore: use released DataFusion 55 integrations

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* test: adapt latest execution plan mock to DataFusion 55

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* fix: pin DataFusion recursive schema and date repairs

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* fix(promql): align dictionary temporality match keys

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* fix: retain Greptime DataFusion fork behaviors on version 55

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* test: restore ordinary function error expectations

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* test: refresh distributed count compatibility plan

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* fix(query): adapt last-row cast hint to DataFusion 55

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* test: refresh instant last-row empty results for Arrow 59

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* style: simplify DataFusion expression visitor imports

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* test: restore sorting and PostgreSQL column-order assertions

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* fix(function): restore primitive numeric coercion signatures

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* refactor(function): share geo integer signature types

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* test: cover timestamp widening overflow boundaries

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* test: fix decimal coercion regression imports

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* fix(function): preserve scalar count_hash NULL state semantics

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* test: simplify decimal clamp case type inference

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* test: retain historical count_hash wrapper result

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* fix: restore timestamp widening equality and IN pruning

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* fix: carry upstream aggregate dynamic filter correctness fix

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* fix: carry upstream null and predicate simplification fixes

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* test: restore baseline JSON ordering expectations

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* test: restore histogram JSON ordering expectations

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* test: refresh empty PromQL range result schemas

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* test: align native timestamp plan with DF55 decimal display

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* test: refresh native timestamp SQLness results for DF55

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* test: regenerate NULL sample empty result headers for DF55

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* test: use DF55 child replacement API in timestamp regressions

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* fix: expose pushed scan dynamic filters to DF55 producers

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* fix: encode string-backed PostgreSQL OID aliases in binary results

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* test: verify REGPROC binary and text over PostgreSQL protocol

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* test: register real PostgreSQL catalogs in server fixtures

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* fix: complete DF55 expression inventories for custom query plans

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* test: correct RangeSelect expression fixture and column identities

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* ci: wait for Kafka WAL helper deployment rollout

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* test: update custom storage empty result headers

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* fix: require exact row counts in scan statistics

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

* fix: suppress deprecated partition_statistics warning in test

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

---------

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>
Co-authored-by: Ning Sun <sunng@protonmail.com>
2026-09-15 11:42:38 +00:00

181 lines
7.3 KiB
Plaintext

-- String REPLACE function tests
-- Basic REPLACE function
SELECT REPLACE('hello world', 'world', 'universe');
+-------------------------------------------------------------+
| replace(Utf8("hello world"),Utf8("world"),Utf8("universe")) |
+-------------------------------------------------------------+
| hello universe |
+-------------------------------------------------------------+
SELECT REPLACE('hello world', 'xyz', 'abc');
+------------------------------------------------------+
| replace(Utf8("hello world"),Utf8("xyz"),Utf8("abc")) |
+------------------------------------------------------+
| hello world |
+------------------------------------------------------+
SELECT REPLACE('hello hello hello', 'hello', 'hi');
+-------------------------------------------------------------+
| replace(Utf8("hello hello hello"),Utf8("hello"),Utf8("hi")) |
+-------------------------------------------------------------+
| hi hi hi |
+-------------------------------------------------------------+
-- REPLACE with empty strings
SELECT REPLACE('hello world', 'world', '');
+-----------------------------------------------------+
| replace(Utf8("hello world"),Utf8("world"),Utf8("")) |
+-----------------------------------------------------+
| hello |
+-----------------------------------------------------+
SELECT REPLACE('hello world', '', 'xyz');
+---------------------------------------------------+
| replace(Utf8("hello world"),Utf8(""),Utf8("xyz")) |
+---------------------------------------------------+
| hello world |
+---------------------------------------------------+
SELECT REPLACE('', 'xyz', 'abc');
+-------------------------------------------+
| replace(Utf8(""),Utf8("xyz"),Utf8("abc")) |
+-------------------------------------------+
| |
+-------------------------------------------+
-- Case sensitive replacement
SELECT REPLACE('Hello World', 'hello', 'hi');
+-------------------------------------------------------+
| replace(Utf8("Hello World"),Utf8("hello"),Utf8("hi")) |
+-------------------------------------------------------+
| Hello World |
+-------------------------------------------------------+
SELECT REPLACE('Hello World', 'Hello', 'Hi');
+-------------------------------------------------------+
| replace(Utf8("Hello World"),Utf8("Hello"),Utf8("Hi")) |
+-------------------------------------------------------+
| Hi World |
+-------------------------------------------------------+
-- NULL handling
SELECT REPLACE(NULL, 'world', 'universe');
+----------------------------------------------+
| replace(NULL,Utf8("world"),Utf8("universe")) |
+----------------------------------------------+
| |
+----------------------------------------------+
SELECT REPLACE('hello world', NULL, 'universe');
+----------------------------------------------------+
| replace(Utf8("hello world"),NULL,Utf8("universe")) |
+----------------------------------------------------+
| |
+----------------------------------------------------+
SELECT REPLACE('hello world', 'world', NULL);
+-------------------------------------------------+
| replace(Utf8("hello world"),Utf8("world"),NULL) |
+-------------------------------------------------+
| |
+-------------------------------------------------+
-- Test with table data
CREATE TABLE replace_test(s VARCHAR, old_str VARCHAR, new_str VARCHAR, ts TIMESTAMP TIME INDEX);
Affected Rows: 0
INSERT INTO replace_test VALUES
('hello world', 'world', 'universe', 1000),
('programming language', 'language', 'paradigm', 2000),
('test test test', 'test', 'exam', 3000),
('no match here', 'xyz', 'abc', 4000);
Affected Rows: 4
SELECT s, old_str, new_str, REPLACE(s, old_str, new_str) FROM replace_test ORDER BY ts;
+----------------------+----------+----------+-------------------------------------------------------------------+
| s | old_str | new_str | replace(replace_test.s,replace_test.old_str,replace_test.new_str) |
+----------------------+----------+----------+-------------------------------------------------------------------+
| hello world | world | universe | hello universe |
| programming language | language | paradigm | programming paradigm |
| test test test | test | exam | exam exam exam |
| no match here | xyz | abc | no match here |
+----------------------+----------+----------+-------------------------------------------------------------------+
-- Unicode replacement
SELECT REPLACE('hello 世界', '世界', 'world');
+--------------------------------------------------------+
| replace(Utf8("hello 世界"),Utf8("世界"),Utf8("world")) |
+--------------------------------------------------------+
| hello world |
+--------------------------------------------------------+
SELECT REPLACE('café shop', 'é', 'e');
+------------------------------------------------+
| replace(Utf8("café shop"),Utf8("é"),Utf8("e")) |
+------------------------------------------------+
| cafe shop |
+------------------------------------------------+
SELECT REPLACE('🚀 rocket 🚀', '🚀', '✈️');
+-----------------------------------------------------+
| replace(Utf8("🚀 rocket 🚀"),Utf8("🚀"),Utf8("✈️")) |
+-----------------------------------------------------+
| ✈️ rocket ✈️ |
+-----------------------------------------------------+
-- Multiple character replacement
SELECT REPLACE('hello-world-test', '-', '_');
+-------------------------------------------------------+
| replace(Utf8("hello-world-test"),Utf8("-"),Utf8("_")) |
+-------------------------------------------------------+
| hello_world_test |
+-------------------------------------------------------+
SELECT REPLACE('abc::def::ghi', '::', '-->');
+-------------------------------------------------------+
| replace(Utf8("abc::def::ghi"),Utf8("::"),Utf8("-->")) |
+-------------------------------------------------------+
| abc-->def-->ghi |
+-------------------------------------------------------+
-- Overlapping patterns
SELECT REPLACE('ababab', 'ab', 'xy');
+-----------------------------------------------+
| replace(Utf8("ababab"),Utf8("ab"),Utf8("xy")) |
+-----------------------------------------------+
| xyxyxy |
+-----------------------------------------------+
SELECT REPLACE('aaa', 'aa', 'b');
+-------------------------------------------+
| replace(Utf8("aaa"),Utf8("aa"),Utf8("b")) |
+-------------------------------------------+
| ba |
+-------------------------------------------+
DROP TABLE replace_test;
Affected Rows: 0