Commit eb83b5b3 authored by unknown's avatar unknown

Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-4.1

into mysql.r18.ru:/usr/home/bk/mysql-4.1


BitKeeper/etc/logging_ok:
  Logging to logging@openlogging.org accepted
parents 4490c9f5 2beecc13
...@@ -17,6 +17,7 @@ bar@gw.udmsearch.izhnet.ru ...@@ -17,6 +17,7 @@ bar@gw.udmsearch.izhnet.ru
bell@laptop.sanja.is.com.ua bell@laptop.sanja.is.com.ua
bell@sanja.is.com.ua bell@sanja.is.com.ua
bk@admin.bk bk@admin.bk
bk@mysql.r18.ru
carsten@tsort.bitbybit.dk carsten@tsort.bitbybit.dk
davida@isil.mysql.com davida@isil.mysql.com
gluh@gluh.(none) gluh@gluh.(none)
......
...@@ -62,7 +62,7 @@ EXTRA_DIST = $(EXTRA_SCRIPTS) \ ...@@ -62,7 +62,7 @@ EXTRA_DIST = $(EXTRA_SCRIPTS) \
mysqlaccess.conf \ mysqlaccess.conf \
mysqlbug mysqlbug
pkgdata_DATA = fill_help_tables.sql mysql_fix_privilege_tables.sql dist_pkgdata_DATA = fill_help_tables.sql mysql_fix_privilege_tables.sql
# mysqlbug should be distributed built so that people can report build # mysqlbug should be distributed built so that people can report build
# failures with it. # failures with it.
......
...@@ -90,38 +90,58 @@ static bool convert_constant_item(Field *field, Item **item) ...@@ -90,38 +90,58 @@ static bool convert_constant_item(Field *field, Item **item)
bool Item_bool_func2::set_cmp_charset(CHARSET_INFO *cs1, enum coercion co1, bool Item_bool_func2::set_cmp_charset(CHARSET_INFO *cs1, enum coercion co1,
CHARSET_INFO *cs2, enum coercion co2) CHARSET_INFO *cs2, enum coercion co2)
{ {
if ((cs1 == &my_charset_bin) || (cs2 == &my_charset_bin)) if (cs1 == &my_charset_bin || cs2 == &my_charset_bin)
{ {
cmp_charset= &my_charset_bin; cmp_charset= &my_charset_bin;
coercibility= co1 > co2 ? co1 : co2;
return 0; return 0;
} }
if ((co1 == COER_NOCOLL) || (co2 == COER_NOCOLL)) if (!my_charset_same(cs1, cs2))
return 1; {
/*
if (!my_charset_same(cs1,cs2)) We do allow to use BLOBS together with character strings
return 1; BLOBS have more precedance
*/
if (co1 < co2) if ((co1 <= co2) && (cs1==&my_charset_bin))
{
cmp_charset= cs1;
coercibility= co1;
}
else if ((co2 <= co1) && (cs2==&my_charset_bin))
{
cmp_charset= cs2;
coercibility= co2;
}
else
{
cmp_charset= 0;
coercibility= COER_NOCOLL;
return 1;
}
}
else if (co1 < co2)
{
cmp_charset= cs1; cmp_charset= cs1;
coercibility= co1;
}
else if (co2 < co1) else if (co2 < co1)
cmp_charset= cs2;
else // co1==co2
{ {
cmp_charset= cs2;
coercibility= co1;
}
else
{
if (cs1 == cs2) if (cs1 == cs2)
{
cmp_charset= cs1; cmp_charset= cs1;
else coercibility= co1;
}
else
{ {
if (co1 == COER_COERCIBLE) coercibility= COER_NOCOLL;
{ cmp_charset= 0;
CHARSET_INFO *c; return (co1 == COER_EXPLICIT) ? 1 : 0;
if ((c= get_charset_by_csname(cs1->csname, MY_CS_PRIMARY, MYF(0))))
{
cmp_charset= c;
return 0;
}
}
return 1;
} }
} }
return 0; return 0;
......
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