From dc76323dd523afd5ebd53bf6a9fa17d8d1ce5e46 Mon Sep 17 00:00:00 2001
From: jianhao <1367919489@qq.com>
Date: Fri, 24 Oct 2025 21:30:02 +0800
Subject: [PATCH 1/2] jh-v1
---
.../string_functions/test_string_all.out | 1414 +++++++++++++++++
.../string_functions/test_string_all.groovy | 1078 +++++++++++++
2 files changed, 2492 insertions(+)
create mode 100644 regression-test/data/query_p0/sql_functions/string_functions/test_string_all.out
create mode 100644 regression-test/suites/query_p0/sql_functions/string_functions/test_string_all.groovy
diff --git a/regression-test/data/query_p0/sql_functions/string_functions/test_string_all.out b/regression-test/data/query_p0/sql_functions/string_functions/test_string_all.out
new file mode 100644
index 00000000000000..d126d2cd8ea602
--- /dev/null
+++ b/regression-test/data/query_p0/sql_functions/string_functions/test_string_all.out
@@ -0,0 +1,1414 @@
+-- This file is automatically generated. You should know what you did if you want to edit this
+-- !append_trailing_char_if_absent_1 --
+ac
+
+-- !append_trailing_char_if_absent_2 --
+ac
+
+-- !append_trailing_char_if_absent_3 --
+/
+
+-- !append_trailing_char_if_absent_4 --
+\N
+
+-- !append_trailing_char_if_absent_5 --
+acfṛ
+
+-- !ascii_6 --
+49 50
+
+-- !ascii_7 --
+65 97 90
+
+-- !ascii_8 --
+0
+
+-- !ascii_9 --
+\N
+
+-- !ascii_10 --
+32 33 64
+
+-- !ascii_11 --
+116 110 114
+
+-- !ascii_12 --
+72 87
+
+-- !ascii_13 --
+225 225
+
+-- !ascii_14 --
+57 48
+
+-- !auto_partition_name_15 --
+p20221212000000
+
+-- !auto_partition_name_16 --
+p20221201000000
+
+-- !auto_partition_name_17 --
+phelloworld10
+
+-- !auto_partition_name_18 --
+phello5world5
+
+-- !auto_partition_name_19 --
+p1e6d1e5bec31e0d1e0dumai6
+
+-- !char_length_21 --
+5
+
+-- !char_length_22 --
+2
+
+-- !char_length_23 --
+\N
+
+-- !char_length_24 --
+2 6
+
+-- !char_25 --
+Doris
+
+-- !char_26 --
+多睿丝
+
+-- !char_27 --
+\N
+
+-- !char_28 --
+
+
+-- !uncompress_29 --
+hello
+
+-- !compress_30 --
+
+
+-- !compress_31 --
+\N
+
+-- !uncompress_32 --
+ṭṛì
+
+-- !concat_ws_33 --
+apple,banana,orange hello-world
+
+-- !concat_ws_34 --
+\N doris
+
+-- !concat_ws_35 --
+hello||world ,test,
+
+-- !concat_ws_36 --
+
+
+-- !concat_ws_37 --
+doris apple-banana-cherry
+
+-- !concat_ws_38 --
+doris a,b,c
+
+-- !concat_ws_39 --
+a-b-c-d x|y|z
+
+-- !concat_ws_40 --
+
+
+-- !concat_ws_41 --
+ṭṛìxḍḍumai ṭṛì→ḍḍumai→hello
+
+-- !concat_ws_42 --
+Name,Age,City home/user/documents/file.txt
+
+-- !concat_43 --
+ab abc
+
+-- !concat_44 --
+\N \N
+
+-- !concat_45 --
+helloworld test
+
+-- !concat_46 --
+User123 Price: $99.99
+
+-- !concat_47 --
+ABCDE 12345
+
+-- !concat_48 --
+ṭṛì ḍḍumai Hello ṭṛì ḍḍumai
+
+-- !concat_49 --
+/home/user/file.txt https://www.example.com/api
+
+-- !concat_50 --
+user@example.com admin.support@company.org
+
+-- !count_substrings_51 --
+3
+
+-- !count_substrings_52 --
+5
+
+-- !count_substrings_53 --
+1
+
+-- !count_substrings_54 --
+\N
+
+-- !count_substrings_55 --
+0
+
+-- !count_substrings_56 --
+2
+
+-- !count_substrings_57 --
+0
+
+-- !digital_masking_58 --
+138****5678
+
+-- !digital_masking_59 --
+123****7890
+
+-- !digital_masking_60 --
+123****123
+
+-- !digital_masking_61 --
+\N
+
+-- !digital_masking_62 --
+138****4678
+
+-- !elt_63 --
+aaa
+
+-- !elt_64 --
+bbb
+
+-- !elt_65 --
+\N \N
+
+-- !elt_66 --
+\N
+
+-- !elt_67 --
+\N
+
+-- !elt_68 --
+\N
+
+-- !elt_70 --
+
+
+-- !ends_with_71 --
+true false
+
+-- !ends_with_72 --
+false true
+
+-- !ends_with_73 --
+\N \N
+
+-- !ends_with_74 --
+true false
+
+-- !ends_with_75 --
+true false
+
+-- !ends_with_76 --
+true false
+
+-- !ends_with_77 --
+true false
+
+-- !ends_with_78 --
+true false
+
+-- !ends_with_79 --
+true false
+
+-- !ends_with_80 --
+true false
+
+-- !find_in_set_81 --
+2
+
+-- !find_in_set_82 --
+1
+
+-- !find_in_set_83 --
+3
+
+-- !find_in_set_84 --
+0
+
+-- !find_in_set_85 --
+\N \N
+
+-- !find_in_set_86 --
+0 0
+
+-- !find_in_set_87 --
+0
+
+-- !find_in_set_88 --
+0 0
+
+-- !find_in_set_89 --
+0
+
+-- !find_in_set_90 --
+2
+
+-- !format_number_91 --
+1.50K
+
+-- !format_number_92 --
+5.00M
+
+-- !format_number_93 --
+999
+
+-- !format_number_94 --
+\N
+
+-- !format_95 --
+3.1
+
+-- !format_96 --
+hello-world
+
+-- !format_97 --
+ 123
+
+-- !format_98 --
+\N
+
+-- !format_99 --
+ṭṛṭṛ-ṭṛ
+
+-- !test_100 --
+1 A
+
+-- !test_101 --
+234 Hello
+
+-- !test_102 --
+\N
+
+-- !test_103 --
+
+
+-- !test_104 --
+\N \N
+
+-- !test_105 --
+Hello World The quick brown fox
+
+-- !test_106 --
+ṭṛṀ ṍṍumai hello
+
+-- !test_107 --
+user@example.com admin.test@company.org
+
+-- !test_108 --
+{"name":"John","age":30} [1,2,3,4,5]
+
+-- !test_109 --
+Hello 测试
+
+-- !hex_110 --
+C FFFFFFFFFFFFFFFF
+
+-- !hex_111 --
+31 40 3132
+
+-- !hex_112 --
+FF FFFF FFFFFF
+
+-- !hex_113 --
+\N
+
+-- !hex_114 --
+0
+
+-- !hex_115 --
+20 74 6E
+
+-- !hex_116 --
+E1B9ADE1B99BC3AC E1B88DE1B88D756D6169
+
+-- !hex_117 --
+FFFFFFFFFFFFFF80 FFFFFFFFFFFF8000
+
+-- !hex_118 --
+4131 48656C6C6F21
+
+-- !initcap_119 --
+Hello World
+
+-- !initcap_120 --
+Hello World
+
+-- !initcap_121 --
+\N
+
+-- !initcap_122 --
+
+
+-- !initcap_123 --
+Hello Hello.,Hello123hello
+
+-- !initcap_124 --
+Word1@Word2#Word3$Word4
+
+-- !initcap_125 --
+Ṭṛì Ḍḍumai Hello
+
+-- !initcap_126 --
+John Doe Mary Jane
+
+-- !initcap_127 --
+The Quick Brown Fox Database Management System
+
+-- !initcap_128 --
+Word1 Word2--Word3 Hello, World! How Are You?
+
+-- !instr_129 --
+2 0
+
+-- !instr_130 --
+7 0
+
+-- !instr_131 --
+\N \N
+
+-- !instr_132 --
+1 0
+
+-- !instr_133 --
+1 2
+
+-- !instr_134 --
+5 8
+
+-- !instr_135 --
+5 12
+
+-- !instr_136 --
+4 4
+
+-- !instr_137 --
+5 0
+
+-- !instr_138 --
+1 6
+
+-- !int_to_uuid_139 --
+6ce4766f-6783-4b30-b357-bba1c7600348
+
+-- !int_to_uuid_140 --
+\N
+
+-- !lower_141 --
+abc123 abc123
+
+-- !lower_142 --
+hello world! test@123
+
+-- !lower_143 --
+\N \N
+
+-- !lower_144 --
+
+
+-- !lower_145 --
+already lowercase abc123
+
+-- !lower_146 --
+123!@#$% price: $99.99
+
+-- !lower_147 --
+ṭṛì test ḍḍumai hello
+
+-- !length_148 --
+3 3
+
+-- !length_149 --
+6 2
+
+-- !length_150 --
+\N
+
+-- !length_151 --
+0
+
+-- !length_152 --
+11 7
+
+-- !length_153 --
+3 1
+
+-- !length_154 --
+8 3
+
+-- !length_155 --
+8 2
+
+-- !length_156 --
+5 5
+
+-- !locate_157 --
+4 0 7
+
+-- !locate_158 --
+1 6
+
+-- !locate_159 --
+0 0
+
+-- !locate_160 --
+\N \N \N
+
+-- !locate_161 --
+1 0 1
+
+-- !locate_162 --
+2 2 0
+
+-- !locate_163 --
+0 0 0
+
+-- !locate_164 --
+2 5
+
+-- !locate_165 --
+0 0 0
+
+-- !locate_166 --
+3 0 1
+
+-- !lpad_167 --
+xyxhi ***hello
+
+-- !lpad_168 --
+h hello
+
+-- !lpad_169 --
+\N \N \N
+
+-- !lpad_170 --
+ *****
+
+-- !lpad_171 --
+ hi
+
+-- !lpad_172 --
+abcabca123 HELLOHX
+
+-- !lpad_173 --
+ṭṛìṭṛhello ḍḍu
+
+-- !lpad_174 --
+000042 00001234
+
+-- !lpad_175 --
+\N \N
+
+-- !ltrim_176 --
+ab d
+
+-- !ltrim_177 --
+ccaab
+
+-- !ltrim_178 --
+tn hello world
+
+-- !ltrim_179 --
+\N \N
+
+-- !ltrim_180 --
+ test
+
+-- !ltrim_181 --
+defg 3456
+
+-- !ltrim_182 --
+
+
+-- !ltrim_183 --
+ test ḍḍuḍḍu hello
+
+-- !ltrim_184 --
+123 abc123
+
+-- !ltrim_185 --
+text--- hello@@
+
+-- !make_set_186 --
+dog,cat
+
+-- !make_set_187 --
+hot
+
+-- !make_set_188 --
+
+
+-- !make_set_189 --
+\N
+
+-- !make_set_190 --
+first,second
+
+-- !make_set_191 --
+ṭṛì,ḍḍumai,test
+
+-- !mask_first_n_192 --
+nnnn-5678
+
+-- !mask_first_n_193 --
+xxxnnn
+
+-- !mask_first_n_194 --
+Xxxxx
+
+-- !mask_first_n_195 --
+\N
+
+-- !mask_first_n_196 --
+Hello123
+
+-- !mask_first_n_197 --
+Xxxx
+
+-- !mask_first_n_198 --
+xxxx@xxample.com
+
+-- !mask_first_n_199 --
+nnn12345678
+
+-- !mask_first_n_200 --
+Xxx-nnn-XYZ
+
+-- !mask_first_n_201 --
+ṭṛXorld123
+
+-- !mask_last_n_202 --
+1234-nnnn
+
+-- !mask_last_n_203 --
+xxxnnn
+
+-- !mask_last_n_204 --
+Xxxxx
+
+-- !mask_last_n_205 --
+\N
+
+-- !mask_last_n_206 --
+Hello123
+
+-- !mask_last_n_207 --
+Xxxx
+
+-- !mask_last_n_208 --
+user@xxxxxxx.xxx
+
+-- !mask_last_n_209 --
+1381234nnnn
+
+-- !mask_last_n_210 --
+ABC-nnn-xxx
+
+-- !mask_last_n_211 --
+Helloṭṛnnn
+
+-- !mask_212 --
+xxxnnnXXX
+
+-- !mask_213 --
+###$$$***
+
+-- !mask_214 --
+Xxxxx-nnn!
+
+-- !mask_215 --
+\N
+
+-- !mask_216 --
+nnnnnnnnnn
+
+-- !mask_217 --
+XxXxXxXx
+
+-- !mask_218 --
+
+
+-- !mask_219 --
+Axxx999
+
+-- !mask_220 --
+nnnn-nnnn-nnnn-nnnn
+
+-- !mask_221 --
+xxxx@xxxxxxx.xxx
+
+-- !multi_search_all_positions_222 --
+[1, 8]
+
+-- !multi_search_all_positions_223 --
+[0, 13, 0]
+
+-- !multi_search_all_positions_224 --
+[1, 13, 0]
+
+-- !multi_search_all_positions_225 --
+[]
+
+-- !multi_search_all_positions_226 --
+[1, 21, 0]
+
+-- !ngram_search_227 --
+0.6
+
+-- !ngram_search_228 --
+1
+
+-- !ngram_search_229 --
+0
+
+-- !ngram_search_230 --
+\N
+
+-- !overlay_231 --
+QuWhattic
+
+-- !overlay_232 --
+QHi
+
+-- !overlay_233 --
+Hello
+
+-- !overlay_234 --
+\N
+
+-- !parse_data_size_235 --
+1024
+
+-- !parse_data_size_236 --
+1024
+
+-- !parse_data_size_237 --
+2621440
+
+-- !parse_data_size_238 --
+1073741824
+
+-- !parse_data_size_239 --
+1099511627776
+
+-- !parse_data_size_241 --
+\N
+
+-- !position_242 --
+4 4
+
+-- !position_243 --
+7 0
+
+-- !position_244 --
+\N \N
+
+-- !position_245 --
+1 0
+
+-- !position_246 --
+7 0
+
+-- !position_247 --
+2 4
+
+-- !position_248 --
+5 12
+
+-- !position_249 --
+5 12
+
+-- !position_250 --
+0 0
+
+-- !position_251 --
+4 11
+
+-- !quote_252 --
+'hello'
+
+-- !quote_253 --
+'It is a test'
+
+-- !quote_254 --
+\N
+
+-- !quote_255 --
+''
+
+-- !quote_256 --
+'aaa\\'
+
+-- !quote_257 --
+'aaacccb'
+
+-- !repeat_263 --
+aaa
+
+-- !repeat_264 --
+hellohello
+
+-- !repeat_265 --
+
+
+-- !repeat_266 --
+
+
+-- !repeat_267 --
+\N \N
+
+-- !repeat_268 --
+
+
+-- !repeat_269 --
+---------- *****
+
+-- !repeat_270 --
+ṭṛìṭṛìṭṛì ḍḍuḍḍu
+
+-- !repeat_271 --
+123123123 @#@#@#@#
+
+-- !repeat_272 --
+ṭṛìṭṛìṭṛìṭṛìṭṛìṭṛì
+
+-- !replace_empty_273 --
+xaxbxcx
+
+-- !replace_empty_274 --
+heLLo
+
+-- !replace_empty_275 --
+x
+
+-- !replace_empty_276 --
+\N
+
+-- !replace_empty_277 --
+heṭṛìṭṭṛìṭo
+
+-- !replace_278 --
+hello universe
+
+-- !replace_279 --
+orange orange orange
+
+-- !replace_280 --
+bnn
+
+-- !replace_281 --
+\N \N \N
+
+-- !replace_282 --
+ test test
+
+-- !replace_283 --
+Hello HELLO hi
+
+-- !replace_284 --
+hello world
+
+-- !replace_285 --
+replaced ḍḍumai test replaced ḍḍumannàri
+
+-- !replace_286 --
+ABCABCABC
+
+-- !reverse_287 --
+olleh
+
+-- !reverse_288 --
+["world", "hello"]
+
+-- !reverse_289 --
+\N
+
+-- !reverse_290 --
+ []
+
+-- !reverse_291 --
+A ["single"]
+
+-- !reverse_292 --
+54321 %$#@!
+
+-- !reverse_293 --
+iamuḍḍ ìṛṭ irànnamuḍḍ
+
+-- !reverse_294 --
+321olleH moc.liame@tset
+
+-- !reverse_295 --
+[5, 4, 3, 2, 1] ["c", "b", "a"]
+
+-- !reverse_296 --
+level 12321
+
+-- !rpad_297 --
+hixyx hello***
+
+-- !rpad_298 --
+h hello
+
+-- !rpad_299 --
+\N \N \N
+
+-- !rpad_300 --
+ *****
+
+-- !rpad_301 --
+ hi
+
+-- !rpad_302 --
+helloworld XABCABC
+
+-- !rpad_303 --
+helloṭṛìṭṛ ḍḍu
+
+-- !rpad_304 --
+$99..... Item1
+
+-- !rpad_305 --
+Name Price
+
+-- !rpad_306 --
+\N \N
+
+-- !rtrim_in_307 --
+ab d
+
+-- !rtrim_in_308 --
+ababcc
+
+-- !rtrim_in_309 --
+ababcc ababcca
+
+-- !rtrim_in_310 --
+Hello
+
+-- !rtrim_in_311 --
+ṭṛì ḍḍumai
+
+-- !rtrim_in_312 --
+\N
+
+-- !rtrim_in_313 --
+ abc
+
+-- !rtrim_314 --
+ab d
+
+-- !rtrim_315 --
+ababcca
+
+-- !rtrim_316 --
+hello world tn
+
+-- !rtrim_317 --
+\N \N
+
+-- !rtrim_318 --
+ test
+
+-- !rtrim_319 --
+abcd 1234
+
+-- !rtrim_320 --
+
+
+-- !rtrim_321 --
+test hello ḍḍu
+
+-- !rtrim_322 --
+123 123abc
+
+-- !rtrim_323 --
+---text @@hello
+
+-- !soundex_324 --
+D620
+
+-- !soundex_325 --
+S530 S530
+
+-- !soundex_326 --
+
+
+-- !soundex_327 --
+\N
+
+-- !soundex_328 --
+
+
+-- !soundex_329 --
+
+
+-- !soundex_330 --
+R163 R163
+
+-- !space_333 --
+
+
+-- !space_334 --
+
+
+-- !space_335 --
+\N
+
+-- !concat_336 --
+Hello World
+
+-- !split_by_regexp_337 --
+["a", "b", "c", "d", "e"]
+
+-- !split_by_regexp_338 --
+["a", "bc", "de", "f"]
+
+-- !split_by_regexp_339 --
+\N \N
+
+-- !split_by_regexp_340 --
+[""] ["hello"]
+
+-- !split_by_regexp_341 --
+["a", "b", "c,d,e"] ["1", "2-3-4-5"]
+
+-- !split_by_regexp_342 --
+["hello", "world", "test"] ["atbncrd"]
+
+-- !split_by_regexp_343 --
+["a", "b", "c", "d"] ["x", "y", "z", "w", ""]
+
+-- !split_by_regexp_344 --
+["", "he", "uick", "rown", "ox"] ["user", "example", "com"]
+
+-- !split_by_regexp_345 --
+["ṭṛì", "ḍḍumai", "hello"] ["α", "γ", "ε"]
+
+-- !split_by_regexp_346 --
+["a", "", "b", "c"] ["123", "456", ""]
+
+-- !split_by_string_347 --
+["he", "", "o"]
+
+-- !split_by_string_348 --
+["h", "e", "l", "l", "o"]
+
+-- !split_by_string_349 --
+["apple", "banana", "cherry"]
+
+-- !split_by_string_350 --
+\N \N
+
+-- !split_by_string_351 --
+[] ["hello"]
+
+-- !split_by_string_352 --
+["a", "", "b", "c"]
+
+-- !split_by_string_353 --
+["", "a", "b", ""]
+
+-- !split_by_string_354 --
+["", "", "", ""]
+
+-- !split_by_string_355 --
+["ṭṛì", "ḍḍumai", "ṭṛì"]
+
+-- !split_by_string_356 --
+["hello world"]
+
+-- !split_part_357 --
+hello
+
+-- !split_part_358 --
+banana
+
+-- !split_part_359 --
+\N
+
+-- !split_part_360 --
+cherry banana
+
+-- !split_part_361 --
+\N \N
+
+-- !split_part_362 --
+\N \N \N
+
+-- !split_part_363 --
+\N
+
+-- !split_part_364 --
+\N \N
+
+-- !split_part_365 --
+a c
+
+-- !split_part_366 --
+ḍḍumai
+
+-- !starts_with_367 --
+true false
+
+-- !starts_with_368 --
+false true
+
+-- !starts_with_369 --
+\N \N
+
+-- !starts_with_370 --
+true false
+
+-- !starts_with_371 --
+true false
+
+-- !starts_with_372 --
+true true
+
+-- !starts_with_373 --
+true false
+
+-- !starts_with_374 --
+true false
+
+-- !starts_with_375 --
+true false
+
+-- !starts_with_376 --
+true true
+
+-- !strleft_377 --
+Hello Hello
+
+-- !strleft_378 --
+Hel Hello Wo
+
+-- !strleft_379 --
+\N \N
+
+-- !strleft_380 --
+
+
+-- !strleft_381 --
+
+
+-- !strleft_382 --
+ABC short
+
+-- !strleft_383 --
+ṭṛì ṭṛì ḍḍu
+
+-- !strleft_384 --
+ID123 USER_
+
+-- !strleft_385 --
+ṭṛì ḍ
+
+-- !strright_386 --
+doris doris
+
+-- !strright_387 --
+rld lo World
+
+-- !strright_388 --
+\N \N
+
+-- !strright_389 --
+
+
+-- !strright_390 --
+doris o doris
+
+-- !strright_391 --
+ABC short
+
+-- !strright_392 --
+hello ḍumai hello
+
+-- !strright_393 --
+789 654321
+
+-- !strright_394 --
+example.com company.org.cn
+
+-- !sub_replace_395 --
+d***is
+
+-- !sub_replace_396 --
+Hillo
+
+-- !sub_replace_397 --
+\N
+
+-- !sub_replace_398 --
+\N
+
+-- !sub_replace_399 --
+dṛìḍḍis
+
+-- !sub_replace_400 --
+hHi
+
+-- !substring_index_401 --
+hello one,two
+
+-- !substring_index_402 --
+world three
+
+-- !substring_index_403 --
+\N \N
+
+-- !substring_index_404 --
+
+
+-- !substring_index_405 --
+hello world no-delimiter
+
+-- !substring_index_406 --
+a,b,c a,b,c
+
+-- !substring_index_407 --
+ṭṛì hello
+
+-- !substring_index_408 --
+data::field value
+
+-- !substring_index_409 --
+
+
+-- !substring_410 --
+bc1
+
+-- !substring_411 --
+c1
+
+-- !substring_412 --
+
+
+-- !substring_413 --
+
+
+-- !substring_414 --
+bc
+
+-- !substring_415 --
+bar
+
+-- !substring_416 --
+barbar
+
+-- !mid_417 --
+\N
+
+-- !substring_418 --
+ḍḍumai
+
+-- !substring_419 --
+\N
+
+-- !substring_420 --
+
+
+-- !test_421 --
+MQ== QQ==
+
+-- !test_422 --
+MjM0 SGVsbG8=
+
+-- !test_423 --
+\N
+
+-- !test_424 --
+SGVsbG8gV29ybGQ= VGhlIHF1aWNrIGJyb3duIGZveA==
+
+-- !test_425 --
+MTIzNDU2 IUAjJCVeJiooKQ==
+
+-- !test_426 --
+4bmt4bmbw6w= 4biN4biNdW1haSBoZWxsbw==
+
+-- !test_427 --
+dXNlckBleGFtcGxlLmNvbQ== YWRtaW4udGVzdEBjb21wYW55Lm9yZw==
+
+-- !test_428 --
+eyJuYW1lIjoiSm9obiIsImFnZSI6MzB9 WzEsMiwzLDQsNV0=
+
+-- !test_429 --
+YQ== YWI= YWJj
+
+-- !translate_430 --
+zbcd
+
+-- !translate_431 --
+zbxd
+
+-- !translate_432 --
+zbzyzd
+
+-- !translate_433 --
+\N \N \N
+
+-- !translate_434 --
+ abc bc
+
+-- !translate_435 --
+xbyd
+
+-- !translate_436 --
+abì ḍḍumai
+
+-- !translate_437 --
+axbycz
+
+-- !translate_438 --
+xxyyccxx
+
+-- !translate_439 --
+hello-world_com
+
+-- !trim_in_440 --
+ab d
+
+-- !trim_in_441 --
+cc
+
+-- !trim_in_442 --
+Hello
+
+-- !trim_in_443 --
+ṭṛì ḍḍumai
+
+-- !trim_in_444 --
+\N
+
+-- !trim_in_445 --
+ abc
+
+-- !trim_446 --
+hello
+
+-- !trim_447 --
+hello
+
+-- !trim_448 --
+ab d
+
+-- !trim_449 --
+cca
+
+-- !trim_450 --
+ ḍḍumai+++
+
+-- !trim_451 --
+\N
+
+-- !trim_452 --
+xxxhelloxxx
+
+-- !ucase_453 --
+ABC123 ABC123
+
+-- !ucase_454 --
+HELLO WORLD! TEST@123
+
+-- !ucase_455 --
+\N \N
+
+-- !ucase_456 --
+
+
+-- !ucase_457 --
+ALREADY UPPERCASE ABC123
+
+-- !ucase_458 --
+123!@#$% PRICE: $99.99
+
+-- !ucase_459 --
+ṬṚÌ TEST ḌḌUMAI HELLO
+
+-- !ucase_460 --
+КИРИЛЛИЦА БӘЙТЕРЕК
+
+-- !unhex_461 --
+A a
+
+-- !unhex_462 --
+AB Hello
+
+-- !unhex_463 --
+\N \N
+
+-- !unhex_464 --
+ \N
+
+-- !unhex_465 --
+ \N
+
+-- !unhex_466 --
+ \N
+
+-- !unhex_467 --
+中 文
+
+-- !unhex_468 --
+123 987
+
+-- !unhex_469 --
+Hello Test123
+
+-- !uuid_to_int_470 --
+95721955514869408091759290071393952876
+
+-- !uuid_to_int_471 --
+\N
+
+-- !uuid_to_int_474 --
+95721955514869408091759290071393952876
+
+-- !xpath_string_478 --
+123
+
+-- !xpath_string_479 --
+123
+
+-- !xpath_string_480 --
+123
+
+-- !xpath_string_481 --
+2
+
+-- !xpath_string_482 --
+123
+
+-- !xpath_string_483 --
+123
+
+-- !xpath_string_484 --
+
+
+-- !xpath_string_485 --
+\N
+
+-- !xpath_string_486 --
+123
+
diff --git a/regression-test/suites/query_p0/sql_functions/string_functions/test_string_all.groovy b/regression-test/suites/query_p0/sql_functions/string_functions/test_string_all.groovy
new file mode 100644
index 00000000000000..d025afbcba1b5b
--- /dev/null
+++ b/regression-test/suites/query_p0/sql_functions/string_functions/test_string_all.groovy
@@ -0,0 +1,1078 @@
+suite("string_functions_all") {
+ // APPEND_TRAILING_CHAR_IF_ABSENT tests
+ qt_append_trailing_char_if_absent_1 "SELECT APPEND_TRAILING_CHAR_IF_ABSENT('a', 'c');"
+ testFoldConst("SELECT APPEND_TRAILING_CHAR_IF_ABSENT('a', 'c');")
+ qt_append_trailing_char_if_absent_2 "SELECT APPEND_TRAILING_CHAR_IF_ABSENT('ac', 'c');"
+ testFoldConst("SELECT APPEND_TRAILING_CHAR_IF_ABSENT('ac', 'c');")
+ qt_append_trailing_char_if_absent_3 "SELECT APPEND_TRAILING_CHAR_IF_ABSENT('', '/');"
+ testFoldConst("SELECT APPEND_TRAILING_CHAR_IF_ABSENT('', '/');")
+ qt_append_trailing_char_if_absent_4 "SELECT APPEND_TRAILING_CHAR_IF_ABSENT(NULL, 'c');"
+ testFoldConst("SELECT APPEND_TRAILING_CHAR_IF_ABSENT(NULL, 'c');")
+ qt_append_trailing_char_if_absent_5 "SELECT APPEND_TRAILING_CHAR_IF_ABSENT('acf', 'ṛ');"
+ testFoldConst("SELECT APPEND_TRAILING_CHAR_IF_ABSENT('acf', 'ṛ');")
+
+ // ASCII tests
+ qt_ascii_6 "SELECT ASCII('1'), ASCII('234');"
+ testFoldConst("SELECT ASCII('1'), ASCII('234');")
+ qt_ascii_7 "SELECT ASCII('A'), ASCII('a'), ASCII('Z');"
+ testFoldConst("SELECT ASCII('A'), ASCII('a'), ASCII('Z');")
+ qt_ascii_8 "SELECT ASCII('');"
+ testFoldConst("SELECT ASCII('');")
+ qt_ascii_9 "SELECT ASCII(NULL);"
+ testFoldConst("SELECT ASCII(NULL);")
+ qt_ascii_10 "SELECT ASCII(' '), ASCII('!'), ASCII('@');"
+ testFoldConst("SELECT ASCII(' '), ASCII('!'), ASCII('@');")
+ qt_ascii_11 "SELECT ASCII('t'), ASCII('n'), ASCII('r');"
+ testFoldConst("SELECT ASCII('t'), ASCII('n'), ASCII('r');")
+ qt_ascii_12 "SELECT ASCII('Hello'), ASCII('World123');"
+ testFoldConst("SELECT ASCII('Hello'), ASCII('World123');")
+ qt_ascii_13 "SELECT ASCII('ṭṛì'), ASCII('ḍḍumai');"
+ testFoldConst("SELECT ASCII('ṭṛì'), ASCII('ḍḍumai');")
+ qt_ascii_14 "SELECT ASCII('9abc'), ASCII('0xyz');"
+ testFoldConst("SELECT ASCII('9abc'), ASCII('0xyz');")
+
+ // AUTO_PARTITION_NAME tests
+ qt_auto_partition_name_15 "SELECT auto_partition_name('range', 'day', '2022-12-12 19:20:30');"
+ testFoldConst("SELECT auto_partition_name('range', 'day', '2022-12-12 19:20:30');")
+ qt_auto_partition_name_16 "SELECT auto_partition_name('range', 'month', '2022-12-12 19:20:30');"
+ testFoldConst("SELECT auto_partition_name('range', 'month', '2022-12-12 19:20:30');")
+ qt_auto_partition_name_17 "SELECT auto_partition_name('list', 'helloworld');"
+ testFoldConst("SELECT auto_partition_name('list', 'helloworld');")
+ qt_auto_partition_name_18 "SELECT auto_partition_name('list', 'hello', 'world');"
+ testFoldConst("SELECT auto_partition_name('list', 'hello', 'world');")
+ qt_auto_partition_name_19 "SELECT auto_partition_name('list', 'ṭṛì', 'ḍḍumai');"
+ testFoldConst("SELECT auto_partition_name('list', 'ṭṛì', 'ḍḍumai');")
+
+ // CHAR_LENGTH tests
+ qt_char_length_21 "SELECT CHAR_LENGTH('hello');"
+ testFoldConst("SELECT CHAR_LENGTH('hello');")
+ qt_char_length_22 "SELECT CHAR_LENGTH('中国');"
+ testFoldConst("SELECT CHAR_LENGTH('中国');")
+ qt_char_length_23 "SELECT CHAR_LENGTH(NULL);"
+ testFoldConst("SELECT CHAR_LENGTH(NULL);")
+ qt_char_length_24 "SELECT CHAR_LENGTH('中国') AS char_len, LENGTH('中国') AS byte_len;"
+ testFoldConst("SELECT CHAR_LENGTH('中国') AS char_len, LENGTH('中国') AS byte_len;")
+
+ // CHAR tests
+ qt_char_25 "SELECT CHAR(68, 111, 114, 105, 115);"
+ testFoldConst("SELECT CHAR(68, 111, 114, 105, 115);")
+ qt_char_26 "SELECT CHAR(15049882, 15179199, 14989469);"
+ testFoldConst("SELECT CHAR(15049882, 15179199, 14989469);")
+ qt_char_27 "SELECT CHAR(255);"
+ testFoldConst("SELECT CHAR(255);")
+ qt_char_28 "SELECT CHAR(NULL);"
+ testFoldConst("SELECT CHAR(NULL);")
+
+ // UNCOMPRESS tests
+ qt_uncompress_29 "SELECT uncompress(compress('hello'));"
+ testFoldConst("SELECT uncompress(compress('hello'));")
+
+ // COMPRESS tests
+ qt_compress_30 "SELECT compress('');"
+ testFoldConst("SELECT compress('');")
+ qt_compress_31 "SELECT compress(NULL);"
+ testFoldConst("SELECT compress(NULL);")
+
+ // UNCOMPRESS tests
+ qt_uncompress_32 "SELECT uncompress(compress('ṭṛì'));"
+ testFoldConst("SELECT uncompress(compress('ṭṛì'));")
+
+ // CONCAT_WS tests
+ qt_concat_ws_33 "SELECT CONCAT_WS(',', 'apple', 'banana', 'orange'), CONCAT_WS('-', 'hello', 'world');"
+ testFoldConst("SELECT CONCAT_WS(',', 'apple', 'banana', 'orange'), CONCAT_WS('-', 'hello', 'world');")
+ qt_concat_ws_34 "SELECT CONCAT_WS(NULL, 'd', 'is'), CONCAT_WS('or', 'd', NULL, 'is');"
+ testFoldConst("SELECT CONCAT_WS(NULL, 'd', 'is'), CONCAT_WS('or', 'd', NULL, 'is');")
+ qt_concat_ws_35 "SELECT CONCAT_WS('|', 'hello', '', 'world', NULL), CONCAT_WS(',', '', 'test', '');"
+ testFoldConst("SELECT CONCAT_WS('|', 'hello', '', 'world', NULL), CONCAT_WS(',', '', 'test', '');")
+ qt_concat_ws_36 "SELECT CONCAT_WS('x', NULL, NULL), CONCAT_WS('-', NULL, NULL, NULL);"
+ testFoldConst("SELECT CONCAT_WS('x', NULL, NULL), CONCAT_WS('-', NULL, NULL, NULL);")
+ qt_concat_ws_37 "SELECT CONCAT_WS('or', ['d', 'is']), CONCAT_WS('-', ['apple', 'banana', 'cherry']);"
+ testFoldConst("SELECT CONCAT_WS('or', ['d', 'is']), CONCAT_WS('-', ['apple', 'banana', 'cherry']);")
+ qt_concat_ws_38 "SELECT CONCAT_WS('or', ['d', NULL, 'is']), CONCAT_WS(',', [NULL, 'a', 'b', NULL, 'c']);"
+ testFoldConst("SELECT CONCAT_WS('or', ['d', NULL, 'is']), CONCAT_WS(',', [NULL, 'a', 'b', NULL, 'c']);")
+ qt_concat_ws_39 "SELECT CONCAT_WS('-', ['a', 'b'], ['c', NULL], ['d']), CONCAT_WS('|', ['x'], ['y', 'z']);"
+ testFoldConst("SELECT CONCAT_WS('-', ['a', 'b'], ['c', NULL], ['d']), CONCAT_WS('|', ['x'], ['y', 'z']);")
+ qt_concat_ws_40 "SELECT CONCAT_WS('-', ['a', 'b'], NULL, ['c', NULL], ['d']);"
+ testFoldConst("SELECT CONCAT_WS('-', ['a', 'b'], NULL, ['c', NULL], ['d']);")
+ qt_concat_ws_41 "SELECT CONCAT_WS('x', 'ṭṛì', 'ḍḍumai'), CONCAT_WS('→', ['ṭṛì', 'ḍḍumai', 'hello']);"
+ testFoldConst("SELECT CONCAT_WS('x', 'ṭṛì', 'ḍḍumai'), CONCAT_WS('→', ['ṭṛì', 'ḍḍumai', 'hello']);")
+ qt_concat_ws_42 "SELECT CONCAT_WS(',', 'Name', 'Age', 'City'), CONCAT_WS('/', 'home', 'user', 'documents', 'file.txt');"
+ testFoldConst("SELECT CONCAT_WS(',', 'Name', 'Age', 'City'), CONCAT_WS('/', 'home', 'user', 'documents', 'file.txt');")
+
+ // CONCAT tests
+ qt_concat_43 "SELECT CONCAT('a', 'b'), CONCAT('a', 'b', 'c');"
+ testFoldConst("SELECT CONCAT('a', 'b'), CONCAT('a', 'b', 'c');")
+ qt_concat_44 "SELECT CONCAT('a', NULL, 'c'), CONCAT('hello', NULL);"
+ testFoldConst("SELECT CONCAT('a', NULL, 'c'), CONCAT('hello', NULL);")
+ qt_concat_45 "SELECT CONCAT('hello', '', 'world'), CONCAT('', 'test', '');"
+ testFoldConst("SELECT CONCAT('hello', '', 'world'), CONCAT('', 'test', '');")
+ qt_concat_46 "SELECT CONCAT('User', 123), CONCAT('Price: \$', 99.99);"
+ testFoldConst("SELECT CONCAT('User', 123), CONCAT('Price: \$', 99.99);")
+ qt_concat_47 "SELECT CONCAT('A', 'B', 'C', 'D', 'E'), CONCAT('1', '2', '3', '4', '5');"
+ testFoldConst("SELECT CONCAT('A', 'B', 'C', 'D', 'E'), CONCAT('1', '2', '3', '4', '5');")
+ qt_concat_48 "SELECT CONCAT('ṭṛì', ' ', 'ḍḍumai'), CONCAT('Hello', ' ', 'ṭṛì', ' ', 'ḍḍumai');"
+ testFoldConst("SELECT CONCAT('ṭṛì', ' ', 'ḍḍumai'), CONCAT('Hello', ' ', 'ṭṛì', ' ', 'ḍḍumai');")
+ qt_concat_49 "SELECT CONCAT('/home/', 'user/', 'file.txt'), CONCAT('https://', 'www.example.com', '/api');"
+ testFoldConst("SELECT CONCAT('/home/', 'user/', 'file.txt'), CONCAT('https://', 'www.example.com', '/api');")
+ qt_concat_50 "SELECT CONCAT('user', '@', 'example.com'), CONCAT('admin.', 'support', '@', 'company.org');"
+ testFoldConst("SELECT CONCAT('user', '@', 'example.com'), CONCAT('admin.', 'support', '@', 'company.org');")
+
+ // COUNT_SUBSTRINGS tests
+ qt_count_substrings_51 "SELECT count_substrings('a1b1c1d', '1');"
+ testFoldConst("SELECT count_substrings('a1b1c1d', '1');")
+ qt_count_substrings_52 "SELECT count_substrings(',,a,b,c,', ',');"
+ testFoldConst("SELECT count_substrings(',,a,b,c,', ',');")
+ qt_count_substrings_53 "SELECT count_substrings('ccc', 'cc');"
+ testFoldConst("SELECT count_substrings('ccc', 'cc');")
+ qt_count_substrings_54 "SELECT count_substrings(NULL, ',');"
+ testFoldConst("SELECT count_substrings(NULL, ',');")
+ qt_count_substrings_55 "SELECT count_substrings('a,b,c,abcde', '');"
+ testFoldConst("SELECT count_substrings('a,b,c,abcde', '');")
+ qt_count_substrings_56 "SELECT count_substrings('ṭṛì ḍḍumai ṭṛì ti ḍḍumannàri', 'ḍḍu', 1);"
+ testFoldConst("SELECT count_substrings('ṭṛì ḍḍumai ṭṛì ti ḍḍumannàri', 'ḍḍu', 1);")
+ qt_count_substrings_57 "SELECT count_substrings('éèêëìíîïðñòó éèêëìíîïðñòó', 'éèê', 0);"
+ testFoldConst("SELECT count_substrings('éèêëìíîïðñòó éèêëìíîïðñòó', 'éèê', 0);")
+
+ // DIGITAL_MASKING tests
+ qt_digital_masking_58 "SELECT digital_masking('13812345678');"
+ testFoldConst("SELECT digital_masking('13812345678');")
+ qt_digital_masking_59 "SELECT digital_masking('1234567890');"
+ testFoldConst("SELECT digital_masking('1234567890');")
+ qt_digital_masking_60 "SELECT digital_masking('123');"
+ testFoldConst("SELECT digital_masking('123');")
+ qt_digital_masking_61 "SELECT digital_masking(NULL);"
+ testFoldConst("SELECT digital_masking(NULL);")
+ qt_digital_masking_62 "SELECT digital_masking('13812ṭṛ34678');"
+ testFoldConst("SELECT digital_masking('13812ṭṛ34678');")
+
+ // ELT tests
+ qt_elt_63 "SELECT ELT(1, 'aaa', 'bbb', 'ccc');"
+ testFoldConst("SELECT ELT(1, 'aaa', 'bbb', 'ccc');")
+ qt_elt_64 "SELECT ELT(2, 'aaa', 'bbb', 'ccc');"
+ testFoldConst("SELECT ELT(2, 'aaa', 'bbb', 'ccc');")
+ qt_elt_65 "SELECT ELT(0, 'aaa', 'bbb'), ELT(5, 'aaa', 'bbb');"
+ testFoldConst("SELECT ELT(0, 'aaa', 'bbb'), ELT(5, 'aaa', 'bbb');")
+ qt_elt_66 "SELECT ELT(NULL, 'aaa', 'bbb');"
+ testFoldConst("SELECT ELT(NULL, 'aaa', 'bbb');")
+ qt_elt_67 "SELECT ELT(5, 'aaa', 'bbb', 'ccc');"
+ testFoldConst("SELECT ELT(5, 'aaa', 'bbb', 'ccc');")
+ qt_elt_68 "SELECT ELT(-1, 'first', 'second');"
+ testFoldConst("SELECT ELT(-1, 'first', 'second');")
+ qt_elt_70 "SELECT ELT(2, 'first', '', 'third');"
+ testFoldConst("SELECT ELT(2, 'first', '', 'third');")
+
+ // ENDS_WITH tests
+ qt_ends_with_71 "SELECT ENDS_WITH('Hello doris', 'doris'), ENDS_WITH('Hello doris', 'Hello');"
+ testFoldConst("SELECT ENDS_WITH('Hello doris', 'doris'), ENDS_WITH('Hello doris', 'Hello');")
+ qt_ends_with_72 "SELECT ENDS_WITH('Hello World', 'world'), ENDS_WITH('Hello World', 'World');"
+ testFoldConst("SELECT ENDS_WITH('Hello World', 'world'), ENDS_WITH('Hello World', 'World');")
+ qt_ends_with_73 "SELECT ENDS_WITH(NULL, 'test'), ENDS_WITH('test', NULL);"
+ testFoldConst("SELECT ENDS_WITH(NULL, 'test'), ENDS_WITH('test', NULL);")
+ qt_ends_with_74 "SELECT ENDS_WITH('hello', ''), ENDS_WITH('', 'world');"
+ testFoldConst("SELECT ENDS_WITH('hello', ''), ENDS_WITH('', 'world');")
+ qt_ends_with_75 "SELECT ENDS_WITH('test', 'test'), ENDS_WITH('testing', 'test');"
+ testFoldConst("SELECT ENDS_WITH('test', 'test'), ENDS_WITH('testing', 'test');")
+ qt_ends_with_76 "SELECT ENDS_WITH('document.pdf', '.pdf'), ENDS_WITH('image.jpg', '.png');"
+ testFoldConst("SELECT ENDS_WITH('document.pdf', '.pdf'), ENDS_WITH('image.jpg', '.png');")
+ qt_ends_with_77 "SELECT ENDS_WITH('hello ṭṛì ḍḍumai', 'ḍḍumai'), ENDS_WITH('hello ṭṛì ḍḍumai', 'ṭṛì');"
+ testFoldConst("SELECT ENDS_WITH('hello ṭṛì ḍḍumai', 'ḍḍumai'), ENDS_WITH('hello ṭṛì ḍḍumai', 'ṭṛì');")
+ qt_ends_with_78 "SELECT ENDS_WITH('https://example.com/api', '/api'), ENDS_WITH('https://example.com/', '.html');"
+ testFoldConst("SELECT ENDS_WITH('https://example.com/api', '/api'), ENDS_WITH('https://example.com/', '.html');")
+ qt_ends_with_79 "SELECT ENDS_WITH('123456789', '789'), ENDS_WITH('123456789', '456');"
+ testFoldConst("SELECT ENDS_WITH('123456789', '789'), ENDS_WITH('123456789', '456');")
+ qt_ends_with_80 "SELECT ENDS_WITH('user@gmail.com', '.com'), ENDS_WITH('admin@company.org', '.com');"
+ testFoldConst("SELECT ENDS_WITH('user@gmail.com', '.com'), ENDS_WITH('admin@company.org', '.com');")
+
+ // FIND_IN_SET tests
+ qt_find_in_set_81 "SELECT FIND_IN_SET('b', 'a,b,c');"
+ testFoldConst("SELECT FIND_IN_SET('b', 'a,b,c');")
+ qt_find_in_set_82 "SELECT FIND_IN_SET('apple', 'apple,banana,cherry');"
+ testFoldConst("SELECT FIND_IN_SET('apple', 'apple,banana,cherry');")
+ qt_find_in_set_83 "SELECT FIND_IN_SET('cherry', 'apple,banana,cherry');"
+ testFoldConst("SELECT FIND_IN_SET('cherry', 'apple,banana,cherry');")
+ qt_find_in_set_84 "SELECT FIND_IN_SET('orange', 'apple,banana,cherry');"
+ testFoldConst("SELECT FIND_IN_SET('orange', 'apple,banana,cherry');")
+ qt_find_in_set_85 "SELECT FIND_IN_SET(NULL, 'a,b,c'), FIND_IN_SET('b', NULL);"
+ testFoldConst("SELECT FIND_IN_SET(NULL, 'a,b,c'), FIND_IN_SET('b', NULL);")
+ qt_find_in_set_86 "SELECT FIND_IN_SET('', 'a,b,c'), FIND_IN_SET('a', '');"
+ testFoldConst("SELECT FIND_IN_SET('', 'a,b,c'), FIND_IN_SET('a', '');")
+ qt_find_in_set_87 "SELECT FIND_IN_SET('a,b', 'a,b,c,d');"
+ testFoldConst("SELECT FIND_IN_SET('a,b', 'a,b,c,d');")
+ qt_find_in_set_88 "SELECT FIND_IN_SET('B', 'a,b,c'), FIND_IN_SET('b', 'A,B,C');"
+ testFoldConst("SELECT FIND_IN_SET('B', 'a,b,c'), FIND_IN_SET('b', 'A,B,C');")
+ qt_find_in_set_89 "SELECT FIND_IN_SET('ap', 'apple,banana,cherry');"
+ testFoldConst("SELECT FIND_IN_SET('ap', 'apple,banana,cherry');")
+ qt_find_in_set_90 "SELECT FIND_IN_SET('2', '1,2,3,10,20');"
+ testFoldConst("SELECT FIND_IN_SET('2', '1,2,3,10,20');")
+
+ // FORMAT_NUMBER tests
+ qt_format_number_91 "SELECT format_number(1500);"
+ testFoldConst("SELECT format_number(1500);")
+ qt_format_number_92 "SELECT format_number(5000000);"
+ testFoldConst("SELECT format_number(5000000);")
+ qt_format_number_93 "SELECT format_number(999);"
+ testFoldConst("SELECT format_number(999);")
+ qt_format_number_94 "SELECT format_number(NULL);"
+ testFoldConst("SELECT format_number(NULL);")
+
+ // FORMAT tests
+ qt_format_95 "SELECT format('{:.2}', pi());"
+ testFoldConst("SELECT format('{:.2}', pi());")
+ qt_format_96 "SELECT format('{0}-{1}', 'hello', 'world');"
+ testFoldConst("SELECT format('{0}-{1}', 'hello', 'world');")
+ qt_format_97 "SELECT format('{:>10}', 123);"
+ testFoldConst("SELECT format('{:>10}', 123);")
+ qt_format_98 "SELECT format('{:.2}', NULL);"
+ testFoldConst("SELECT format('{:.2}', NULL);")
+ qt_format_99 "SELECT format('{0}-{1}', 'ṭṛṭṛ', 'ṭṛ');"
+ testFoldConst("SELECT format('{0}-{1}', 'ṭṛṭṛ', 'ṭṛ');")
+
+ // FROM_BASE64 tests
+ qt_test_100 "SELECT FROM_BASE64('MQ=='), FROM_BASE64('QQ==');"
+ testFoldConst("SELECT FROM_BASE64('MQ=='), FROM_BASE64('QQ==');")
+ qt_test_101 "SELECT FROM_BASE64('MjM0'), FROM_BASE64('SGVsbG8=');"
+ testFoldConst("SELECT FROM_BASE64('MjM0'), FROM_BASE64('SGVsbG8=');")
+ qt_test_102 "SELECT FROM_BASE64(NULL);"
+ testFoldConst("SELECT FROM_BASE64(NULL);")
+ qt_test_103 "SELECT FROM_BASE64('');"
+ testFoldConst("SELECT FROM_BASE64('');")
+ qt_test_104 "SELECT FROM_BASE64('!!!'), FROM_BASE64('ABC@DEF');"
+ testFoldConst("SELECT FROM_BASE64('!!!'), FROM_BASE64('ABC@DEF');")
+ qt_test_105 "SELECT FROM_BASE64('SGVsbG8gV29ybGQ='), FROM_BASE64('VGhlIHF1aWNrIGJyb3duIGZveA==');"
+ testFoldConst("SELECT FROM_BASE64('SGVsbG8gV29ybGQ='), FROM_BASE64('VGhlIHF1aWNrIGJyb3duIGZveA==');")
+ qt_test_106 "SELECT FROM_BASE64('4bmt4bmb4bmA'), FROM_BASE64('4bmN4bmNdW1haSBoZWxsbw==');"
+ testFoldConst("SELECT FROM_BASE64('4bmt4bmb4bmA'), FROM_BASE64('4bmN4bmNdW1haSBoZWxsbw==');")
+ qt_test_107 "SELECT FROM_BASE64('dXNlckBleGFtcGxlLmNvbQ=='), FROM_BASE64('YWRtaW4udGVzdEBjb21wYW55Lm9yZw==');"
+ testFoldConst("SELECT FROM_BASE64('dXNlckBleGFtcGxlLmNvbQ=='), FROM_BASE64('YWRtaW4udGVzdEBjb21wYW55Lm9yZw==');")
+ qt_test_108 "SELECT FROM_BASE64('eyJuYW1lIjoiSm9obiIsImFnZSI6MzB9'), FROM_BASE64('WzEsMiwzLDQsNV0=');"
+ testFoldConst("SELECT FROM_BASE64('eyJuYW1lIjoiSm9obiIsImFnZSI6MzB9'), FROM_BASE64('WzEsMiwzLDQsNV0=');")
+ qt_test_109 "SELECT FROM_BASE64(TO_BASE64('Hello')), FROM_BASE64(TO_BASE64('测试'));"
+ testFoldConst("SELECT FROM_BASE64(TO_BASE64('Hello')), FROM_BASE64(TO_BASE64('测试'));")
+
+ // HEX tests
+ qt_hex_110 "SELECT HEX(12), HEX(-1);"
+ testFoldConst("SELECT HEX(12), HEX(-1);")
+ qt_hex_111 "SELECT HEX('1'), HEX('@'), HEX('12');"
+ testFoldConst("SELECT HEX('1'), HEX('@'), HEX('12');")
+ qt_hex_112 "SELECT HEX(255), HEX(65535), HEX(16777215);"
+ testFoldConst("SELECT HEX(255), HEX(65535), HEX(16777215);")
+ qt_hex_113 "SELECT HEX(NULL);"
+ testFoldConst("SELECT HEX(NULL);")
+ qt_hex_114 "SELECT HEX(0), HEX('');"
+ testFoldConst("SELECT HEX(0), HEX('');")
+ qt_hex_115 "SELECT HEX(' '), HEX('t'), HEX('n');"
+ testFoldConst("SELECT HEX(' '), HEX('t'), HEX('n');")
+ qt_hex_116 "SELECT HEX('ṭṛì'), HEX('ḍḍumai');"
+ testFoldConst("SELECT HEX('ṭṛì'), HEX('ḍḍumai');")
+ qt_hex_117 "SELECT HEX(-128), HEX(-32768);"
+ testFoldConst("SELECT HEX(-128), HEX(-32768);")
+ qt_hex_118 "SELECT HEX('A1'), HEX('Hello!');"
+ testFoldConst("SELECT HEX('A1'), HEX('Hello!');")
+
+ // INITCAP tests
+ qt_initcap_119 "SELECT INITCAP('hello world');"
+ testFoldConst("SELECT INITCAP('hello world');")
+ qt_initcap_120 "SELECT INITCAP('hELLo WoRLD');"
+ testFoldConst("SELECT INITCAP('hELLo WoRLD');")
+ qt_initcap_121 "SELECT INITCAP(NULL);"
+ testFoldConst("SELECT INITCAP(NULL);")
+ qt_initcap_122 "SELECT INITCAP('');"
+ testFoldConst("SELECT INITCAP('');")
+ qt_initcap_123 "SELECT INITCAP('hello hello.,HELLO123HELlo');"
+ testFoldConst("SELECT INITCAP('hello hello.,HELLO123HELlo');")
+ qt_initcap_124 "SELECT INITCAP('word1@word2#word3\$word4');"
+ testFoldConst("SELECT INITCAP('word1@word2#word3\$word4');")
+ qt_initcap_125 "SELECT INITCAP('ṭṛì ḍḍumai hello');"
+ testFoldConst("SELECT INITCAP('ṭṛì ḍḍumai hello');")
+ qt_initcap_126 "SELECT INITCAP('john doe'), INITCAP('MARY JANE');"
+ testFoldConst("SELECT INITCAP('john doe'), INITCAP('MARY JANE');")
+ qt_initcap_127 "SELECT INITCAP('the quick brown fox'), INITCAP('DATABASE management SYSTEM');"
+ testFoldConst("SELECT INITCAP('the quick brown fox'), INITCAP('DATABASE management SYSTEM');")
+ qt_initcap_128 "SELECT INITCAP('word1 word2--word3'), INITCAP('hello, world! how are you?');"
+ testFoldConst("SELECT INITCAP('word1 word2--word3'), INITCAP('hello, world! how are you?');")
+
+ // INSTR tests
+ qt_instr_129 "SELECT INSTR('abc', 'b'), INSTR('abc', 'd');"
+ testFoldConst("SELECT INSTR('abc', 'b'), INSTR('abc', 'd');")
+ qt_instr_130 "SELECT INSTR('hello world', 'world'), INSTR('hello world', 'WORLD');"
+ testFoldConst("SELECT INSTR('hello world', 'world'), INSTR('hello world', 'WORLD');")
+ qt_instr_131 "SELECT INSTR(NULL, 'test'), INSTR('test', NULL);"
+ testFoldConst("SELECT INSTR(NULL, 'test'), INSTR('test', NULL);")
+ qt_instr_132 "SELECT INSTR('hello', ''), INSTR('', 'world');"
+ testFoldConst("SELECT INSTR('hello', ''), INSTR('', 'world');")
+ qt_instr_133 "SELECT INSTR('abcabc', 'abc'), INSTR('banana', 'a');"
+ testFoldConst("SELECT INSTR('abcabc', 'abc'), INSTR('banana', 'a');")
+ qt_instr_134 "SELECT INSTR('user@example.com', '@'), INSTR('price: \$99.99', '\$');"
+ testFoldConst("SELECT INSTR('user@example.com', '@'), INSTR('price: \$99.99', '\$');")
+ qt_instr_135 "SELECT INSTR('ṭṛì ḍḍumai hello', 'ḍḍumai'), INSTR('ṭṛì ḍḍumai hello', 'hello');"
+ testFoldConst("SELECT INSTR('ṭṛì ḍḍumai hello', 'ḍḍumai'), INSTR('ṭṛì ḍḍumai hello', 'hello');")
+ qt_instr_136 "SELECT INSTR('123456789', '456'), INSTR('123-456-789', '-');"
+ testFoldConst("SELECT INSTR('123456789', '456'), INSTR('123-456-789', '-');")
+ qt_instr_137 "SELECT INSTR('The quick brown fox', 'quick'), INSTR('The quick brown fox', 'slow');"
+ testFoldConst("SELECT INSTR('The quick brown fox', 'quick'), INSTR('The quick brown fox', 'slow');")
+ qt_instr_138 "SELECT INSTR('/home/user/file.txt', '/'), INSTR('https://www.example.com', '://');"
+ testFoldConst("SELECT INSTR('/home/user/file.txt', '/'), INSTR('https://www.example.com', '://');")
+
+ // INT_TO_UUID tests
+ qt_int_to_uuid_139 "SELECT INT_TO_UUID(95721955514869408091759290071393952876);"
+ testFoldConst("SELECT INT_TO_UUID(95721955514869408091759290071393952876);")
+ qt_int_to_uuid_140 "SELECT INT_TO_UUID(NULL);"
+ testFoldConst("SELECT INT_TO_UUID(NULL);")
+
+ // LOWER tests
+ qt_lower_141 "SELECT LOWER('AbC123'), LCASE('AbC123');"
+ testFoldConst("SELECT LOWER('AbC123'), LCASE('AbC123');")
+ qt_lower_142 "SELECT LOWER('Hello World!'), LCASE('TEST@123');"
+ testFoldConst("SELECT LOWER('Hello World!'), LCASE('TEST@123');")
+ qt_lower_143 "SELECT LOWER(NULL), LCASE(NULL);"
+ testFoldConst("SELECT LOWER(NULL), LCASE(NULL);")
+ qt_lower_144 "SELECT LOWER(''), LCASE('');"
+ testFoldConst("SELECT LOWER(''), LCASE('');")
+ qt_lower_145 "SELECT LOWER('already lowercase'), LCASE('abc123');"
+ testFoldConst("SELECT LOWER('already lowercase'), LCASE('abc123');")
+ qt_lower_146 "SELECT LOWER('123!@#\$%'), LCASE('PRICE: \$99.99');"
+ testFoldConst("SELECT LOWER('123!@#\$%'), LCASE('PRICE: \$99.99');")
+ qt_lower_147 "SELECT LOWER('ṬṚÌ TEST'), LCASE('ḌḌUMAI HELLO');"
+ testFoldConst("SELECT LOWER('ṬṚÌ TEST'), LCASE('ḌḌUMAI HELLO');")
+
+ // LENGTH tests
+ qt_length_148 "SELECT LENGTH('abc'), CHAR_LENGTH('abc');"
+ testFoldConst("SELECT LENGTH('abc'), CHAR_LENGTH('abc');")
+ qt_length_149 "SELECT LENGTH('中国'), CHAR_LENGTH('中国');"
+ testFoldConst("SELECT LENGTH('中国'), CHAR_LENGTH('中国');")
+ qt_length_150 "SELECT LENGTH(NULL);"
+ testFoldConst("SELECT LENGTH(NULL);")
+ qt_length_151 "SELECT LENGTH('');"
+ testFoldConst("SELECT LENGTH('');")
+ qt_length_152 "SELECT LENGTH('Hello世界'), CHAR_LENGTH('Hello世界');"
+ testFoldConst("SELECT LENGTH('Hello世界'), CHAR_LENGTH('Hello世界');")
+ qt_length_153 "SELECT LENGTH('tnr'), LENGTH(' ');"
+ testFoldConst("SELECT LENGTH('tnr'), LENGTH(' ');")
+ qt_length_154 "SELECT LENGTH('ṭṛì'), CHAR_LENGTH('ṭṛì');"
+ testFoldConst("SELECT LENGTH('ṭṛì'), CHAR_LENGTH('ṭṛì');")
+ qt_length_155 "SELECT LENGTH('😀😁'), CHAR_LENGTH('😀😁');"
+ testFoldConst("SELECT LENGTH('😀😁'), CHAR_LENGTH('😀😁');")
+ qt_length_156 "SELECT LENGTH('12345'), CHAR_LENGTH('12345');"
+ testFoldConst("SELECT LENGTH('12345'), CHAR_LENGTH('12345');")
+
+ // LOCATE tests
+ qt_locate_157 "SELECT LOCATE('bar', 'foobarbar'), LOCATE('xbar', 'foobar'), LOCATE('bar', 'foobarbar', 5);"
+ testFoldConst("SELECT LOCATE('bar', 'foobarbar'), LOCATE('xbar', 'foobar'), LOCATE('bar', 'foobarbar', 5);")
+ qt_locate_158 "SELECT LOCATE('f', 'foobar'), LOCATE('r', 'foobar');"
+ testFoldConst("SELECT LOCATE('f', 'foobar'), LOCATE('r', 'foobar');")
+ qt_locate_159 "SELECT LOCATE('xyz', 'foobar'), LOCATE('FOO', 'foobar');"
+ testFoldConst("SELECT LOCATE('xyz', 'foobar'), LOCATE('FOO', 'foobar');")
+ qt_locate_160 "SELECT LOCATE(NULL, 'foobar'), LOCATE('foo', NULL), LOCATE(NULL, NULL);"
+ testFoldConst("SELECT LOCATE(NULL, 'foobar'), LOCATE('foo', NULL), LOCATE(NULL, NULL);")
+ qt_locate_161 "SELECT LOCATE('', 'foobar'), LOCATE('foo', ''), LOCATE('', '');"
+ testFoldConst("SELECT LOCATE('', 'foobar'), LOCATE('foo', ''), LOCATE('', '');")
+ qt_locate_162 "SELECT LOCATE('o', 'foobar', 1), LOCATE('o', 'foobar', 2), LOCATE('o', 'foobar', 4);"
+ testFoldConst("SELECT LOCATE('o', 'foobar', 1), LOCATE('o', 'foobar', 2), LOCATE('o', 'foobar', 4);")
+ qt_locate_163 "SELECT LOCATE('foo', 'foobar', 0), LOCATE('foo', 'foobar', -1), LOCATE('foo', 'foobar', 10);"
+ testFoldConst("SELECT LOCATE('foo', 'foobar', 0), LOCATE('foo', 'foobar', -1), LOCATE('foo', 'foobar', 10);")
+ qt_locate_164 "SELECT LOCATE('ṛì', 'ṭṛì ḍḍumai'), LOCATE('ḍḍu', 'ṭṛì ḍḍumai');"
+ testFoldConst("SELECT LOCATE('ṛì', 'ṭṛì ḍḍumai'), LOCATE('ḍḍu', 'ṭṛì ḍḍumai');")
+ qt_locate_165 "SELECT LOCATE('BAR', 'foobar'), LOCATE('Bar', 'foobar'), LOCATE('bar', 'fooBAR');"
+ testFoldConst("SELECT LOCATE('BAR', 'foobar'), LOCATE('Bar', 'foobar'), LOCATE('bar', 'fooBAR');")
+ qt_locate_166 "SELECT LOCATE('', 'foobar', 3), LOCATE('', 'foobar', 7), LOCATE('', '', 1);"
+ testFoldConst("SELECT LOCATE('', 'foobar', 3), LOCATE('', 'foobar', 7), LOCATE('', '', 1);")
+
+ // LPAD tests
+ qt_lpad_167 "SELECT LPAD('hi', 5, 'xy'), LPAD('hello', 8, '*');"
+ testFoldConst("SELECT LPAD('hi', 5, 'xy'), LPAD('hello', 8, '*');")
+ qt_lpad_168 "SELECT LPAD('hi', 1, 'xy'), LPAD('hello world', 5, 'x');"
+ testFoldConst("SELECT LPAD('hi', 1, 'xy'), LPAD('hello world', 5, 'x');")
+ qt_lpad_169 "SELECT LPAD(NULL, 5, 'x'), LPAD('hi', NULL, 'x'), LPAD('hi', 5, NULL);"
+ testFoldConst("SELECT LPAD(NULL, 5, 'x'), LPAD('hi', NULL, 'x'), LPAD('hi', 5, NULL);")
+ qt_lpad_170 "SELECT LPAD('', 0, ''), LPAD('hi', 0, 'x'), LPAD('', 5, '*');"
+ testFoldConst("SELECT LPAD('', 0, ''), LPAD('hi', 0, 'x'), LPAD('', 5, '*');")
+ qt_lpad_171 "SELECT LPAD('hello', 10, ''), LPAD('hi', 2, '');"
+ testFoldConst("SELECT LPAD('hello', 10, ''), LPAD('hi', 2, '');")
+ qt_lpad_172 "SELECT LPAD('123', 10, 'abc'), LPAD('X', 7, 'HELLO');"
+ testFoldConst("SELECT LPAD('123', 10, 'abc'), LPAD('X', 7, 'HELLO');")
+ qt_lpad_173 "SELECT LPAD('hello', 10, 'ṭṛì'), LPAD('ḍḍumai', 3, 'x');"
+ testFoldConst("SELECT LPAD('hello', 10, 'ṭṛì'), LPAD('ḍḍumai', 3, 'x');")
+ qt_lpad_174 "SELECT LPAD('42', 6, '0'), LPAD('1234', 8, '0');"
+ testFoldConst("SELECT LPAD('42', 6, '0'), LPAD('1234', 8, '0');")
+ qt_lpad_175 "SELECT LPAD('hello', -1, 'x'), LPAD('test', -5, '*');"
+ testFoldConst("SELECT LPAD('hello', -1, 'x'), LPAD('test', -5, '*');")
+
+ // LTRIM tests
+ qt_ltrim_176 "SELECT LTRIM(' ab d');"
+ testFoldConst("SELECT LTRIM(' ab d');")
+ qt_ltrim_177 "SELECT LTRIM('ababccaab', 'ab');"
+ testFoldConst("SELECT LTRIM('ababccaab', 'ab');")
+ qt_ltrim_178 "SELECT LTRIM(' tn hello world');"
+ testFoldConst("SELECT LTRIM(' tn hello world');")
+ qt_ltrim_179 "SELECT LTRIM(NULL), LTRIM('test', NULL);"
+ testFoldConst("SELECT LTRIM(NULL), LTRIM('test', NULL);")
+ qt_ltrim_180 "SELECT LTRIM(''), LTRIM('test', '');"
+ testFoldConst("SELECT LTRIM(''), LTRIM('test', '');")
+ qt_ltrim_181 "SELECT LTRIM('abcdefg', 'abc'), LTRIM('123456', '12');"
+ testFoldConst("SELECT LTRIM('abcdefg', 'abc'), LTRIM('123456', '12');")
+ qt_ltrim_182 "SELECT LTRIM('aaaaa', 'a'), LTRIM(' ', ' ');"
+ testFoldConst("SELECT LTRIM('aaaaa', 'a'), LTRIM(' ', ' ');")
+ qt_ltrim_183 "SELECT LTRIM('ṭṛìṭṛì test', 'ṭṛì'), LTRIM('ḍḍuḍḍu hello', 'ḍu');"
+ testFoldConst("SELECT LTRIM('ṭṛìṭṛì test', 'ṭṛì'), LTRIM('ḍḍuḍḍu hello', 'ḍu');")
+ qt_ltrim_184 "SELECT LTRIM('000123', '0'), LTRIM('123abc123', '123');"
+ testFoldConst("SELECT LTRIM('000123', '0'), LTRIM('123abc123', '123');")
+ qt_ltrim_185 "SELECT LTRIM('---text---', '-'), LTRIM('@@hello@@', '@');"
+ testFoldConst("SELECT LTRIM('---text---', '-'), LTRIM('@@hello@@', '@');")
+
+ // MAKE_SET tests
+ qt_make_set_186 "SELECT make_set(3, 'dog', 'cat', 'bird');"
+ testFoldConst("SELECT make_set(3, 'dog', 'cat', 'bird');")
+ qt_make_set_187 "SELECT make_set(5, NULL, 'warm', 'hot');"
+ testFoldConst("SELECT make_set(5, NULL, 'warm', 'hot');")
+ qt_make_set_188 "SELECT make_set(0, 'hello', 'world');"
+ testFoldConst("SELECT make_set(0, 'hello', 'world');")
+ qt_make_set_189 "SELECT make_set(NULL, 'a', 'b', 'c');"
+ testFoldConst("SELECT make_set(NULL, 'a', 'b', 'c');")
+ qt_make_set_190 "SELECT make_set(15, 'first', 'second');"
+ testFoldConst("SELECT make_set(15, 'first', 'second');")
+ qt_make_set_191 "SELECT make_set(7, 'ṭṛì', 'ḍḍumai', 'test');"
+ testFoldConst("SELECT make_set(7, 'ṭṛì', 'ḍḍumai', 'test');")
+
+ // MASK_FIRST_N tests
+ qt_mask_first_n_192 "SELECT mask_first_n('1234-5678', 4);"
+ testFoldConst("SELECT mask_first_n('1234-5678', 4);")
+ qt_mask_first_n_193 "SELECT mask_first_n('abc123');"
+ testFoldConst("SELECT mask_first_n('abc123');")
+ qt_mask_first_n_194 "SELECT mask_first_n('Hello', 100);"
+ testFoldConst("SELECT mask_first_n('Hello', 100);")
+ qt_mask_first_n_195 "SELECT mask_first_n(NULL, 5);"
+ testFoldConst("SELECT mask_first_n(NULL, 5);")
+ qt_mask_first_n_196 "SELECT mask_first_n('Hello123', 0);"
+ testFoldConst("SELECT mask_first_n('Hello123', 0);")
+ qt_mask_first_n_197 "SELECT mask_first_n('Test', 100);"
+ testFoldConst("SELECT mask_first_n('Test', 100);")
+ qt_mask_first_n_198 "SELECT mask_first_n('user@example.com', 6);"
+ testFoldConst("SELECT mask_first_n('user@example.com', 6);")
+ qt_mask_first_n_199 "SELECT mask_first_n('13812345678', 3);"
+ testFoldConst("SELECT mask_first_n('13812345678', 3);")
+ qt_mask_first_n_200 "SELECT mask_first_n('Abc-123-XYZ', 7);"
+ testFoldConst("SELECT mask_first_n('Abc-123-XYZ', 7);")
+ qt_mask_first_n_201 "SELECT mask_first_n('ṭṛWorld123', 7);"
+ testFoldConst("SELECT mask_first_n('ṭṛWorld123', 7);")
+
+ // MASK_LAST_N tests
+ qt_mask_last_n_202 "SELECT mask_last_n('1234-5678', 4);"
+ testFoldConst("SELECT mask_last_n('1234-5678', 4);")
+ qt_mask_last_n_203 "SELECT mask_last_n('abc123');"
+ testFoldConst("SELECT mask_last_n('abc123');")
+ qt_mask_last_n_204 "SELECT mask_last_n('Hello', 100);"
+ testFoldConst("SELECT mask_last_n('Hello', 100);")
+ qt_mask_last_n_205 "SELECT mask_last_n(NULL, 5);"
+ testFoldConst("SELECT mask_last_n(NULL, 5);")
+ qt_mask_last_n_206 "SELECT mask_last_n('Hello123', 0);"
+ testFoldConst("SELECT mask_last_n('Hello123', 0);")
+ qt_mask_last_n_207 "SELECT mask_last_n('Test', 100);"
+ testFoldConst("SELECT mask_last_n('Test', 100);")
+ qt_mask_last_n_208 "SELECT mask_last_n('user@example.com', 11);"
+ testFoldConst("SELECT mask_last_n('user@example.com', 11);")
+ qt_mask_last_n_209 "SELECT mask_last_n('13812345678', 4);"
+ testFoldConst("SELECT mask_last_n('13812345678', 4);")
+ qt_mask_last_n_210 "SELECT mask_last_n('ABC-123-xyz', 7);"
+ testFoldConst("SELECT mask_last_n('ABC-123-xyz', 7);")
+ qt_mask_last_n_211 "SELECT mask_last_n('Helloṭṛ123', 9);"
+ testFoldConst("SELECT mask_last_n('Helloṭṛ123', 9);")
+
+ // MASK tests
+ qt_mask_212 "SELECT mask('abc123XYZ');"
+ testFoldConst("SELECT mask('abc123XYZ');")
+ qt_mask_213 "SELECT mask('abc123XYZ', '*', '#', '\$');"
+ testFoldConst("SELECT mask('abc123XYZ', '*', '#', '\$');")
+ qt_mask_214 "SELECT mask('Hello-123!');"
+ testFoldConst("SELECT mask('Hello-123!');")
+ qt_mask_215 "SELECT mask(NULL);"
+ testFoldConst("SELECT mask(NULL);")
+ qt_mask_216 "SELECT mask('1234567890');"
+ testFoldConst("SELECT mask('1234567890');")
+ qt_mask_217 "SELECT mask('AbCdEfGh');"
+ testFoldConst("SELECT mask('AbCdEfGh');")
+ qt_mask_218 "SELECT mask('');"
+ testFoldConst("SELECT mask('');")
+ qt_mask_219 "SELECT mask('Test123', 'ABC', 'xyz', '999');"
+ testFoldConst("SELECT mask('Test123', 'ABC', 'xyz', '999');")
+ qt_mask_220 "SELECT mask('1234-5678-9012-3456');"
+ testFoldConst("SELECT mask('1234-5678-9012-3456');")
+ qt_mask_221 "SELECT mask('user@example.com');"
+ testFoldConst("SELECT mask('user@example.com');")
+
+ // MULTI_SEARCH_ALL_POSITIONS tests
+ qt_multi_search_all_positions_222 "SELECT multi_search_all_positions('Hello, World!', ['Hello', 'World']);"
+ testFoldConst("SELECT multi_search_all_positions('Hello, World!', ['Hello', 'World']);")
+ qt_multi_search_all_positions_223 "SELECT multi_search_all_positions('Hello, World!', ['hello', '!', 'world']);"
+ testFoldConst("SELECT multi_search_all_positions('Hello, World!', ['hello', '!', 'world']);")
+ qt_multi_search_all_positions_224 "SELECT multi_search_all_positions('Hello, World!', ['Hello', '!', 'xyz']);"
+ testFoldConst("SELECT multi_search_all_positions('Hello, World!', ['Hello', '!', 'xyz']);")
+ qt_multi_search_all_positions_225 "SELECT multi_search_all_positions('Hello', []);"
+ testFoldConst("SELECT multi_search_all_positions('Hello', []);")
+ qt_multi_search_all_positions_226 "SELECT multi_search_all_positions('ṭṛì ḍḍumai Hello', ['ṭṛì', 'Hello', 'test']);"
+ testFoldConst("SELECT multi_search_all_positions('ṭṛì ḍḍumai Hello', ['ṭṛì', 'Hello', 'test']);")
+
+ // NGRAM_SEARCH tests
+ qt_ngram_search_227 "SELECT ngram_search('123456789', '12345', 3);"
+ testFoldConst("SELECT ngram_search('123456789', '12345', 3);")
+ qt_ngram_search_228 "SELECT ngram_search('abababab', 'babababa', 2);"
+ testFoldConst("SELECT ngram_search('abababab', 'babababa', 2);")
+ qt_ngram_search_229 "SELECT ngram_search('ab', 'abc', 3);"
+ testFoldConst("SELECT ngram_search('ab', 'abc', 3);")
+ qt_ngram_search_230 "SELECT ngram_search(NULL, 'test', 2);"
+ testFoldConst("SELECT ngram_search(NULL, 'test', 2);")
+
+ // OVERLAY tests
+ qt_overlay_231 "SELECT overlay('Quadratic', 3, 4, 'What');"
+ testFoldConst("SELECT overlay('Quadratic', 3, 4, 'What');")
+ qt_overlay_232 "SELECT overlay('Quadratic', 2, -1, 'Hi');"
+ testFoldConst("SELECT overlay('Quadratic', 2, -1, 'Hi');")
+ qt_overlay_233 "SELECT overlay('Hello', 10, 2, 'X');"
+ testFoldConst("SELECT overlay('Hello', 10, 2, 'X');")
+ qt_overlay_234 "SELECT overlay('Hello', NULL, 2, 'X');"
+ testFoldConst("SELECT overlay('Hello', NULL, 2, 'X');")
+
+ // PARSE_DATA_SIZE tests
+ qt_parse_data_size_235 "SELECT parse_data_size('1024B');"
+ testFoldConst("SELECT parse_data_size('1024B');")
+ qt_parse_data_size_236 "SELECT parse_data_size('1kB');"
+ testFoldConst("SELECT parse_data_size('1kB');")
+ qt_parse_data_size_237 "SELECT parse_data_size('2.5MB');"
+ testFoldConst("SELECT parse_data_size('2.5MB');")
+ qt_parse_data_size_238 "SELECT parse_data_size('1GB');"
+ testFoldConst("SELECT parse_data_size('1GB');")
+ qt_parse_data_size_239 "SELECT parse_data_size('1TB');"
+ testFoldConst("SELECT parse_data_size('1TB');")
+ qt_parse_data_size_241 "SELECT parse_data_size(NUll);"
+ testFoldConst("SELECT parse_data_size(NUll);")
+
+ // POSITION tests
+ qt_position_242 "SELECT POSITION('bar' IN 'foobarbar'), POSITION('bar', 'foobarbar');"
+ testFoldConst("SELECT POSITION('bar' IN 'foobarbar'), POSITION('bar', 'foobarbar');")
+ qt_position_243 "SELECT POSITION('bar', 'foobarbar', 5), POSITION('xbar', 'foobar');"
+ testFoldConst("SELECT POSITION('bar', 'foobarbar', 5), POSITION('xbar', 'foobar');")
+ qt_position_244 "SELECT POSITION('test' IN NULL), POSITION(NULL, 'test');"
+ testFoldConst("SELECT POSITION('test' IN NULL), POSITION(NULL, 'test');")
+ qt_position_245 "SELECT POSITION('' IN 'hello'), POSITION('world' IN '');"
+ testFoldConst("SELECT POSITION('' IN 'hello'), POSITION('world' IN '');")
+ qt_position_246 "SELECT POSITION('World' IN 'Hello World'), POSITION('world' IN 'Hello World');"
+ testFoldConst("SELECT POSITION('World' IN 'Hello World'), POSITION('world' IN 'Hello World');")
+ qt_position_247 "SELECT POSITION('a', 'banana', 1), POSITION('a', 'banana', 3);"
+ testFoldConst("SELECT POSITION('a', 'banana', 1), POSITION('a', 'banana', 3);")
+ qt_position_248 "SELECT POSITION('ḍḍumai' IN 'ṭṛì ḍḍumai hello'), POSITION('hello', 'ṭṛì ḍḍumai hello', 8);"
+ testFoldConst("SELECT POSITION('ḍḍumai' IN 'ṭṛì ḍḍumai hello'), POSITION('hello', 'ṭṛì ḍḍumai hello', 8);")
+ qt_position_249 "SELECT POSITION('@' IN 'user@domain.com'), POSITION('.', 'user@domain.com', 10);"
+ testFoldConst("SELECT POSITION('@' IN 'user@domain.com'), POSITION('.', 'user@domain.com', 10);")
+ qt_position_250 "SELECT POSITION('test', 'hello world', 20), POSITION('test', 'hello world', 0);"
+ testFoldConst("SELECT POSITION('test', 'hello world', 20), POSITION('test', 'hello world', 0);")
+ qt_position_251 "SELECT POSITION('123' IN '456123789'), POSITION('-', 'phone: 123-456-7890', 11);"
+ testFoldConst("SELECT POSITION('123' IN '456123789'), POSITION('-', 'phone: 123-456-7890', 11);")
+
+ // QUOTE tests
+ qt_quote_252 "SELECT quote('hello');"
+ testFoldConst("SELECT quote('hello');")
+ qt_quote_253 "SELECT quote('It is a test');"
+ testFoldConst("SELECT quote('It is a test');")
+ qt_quote_254 "SELECT quote(NULL);"
+ testFoldConst("SELECT quote(NULL);")
+ qt_quote_255 "SELECT quote('');"
+ testFoldConst("SELECT quote('');")
+ qt_quote_256 "SELECT quote('aaa\\\\');"
+ testFoldConst("SELECT quote('aaa\\\\');")
+ qt_quote_257 "SELECT quote('aaacccb');"
+ testFoldConst("SELECT quote('aaacccb');")
+
+ // RANDOM_BYTES tests - Skipped (non-deterministic results)
+
+ // REPEAT tests
+ qt_repeat_263 "SELECT REPEAT('a', 3);"
+ testFoldConst("SELECT REPEAT('a', 3);")
+ qt_repeat_264 "SELECT REPEAT('hello', 2);"
+ testFoldConst("SELECT REPEAT('hello', 2);")
+ qt_repeat_265 "SELECT REPEAT('test', 0);"
+ testFoldConst("SELECT REPEAT('test', 0);")
+ qt_repeat_266 "SELECT REPEAT('a', -1);"
+ testFoldConst("SELECT REPEAT('a', -1);")
+ qt_repeat_267 "SELECT REPEAT(NULL, 3), REPEAT('a', NULL);"
+ testFoldConst("SELECT REPEAT(NULL, 3), REPEAT('a', NULL);")
+ qt_repeat_268 "SELECT REPEAT('', 5);"
+ testFoldConst("SELECT REPEAT('', 5);")
+ qt_repeat_269 "SELECT REPEAT('-', 10), REPEAT('*', 5);"
+ testFoldConst("SELECT REPEAT('-', 10), REPEAT('*', 5);")
+ qt_repeat_270 "SELECT REPEAT('ṭṛì', 3), REPEAT('ḍḍu', 2);"
+ testFoldConst("SELECT REPEAT('ṭṛì', 3), REPEAT('ḍḍu', 2);")
+ qt_repeat_271 "SELECT REPEAT('123', 3), REPEAT('@#', 4);"
+ testFoldConst("SELECT REPEAT('123', 3), REPEAT('@#', 4);")
+ qt_repeat_272 "SELECT REPEAT('ṭṛìṭṛì', 3);"
+ testFoldConst("SELECT REPEAT('ṭṛìṭṛì', 3);")
+
+ // REPLACE_EMPTY tests
+ qt_replace_empty_273 "SELECT replace_empty('abc', '', 'x');"
+ testFoldConst("SELECT replace_empty('abc', '', 'x');")
+ qt_replace_empty_274 "SELECT replace_empty('hello', 'l', 'L');"
+ testFoldConst("SELECT replace_empty('hello', 'l', 'L');")
+ qt_replace_empty_275 "SELECT replace_empty('', '', 'x');"
+ testFoldConst("SELECT replace_empty('', '', 'x');")
+ qt_replace_empty_276 "SELECT replace_empty(NULL, 'old', 'new');"
+ testFoldConst("SELECT replace_empty(NULL, 'old', 'new');")
+ qt_replace_empty_277 "SELECT replace_empty('hello', 'l', 'ṭṛìṭ');"
+ testFoldConst("SELECT replace_empty('hello', 'l', 'ṭṛìṭ');")
+
+ // REPLACE tests
+ qt_replace_278 "SELECT REPLACE('hello world', 'world', 'universe');"
+ testFoldConst("SELECT REPLACE('hello world', 'world', 'universe');")
+ qt_replace_279 "SELECT REPLACE('apple apple apple', 'apple', 'orange');"
+ testFoldConst("SELECT REPLACE('apple apple apple', 'apple', 'orange');")
+ qt_replace_280 "SELECT REPLACE('banana', 'a', '');"
+ testFoldConst("SELECT REPLACE('banana', 'a', '');")
+ qt_replace_281 "SELECT REPLACE(NULL, 'old', 'new'), REPLACE('test', NULL, 'new'), REPLACE('test', 'old', NULL);"
+ testFoldConst("SELECT REPLACE(NULL, 'old', 'new'), REPLACE('test', NULL, 'new'), REPLACE('test', 'old', NULL);")
+ qt_replace_282 "SELECT REPLACE('', 'old', 'new'), REPLACE('test', '', 'new'), REPLACE('test', 'old', '');"
+ testFoldConst("SELECT REPLACE('', 'old', 'new'), REPLACE('test', '', 'new'), REPLACE('test', 'old', '');")
+ qt_replace_283 "SELECT REPLACE('Hello HELLO hello', 'hello', 'hi');"
+ testFoldConst("SELECT REPLACE('Hello HELLO hello', 'hello', 'hi');")
+ qt_replace_284 "SELECT REPLACE('hello world', 'xyz', 'abc');"
+ testFoldConst("SELECT REPLACE('hello world', 'xyz', 'abc');")
+ qt_replace_285 "SELECT REPLACE('ṭṛì ḍḍumai test ṭṛì ḍḍumannàri', 'ṭṛì', 'replaced');"
+ testFoldConst("SELECT REPLACE('ṭṛì ḍḍumai test ṭṛì ḍḍumannàri', 'ṭṛì', 'replaced');")
+ qt_replace_286 "SELECT REPLACE('123123123', '123', 'ABC');"
+ testFoldConst("SELECT REPLACE('123123123', '123', 'ABC');")
+
+ // REVERSE tests
+ qt_reverse_287 "SELECT REVERSE('hello');"
+ testFoldConst("SELECT REVERSE('hello');")
+ qt_reverse_288 "SELECT REVERSE(['hello', 'world']);"
+ testFoldConst("SELECT REVERSE(['hello', 'world']);")
+ qt_reverse_289 "SELECT REVERSE(NULL);"
+ testFoldConst("SELECT REVERSE(NULL);")
+ qt_reverse_290 "SELECT REVERSE(''), REVERSE([]);"
+ testFoldConst("SELECT REVERSE(''), REVERSE([]);")
+ qt_reverse_291 "SELECT REVERSE('A'), REVERSE(['single']);"
+ testFoldConst("SELECT REVERSE('A'), REVERSE(['single']);")
+ qt_reverse_292 "SELECT REVERSE('12345'), REVERSE('!@#\$%');"
+ testFoldConst("SELECT REVERSE('12345'), REVERSE('!@#\$%');")
+ qt_reverse_293 "SELECT REVERSE('ṭṛì ḍḍumai'), REVERSE('ḍḍumannàri');"
+ testFoldConst("SELECT REVERSE('ṭṛì ḍḍumai'), REVERSE('ḍḍumannàri');")
+ qt_reverse_294 "SELECT REVERSE('Hello123'), REVERSE('test@email.com');"
+ testFoldConst("SELECT REVERSE('Hello123'), REVERSE('test@email.com');")
+ qt_reverse_295 "SELECT REVERSE([1, 2, 3, 4, 5]), REVERSE(['a', 'b', 'c']);"
+ testFoldConst("SELECT REVERSE([1, 2, 3, 4, 5]), REVERSE(['a', 'b', 'c']);")
+ qt_reverse_296 "SELECT REVERSE('level'), REVERSE('12321');"
+ testFoldConst("SELECT REVERSE('level'), REVERSE('12321');")
+
+ // RPAD tests
+ qt_rpad_297 "SELECT RPAD('hi', 5, 'xy'), RPAD('hello', 8, '*');"
+ testFoldConst("SELECT RPAD('hi', 5, 'xy'), RPAD('hello', 8, '*');")
+ qt_rpad_298 "SELECT RPAD('hello', 1, ''), RPAD('hello world', 5, 'x');"
+ testFoldConst("SELECT RPAD('hello', 1, ''), RPAD('hello world', 5, 'x');")
+ qt_rpad_299 "SELECT RPAD(NULL, 5, 'x'), RPAD('hi', NULL, 'x'), RPAD('hi', 5, NULL);"
+ testFoldConst("SELECT RPAD(NULL, 5, 'x'), RPAD('hi', NULL, 'x'), RPAD('hi', 5, NULL);")
+ qt_rpad_300 "SELECT RPAD('', 0, ''), RPAD('hi', 0, 'x'), RPAD('', 5, '*');"
+ testFoldConst("SELECT RPAD('', 0, ''), RPAD('hi', 0, 'x'), RPAD('', 5, '*');")
+ qt_rpad_301 "SELECT RPAD('hello', 10, ''), RPAD('hi', 2, '');"
+ testFoldConst("SELECT RPAD('hello', 10, ''), RPAD('hi', 2, '');")
+ qt_rpad_302 "SELECT RPAD('hello', 10, 'world'), RPAD('X', 7, 'ABC');"
+ testFoldConst("SELECT RPAD('hello', 10, 'world'), RPAD('X', 7, 'ABC');")
+ qt_rpad_303 "SELECT RPAD('hello', 10, 'ṭṛì'), RPAD('ḍḍumai', 3, 'x');"
+ testFoldConst("SELECT RPAD('hello', 10, 'ṭṛì'), RPAD('ḍḍumai', 3, 'x');")
+ qt_rpad_304 "SELECT RPAD('\$99', 8, '.'), RPAD('Item1', 10, ' ');"
+ testFoldConst("SELECT RPAD('\$99', 8, '.'), RPAD('Item1', 10, ' ');")
+ qt_rpad_305 "SELECT RPAD('Name', 15, ' '), RPAD('Price', 10, ' ');"
+ testFoldConst("SELECT RPAD('Name', 15, ' '), RPAD('Price', 10, ' ');")
+ qt_rpad_306 "SELECT RPAD('hello', -1, 'x'), RPAD('test', -5, '*');"
+ testFoldConst("SELECT RPAD('hello', -1, 'x'), RPAD('test', -5, '*');")
+
+ // RTRIM_IN tests
+ qt_rtrim_in_307 "SELECT rtrim_in('ab d ') str;"
+ testFoldConst("SELECT rtrim_in('ab d ') str;")
+ qt_rtrim_in_308 "SELECT rtrim_in('ababccaab', 'ab') str;"
+ testFoldConst("SELECT rtrim_in('ababccaab', 'ab') str;")
+ qt_rtrim_in_309 "SELECT rtrim_in('ababccaab', 'ab'), rtrim('ababccaab', 'ab');"
+ testFoldConst("SELECT rtrim_in('ababccaab', 'ab'), rtrim('ababccaab', 'ab');")
+ qt_rtrim_in_310 "SELECT rtrim_in('Helloabc', 'cba');"
+ testFoldConst("SELECT rtrim_in('Helloabc', 'cba');")
+ qt_rtrim_in_311 "SELECT rtrim_in('ṭṛì ḍḍumai+++', '+');"
+ testFoldConst("SELECT rtrim_in('ṭṛì ḍḍumai+++', '+');")
+ qt_rtrim_in_312 "SELECT rtrim_in(NULL, 'abc');"
+ testFoldConst("SELECT rtrim_in(NULL, 'abc');")
+ qt_rtrim_in_313 "SELECT rtrim_in('', 'abc'),rtrim_in('abc', '');"
+ testFoldConst("SELECT rtrim_in('', 'abc'),rtrim_in('abc', '');")
+
+ // RTRIM tests
+ qt_rtrim_314 "SELECT RTRIM('ab d ');"
+ testFoldConst("SELECT RTRIM('ab d ');")
+ qt_rtrim_315 "SELECT RTRIM('ababccaab', 'ab');"
+ testFoldConst("SELECT RTRIM('ababccaab', 'ab');")
+ qt_rtrim_316 "SELECT RTRIM('hello world tn ');"
+ testFoldConst("SELECT RTRIM('hello world tn ');")
+ qt_rtrim_317 "SELECT RTRIM(NULL), RTRIM('test', NULL);"
+ testFoldConst("SELECT RTRIM(NULL), RTRIM('test', NULL);")
+ qt_rtrim_318 "SELECT RTRIM(''), RTRIM('test', '');"
+ testFoldConst("SELECT RTRIM(''), RTRIM('test', '');")
+ qt_rtrim_319 "SELECT RTRIM('abcdefg', 'efg'), RTRIM('123456', '56');"
+ testFoldConst("SELECT RTRIM('abcdefg', 'efg'), RTRIM('123456', '56');")
+ qt_rtrim_320 "SELECT RTRIM('aaaaa', 'a'), RTRIM(' ', ' ');"
+ testFoldConst("SELECT RTRIM('aaaaa', 'a'), RTRIM(' ', ' ');")
+ qt_rtrim_321 "SELECT RTRIM('test ṭṛìṭṛì', 'ṭṛì'), RTRIM('hello ḍḍuḍḍ', 'ḍ');"
+ testFoldConst("SELECT RTRIM('test ṭṛìṭṛì', 'ṭṛì'), RTRIM('hello ḍḍuḍḍ', 'ḍ');")
+ qt_rtrim_322 "SELECT RTRIM('123000', '0'), RTRIM('123abc123', '123');"
+ testFoldConst("SELECT RTRIM('123000', '0'), RTRIM('123abc123', '123');")
+ qt_rtrim_323 "SELECT RTRIM('---text---', '-'), RTRIM('@@hello@@', '@');"
+ testFoldConst("SELECT RTRIM('---text---', '-'), RTRIM('@@hello@@', '@');")
+
+ // SOUNDEX tests
+ qt_soundex_324 "SELECT soundex('Doris');"
+ testFoldConst("SELECT soundex('Doris');")
+ qt_soundex_325 "SELECT soundex('Smith'), soundex('Smyth');"
+ testFoldConst("SELECT soundex('Smith'), soundex('Smyth');")
+ qt_soundex_326 "SELECT soundex('');"
+ testFoldConst("SELECT soundex('');")
+ qt_soundex_327 "SELECT soundex(NULL);"
+ testFoldConst("SELECT soundex(NULL);")
+ qt_soundex_328 "SELECT soundex('');"
+ testFoldConst("SELECT soundex('');")
+ qt_soundex_329 "SELECT soundex('123@*%');"
+ testFoldConst("SELECT soundex('123@*%');")
+ qt_soundex_330 "SELECT soundex('R@b-e123rt'), soundex('Robert');"
+ testFoldConst("SELECT soundex('R@b-e123rt'), soundex('Robert');")
+ // SOUNDEX tests with non-ASCII characters - Skipped (not supported)
+
+ // SPACE tests
+ qt_space_333 "SELECT space(5);"
+ testFoldConst("SELECT space(5);")
+ qt_space_334 "SELECT space(0), space(-5);"
+ testFoldConst("SELECT space(0), space(-5);")
+ qt_space_335 "SELECT space(NULL);"
+ testFoldConst("SELECT space(NULL);")
+ qt_concat_336 "SELECT CONCAT('Hello', space(3), 'World');"
+ testFoldConst("SELECT CONCAT('Hello', space(3), 'World');")
+
+ // SPLIT_BY_REGEXP tests
+ qt_split_by_regexp_337 "SELECT SPLIT_BY_REGEXP('abcde', '');"
+ testFoldConst("SELECT SPLIT_BY_REGEXP('abcde', '');")
+ qt_split_by_regexp_338 "SELECT SPLIT_BY_REGEXP('a12bc23de345f', '\\\\d+');"
+ testFoldConst("SELECT SPLIT_BY_REGEXP('a12bc23de345f', '\\\\d+');")
+ qt_split_by_regexp_339 "SELECT SPLIT_BY_REGEXP(NULL, '\\\\d+'), SPLIT_BY_REGEXP('test', NULL);"
+ testFoldConst("SELECT SPLIT_BY_REGEXP(NULL, '\\\\d+'), SPLIT_BY_REGEXP('test', NULL);")
+ qt_split_by_regexp_340 "SELECT SPLIT_BY_REGEXP('', ','), SPLIT_BY_REGEXP('hello', 'xyz');"
+ testFoldConst("SELECT SPLIT_BY_REGEXP('', ','), SPLIT_BY_REGEXP('hello', 'xyz');")
+ qt_split_by_regexp_341 "SELECT SPLIT_BY_REGEXP('a,b,c,d,e', ',', 3), SPLIT_BY_REGEXP('1-2-3-4-5', '-', 2);"
+ testFoldConst("SELECT SPLIT_BY_REGEXP('a,b,c,d,e', ',', 3), SPLIT_BY_REGEXP('1-2-3-4-5', '-', 2);")
+ qt_split_by_regexp_342 "SELECT SPLIT_BY_REGEXP('hello world test', '\\\\s+'), SPLIT_BY_REGEXP('atbncrd', '\\\\s');"
+ testFoldConst("SELECT SPLIT_BY_REGEXP('hello world test', '\\\\s+'), SPLIT_BY_REGEXP('atbncrd', '\\\\s');")
+ qt_split_by_regexp_343 "SELECT SPLIT_BY_REGEXP('a.b.c.d', '\\\\.'), SPLIT_BY_REGEXP('x(y)z[w]', '[\\\\(\\\\)\\\\[\\\\]]');"
+ testFoldConst("SELECT SPLIT_BY_REGEXP('a.b.c.d', '\\\\.'), SPLIT_BY_REGEXP('x(y)z[w]', '[\\\\(\\\\)\\\\[\\\\]]');")
+ qt_split_by_regexp_344 "SELECT SPLIT_BY_REGEXP('TheQuickBrownFox', '[A-Z]'), SPLIT_BY_REGEXP('user@example.com', '@|\\\\.');"
+ testFoldConst("SELECT SPLIT_BY_REGEXP('TheQuickBrownFox', '[A-Z]'), SPLIT_BY_REGEXP('user@example.com', '@|\\\\.');")
+ qt_split_by_regexp_345 "SELECT SPLIT_BY_REGEXP('ṭṛì→ḍḍumai→hello', '→'), SPLIT_BY_REGEXP('αβγδε', '[βδ]');"
+ testFoldConst("SELECT SPLIT_BY_REGEXP('ṭṛì→ḍḍumai→hello', '→'), SPLIT_BY_REGEXP('αβγδε', '[βδ]');")
+ qt_split_by_regexp_346 "SELECT SPLIT_BY_REGEXP('a,,b,c', ','), SPLIT_BY_REGEXP('123abc456def', '[a-z]+');"
+ testFoldConst("SELECT SPLIT_BY_REGEXP('a,,b,c', ','), SPLIT_BY_REGEXP('123abc456def', '[a-z]+');")
+
+ // SPLIT_BY_STRING tests
+ qt_split_by_string_347 "SELECT SPLIT_BY_STRING('hello', 'l');"
+ testFoldConst("SELECT SPLIT_BY_STRING('hello', 'l');")
+ qt_split_by_string_348 "SELECT SPLIT_BY_STRING('hello', '');"
+ testFoldConst("SELECT SPLIT_BY_STRING('hello', '');")
+ qt_split_by_string_349 "SELECT SPLIT_BY_STRING('apple::banana::cherry', '::');"
+ testFoldConst("SELECT SPLIT_BY_STRING('apple::banana::cherry', '::');")
+ qt_split_by_string_350 "SELECT SPLIT_BY_STRING(NULL, ','), SPLIT_BY_STRING('hello', NULL);"
+ testFoldConst("SELECT SPLIT_BY_STRING(NULL, ','), SPLIT_BY_STRING('hello', NULL);")
+ qt_split_by_string_351 "SELECT SPLIT_BY_STRING('', ','), SPLIT_BY_STRING('hello', 'xyz');"
+ testFoldConst("SELECT SPLIT_BY_STRING('', ','), SPLIT_BY_STRING('hello', 'xyz');")
+ qt_split_by_string_352 "SELECT SPLIT_BY_STRING('a,,b,c', ',');"
+ testFoldConst("SELECT SPLIT_BY_STRING('a,,b,c', ',');")
+ qt_split_by_string_353 "SELECT SPLIT_BY_STRING(',a,b,', ',');"
+ testFoldConst("SELECT SPLIT_BY_STRING(',a,b,', ',');")
+ qt_split_by_string_354 "SELECT SPLIT_BY_STRING('|||', '|');"
+ testFoldConst("SELECT SPLIT_BY_STRING('|||', '|');")
+ qt_split_by_string_355 "SELECT SPLIT_BY_STRING('ṭṛì ḍḍumai ṭṛì', ' ');"
+ testFoldConst("SELECT SPLIT_BY_STRING('ṭṛì ḍḍumai ṭṛì', ' ');")
+ qt_split_by_string_356 "SELECT SPLIT_BY_STRING('hello world', 'xyz');"
+ testFoldConst("SELECT SPLIT_BY_STRING('hello world', 'xyz');")
+
+ // SPLIT_PART tests
+ qt_split_part_357 "SELECT SPLIT_PART('hello world', ' ', 1);"
+ testFoldConst("SELECT SPLIT_PART('hello world', ' ', 1);")
+ qt_split_part_358 "SELECT SPLIT_PART('apple,banana,cherry', ',', 2);"
+ testFoldConst("SELECT SPLIT_PART('apple,banana,cherry', ',', 2);")
+ qt_split_part_359 "SELECT SPLIT_PART('apple,banana,cherry', ',', 0);"
+ testFoldConst("SELECT SPLIT_PART('apple,banana,cherry', ',', 0);")
+ qt_split_part_360 "SELECT SPLIT_PART('apple,banana,cherry', ',', -1), SPLIT_PART('apple,banana,cherry', ',', -2);"
+ testFoldConst("SELECT SPLIT_PART('apple,banana,cherry', ',', -1), SPLIT_PART('apple,banana,cherry', ',', -2);")
+ qt_split_part_361 "SELECT SPLIT_PART('apple,banana', ',', 5), SPLIT_PART('apple,banana', ',', -5);"
+ testFoldConst("SELECT SPLIT_PART('apple,banana', ',', 5), SPLIT_PART('apple,banana', ',', -5);")
+ qt_split_part_362 "SELECT SPLIT_PART(NULL, ',', 1), SPLIT_PART('test', NULL, 1), SPLIT_PART('test', ',', NULL);"
+ testFoldConst("SELECT SPLIT_PART(NULL, ',', 1), SPLIT_PART('test', NULL, 1), SPLIT_PART('test', ',', NULL);")
+ qt_split_part_363 "SELECT SPLIT_PART('', ',', 1), SPLIT_PART('test', '', 2);"
+ testFoldConst("SELECT SPLIT_PART('', ',', 1), SPLIT_PART('test', '', 2);")
+ qt_split_part_364 "SELECT SPLIT_PART('hello world', '|', 1), SPLIT_PART('hello world', '|', 2);"
+ testFoldConst("SELECT SPLIT_PART('hello world', '|', 1), SPLIT_PART('hello world', '|', 2);")
+ qt_split_part_365 "SELECT SPLIT_PART('a,,c', ',', 1), SPLIT_PART('a,,c', ',', 2), SPLIT_PART('a,,c', ',', 3);"
+ testFoldConst("SELECT SPLIT_PART('a,,c', ',', 1), SPLIT_PART('a,,c', ',', 2), SPLIT_PART('a,,c', ',', 3);")
+ qt_split_part_366 "SELECT SPLIT_PART('ṭṛì ḍḍumai ṭṛì', ' ', 2);"
+ testFoldConst("SELECT SPLIT_PART('ṭṛì ḍḍumai ṭṛì', ' ', 2);")
+
+ // STARTS_WITH tests
+ qt_starts_with_367 "SELECT STARTS_WITH('hello world', 'hello'), STARTS_WITH('hello world', 'world');"
+ testFoldConst("SELECT STARTS_WITH('hello world', 'hello'), STARTS_WITH('hello world', 'world');")
+ qt_starts_with_368 "SELECT STARTS_WITH('Hello World', 'hello'), STARTS_WITH('Hello World', 'Hello');"
+ testFoldConst("SELECT STARTS_WITH('Hello World', 'hello'), STARTS_WITH('Hello World', 'Hello');")
+ qt_starts_with_369 "SELECT STARTS_WITH(NULL, 'test'), STARTS_WITH('test', NULL);"
+ testFoldConst("SELECT STARTS_WITH(NULL, 'test'), STARTS_WITH('test', NULL);")
+ qt_starts_with_370 "SELECT STARTS_WITH('hello', ''), STARTS_WITH('', 'world');"
+ testFoldConst("SELECT STARTS_WITH('hello', ''), STARTS_WITH('', 'world');")
+ qt_starts_with_371 "SELECT STARTS_WITH('test', 'test'), STARTS_WITH('test', 'testing');"
+ testFoldConst("SELECT STARTS_WITH('test', 'test'), STARTS_WITH('test', 'testing');")
+ qt_starts_with_372 "SELECT STARTS_WITH('/home/user/file.txt', '/home'), STARTS_WITH('C:\\\\Windows\\\\file.txt', 'C:\\\\');"
+ testFoldConst("SELECT STARTS_WITH('/home/user/file.txt', '/home'), STARTS_WITH('C:\\\\Windows\\\\file.txt', 'C:\\\\');")
+ qt_starts_with_373 "SELECT STARTS_WITH('ṭṛì ḍḍumai hello', 'ṭṛì'), STARTS_WITH('ṭṛì ḍḍumai hello', 'ḍḍumai');"
+ testFoldConst("SELECT STARTS_WITH('ṭṛì ḍḍumai hello', 'ṭṛì'), STARTS_WITH('ṭṛì ḍḍumai hello', 'ḍḍumai');")
+ qt_starts_with_374 "SELECT STARTS_WITH('https://example.com', 'https://'), STARTS_WITH('ftp://server.com', 'http://');"
+ testFoldConst("SELECT STARTS_WITH('https://example.com', 'https://'), STARTS_WITH('ftp://server.com', 'http://');")
+ qt_starts_with_375 "SELECT STARTS_WITH('123456789', '123'), STARTS_WITH('987654321', '123');"
+ testFoldConst("SELECT STARTS_WITH('123456789', '123'), STARTS_WITH('987654321', '123');")
+ qt_starts_with_376 "SELECT STARTS_WITH('@username', '@'), STARTS_WITH('#hashtag', '#');"
+ testFoldConst("SELECT STARTS_WITH('@username', '@'), STARTS_WITH('#hashtag', '#');")
+
+ // STRLEFT tests
+ qt_strleft_377 "SELECT STRLEFT('Hello doris', 5), LEFT('Hello doris', 5);"
+ testFoldConst("SELECT STRLEFT('Hello doris', 5), LEFT('Hello doris', 5);")
+ qt_strleft_378 "SELECT STRLEFT('Hello World', 3), STRLEFT('Hello World', 8);"
+ testFoldConst("SELECT STRLEFT('Hello World', 3), STRLEFT('Hello World', 8);")
+ qt_strleft_379 "SELECT STRLEFT(NULL, 5), STRLEFT('Hello doris', NULL);"
+ testFoldConst("SELECT STRLEFT(NULL, 5), STRLEFT('Hello doris', NULL);")
+ qt_strleft_380 "SELECT STRLEFT('', 5), STRLEFT('Hello World', 0);"
+ testFoldConst("SELECT STRLEFT('', 5), STRLEFT('Hello World', 0);")
+ qt_strleft_381 "SELECT STRLEFT('Hello doris', -5), STRLEFT('Hello doris', -1);"
+ testFoldConst("SELECT STRLEFT('Hello doris', -5), STRLEFT('Hello doris', -1);")
+ qt_strleft_382 "SELECT STRLEFT('ABC', 10), STRLEFT('short', 20);"
+ testFoldConst("SELECT STRLEFT('ABC', 10), STRLEFT('short', 20);")
+ qt_strleft_383 "SELECT STRLEFT('ṭṛì ḍḍumai hello', 3), STRLEFT('ṭṛì ḍḍumai hello', 7);"
+ testFoldConst("SELECT STRLEFT('ṭṛì ḍḍumai hello', 3), STRLEFT('ṭṛì ḍḍumai hello', 7);")
+ qt_strleft_384 "SELECT STRLEFT('ID123456789', 5), STRLEFT('USER_987654321', 5);"
+ testFoldConst("SELECT STRLEFT('ID123456789', 5), STRLEFT('USER_987654321', 5);")
+ qt_strleft_385 "SELECT STRLEFT('ṭṛì ḍḍu', 5);"
+ testFoldConst("SELECT STRLEFT('ṭṛì ḍḍu', 5);")
+
+ // STRRIGHT tests
+ qt_strright_386 "SELECT STRRIGHT('Hello doris', 5), RIGHT('Hello doris', 5);"
+ testFoldConst("SELECT STRRIGHT('Hello doris', 5), RIGHT('Hello doris', 5);")
+ qt_strright_387 "SELECT STRRIGHT('Hello World', 3), STRRIGHT('Hello World', 8);"
+ testFoldConst("SELECT STRRIGHT('Hello World', 3), STRRIGHT('Hello World', 8);")
+ qt_strright_388 "SELECT STRRIGHT(NULL, 5), STRRIGHT('Hello doris', NULL);"
+ testFoldConst("SELECT STRRIGHT(NULL, 5), STRRIGHT('Hello doris', NULL);")
+ qt_strright_389 "SELECT STRRIGHT('', 5), STRRIGHT('Hello World', 0);"
+ testFoldConst("SELECT STRRIGHT('', 5), STRRIGHT('Hello World', 0);")
+ qt_strright_390 "SELECT STRRIGHT('Hello doris', -7), STRRIGHT('Hello doris', -5);"
+ testFoldConst("SELECT STRRIGHT('Hello doris', -7), STRRIGHT('Hello doris', -5);")
+ qt_strright_391 "SELECT STRRIGHT('ABC', 10), STRRIGHT('short', 20);"
+ testFoldConst("SELECT STRRIGHT('ABC', 10), STRRIGHT('short', 20);")
+ qt_strright_392 "SELECT STRRIGHT('ṭṛì ḍḍumai hello', 5), STRRIGHT('ṭṛì ḍḍumai hello', 11);"
+ testFoldConst("SELECT STRRIGHT('ṭṛì ḍḍumai hello', 5), STRRIGHT('ṭṛì ḍḍumai hello', 11);")
+ qt_strright_393 "SELECT STRRIGHT('123456789', 3), STRRIGHT('ID_987654321', 6);"
+ testFoldConst("SELECT STRRIGHT('123456789', 3), STRRIGHT('ID_987654321', 6);")
+ qt_strright_394 "SELECT STRRIGHT('user@example.com', 11), STRRIGHT('admin@company.org.cn', 14);"
+ testFoldConst("SELECT STRRIGHT('user@example.com', 11), STRRIGHT('admin@company.org.cn', 14);")
+
+ // SUB_REPLACE tests
+ qt_sub_replace_395 "SELECT sub_replace('doris', '***', 1, 2);"
+ testFoldConst("SELECT sub_replace('doris', '***', 1, 2);")
+ qt_sub_replace_396 "SELECT sub_replace('hello', 'Hi', 0);"
+ testFoldConst("SELECT sub_replace('hello', 'Hi', 0);")
+ qt_sub_replace_397 "SELECT sub_replace('hello', 'Hi', -1, 2);"
+ testFoldConst("SELECT sub_replace('hello', 'Hi', -1, 2);")
+ qt_sub_replace_398 "SELECT sub_replace(NULL, 'new', 0, 3);"
+ testFoldConst("SELECT sub_replace(NULL, 'new', 0, 3);")
+ qt_sub_replace_399 "SELECT sub_replace('doris', 'ṛìḍḍ', 1, 2);"
+ testFoldConst("SELECT sub_replace('doris', 'ṛìḍḍ', 1, 2);")
+ qt_sub_replace_400 "SELECT sub_replace('hello', 'Hi', 1, 9);"
+ testFoldConst("SELECT sub_replace('hello', 'Hi', 1, 9);")
+
+ // SUBSTRING_INDEX tests
+ qt_substring_index_401 "SELECT SUBSTRING_INDEX('hello world', ' ', 1), SUBSTRING_INDEX('one,two,three', ',', 2);"
+ testFoldConst("SELECT SUBSTRING_INDEX('hello world', ' ', 1), SUBSTRING_INDEX('one,two,three', ',', 2);")
+ qt_substring_index_402 "SELECT SUBSTRING_INDEX('hello world', ' ', -1), SUBSTRING_INDEX('one,two,three', ',', -1);"
+ testFoldConst("SELECT SUBSTRING_INDEX('hello world', ' ', -1), SUBSTRING_INDEX('one,two,three', ',', -1);")
+ qt_substring_index_403 "SELECT SUBSTRING_INDEX(NULL, ',', 1), SUBSTRING_INDEX('test', NULL, 1);"
+ testFoldConst("SELECT SUBSTRING_INDEX(NULL, ',', 1), SUBSTRING_INDEX('test', NULL, 1);")
+ qt_substring_index_404 "SELECT SUBSTRING_INDEX('hello world', ' ', 0), SUBSTRING_INDEX('a,b,c', ',', 0);"
+ testFoldConst("SELECT SUBSTRING_INDEX('hello world', ' ', 0), SUBSTRING_INDEX('a,b,c', ',', 0);")
+ qt_substring_index_405 "SELECT SUBSTRING_INDEX('hello world', ',', 1), SUBSTRING_INDEX('no-delimiter', '|', -1);"
+ testFoldConst("SELECT SUBSTRING_INDEX('hello world', ',', 1), SUBSTRING_INDEX('no-delimiter', '|', -1);")
+ qt_substring_index_406 "SELECT SUBSTRING_INDEX('a,b,c', ',', 5), SUBSTRING_INDEX('a,b,c', ',', -5);"
+ testFoldConst("SELECT SUBSTRING_INDEX('a,b,c', ',', 5), SUBSTRING_INDEX('a,b,c', ',', -5);")
+ qt_substring_index_407 "SELECT SUBSTRING_INDEX('ṭṛì→ḍḍumai→hello', '→', 1), SUBSTRING_INDEX('ṭṛì→ḍḍumai→hello', '→', -1);"
+ testFoldConst("SELECT SUBSTRING_INDEX('ṭṛì→ḍḍumai→hello', '→', 1), SUBSTRING_INDEX('ṭṛì→ḍḍumai→hello', '→', -1);")
+ qt_substring_index_408 "SELECT SUBSTRING_INDEX('data::field::value', '::', 2), SUBSTRING_INDEX('data::field::value', '::', -1);"
+ testFoldConst("SELECT SUBSTRING_INDEX('data::field::value', '::', 2), SUBSTRING_INDEX('data::field::value', '::', -1);")
+ qt_substring_index_409 "SELECT SUBSTRING_INDEX('', ' ', 1);"
+ testFoldConst("SELECT SUBSTRING_INDEX('', ' ', 1);")
+
+ // SUBSTRING tests
+ qt_substring_410 "SELECT substring('abc1', 2);"
+ testFoldConst("SELECT substring('abc1', 2);")
+ qt_substring_411 "SELECT substring('abc1', -2);"
+ testFoldConst("SELECT substring('abc1', -2);")
+ qt_substring_412 "SELECT substring('abc1', 0);"
+ testFoldConst("SELECT substring('abc1', 0);")
+ qt_substring_413 "SELECT substring('abc1', 5);"
+ testFoldConst("SELECT substring('abc1', 5);")
+ qt_substring_414 "SELECT substring('abc1def', 2, 2);"
+ testFoldConst("SELECT substring('abc1def', 2, 2);")
+ qt_substring_415 "SELECT substring('foobarbar' FROM 4 FOR 3);"
+ testFoldConst("SELECT substring('foobarbar' FROM 4 FOR 3);")
+ qt_substring_416 "SELECT substring('foobarbar' FROM 4);"
+ testFoldConst("SELECT substring('foobarbar' FROM 4);")
+
+ // MID tests
+ qt_mid_417 "SELECT MID(NULL, 2);"
+ testFoldConst("SELECT MID(NULL, 2);")
+
+ // SUBSTRING tests
+ qt_substring_418 "SELECT substring('ṭṛì ḍḍumai test', 5, 7);"
+ testFoldConst("SELECT substring('ṭṛì ḍḍumai test', 5, 7);")
+ qt_substring_419 "SELECT substring(NULL, 1, 3);"
+ testFoldConst("SELECT substring(NULL, 1, 3);")
+ qt_substring_420 "SELECT substring('', 1, 3);"
+ testFoldConst("SELECT substring('', 1, 3);")
+
+ // TO_BASE64 tests
+ qt_test_421 "SELECT TO_BASE64('1'), TO_BASE64('A');"
+ testFoldConst("SELECT TO_BASE64('1'), TO_BASE64('A');")
+ qt_test_422 "SELECT TO_BASE64('234'), TO_BASE64('Hello');"
+ testFoldConst("SELECT TO_BASE64('234'), TO_BASE64('Hello');")
+ qt_test_423 "SELECT TO_BASE64(NULL), TO_BASE64('');"
+ testFoldConst("SELECT TO_BASE64(NULL), TO_BASE64('');")
+ qt_test_424 "SELECT TO_BASE64('Hello World'), TO_BASE64('The quick brown fox');"
+ testFoldConst("SELECT TO_BASE64('Hello World'), TO_BASE64('The quick brown fox');")
+ qt_test_425 "SELECT TO_BASE64('123456'), TO_BASE64('!@#\$%^&*()');"
+ testFoldConst("SELECT TO_BASE64('123456'), TO_BASE64('!@#\$%^&*()');")
+ qt_test_426 "SELECT TO_BASE64('ṭṛì'), TO_BASE64('ḍḍumai hello');"
+ testFoldConst("SELECT TO_BASE64('ṭṛì'), TO_BASE64('ḍḍumai hello');")
+ qt_test_427 "SELECT TO_BASE64('user@example.com'), TO_BASE64('admin.test@company.org');"
+ testFoldConst("SELECT TO_BASE64('user@example.com'), TO_BASE64('admin.test@company.org');")
+ qt_test_428 "SELECT TO_BASE64('{\"name\":\"John\",\"age\":30}'), TO_BASE64('[1,2,3,4,5]');"
+ testFoldConst("SELECT TO_BASE64('{\"name\":\"John\",\"age\":30}'), TO_BASE64('[1,2,3,4,5]');")
+ qt_test_429 "SELECT TO_BASE64('a'), TO_BASE64('ab'), TO_BASE64('abc');"
+ testFoldConst("SELECT TO_BASE64('a'), TO_BASE64('ab'), TO_BASE64('abc');")
+
+ // TRANSLATE tests
+ qt_translate_430 "SELECT TRANSLATE('abcd', 'a', 'z');"
+ testFoldConst("SELECT TRANSLATE('abcd', 'a', 'z');")
+ qt_translate_431 "SELECT TRANSLATE('abcd', 'ac', 'zx');"
+ testFoldConst("SELECT TRANSLATE('abcd', 'ac', 'zx');")
+ qt_translate_432 "SELECT TRANSLATE('abacad', 'aac', 'zxy');"
+ testFoldConst("SELECT TRANSLATE('abacad', 'aac', 'zxy');")
+ qt_translate_433 "SELECT TRANSLATE(NULL, 'a', 'z'), TRANSLATE('abc', NULL, 'z'), TRANSLATE('abc', 'a', NULL);"
+ testFoldConst("SELECT TRANSLATE(NULL, 'a', 'z'), TRANSLATE('abc', NULL, 'z'), TRANSLATE('abc', 'a', NULL);")
+ qt_translate_434 "SELECT TRANSLATE('', 'a', 'z'), TRANSLATE('abc', '', 'z'), TRANSLATE('abc', 'a', '');"
+ testFoldConst("SELECT TRANSLATE('', 'a', 'z'), TRANSLATE('abc', '', 'z'), TRANSLATE('abc', 'a', '');")
+ qt_translate_435 "SELECT TRANSLATE('abcde', 'ace', 'xy');"
+ testFoldConst("SELECT TRANSLATE('abcde', 'ace', 'xy');")
+ qt_translate_436 "SELECT TRANSLATE('ṭṛì ḍḍumai', 'ṭṛ', 'ab');"
+ testFoldConst("SELECT TRANSLATE('ṭṛì ḍḍumai', 'ṭṛ', 'ab');")
+ qt_translate_437 "SELECT TRANSLATE('a1b2c3', '123', 'xyz');"
+ testFoldConst("SELECT TRANSLATE('a1b2c3', '123', 'xyz');")
+ qt_translate_438 "SELECT TRANSLATE('aabbccaa', 'abab', 'xyuv');"
+ testFoldConst("SELECT TRANSLATE('aabbccaa', 'abab', 'xyuv');")
+ qt_translate_439 "SELECT TRANSLATE('hello@world.com', '@.', '-_');"
+ testFoldConst("SELECT TRANSLATE('hello@world.com', '@.', '-_');")
+
+ // TRIM_IN tests
+ qt_trim_in_440 "SELECT trim_in(' ab d ');"
+ testFoldConst("SELECT trim_in(' ab d ');")
+ qt_trim_in_441 "SELECT trim_in('ababccaab', 'ab');"
+ testFoldConst("SELECT trim_in('ababccaab', 'ab');")
+ qt_trim_in_442 "SELECT trim_in('abcHelloabc', 'cba');"
+ testFoldConst("SELECT trim_in('abcHelloabc', 'cba');")
+ qt_trim_in_443 "SELECT trim_in('+++ṭṛì ḍḍumai+++', '+');"
+ testFoldConst("SELECT trim_in('+++ṭṛì ḍḍumai+++', '+');")
+ qt_trim_in_444 "SELECT trim_in(NULL, 'abc');"
+ testFoldConst("SELECT trim_in(NULL, 'abc');")
+ qt_trim_in_445 "SELECT trim_in('', 'abc'),trim_in('abc', '');"
+ testFoldConst("SELECT trim_in('', 'abc'),trim_in('abc', '');")
+
+ // TRIM tests
+ qt_trim_446 "SELECT trim(' hello ');"
+ testFoldConst("SELECT trim(' hello ');")
+ qt_trim_447 "SELECT trim('xxxhelloxxx', 'x');"
+ testFoldConst("SELECT trim('xxxhelloxxx', 'x');")
+ qt_trim_448 "SELECT trim(' ab d ');"
+ testFoldConst("SELECT trim(' ab d ');")
+ qt_trim_449 "SELECT trim('ababccaab', 'ab');"
+ testFoldConst("SELECT trim('ababccaab', 'ab');")
+ qt_trim_450 "SELECT trim('ṭṛì ḍḍumai+++', 'ṭṛì');"
+ testFoldConst("SELECT trim('ṭṛì ḍḍumai+++', 'ṭṛì');")
+ qt_trim_451 "SELECT trim(NULL);"
+ testFoldConst("SELECT trim(NULL);")
+ qt_trim_452 "SELECT trim('xxxhelloxxx', ''),trim('', 'x');"
+ testFoldConst("SELECT trim('xxxhelloxxx', ''),trim('', 'x');")
+
+ // UCASE tests
+ qt_ucase_453 "SELECT UCASE('aBc123'), UPPER('aBc123');"
+ testFoldConst("SELECT UCASE('aBc123'), UPPER('aBc123');")
+ qt_ucase_454 "SELECT UCASE('Hello World!'), UPPER('test@123');"
+ testFoldConst("SELECT UCASE('Hello World!'), UPPER('test@123');")
+ qt_ucase_455 "SELECT UCASE(NULL), UPPER(NULL);"
+ testFoldConst("SELECT UCASE(NULL), UPPER(NULL);")
+ qt_ucase_456 "SELECT UCASE(''), UPPER('');"
+ testFoldConst("SELECT UCASE(''), UPPER('');")
+ qt_ucase_457 "SELECT UCASE('ALREADY UPPERCASE'), UPPER('ABC123');"
+ testFoldConst("SELECT UCASE('ALREADY UPPERCASE'), UPPER('ABC123');")
+ qt_ucase_458 "SELECT UCASE('123!@#\$%'), UPPER('price: \$99.99');"
+ testFoldConst("SELECT UCASE('123!@#\$%'), UPPER('price: \$99.99');")
+ qt_ucase_459 "SELECT UCASE('ṭṛì test'), UPPER('ḍḍumai hello');"
+ testFoldConst("SELECT UCASE('ṭṛì test'), UPPER('ḍḍumai hello');")
+ qt_ucase_460 "SELECT UCASE('Кириллица'), UPPER('Бәйтерек');"
+ testFoldConst("SELECT UCASE('Кириллица'), UPPER('Бәйтерек');")
+
+ // UNHEX tests
+ qt_unhex_461 "SELECT UNHEX('41'), UNHEX('61');"
+ testFoldConst("SELECT UNHEX('41'), UNHEX('61');")
+ qt_unhex_462 "SELECT UNHEX('4142'), UNHEX('48656C6C6F');"
+ testFoldConst("SELECT UNHEX('4142'), UNHEX('48656C6C6F');")
+ qt_unhex_463 "SELECT UNHEX(NULL), UNHEX_NULL(NULL);"
+ testFoldConst("SELECT UNHEX(NULL), UNHEX_NULL(NULL);")
+ qt_unhex_464 "SELECT UNHEX(''), UNHEX_NULL('');"
+ testFoldConst("SELECT UNHEX(''), UNHEX_NULL('');")
+ qt_unhex_465 "SELECT UNHEX('@'), UNHEX_NULL('@');"
+ testFoldConst("SELECT UNHEX('@'), UNHEX_NULL('@');")
+ qt_unhex_466 "SELECT UNHEX('123'), UNHEX_NULL('123');"
+ testFoldConst("SELECT UNHEX('123'), UNHEX_NULL('123');")
+ qt_unhex_467 "SELECT UNHEX('E4B8AD'), UNHEX('E69687');"
+ testFoldConst("SELECT UNHEX('E4B8AD'), UNHEX('E69687');")
+ qt_unhex_468 "SELECT UNHEX('313233'), UNHEX('393837');"
+ testFoldConst("SELECT UNHEX('313233'), UNHEX('393837');")
+ qt_unhex_469 "SELECT UNHEX(HEX('Hello')), UNHEX(HEX('Test123'));"
+ testFoldConst("SELECT UNHEX(HEX('Hello')), UNHEX(HEX('Test123'));")
+
+ // UUID_TO_INT tests
+ qt_uuid_to_int_470 "SELECT uuid_to_int('6ce4766f-6783-4b30-b357-bba1c7600348');"
+ testFoldConst("SELECT uuid_to_int('6ce4766f-6783-4b30-b357-bba1c7600348');")
+ qt_uuid_to_int_471 "SELECT uuid_to_int(NULL);"
+ testFoldConst("SELECT uuid_to_int(NULL);")
+ qt_uuid_to_int_474 "SELECT uuid_to_int('6CE4766F-6783-4B30-B357-BBA1C7600348');"
+ testFoldConst("SELECT uuid_to_int('6CE4766F-6783-4B30-B357-BBA1C7600348');")
+
+ // UUID tests - Skipped (non-deterministic results)
+
+ // XPATH_STRING tests
+ qt_xpath_string_478 "SELECT xpath_string('123', '/a');"
+ testFoldConst("SELECT xpath_string('123', '/a');")
+ qt_xpath_string_479 "SELECT xpath_string('123', '/a/b');"
+ testFoldConst("SELECT xpath_string('123', '/a/b');")
+ qt_xpath_string_480 "SELECT xpath_string('123', '//b[@id=\"1\"]');"
+ testFoldConst("SELECT xpath_string('123', '//b[@id=\"1\"]');")
+ qt_xpath_string_481 "SELECT xpath_string('12', '/a/b[2]');"
+ testFoldConst("SELECT xpath_string('12', '/a/b[2]');")
+ qt_xpath_string_482 "SELECT xpath_string('', '/a');"
+ testFoldConst("SELECT xpath_string('', '/a');")
+ qt_xpath_string_483 "SELECT xpath_string('123', '/a');"
+ testFoldConst("SELECT xpath_string('123', '/a');")
+ qt_xpath_string_484 "SELECT xpath_string('123', '/b');"
+ testFoldConst("SELECT xpath_string('123', '/b');")
+ qt_xpath_string_485 "SELECT xpath_string(NULL, '/a');"
+ testFoldConst("SELECT xpath_string(NULL, '/a');")
+ qt_xpath_string_486 "SELECT xpath_string('123', '/a');"
+ testFoldConst("SELECT xpath_string('123', '/a');")
+}
\ No newline at end of file
From b4c07e0dfe134a720bac9f86323c9fc2fc5cb700 Mon Sep 17 00:00:00 2001
From: jianhao <1367919489@qq.com>
Date: Fri, 24 Oct 2025 22:14:58 +0800
Subject: [PATCH 2/2] jh-v2
---
.../string_functions/test_string_all.groovy | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/regression-test/suites/query_p0/sql_functions/string_functions/test_string_all.groovy b/regression-test/suites/query_p0/sql_functions/string_functions/test_string_all.groovy
index d025afbcba1b5b..9d7123b03a79d4 100644
--- a/regression-test/suites/query_p0/sql_functions/string_functions/test_string_all.groovy
+++ b/regression-test/suites/query_p0/sql_functions/string_functions/test_string_all.groovy
@@ -1,3 +1,20 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
suite("string_functions_all") {
// APPEND_TRAILING_CHAR_IF_ABSENT tests
qt_append_trailing_char_if_absent_1 "SELECT APPEND_TRAILING_CHAR_IF_ABSENT('a', 'c');"