修复enable_multi_charset下walsender初始化失败的问题
This commit is contained in:
@ -2826,6 +2826,7 @@ void PostgresInitializer::InitSettings()
|
||||
|
||||
/* initialize client encoding */
|
||||
InitializeClientEncoding();
|
||||
InitializeCharsetEncoding();
|
||||
}
|
||||
|
||||
void PostgresInitializer::InitExtensionVariable()
|
||||
|
||||
@ -241,6 +241,14 @@ void InitializeClientEncoding(void)
|
||||
pg_enc2name_tbl[u_sess->mb_cxt.pending_client_encoding].name,
|
||||
GetDatabaseEncodingName())));
|
||||
}
|
||||
}
|
||||
|
||||
void InitializeCharsetEncoding(void)
|
||||
{
|
||||
if (!u_sess->mb_cxt.backend_startup_complete) {
|
||||
return;
|
||||
}
|
||||
|
||||
u_sess->mb_cxt.character_set_connection = &pg_enc2name_tbl[GetDatabaseEncoding()];
|
||||
if (ENABLE_MULTI_CHARSET) {
|
||||
u_sess->mb_cxt.collation_connection = get_default_collation_by_charset(GetDatabaseEncoding(), false);
|
||||
|
||||
@ -463,6 +463,7 @@ extern mbcharacter_incrementer pg_database_encoding_character_incrementer(void);
|
||||
extern int PrepareClientEncoding(int encoding);
|
||||
extern int SetClientEncoding(int encoding);
|
||||
extern void InitializeClientEncoding(void);
|
||||
extern void InitializeCharsetEncoding(void);
|
||||
extern int pg_get_client_encoding(void);
|
||||
extern const char* pg_get_client_encoding_name(void);
|
||||
|
||||
|
||||
@ -177,4 +177,16 @@ 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
|
||||
@ -587,4 +587,22 @@ select '高斯aa' = '高斯AA';
|
||||
f
|
||||
(1 row)
|
||||
|
||||
\! @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);
|
||||
pg_sleep
|
||||
----------
|
||||
|
||||
(1 row)
|
||||
|
||||
\! 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
|
||||
--?.*gs_basebackup: base backup 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);
|
||||
pg_sleep
|
||||
----------
|
||||
|
||||
(1 row)
|
||||
|
||||
\c regression
|
||||
|
||||
Reference in New Issue
Block a user