Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
ccc3404f
Commit
ccc3404f
authored
Nov 28, 2008
by
Georgi Kodinov
Browse files
Options
Browse Files
Download
Plain Diff
merged bug 37339 to 5.0-bugteam
parents
68066aa5
0708ad5f
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
116 additions
and
28 deletions
+116
-28
mysql-test/r/ctype_filesystem.result
mysql-test/r/ctype_filesystem.result
+11
-0
mysql-test/t/ctype_filesystem-master.opt
mysql-test/t/ctype_filesystem-master.opt
+2
-0
mysql-test/t/ctype_filesystem.test
mysql-test/t/ctype_filesystem.test
+5
-0
sql/mysqld.cc
sql/mysqld.cc
+2
-0
sql/set_var.cc
sql/set_var.cc
+44
-23
sql/set_var.h
sql/set_var.h
+46
-1
sql/sql_show.cc
sql/sql_show.cc
+6
-4
No files found.
mysql-test/r/ctype_filesystem.result
0 → 100644
View file @
ccc3404f
SET CHARACTER SET utf8;
SHOW VARIABLES like 'character_sets_dir';
Variable_name Value
character_sets_dir /ß/
SHOW VARIABLES like 'character_set_filesystem';
Variable_name Value
character_set_filesystem latin1
SHOW VARIABLES like 'character_set_client';
Variable_name Value
character_set_client utf8
SET CHARACTER SET default;
mysql-test/t/ctype_filesystem-master.opt
0 → 100644
View file @
ccc3404f
--character-sets-dir=/ß
--character-set-filesystem=latin1
mysql-test/t/ctype_filesystem.test
0 → 100644
View file @
ccc3404f
SET
CHARACTER
SET
utf8
;
SHOW
VARIABLES
like
'character_sets_dir'
;
SHOW
VARIABLES
like
'character_set_filesystem'
;
SHOW
VARIABLES
like
'character_set_client'
;
SET
CHARACTER
SET
default
;
sql/mysqld.cc
View file @
ccc3404f
...
...
@@ -3035,12 +3035,14 @@ static int init_common_variables(const char *conf_file_name, int argc,
sys_init_connect
.
value_length
=
strlen
(
opt_init_connect
);
else
sys_init_connect
.
value
=
my_strdup
(
""
,
MYF
(
0
));
sys_init_connect
.
is_os_charset
=
TRUE
;
sys_init_slave
.
value_length
=
0
;
if
((
sys_init_slave
.
value
=
opt_init_slave
))
sys_init_slave
.
value_length
=
strlen
(
opt_init_slave
);
else
sys_init_slave
.
value
=
my_strdup
(
""
,
MYF
(
0
));
sys_init_slave
.
is_os_charset
=
TRUE
;
if
(
use_temp_pool
&&
bitmap_init
(
&
temp_pool
,
0
,
1024
,
1
))
return
1
;
...
...
sql/set_var.cc
View file @
ccc3404f
...
...
@@ -138,7 +138,7 @@ sys_var_thd_ulong sys_auto_increment_offset("auto_increment_offset",
sys_var_bool_ptr
sys_automatic_sp_privileges
(
"automatic_sp_privileges"
,
&
sp_automatic_privileges
);
sys_var_const_
str
sys_basedir
(
"basedir"
,
mysql_home
);
sys_var_const_
os_str
sys_basedir
(
"basedir"
,
mysql_home
);
sys_var_long_ptr
sys_binlog_cache_size
(
"binlog_cache_size"
,
&
binlog_cache_size
);
sys_var_thd_ulong
sys_bulk_insert_buff_size
(
"bulk_insert_buffer_size"
,
...
...
@@ -151,6 +151,8 @@ sys_var_character_set_client sys_character_set_client("character_set_client");
sys_var_character_set_connection
sys_character_set_connection
(
"character_set_connection"
);
sys_var_character_set_results
sys_character_set_results
(
"character_set_results"
);
sys_var_character_set_filesystem
sys_character_set_filesystem
(
"character_set_filesystem"
);
sys_var_const_os_str
sys_character_sets_dir
(
"character_sets_dir"
,
mysql_charsets_dir
);
sys_var_thd_ulong
sys_completion_type
(
"completion_type"
,
&
SV
::
completion_type
,
check_completion_type
,
...
...
@@ -162,7 +164,7 @@ sys_var_long_ptr sys_concurrent_insert("concurrent_insert",
&
myisam_concurrent_insert
);
sys_var_long_ptr
sys_connect_timeout
(
"connect_timeout"
,
&
connect_timeout
);
sys_var_const_
str
sys_datadir
(
"datadir"
,
mysql_real_data_home
);
sys_var_const_
os_str
sys_datadir
(
"datadir"
,
mysql_real_data_home
);
sys_var_enum
sys_delay_key_write
(
"delay_key_write"
,
&
delay_key_write_options
,
&
delay_key_write_typelib
,
...
...
@@ -311,6 +313,7 @@ sys_var_thd_ulong sys_optimizer_prune_level("optimizer_prune_level",
&
SV
::
optimizer_prune_level
);
sys_var_thd_ulong
sys_optimizer_search_depth
(
"optimizer_search_depth"
,
&
SV
::
optimizer_search_depth
);
sys_var_const_os_str
sys_plugin_dir
(
"plugin_dir"
,
opt_plugin_dir
);
sys_var_thd_ulong
sys_preload_buff_size
(
"preload_buffer_size"
,
&
SV
::
preload_buff_size
);
sys_var_thd_ulong
sys_read_buff_size
(
"read_buffer_size"
,
...
...
@@ -338,7 +341,7 @@ sys_var_thd_ulong sys_query_alloc_block_size("query_alloc_block_size",
sys_var_thd_ulong
sys_query_prealloc_size
(
"query_prealloc_size"
,
&
SV
::
query_prealloc_size
,
0
,
fix_thd_mem_root
);
sys_var_readonly
sys_tmpdir
(
"tmpdir"
,
OPT_GLOBAL
,
SHOW_CHAR
,
get_tmpdir
);
sys_var_readonly
_os
sys_tmpdir
(
"tmpdir"
,
OPT_GLOBAL
,
SHOW_CHAR
,
get_tmpdir
);
sys_var_thd_ulong
sys_trans_alloc_block_size
(
"transaction_alloc_block_size"
,
&
SV
::
trans_alloc_block_size
,
0
,
fix_trans_mem_root
);
...
...
@@ -363,9 +366,11 @@ sys_var_bool_ptr sys_secure_auth("secure_auth", &opt_secure_auth);
sys_var_const_str_ptr
sys_secure_file_priv
(
"secure_file_priv"
,
&
opt_secure_file_priv
);
sys_var_long_ptr
sys_server_id
(
"server_id"
,
&
server_id
,
fix_server_id
);
#ifdef HAVE_REPLICATION
sys_var_bool_ptr
sys_slave_compressed_protocol
(
"slave_compressed_protocol"
,
&
opt_slave_compressed_protocol
);
#ifdef HAVE_REPLICATION
sys_var_const_os_str_ptr
sys_slave_load_tmpdir
(
"slave_load_tmpdir"
,
&
slave_load_tmpdir
);
sys_var_long_ptr
sys_slave_net_timeout
(
"slave_net_timeout"
,
&
slave_net_timeout
);
sys_var_long_ptr
sys_slave_trans_retries
(
"slave_transaction_retries"
,
...
...
@@ -380,17 +385,17 @@ sys_var_thd_sql_mode sys_sql_mode("sql_mode",
#ifdef HAVE_OPENSSL
extern
char
*
opt_ssl_ca
,
*
opt_ssl_capath
,
*
opt_ssl_cert
,
*
opt_ssl_cipher
,
*
opt_ssl_key
;
sys_var_const_
str_ptr
sys_ssl_ca
(
"ssl_ca"
,
&
opt_ssl_ca
);
sys_var_const_
str_ptr
sys_ssl_capath
(
"ssl_capath"
,
&
opt_ssl_capath
);
sys_var_const_
str_ptr
sys_ssl_cert
(
"ssl_cert"
,
&
opt_ssl_cert
);
sys_var_const_
str_ptr
sys_ssl_cipher
(
"ssl_cipher"
,
&
opt_ssl_cipher
);
sys_var_const_
str_ptr
sys_ssl_key
(
"ssl_key"
,
&
opt_ssl_key
);
sys_var_const_
os_str_ptr
sys_ssl_ca
(
"ssl_ca"
,
&
opt_ssl_ca
);
sys_var_const_
os_str_ptr
sys_ssl_capath
(
"ssl_capath"
,
&
opt_ssl_capath
);
sys_var_const_
os_str_ptr
sys_ssl_cert
(
"ssl_cert"
,
&
opt_ssl_cert
);
sys_var_const_
os_str_ptr
sys_ssl_cipher
(
"ssl_cipher"
,
&
opt_ssl_cipher
);
sys_var_const_
os_str_ptr
sys_ssl_key
(
"ssl_key"
,
&
opt_ssl_key
);
#else
sys_var_const_
str
sys_ssl_ca
(
"ssl_ca"
,
NULL
);
sys_var_const_
str
sys_ssl_capath
(
"ssl_capath"
,
NULL
);
sys_var_const_
str
sys_ssl_cert
(
"ssl_cert"
,
NULL
);
sys_var_const_
str
sys_ssl_cipher
(
"ssl_cipher"
,
NULL
);
sys_var_const_
str
sys_ssl_key
(
"ssl_key"
,
NULL
);
sys_var_const_
os_str
sys_ssl_ca
(
"ssl_ca"
,
NULL
);
sys_var_const_
os_str
sys_ssl_capath
(
"ssl_capath"
,
NULL
);
sys_var_const_
os_str
sys_ssl_cert
(
"ssl_cert"
,
NULL
);
sys_var_const_
os_str
sys_ssl_cipher
(
"ssl_cipher"
,
NULL
);
sys_var_const_
os_str
sys_ssl_key
(
"ssl_key"
,
NULL
);
#endif
sys_var_thd_enum
sys_updatable_views_with_limit
(
"updatable_views_with_limit"
,
...
...
@@ -460,6 +465,14 @@ sys_var_long_ptr sys_innodb_commit_concurrency("innodb_commit_concurrency",
sys_var_long_ptr
sys_innodb_flush_log_at_trx_commit
(
"innodb_flush_log_at_trx_commit"
,
&
srv_flush_log_at_trx_commit
);
sys_var_const_os_str_ptr
sys_innodb_data_file_path
(
"innodb_data_file_path"
,
&
innobase_data_file_path
);
sys_var_const_os_str_ptr
sys_innodb_data_home_dir
(
"innodb_data_home_dir"
,
&
innobase_data_home_dir
);
sys_var_const_os_str_ptr
sys_innodb_log_arch_dir
(
"innodb_log_arch_dir"
,
&
innobase_log_arch_dir
);
sys_var_const_os_str_ptr
sys_innodb_log_group_home_dir
(
"innodb_log_group_home_dir"
,
&
innobase_log_group_home_dir
);
#endif
/* Condition pushdown to storage engine */
...
...
@@ -844,7 +857,7 @@ struct show_var_st init_vars[]= {
{
sys_character_set_results
.
name
,(
char
*
)
&
sys_character_set_results
,
SHOW_SYS
},
{
sys_character_set_server
.
name
,
(
char
*
)
&
sys_character_set_server
,
SHOW_SYS
},
{
sys_charset_system
.
name
,
(
char
*
)
&
sys_charset_system
,
SHOW_SYS
},
{
"character_sets_dir"
,
mysql_charsets_dir
,
SHOW_CHAR
},
{
sys_character_sets_dir
.
name
,
(
char
*
)
&
sys_character_sets_dir
,
SHOW_SYS
},
{
sys_collation_connection
.
name
,(
char
*
)
&
sys_collation_connection
,
SHOW_SYS
},
{
sys_collation_database
.
name
,(
char
*
)
&
sys_collation_database
,
SHOW_SYS
},
{
sys_collation_server
.
name
,(
char
*
)
&
sys_collation_server
,
SHOW_SYS
},
...
...
@@ -905,8 +918,8 @@ struct show_var_st init_vars[]= {
{
"innodb_checksums"
,
(
char
*
)
&
innobase_use_checksums
,
SHOW_MY_BOOL
},
{
sys_innodb_commit_concurrency
.
name
,
(
char
*
)
&
sys_innodb_commit_concurrency
,
SHOW_SYS
},
{
sys_innodb_concurrency_tickets
.
name
,
(
char
*
)
&
sys_innodb_concurrency_tickets
,
SHOW_SYS
},
{
"innodb_data_file_path"
,
(
char
*
)
&
innobase_data_file_path
,
SHOW_CHAR_PTR
},
{
"innodb_data_home_dir"
,
(
char
*
)
&
innobase_data_home_dir
,
SHOW_CHAR_PTR
},
{
sys_innodb_data_file_path
.
name
,
(
char
*
)
&
sys_innodb_data_file_path
,
SHOW_SYS
},
{
sys_innodb_data_home_dir
.
name
,
(
char
*
)
&
sys_innodb_data_home_dir
,
SHOW_SYS
},
{
"innodb_adaptive_hash_index"
,
(
char
*
)
&
innobase_adaptive_hash_index
,
SHOW_MY_BOOL
},
{
"innodb_doublewrite"
,
(
char
*
)
&
innobase_use_doublewrite
,
SHOW_MY_BOOL
},
{
sys_innodb_fast_shutdown
.
name
,(
char
*
)
&
sys_innodb_fast_shutdown
,
SHOW_SYS
},
...
...
@@ -917,12 +930,12 @@ struct show_var_st init_vars[]= {
{
"innodb_force_recovery"
,
(
char
*
)
&
innobase_force_recovery
,
SHOW_LONG
},
{
"innodb_lock_wait_timeout"
,
(
char
*
)
&
innobase_lock_wait_timeout
,
SHOW_LONG
},
{
"innodb_locks_unsafe_for_binlog"
,
(
char
*
)
&
innobase_locks_unsafe_for_binlog
,
SHOW_MY_BOOL
},
{
"innodb_log_arch_dir"
,
(
char
*
)
&
innobase_log_arch_dir
,
SHOW_CHAR_PTR
},
{
sys_innodb_log_arch_dir
.
name
,
(
char
*
)
&
sys_innodb_log_arch_dir
,
SHOW_SYS
},
{
"innodb_log_archive"
,
(
char
*
)
&
innobase_log_archive
,
SHOW_MY_BOOL
},
{
"innodb_log_buffer_size"
,
(
char
*
)
&
innobase_log_buffer_size
,
SHOW_LONG
},
{
"innodb_log_file_size"
,
(
char
*
)
&
innobase_log_file_size
,
SHOW_LONGLONG
},
{
"innodb_log_files_in_group"
,
(
char
*
)
&
innobase_log_files_in_group
,
SHOW_LONG
},
{
"innodb_log_group_home_dir"
,
(
char
*
)
&
innobase_log_group_home_dir
,
SHOW_CHAR_PTR
},
{
sys_innodb_log_group_home_dir
.
name
,
(
char
*
)
&
sys_innodb_log_group_home_dir
,
SHOW_SYS
},
{
sys_innodb_max_dirty_pages_pct
.
name
,
(
char
*
)
&
sys_innodb_max_dirty_pages_pct
,
SHOW_SYS
},
{
sys_innodb_max_purge_lag
.
name
,
(
char
*
)
&
sys_innodb_max_purge_lag
,
SHOW_SYS
},
{
"innodb_mirrored_log_groups"
,
(
char
*
)
&
innobase_mirrored_log_groups
,
SHOW_LONG
},
...
...
@@ -1026,7 +1039,7 @@ struct show_var_st init_vars[]= {
{
sys_optimizer_search_depth
.
name
,(
char
*
)
&
sys_optimizer_search_depth
,
SHOW_SYS
},
{
"pid_file"
,
(
char
*
)
pidfile_name
,
SHOW_CHAR
},
{
"plugin_dir"
,
(
char
*
)
opt_plugin_dir
,
SHOW_CHAR
},
{
sys_plugin_dir
.
name
,
(
char
*
)
&
sys_plugin_dir
,
SHOW_SYS
},
{
"port"
,
(
char
*
)
&
mysqld_port
,
SHOW_INT
},
{
sys_preload_buff_size
.
name
,
(
char
*
)
&
sys_preload_buff_size
,
SHOW_SYS
},
{
"protocol_version"
,
(
char
*
)
&
protocol_version
,
SHOW_INT
},
...
...
@@ -1068,7 +1081,7 @@ struct show_var_st init_vars[]= {
#ifdef HAVE_REPLICATION
{
sys_slave_compressed_protocol
.
name
,
(
char
*
)
&
sys_slave_compressed_protocol
,
SHOW_SYS
},
{
"slave_load_tmpdir"
,
(
char
*
)
&
slave_load_tmpdir
,
SHOW_CHAR_PTR
},
{
sys_slave_load_tmpdir
.
name
,(
char
*
)
&
sys_slave_load_tmpdir
,
SHOW_SYS
},
{
sys_slave_net_timeout
.
name
,(
char
*
)
&
sys_slave_net_timeout
,
SHOW_SYS
},
{
"slave_skip_errors"
,
(
char
*
)
&
slave_error_mask
,
SHOW_SLAVE_SKIP_ERRORS
},
{
sys_slave_trans_retries
.
name
,(
char
*
)
&
sys_slave_trans_retries
,
SHOW_SYS
},
...
...
@@ -1175,6 +1188,7 @@ bool update_sys_var_str(sys_var_str *var_str, rw_lock_t *var_mutex,
old_value
=
var_str
->
value
;
var_str
->
value
=
res
;
var_str
->
value_length
=
new_length
;
var_str
->
is_os_charset
=
FALSE
;
rw_unlock
(
var_mutex
);
my_free
(
old_value
,
MYF
(
MY_ALLOW_ZERO_PTR
));
return
0
;
...
...
@@ -1914,11 +1928,11 @@ Item *sys_var::item(THD *thd, enum_var_type var_type, LEX_STRING *base)
char
*
str
=
(
char
*
)
value_ptr
(
thd
,
var_type
,
base
);
if
(
str
)
tmp
=
new
Item_string
(
str
,
strlen
(
str
),
system_charset_info
,
DERIVATION_SYSCONST
);
charset
(
thd
)
,
DERIVATION_SYSCONST
);
else
{
tmp
=
new
Item_null
();
tmp
->
collation
.
set
(
system_charset_info
,
DERIVATION_SYSCONST
);
tmp
->
collation
.
set
(
charset
(
thd
)
,
DERIVATION_SYSCONST
);
}
pthread_mutex_unlock
(
&
LOCK_global_system_variables
);
return
tmp
;
...
...
@@ -1930,6 +1944,13 @@ Item *sys_var::item(THD *thd, enum_var_type var_type, LEX_STRING *base)
}
CHARSET_INFO
*
sys_var
::
charset
(
THD
*
thd
)
{
return
is_os_charset
?
thd
->
variables
.
character_set_filesystem
:
system_charset_info
;
}
bool
sys_var_thd_enum
::
update
(
THD
*
thd
,
set_var
*
var
)
{
if
(
var
->
type
==
OPT_GLOBAL
)
...
...
sql/set_var.h
View file @
ccc3404f
...
...
@@ -46,9 +46,17 @@ public:
sys_after_update_func
after_update
;
bool
no_support_one_shot
;
/*
true if the value is in character_set_filesystem,
false otherwise.
Note that we can't use a pointer to the charset as the system var is
instantiated in global scope and the charset pointers are initialized
later.
*/
bool
is_os_charset
;
sys_var
(
const
char
*
name_arg
,
sys_after_update_func
func
=
NULL
)
:
name
(
name_arg
),
after_update
(
func
)
,
no_support_one_shot
(
1
)
,
no_support_one_shot
(
1
)
,
is_os_charset
(
FALSE
)
{}
virtual
~
sys_var
()
{}
virtual
bool
check
(
THD
*
thd
,
set_var
*
var
);
...
...
@@ -68,6 +76,7 @@ public:
Item
*
item
(
THD
*
thd
,
enum_var_type
type
,
LEX_STRING
*
base
);
virtual
bool
is_struct
()
{
return
0
;
}
virtual
bool
is_readonly
()
const
{
return
0
;
}
CHARSET_INFO
*
charset
(
THD
*
thd
);
};
...
...
@@ -247,6 +256,17 @@ public:
};
class
sys_var_const_os_str
:
public
sys_var_const_str
{
public:
sys_var_const_os_str
(
const
char
*
name_arg
,
const
char
*
value_arg
)
:
sys_var_const_str
(
name_arg
,
value_arg
)
{
is_os_charset
=
TRUE
;
}
};
class
sys_var_const_str_ptr
:
public
sys_var
{
public:
...
...
@@ -276,6 +296,17 @@ public:
};
class
sys_var_const_os_str_ptr
:
public
sys_var_const_str_ptr
{
public:
sys_var_const_os_str_ptr
(
const
char
*
name_arg
,
char
**
value_arg
)
:
sys_var_const_str_ptr
(
name_arg
,
value_arg
)
{
is_os_charset
=
TRUE
;
}
};
class
sys_var_enum
:
public
sys_var
{
uint
*
value
;
...
...
@@ -791,6 +822,20 @@ public:
bool
is_readonly
()
const
{
return
1
;
}
};
class
sys_var_readonly_os
:
public
sys_var_readonly
{
public:
sys_var_readonly_os
(
const
char
*
name_arg
,
enum_var_type
type
,
SHOW_TYPE
show_type_arg
,
sys_value_ptr_func
value_ptr_func_arg
)
:
sys_var_readonly
(
name_arg
,
type
,
show_type_arg
,
value_ptr_func_arg
)
{
is_os_charset
=
TRUE
;
}
};
class
sys_var_thd_time_zone
:
public
sys_var_thd
{
public:
...
...
sql/sql_show.cc
View file @
ccc3404f
...
...
@@ -1441,6 +1441,7 @@ static bool show_status_array(THD *thd, const char *wild,
char
name_buffer
[
80
];
int
len
;
LEX_STRING
null_lex_str
;
CHARSET_INFO
*
charset
=
system_charset_info
;
DBUG_ENTER
(
"show_status_array"
);
null_lex_str
.
str
=
0
;
// For sys_var->value_ptr()
...
...
@@ -1469,9 +1470,10 @@ static bool show_status_array(THD *thd, const char *wild,
long
nr
;
if
(
show_type
==
SHOW_SYS
)
{
show_type
=
((
sys_var
*
)
value
)
->
show_type
();
value
=
(
char
*
)
((
sys_var
*
)
value
)
->
value_ptr
(
thd
,
value_type
,
&
null_lex_str
);
sys_var
*
var
=
((
sys_var
*
)
value
);
show_type
=
var
->
show_type
();
value
=
(
char
*
)
var
->
value_ptr
(
thd
,
value_type
,
&
null_lex_str
);
charset
=
var
->
charset
(
thd
);
}
pos
=
end
=
buff
;
...
...
@@ -1794,7 +1796,7 @@ static bool show_status_array(THD *thd, const char *wild,
restore_record
(
table
,
s
->
default_values
);
table
->
field
[
0
]
->
store
(
name_buffer
,
strlen
(
name_buffer
),
system_charset_info
);
table
->
field
[
1
]
->
store
(
pos
,
(
uint32
)
(
end
-
pos
),
system_charset_info
);
table
->
field
[
1
]
->
store
(
pos
,
(
uint32
)
(
end
-
pos
),
charset
);
if
(
schema_table_store_record
(
thd
,
table
))
DBUG_RETURN
(
TRUE
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment