Commit 3f6a00d1 authored by unknown's avatar unknown

CONVERT class was removed

parent 3ccd93c7
......@@ -504,6 +504,7 @@ bool Protocol::net_store_data(const char *from, uint length)
return false;
}
#if 0
/* The same as Protocol::net_store_data but does the converstion
*/
bool Protocol::convert_str(const char *from, uint length)
......@@ -519,3 +520,4 @@ bool Protocol::convert_str(const char *from, uint length)
return false;
}
#endif
......@@ -377,7 +377,7 @@ a
set CHARACTER SET cp1251_koi8;
select * from t1;
a
?
set CHARACTER SET DEFAULT;
show status like "Qcache_queries_in_cache";
Variable_name Value
......
......@@ -156,17 +156,17 @@ show variables like 'net_buffer_length';
Variable_name Value
net_buffer_length 1048576
set GLOBAL character set cp1251_koi8;
show global variables like "convert_character_set";
show global variables like "client_collation";
Variable_name Value
convert_character_set cp1251_koi8
client_collation cp1251
set character set cp1251_koi8;
show variables like "convert_character_set";
show variables like "client_collation";
Variable_name Value
convert_character_set cp1251_koi8
client_collation cp1251
set global character set default, session character set default;
show variables like "convert_character_set";
show variables like "client_collation";
Variable_name Value
convert_character_set cp1251_koi8
client_collation latin1
select @@timestamp>0;
@@timestamp>0
1
......@@ -193,12 +193,12 @@ set SESSION query_cache_size=10000;
Variable 'query_cache_size' is a GLOBAL variable and should be set with SET GLOBAL
set GLOBAL table_type=DEFAULT;
Variable 'table_type' doesn't have a default value
set convert_character_set=UNKNOWN_CHARACTER_SET;
set client_collation=UNKNOWN_CHARACTER_SET;
Unknown character set: 'UNKNOWN_CHARACTER_SET'
set character set unknown;
Unknown character set: 'unknown'
set character set 0;
Wrong argument type to variable 'convert_character_set'
Wrong argument type to variable 'client_collation'
set global autocommit=1;
Variable 'autocommit' is a LOCAL variable and can't be used with SET GLOBAL
select @@global.timestamp;
......@@ -218,8 +218,8 @@ select @@autocommit, @@big_tables;
1 1
set global binlog_cache_size=100;
set bulk_insert_buffer_size=100;
set convert_character_set=cp1251_koi8;
set convert_character_set=default;
set character set cp1251_koi8;
set character set default;
set @@global.concurrent_insert=1;
set global connect_timeout=100;
select @@delay_key_write;
......
......@@ -92,11 +92,11 @@ set net_buffer_length=2000000000;
show variables like 'net_buffer_length';
set GLOBAL character set cp1251_koi8;
show global variables like "convert_character_set";
show global variables like "client_collation";
set character set cp1251_koi8;
show variables like "convert_character_set";
show variables like "client_collation";
set global character set default, session character set default;
show variables like "convert_character_set";
show variables like "client_collation";
select @@timestamp>0;
set @@rand_seed1=10000000,@@rand_seed2=1000000;
......@@ -123,7 +123,7 @@ set SESSION query_cache_size=10000;
--error 1230
set GLOBAL table_type=DEFAULT;
--error 1115
set convert_character_set=UNKNOWN_CHARACTER_SET;
set client_collation=UNKNOWN_CHARACTER_SET;
--error 1115
set character set unknown;
--error 1232
......@@ -148,8 +148,8 @@ set big_tables=1;
select @@autocommit, @@big_tables;
set global binlog_cache_size=100;
set bulk_insert_buffer_size=100;
set convert_character_set=cp1251_koi8;
set convert_character_set=default;
set character set cp1251_koi8;
set character set default;
set @@global.concurrent_insert=1;
set global connect_timeout=100;
select @@delay_key_write;
......
......@@ -14,6 +14,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#if 0
/*
** Convert tables between different character sets
......@@ -460,3 +461,5 @@ bool CONVERT::store(String *packet,const char *from,uint length)
packet->length((uint) (store_dest(to, from, length)-packet->ptr()));
return 0;
}
#endif
......@@ -1194,6 +1194,7 @@ bool MYSQL_LOG::write(Log_event* event_info)
goto err;
}
}
#if 0
if (thd->variables.convert_set)
{
char buf[256], *p;
......@@ -1204,6 +1205,7 @@ bool MYSQL_LOG::write(Log_event* event_info)
if (e.write(file))
goto err;
}
#endif
}
event_info->set_log_pos(this);
if (event_info->write(file) ||
......
......@@ -943,7 +943,7 @@ int Query_log_event::exec_event(struct st_relay_log_info* rli)
VOID(pthread_mutex_lock(&LOCK_thread_count));
thd->db = thd->query = 0;
VOID(pthread_mutex_unlock(&LOCK_thread_count));
thd->variables.convert_set = 0;
//thd->variables.convert_set = 0;
close_thread_tables(thd);
free_root(&thd->mem_root,0);
return 1;
......@@ -954,7 +954,7 @@ int Query_log_event::exec_event(struct st_relay_log_info* rli)
thd->query= 0; // just to be sure
VOID(pthread_mutex_unlock(&LOCK_thread_count));
// assume no convert for next query unless set explictly
thd->variables.convert_set = 0;
//thd->variables.convert_set = 0;
close_thread_tables(thd);
if (thd->query_error || thd->is_fatal_error)
......
......@@ -43,11 +43,6 @@ bool Protocol::net_store_data(const char *from, uint length)
packet->length((uint) (to+length-packet->ptr()));
return 0;
}
inline bool Protocol::convert_str(const char *from, uint length)
{
return convert->store(packet, from, length);
}
#endif
......@@ -472,7 +467,6 @@ char *net_store_data(char *to,longlong from)
void Protocol::init(THD *thd_arg)
{
thd=thd_arg;
convert=thd->variables.convert_set;
packet= &thd->packet;
#ifndef DEBUG_OFF
field_types= 0;
......@@ -487,15 +481,12 @@ void Protocol::init(THD *thd_arg)
send_fields()
THD Thread data object
list List of items to send to client
convert object used to convertation to another character set
flag Bit mask with the following functions:
1 send number of rows
2 send default values
DESCRIPTION
Sum fields has table name empty and field_name.
Uses send_fields_convert() and send_fields() depending on
if we have an active character set convert or not.
RETURN VALUES
0 ok
......@@ -712,8 +703,6 @@ bool Protocol_simple::store(const char *from, uint length, CHARSET_INFO *cs)
field_types[field_pos] <= MYSQL_TYPE_GEOMETRY));
field_pos++;
#endif
if (convert)
return convert_str(from, length);
if (cs != this->thd->charset())
{
String tmp;
......@@ -813,8 +802,6 @@ bool Protocol_simple::store(Field *field)
char buff[MAX_FIELD_WIDTH];
String tmp1(buff,sizeof(buff), &my_charset_bin);
field->val_str(&tmp1,&tmp1);
if (convert)
return convert_str(tmp1.ptr(), tmp1.length());
if (field->charset() != this->thd->charset())
{
String tmp;
......@@ -929,8 +916,6 @@ bool Protocol_prep::store(const char *from,uint length, CHARSET_INFO *cs)
field_types[field_pos] <= MYSQL_TYPE_GEOMETRY));
#endif
field_pos++;
if (convert)
return convert_str(from, length);
return net_store_data(from, length);
}
......
......@@ -20,7 +20,6 @@
#define PACKET_BUFFET_EXTRA_ALLOC 1024
class CONVERT;
class i_string;
class THD;
#ifdef EMBEDDED_LIBRARY
......@@ -37,15 +36,12 @@ protected:
#endif
uint field_count;
bool net_store_data(const char *from, uint length);
bool convert_str(const char *from, uint length);
#ifdef EMBEDDED_LIBRARY
char **next_field;
MYSQL_FIELD *next_mysql_field;
MEM_ROOT *alloc;
#endif
public:
CONVERT *convert;
Protocol() {}
Protocol(THD *thd) { init(thd); }
void init(THD* thd);
......
......@@ -105,7 +105,6 @@ sys_var_str sys_charset("character_set",
sys_update_charset,
sys_set_default_charset);
sys_var_client_collation sys_client_collation("client_collation");
sys_var_thd_conv_charset sys_convert_charset("convert_character_set");
sys_var_bool_ptr sys_concurrent_insert("concurrent_insert",
&myisam_concurrent_insert);
sys_var_long_ptr sys_connect_timeout("connect_timeout",
......@@ -337,7 +336,6 @@ sys_var *sys_variables[]=
&sys_client_collation,
&sys_concurrent_insert,
&sys_connect_timeout,
&sys_convert_charset,
&sys_default_week_format,
&sys_delay_key_write,
&sys_delayed_insert_limit,
......@@ -445,7 +443,6 @@ struct show_var_st init_vars[]= {
{sys_client_collation.name, (char*) &sys_client_collation, SHOW_SYS},
{sys_concurrent_insert.name,(char*) &sys_concurrent_insert, SHOW_SYS},
{sys_connect_timeout.name, (char*) &sys_connect_timeout, SHOW_SYS},
{sys_convert_charset.name, (char*) &sys_convert_charset, SHOW_SYS},
{"datadir", mysql_real_data_home, SHOW_CHAR},
{"default_week_format", (char*) &sys_default_week_format, SHOW_SYS},
{sys_delay_key_write.name, (char*) &sys_delay_key_write, SHOW_SYS},
......@@ -1131,56 +1128,38 @@ byte *sys_var_thd_bit::value_ptr(THD *thd, enum_var_type type)
}
bool sys_var_thd_conv_charset::check(THD *thd, set_var *var)
{
CONVERT *tmp;
char buff[80];
String str(buff,sizeof(buff), system_charset_info), *res;
if (!var->value) // Default value
{
var->save_result.convert= (var->type != OPT_GLOBAL ?
global_system_variables.convert_set
: (CONVERT*) 0);
return 0;
}
if (!(res=var->value->val_str(&str)))
res= &empty_string;
if (!(tmp=get_convert_set(res->c_ptr())))
{
my_error(ER_UNKNOWN_CHARACTER_SET, MYF(0), res->c_ptr());
return 1;
}
var->save_result.convert=tmp; // Save for update
return 0;
}
typedef struct old_names_map_st {
const char *old_name;
const char *new_name;
} my_old_conv;
static my_old_conv old_conv[]=
{
{ "cp1251_koi8" , "cp1251" },
{ "cp1250_latin2" , "cp1250" },
{ "kam_latin2" , "keybcs2" },
{ "mac_latin2" , "MacRoman" },
{ "macce_latin2" , "MacCE" },
{ "pc2_latin2" , "pclatin2" },
{ "vga_latin2" , "pclatin1" },
{ "koi8_cp1251" , "koi8r" },
{ "win1251ukr_koi8_ukr" , "win1251ukr" },
{ "koi8_ukr_win1251ukr" , "koi8u" },
{ NULL , NULL }
};
bool sys_var_thd_conv_charset::update(THD *thd, set_var *var)
static CHARSET_INFO *get_old_charset_by_name(const char *name)
{
if (var->type == OPT_GLOBAL)
global_system_variables.convert_set= var->save_result.convert;
else
my_old_conv *c;
for (c= old_conv; c->old_name; c++)
{
thd->lex.convert_set= thd->variables.convert_set=
var->save_result.convert;
thd->protocol_simple.init(thd);
thd->protocol_prep.init(thd);
if (!my_strcasecmp(&my_charset_latin1,name,c->old_name))
return get_charset_by_name(c->new_name,MYF(0));
}
return 0;
return NULL;
}
byte *sys_var_thd_conv_charset::value_ptr(THD *thd, enum_var_type type)
{
CONVERT *conv= ((type == OPT_GLOBAL) ?
global_system_variables.convert_set :
thd->variables.convert_set);
return conv ? (byte*) conv->name : (byte*) "";
}
bool sys_var_client_collation::check(THD *thd, set_var *var)
{
CHARSET_INFO *tmp;
......@@ -1198,7 +1177,8 @@ bool sys_var_client_collation::check(THD *thd, set_var *var)
if (!(res=var->value->val_str(&str)))
res= &empty_string;
if (!(tmp=get_charset_by_name(res->c_ptr(),MYF(0))))
if (!(tmp=get_charset_by_name(res->c_ptr(),MYF(0))) &&
!(tmp=get_old_charset_by_name(res->c_ptr())))
{
my_error(ER_UNKNOWN_CHARACTER_SET, MYF(0), res->c_ptr());
return 1;
......
......@@ -406,23 +406,6 @@ public:
};
class sys_var_thd_conv_charset :public sys_var_thd
{
public:
sys_var_thd_conv_charset(const char *name_arg)
:sys_var_thd(name_arg)
{}
bool check(THD *thd, set_var *var);
bool update(THD *thd, set_var *var);
SHOW_TYPE type() { return SHOW_CHAR; }
byte *value_ptr(THD *thd, enum_var_type type);
bool check_update_type(Item_result type)
{
return type != STRING_RESULT; /* Only accept strings */
}
bool check_default(enum_var_type type) { return 0; }
};
class sys_var_client_collation :public sys_var_thd
{
public:
......@@ -490,7 +473,6 @@ public:
union
{
CHARSET_INFO *charset;
CONVERT *convert;
ulong ulong_value;
} save_result;
......
......@@ -778,11 +778,8 @@ void Query_cache::store_query(THD *thd, TABLE_LIST *tables_used)
most significant bit - CLIENT_LONG_FLAG,
other - charset number (0 no charset convertion)
*/
if (thd->variables.convert_set != 0)
{
flags|= (byte) thd->variables.convert_set->number();
DBUG_ASSERT(thd->variables.convert_set->number() < 128);
}
flags|= (byte) thd->charset()->number;
DBUG_ASSERT(thd->charset()->number < 128);
tot_length=thd->query_length+thd->db_length+2;
thd->query[tot_length-1] = (char) flags;
......@@ -935,11 +932,8 @@ Query_cache::send_result_to_client(THD *thd, char *sql, uint query_length)
Other - charset number (0 no charset convertion)
*/
flags = (thd->client_capabilities & CLIENT_LONG_FLAG ? 0x80 : 0);
if (thd->variables.convert_set != 0)
{
flags |= (byte) thd->variables.convert_set->number();
DBUG_ASSERT(thd->variables.convert_set->number() < 128);
}
flags |= (byte) thd->charset()->number;
DBUG_ASSERT(thd->charset()->number < 128);
sql[tot_length-1] = (char) flags;
query_block = (Query_cache_block *) hash_search(&queries, (byte*) sql,
tot_length);
......
......@@ -172,32 +172,6 @@ public:
/* character conversion tables */
class CONVERT;
CONVERT *get_convert_set(const char *name_ptr);
class CONVERT
{
const uchar *from_map,*to_map;
void convert_array(const uchar *mapping,uchar *buff,uint length);
public:
const char *name;
uint numb;
CONVERT(const char *name_par,uchar *from_par,uchar *to_par, uint number)
:from_map(from_par),to_map(to_par),name(name_par),numb(number) {}
friend CONVERT *get_convert_set(const char *name_ptr);
inline void convert(char *a,uint length)
{
convert_array(from_map, (uchar*) a,length);
}
char *store_dest(char *to, const char *from, uint length)
{
for (const char *end=from+length ; from != end ; from++)
*to++= to_map[(uchar) *from];
return to;
}
bool store(String *, const char *,uint);
inline uint number() { return numb; }
};
typedef struct st_copy_info {
ha_rows records;
......@@ -400,7 +374,6 @@ struct system_variables
my_bool log_warnings;
my_bool low_priority_updates;
CONVERT *convert_set;
CHARSET_INFO *thd_charset;
};
......
......@@ -615,7 +615,6 @@ int mysqld_show_create_db(THD *thd, char *dbname,
uint db_access;
bool found_libchar;
HA_CREATE_INFO create;
CONVERT *convert=thd->variables.convert_set;
uint create_options = create_info ? create_info->options : 0;
Protocol *protocol=thd->protocol;
DBUG_ENTER("mysql_show_create_db");
......
......@@ -107,6 +107,7 @@ void lex_free(void)
LEX *lex_start(THD *thd, uchar *buf,uint length)
{
LEX *lex= &thd->lex;
lex->thd= thd;
lex->next_state=MY_LEX_START;
lex->end_of_query=(lex->ptr=buf)+length;
lex->yylineno = 1;
......@@ -117,7 +118,6 @@ LEX *lex_start(THD *thd, uchar *buf,uint length)
lex->select_lex.ftfunc_list_alloc.empty();
lex->select_lex.ftfunc_list= &lex->select_lex.ftfunc_list_alloc;
lex->current_select= &lex->select_lex;
lex->convert_set= (lex->thd= thd)->variables.convert_set;
lex->thd_charset= lex->thd->variables.thd_charset;
lex->yacc_yyss=lex->yacc_yyvs=0;
lex->ignore_space=test(thd->variables.sql_mode & MODE_IGNORE_SPACE);
......@@ -520,8 +520,6 @@ int yylex(void *arg, void *yythd)
yySkip(); // next state does a unget
}
yylval->lex_str=get_token(lex,length);
if (lex->convert_set)
lex->convert_set->convert((char*) yylval->lex_str.str,lex->yytoklen);
/*
Note: "SELECT _bla AS 'alias'"
......@@ -621,8 +619,6 @@ int yylex(void *arg, void *yythd)
case MY_LEX_FOUND_IDENT: // Complete ident
yylval->lex_str=get_token(lex,yyLength());
if (lex->convert_set)
lex->convert_set->convert((char*) yylval->lex_str.str,lex->yytoklen);
return(IDENT);
case MY_LEX_USER_VARIABLE_DELIMITER:
......@@ -670,8 +666,6 @@ int yylex(void *arg, void *yythd)
else
yylval->lex_str=get_token(lex,yyLength());
}
if (lex->convert_set)
lex->convert_set->convert((char*) yylval->lex_str.str,lex->yytoklen);
if (c == delim)
yySkip(); // Skip end `
return(IDENT);
......@@ -802,8 +796,6 @@ int yylex(void *arg, void *yythd)
break;
}
yylval->lex_str.length=lex->yytoklen;
if (lex->convert_set)
lex->convert_set->convert((char*) yylval->lex_str.str,lex->yytoklen);
return(TEXT_STRING);
case MY_LEX_COMMENT: // Comment
......@@ -940,8 +932,6 @@ int yylex(void *arg, void *yythd)
return(tokval); // Was keyword
}
yylval->lex_str=get_token(lex,length);
if (lex->convert_set)
lex->convert_set->convert((char*) yylval->lex_str.str,lex->yytoklen);
return(IDENT);
}
}
......
......@@ -448,7 +448,6 @@ typedef struct st_lex
TYPELIB *interval;
create_field *last_field;
Item *default_value, *comment;
CONVERT *convert_set;
CHARSET_INFO *thd_charset;
LEX_USER *grant_user;
gptr yacc_yyss,yacc_yyvs;
......
......@@ -979,8 +979,8 @@ mysqld_dump_create_info(THD *thd, TABLE *table, int fd)
if (store_create_info(thd, table, packet))
DBUG_RETURN(-1);
if (protocol->convert)
protocol->convert->convert((char*) packet->ptr(), packet->length());
//if (protocol->convert)
// protocol->convert->convert((char*) packet->ptr(), packet->length());
if (fd < 0)
{
if (protocol->write())
......
......@@ -4306,9 +4306,15 @@ option_value:
}
| charset opt_equal set_expr_or_default
{
LEX *lex=Lex;
THD *thd= YYTHD;
LEX *lex= &thd->lex;
if (!$3)
{
CHARSET_INFO *cl= thd->db_charset;
$3= new Item_string(cl->name, strlen(cl->name), &my_charset_latin1);
}
lex->var_list.push_back(new set_var(lex->option_type,
find_sys_var("convert_character_set"),
find_sys_var("client_collation"),
$3));
}
| NAMES_SYM charset_name_or_default opt_collate
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment