Merge abarkov@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/usr/home/bar/mysql-5.0.param sql/item.cc: Auto merged sql/item.h: Auto merged
This commit is contained in:
commit
bb0edb8171
24
sql/item.cc
24
sql/item.cc
@ -700,23 +700,15 @@ Item *Item_param::safe_charset_converter(CHARSET_INFO *tocs)
|
|||||||
{
|
{
|
||||||
if (const_item())
|
if (const_item())
|
||||||
{
|
{
|
||||||
Item_string *conv;
|
|
||||||
uint cnv_errors;
|
uint cnv_errors;
|
||||||
char buf[MAX_FIELD_WIDTH];
|
String *ostr= val_str(&cnvstr);
|
||||||
String tmp(buf, sizeof(buf), &my_charset_bin);
|
cnvitem->str_value.copy(ostr->ptr(), ostr->length(),
|
||||||
String cstr, *ostr= val_str(&tmp);
|
ostr->charset(), tocs, &cnv_errors);
|
||||||
/*
|
if (cnv_errors)
|
||||||
As safe_charset_converter is not executed for
|
|
||||||
a parameter bound to NULL, ostr should never be 0.
|
|
||||||
*/
|
|
||||||
cstr.copy(ostr->ptr(), ostr->length(), ostr->charset(), tocs, &cnv_errors);
|
|
||||||
if (cnv_errors || !(conv= new Item_string(cstr.ptr(), cstr.length(),
|
|
||||||
cstr.charset(),
|
|
||||||
collation.derivation)))
|
|
||||||
return NULL;
|
return NULL;
|
||||||
conv->str_value.copy();
|
cnvitem->str_value.mark_as_const();
|
||||||
conv->str_value.mark_as_const();
|
cnvitem->max_length= cnvitem->str_value.numchars() * tocs->mbmaxlen;
|
||||||
return conv;
|
return cnvitem;
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -2104,6 +2096,8 @@ Item_param::Item_param(unsigned pos_in_query_arg) :
|
|||||||
value is set.
|
value is set.
|
||||||
*/
|
*/
|
||||||
maybe_null= 1;
|
maybe_null= 1;
|
||||||
|
cnvitem= new Item_string("", 0, &my_charset_bin, DERIVATION_COERCIBLE);
|
||||||
|
cnvstr.set(cnvbuf, sizeof(cnvbuf), &my_charset_bin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1084,7 +1084,11 @@ public:
|
|||||||
|
|
||||||
class Item_param :public Item
|
class Item_param :public Item
|
||||||
{
|
{
|
||||||
|
char cnvbuf[MAX_FIELD_WIDTH];
|
||||||
|
String cnvstr;
|
||||||
|
Item *cnvitem;
|
||||||
public:
|
public:
|
||||||
|
|
||||||
enum enum_item_param_state
|
enum enum_item_param_state
|
||||||
{
|
{
|
||||||
NO_VALUE, NULL_VALUE, INT_VALUE, REAL_VALUE,
|
NO_VALUE, NULL_VALUE, INT_VALUE, REAL_VALUE,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user