mysql-default_charset (created in issue #222) is now the name of the charset

pull/317/head
René Cannaò 11 years ago
parent ac1125dadf
commit dd6c278ec2

@ -8,6 +8,29 @@ extern Query_Processor *GloQPro;
extern MySQL_Threads_Handler *GloMTH;
const CHARSET_INFO * proxysql_find_charset_nr(unsigned int nr) {
const CHARSET_INFO * c = compiled_charsets;
do {
if (c->nr == nr) {
return c;
}
++c;
} while (c[0].nr != 0);
return NULL;
}
CHARSET_INFO * proxysql_find_charset_name(const char *name) {
CHARSET_INFO *c = (CHARSET_INFO *)compiled_charsets;
do {
if (!strcasecmp(c->csname, name)) {
return c;
}
++c;
} while (c[0].nr != 0);
return NULL;
}
#ifdef __cplusplus
extern "C" {
@ -395,8 +418,12 @@ char * MySQL_Threads_Handler::get_variable(char *name) { // this is the public f
}
}
if (!strcasecmp(name,"default_charset")) {
sprintf(intbuf,"%d",variables.default_charset);
return strdup(intbuf);
const CHARSET_INFO *c = proxysql_find_charset_nr(variables.default_charset);
if (!c) {
proxy_error("Not existing charset number %u\n");
assert(c);
}
return strdup(c->csname);
}
if (!strcasecmp(name,"connect_retries_on_failure")) {
sprintf(intbuf,"%d",variables.connect_retries_on_failure);
@ -775,10 +802,14 @@ bool MySQL_Threads_Handler::set_variable(char *name, char *value) { // this is t
}
}
if (!strcasecmp(name,"default_charset")) {
int intv=atoi(value);
if (intv > 0 && intv < 256) {
variables.default_charset=intv;
return true;
if (vallen) {
CHARSET_INFO * c=proxysql_find_charset_name(value);
if (c) {
variables.default_charset=c->nr;
return true;
} else {
return false;
}
} else {
return false;
}

Loading…
Cancel
Save