\c regression
show client_encoding;
show character_set_connection;
show collation_connection;
select 'aa' = 'AA';

set names utf8;
show client_encoding;
show character_set_connection;
show collation_connection;
select 'aa' = 'AA';

-- error case
set names utf8 collate gbk_bin;

create database charset_connection_test dbcompatibility 'b';
\c charset_connection_test
-- show encoding settings
show client_encoding;
show character_set_connection;
show collation_connection;
select 'aa' = 'AA';

set names utf8;
show client_encoding;
show character_set_connection;
show collation_connection;
select 'aa' = 'AA';

-- expect error cases
SET NAMES utf8mb4 COLLATE utf8mb4_general_ci;
SET NAMES utf8 collate = 'utf8_bin';

\! @abs_bindir@/gs_guc reload -Z datanode -D @abs_srcdir@/tmp_check/datanode1 -c "b_format_behavior_compat_options='all'" >/dev/null 2>&1
select pg_sleep(1);
\c

-- show encoding settings
show client_encoding;
show character_set_connection;
show collation_connection;
select 'aa' = 'AA';

--error cases
SET NAMES 'utf8' COLLATE DEFAULT;
SET NAMES 'gbk' COLLATE 'utf8mb4_bin';
SET NAMES utf8 COLLATE gbk_bin;
SET NAMES COLLATE 'utf8mb4_bin';

SET NAMES gbk;
show client_encoding;
show character_set_connection;
show collation_connection;
select '高斯aa' = '高斯AA';
select '高斯aa' = '高斯AA' collate 'utf8mb4_bin'; --error case
select '高斯aa' = '高斯AA' collate 'gbk_bin';

set collation_connection = utf8mb4_bin;
show character_set_connection;
show collation_connection;
select 'aa' = 'AA';

set character_set_connection = gbk;
show character_set_connection;
show collation_connection;
select '高斯aa' = '高斯AA';

SET NAMES DEFAULT;
show client_encoding;
show character_set_connection;
show collation_connection;
select '高斯aa' = '高斯AA';

SET NAMES;
show client_encoding;
show character_set_connection;
show collation_connection;
select '高斯aa' = '高斯AA';

-- test default
set names gbk;
set names utf8 collate default;
show character_set_connection;
show collation_connection;

set names gbk;
set names utf8 collate 'default';
show character_set_connection;
show collation_connection;

set names gbk;
set collation_connection = default;
show character_set_connection;
show collation_connection;

-- test charset = -1
set collation_connection = 'C';
show character_set_connection;
show collation_connection;

set collation_connection = 'default';
show character_set_connection;
show collation_connection;

set collation_connection = 'POSIX';
show character_set_connection;
show collation_connection;

set collation_connection = "binary";
set collation_connection = binary;
show character_set_connection;
show collation_connection;
set names utf8;

\! @abs_bindir@/gs_guc reload -Z datanode -D @abs_srcdir@/tmp_check/datanode1 -c "b_format_behavior_compat_options=''" >/dev/null 2>&1
select pg_sleep(1);
\c
show client_encoding;
show character_set_connection;
show collation_connection;
select '高斯aa' = '高斯AA'; --false

set b_format_behavior_compat_options = 'ALL';
set @aa = '高斯aa';
set @bb = (select '高斯aa');
select @cc := '高斯aa';
select @dd := (select '高斯aa');
select '高斯aa' into @ee;
select @aa,@bb,@cc,@dd,@ee;
select collation for(@aa), collation for(@bb), collation for(@cc), collation for(@dd), collation for(@ee);

set names gbk;
set @aa = '高斯aa';
set @bb = (select '高斯aa');
select @cc := '高斯aa';
select @dd := (select '高斯aa');
select '高斯aa' into @ee;
select @aa,@bb,@cc,@dd,@ee;
select collation for(@aa), collation for(@bb), collation for(@cc), collation for(@dd), collation for(@ee);

set @aa = '高斯aa' collate utf8mb4_unicode_ci;
set @bb = (select '高斯aa' collate utf8mb4_unicode_ci);
select @cc := '高斯aa' collate utf8mb4_unicode_ci;
select @dd := (select '高斯aa' collate utf8mb4_unicode_ci);
select '高斯aa' collate utf8mb4_unicode_ci into @ee;

set client_encoding = utf8mb4;
select @aa,@bb,@cc,@dd,@ee;

set names utf8;
set @aa = '高斯aa' collate utf8mb4_unicode_ci;
set @bb = (select '高斯aa' collate utf8mb4_unicode_ci);
select @cc := '高斯aa' collate utf8mb4_unicode_ci;
select @dd := (select '高斯aa' collate utf8mb4_unicode_ci);
select '高斯aa' collate utf8mb4_unicode_ci into @ee;
select @aa,@bb,@cc,@dd,@ee;
select collation for(@aa), collation for(@bb), collation for(@cc), collation for(@dd), collation for(@ee);

set names gbk;
create table t(a text collate utf8mb4_bin, b text collate utf8mb4_unicode_ci);
insert into t values('高斯aa', '高斯bb');
select * from t into @a,@b;
select @a,@b;
select collation for(@a), collation for(@b);
select * from t where a = 'c' into @a,@b;
select @a,@b;
select collation for(@a), collation for(@b);
create database charset_gbk dbcompatibility 'b' encoding 'gbk' lc_ctype = 'C' lc_collate = 'C';
\c charset_gbk
set client_encoding = utf8;
show client_encoding;
show character_set_connection;
show collation_connection;
create table t1(a text charset gbk collate gbk_bin);
insert into t1 values('高斯');
select * from t1;
create database latin1_db dbcompatibility 'b' encoding 'latin1' lc_ctype = 'C' lc_collate = 'C';
\c latin1_db
select '高斯aa' = '高斯AA';

\! @abs_bindir@/gs_guc reload -Z datanode -D @abs_srcdir@/tmp_check/datanode1 -c "b_format_behavior_compat_options='enable_multi_charset'" >/dev/null 2>&1
select pg_sleep(1);

\! mkdir @abs_srcdir@/tmp_check/charset_connection_test_backup/
\! @abs_bindir@/gs_basebackup -hlocalhost -p@portstring@ -D @abs_srcdir@/tmp_check/charset_connection_test_backup/ 2>&1 |grep successfully

\! rm -rf @abs_srcdir@/tmp_check/charset_connection_test_backup/

\! @abs_bindir@/gs_guc reload -Z datanode -D @abs_srcdir@/tmp_check/datanode1 -c "b_format_behavior_compat_options=''" >/dev/null 2>&1
select pg_sleep(1);

\c regression