From 9f6b8707c90a1dd0c525f32c14662f61b0905c1a Mon Sep 17 00:00:00 2001 From: li-julong9909 <584147810@qq.com> Date: Mon, 28 Aug 2023 11:24:10 +0800 Subject: [PATCH] =?UTF-8?q?issue:=20=E8=A7=A3=E5=86=B3text=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E9=9A=90=E5=BC=8F=E8=BD=AC=E6=8D=A2=E4=B8=BAbool?= =?UTF-8?q?=E4=B8=8E=E6=98=BE=E7=A4=BA=E7=BB=93=E6=9E=9C=E4=B8=8D=E4=B8=80?= =?UTF-8?q?=E8=87=B4=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contrib/dolphin/expected/test_text2bool.out | 37 ++++++++++++++++++++ contrib/dolphin/parallel_schedule_dolphin | 4 +-- contrib/dolphin/plugin_utils/adt/varchar.cpp | 9 +++-- contrib/dolphin/sql/test_text2bool.sql | 26 ++++++++++++++ 4 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 contrib/dolphin/expected/test_text2bool.out create mode 100644 contrib/dolphin/sql/test_text2bool.sql diff --git a/contrib/dolphin/expected/test_text2bool.out b/contrib/dolphin/expected/test_text2bool.out new file mode 100644 index 000000000..b8e20465c --- /dev/null +++ b/contrib/dolphin/expected/test_text2bool.out @@ -0,0 +1,37 @@ +create or replace procedure text2bool() +as +begin +if('TRUE') then + raise info 'true'; +else + raise info 'false'; +end if; +end; +/ +call text2bool(); +INFO: true + text2bool +----------- + +(1 row) + +create or replace procedure text2bool() +as +declare + a text; +begin +a := 'TRUE'; +if(a) then + raise info 'true'; +else + raise info 'false'; +end if; +end; +/ +call text2bool(); +INFO: true + text2bool +----------- + +(1 row) + diff --git a/contrib/dolphin/parallel_schedule_dolphin b/contrib/dolphin/parallel_schedule_dolphin index 96d3afa6a..1ab3488ea 100644 --- a/contrib/dolphin/parallel_schedule_dolphin +++ b/contrib/dolphin/parallel_schedule_dolphin @@ -38,7 +38,7 @@ test: builtin_funcs/bin builtin_funcs/char builtin_funcs/char_length builtin_fun test: builtin_funcs/db_b_hex builtin_funcs/db_b_if builtin_funcs/elt builtin_funcs/field builtin_funcs/find_in_set builtin_funcs/soundex builtin_funcs/space builtin_funcs/make_set builtin_funcs/between builtin_funcs/not_between -test: uint_agg uint_and uint_cast uint_cast2 uint_div uint_mi uint_mod uint_mod2 uint_mul uint_numeric uint_operator uint_or uint_partition uint_pl uint_xor +test: uint_agg uint_and uint_cast uint_cast2 uint_div uint_mi uint_mod uint_mod2 uint_mul uint_numeric uint_operator uint_or uint_partition uint_pl uint_xor test: uint_procedure_col_bypass uint_smp uint_index uint_sql_mode uint_ignore uint_join signed_unsigned_cast uint_in implicit_cast uint_auto_increment signed_cast @@ -141,7 +141,7 @@ test: builtin_funcs/cast any_value_test default_function get_b_database union2 test: json_type json_pretty json_valid json_length json_objectagg json_arrayagg json_operator json_storage_size -test: test_uuid_short test_sleep distinct dual_test fulltext_index +test: test_uuid_short test_sleep distinct dual_test fulltext_index test_text2bool test: operator_compatibility_test/numeric_operator_test_normal operator_compatibility_test/numeric_operator_test_min operator_compatibility_test/numeric_operator_test_max operator_compatibility_test/time_operator_test operator_compatibility_test/string_operator_test operator_compatibility_test/multi_type_operator_test diff --git a/contrib/dolphin/plugin_utils/adt/varchar.cpp b/contrib/dolphin/plugin_utils/adt/varchar.cpp index 2384d6762..cd050741e 100644 --- a/contrib/dolphin/plugin_utils/adt/varchar.cpp +++ b/contrib/dolphin/plugin_utils/adt/varchar.cpp @@ -2156,18 +2156,23 @@ ScalarVector* vbpcharlen(PG_FUNCTION_ARGS) } #ifdef DOLPHIN + + PG_FUNCTION_INFO_V1_PUBLIC(text_bool); extern "C" DLL_PUBLIC Datum text_bool(PG_FUNCTION_ARGS); - Datum text_bool(PG_FUNCTION_ARGS) { text *input = PG_GETARG_TEXT_PP(0); + int len = VARSIZE_ANY_EXHDR(input); char *a1p = NULL; double tmp; a1p = VARDATA_ANY(input); tmp = atof(a1p); - + bool result = false; + if (parse_bool_with_len(a1p, len, &result)) { + PG_RETURN_BOOL((tmp ? true : false) || result); + } PG_RETURN_BOOL(tmp ? true : false); } diff --git a/contrib/dolphin/sql/test_text2bool.sql b/contrib/dolphin/sql/test_text2bool.sql new file mode 100644 index 000000000..d0918bf24 --- /dev/null +++ b/contrib/dolphin/sql/test_text2bool.sql @@ -0,0 +1,26 @@ +create or replace procedure text2bool() +as +begin +if('TRUE') then + raise info 'true'; +else + raise info 'false'; +end if; +end; +/ +call text2bool(); + +create or replace procedure text2bool() +as +declare + a text; +begin +a := 'TRUE'; +if(a) then + raise info 'true'; +else + raise info 'false'; +end if; +end; +/ +call text2bool(); \ No newline at end of file -- Gitee