Merge sanja.is.com.ua:/home/bell/mysql/mysql-4.1
into sanja.is.com.ua:/home/bell/mysql/work-select-4.1
This commit is contained in:
commit
0469dd4993
@ -309,9 +309,6 @@
|
|||||||
/* Use MySQL RAID */
|
/* Use MySQL RAID */
|
||||||
#undef USE_RAID
|
#undef USE_RAID
|
||||||
|
|
||||||
/* Use strcoll() functions when comparing and sorting. */
|
|
||||||
#undef USE_STRCOLL
|
|
||||||
|
|
||||||
/* Program version */
|
/* Program version */
|
||||||
#undef VERSION
|
#undef VERSION
|
||||||
|
|
||||||
|
@ -576,7 +576,6 @@ int sortcmp(const String *x,const String *y)
|
|||||||
const char *t= y->ptr();
|
const char *t= y->ptr();
|
||||||
uint32 x_len=x->length(),y_len=y->length(),len=min(x_len,y_len);
|
uint32 x_len=x->length(),y_len=y->length(),len=min(x_len,y_len);
|
||||||
|
|
||||||
#ifdef USE_STRCOLL
|
|
||||||
if (use_strnxfrm(x->str_charset))
|
if (use_strnxfrm(x->str_charset))
|
||||||
{
|
{
|
||||||
#ifndef CMP_ENDSPACE
|
#ifndef CMP_ENDSPACE
|
||||||
@ -590,7 +589,6 @@ int sortcmp(const String *x,const String *y)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
#endif /* USE_STRCOLL */
|
|
||||||
x_len-=len; // For easy end space test
|
x_len-=len; // For easy end space test
|
||||||
y_len-=len;
|
y_len-=len;
|
||||||
if (x->str_charset->sort_order)
|
if (x->str_charset->sort_order)
|
||||||
@ -633,9 +631,7 @@ int sortcmp(const String *x,const String *y)
|
|||||||
#else
|
#else
|
||||||
return (int) (x_len-y_len);
|
return (int) (x_len-y_len);
|
||||||
#endif /* CMP_ENDSPACE */
|
#endif /* CMP_ENDSPACE */
|
||||||
#ifdef USE_STRCOLL
|
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -2256,9 +2256,6 @@ then
|
|||||||
AC_DEFINE(USE_MB_IDENT)
|
AC_DEFINE(USE_MB_IDENT)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Temporary hack for USE_STRCOLL
|
|
||||||
AC_DEFINE(USE_STRCOLL)
|
|
||||||
|
|
||||||
AC_SUBST(default_charset)
|
AC_SUBST(default_charset)
|
||||||
AC_DEFINE_UNQUOTED(DEFAULT_CHARSET_NAME,"$default_charset")
|
AC_DEFINE_UNQUOTED(DEFAULT_CHARSET_NAME,"$default_charset")
|
||||||
|
|
||||||
|
@ -53,9 +53,7 @@ uint _nisam_make_key(register N_INFO *info, uint keynr, uchar *key, const char *
|
|||||||
}
|
}
|
||||||
*key++= (uchar) (length=(uint) (end-pos));
|
*key++= (uchar) (length=(uint) (end-pos));
|
||||||
memcpy((byte*) key,(byte*) pos,(size_t) length);
|
memcpy((byte*) key,(byte*) pos,(size_t) length);
|
||||||
#ifdef USE_STRCOLL
|
|
||||||
if (!use_strnxfrm(default_charset_info))
|
if (!use_strnxfrm(default_charset_info))
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
if (type == HA_KEYTYPE_TEXT)
|
if (type == HA_KEYTYPE_TEXT)
|
||||||
my_tosort(default_charset_info,(byte*) key,length);
|
my_tosort(default_charset_info,(byte*) key,length);
|
||||||
@ -66,9 +64,7 @@ uint _nisam_make_key(register N_INFO *info, uint keynr, uchar *key, const char *
|
|||||||
{
|
{
|
||||||
memcpy((byte*) key,(byte*) record+keyseg->base.start,
|
memcpy((byte*) key,(byte*) record+keyseg->base.start,
|
||||||
(size_t) keyseg->base.length);
|
(size_t) keyseg->base.length);
|
||||||
#ifdef USE_STRCOLL
|
|
||||||
if (!use_strnxfrm(default_charset_info))
|
if (!use_strnxfrm(default_charset_info))
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
if (type == HA_KEYTYPE_TEXT)
|
if (type == HA_KEYTYPE_TEXT)
|
||||||
my_tosort(default_charset_info,(byte*) key,(uint) keyseg->base.length);
|
my_tosort(default_charset_info,(byte*) key,(uint) keyseg->base.length);
|
||||||
@ -149,9 +145,7 @@ uint _nisam_pack_key(register N_INFO *info, uint keynr, uchar *key, uchar *old,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
memcpy((byte*) key,old,(size_t) length);
|
memcpy((byte*) key,old,(size_t) length);
|
||||||
#ifdef USE_STRCOLL
|
|
||||||
if (!use_strnxfrm(default_charset_info))
|
if (!use_strnxfrm(default_charset_info))
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
if (type == HA_KEYTYPE_TEXT)
|
if (type == HA_KEYTYPE_TEXT)
|
||||||
my_tosort(default_charset_info,(byte*) key,length);
|
my_tosort(default_charset_info,(byte*) key,length);
|
||||||
|
@ -331,7 +331,6 @@ int _nisam_key_cmp(register N_KEYSEG *keyseg, register uchar *a, register uchar
|
|||||||
(int) *as : b_length;
|
(int) *as : b_length;
|
||||||
end= a+ min(key_length,(uint) length);
|
end= a+ min(key_length,(uint) length);
|
||||||
|
|
||||||
#ifdef USE_STRCOLL
|
|
||||||
if (use_strnxfrm(default_charset_info)) {
|
if (use_strnxfrm(default_charset_info)) {
|
||||||
if (((enum ha_base_keytype) keyseg->base.type) == HA_KEYTYPE_BINARY)
|
if (((enum ha_base_keytype) keyseg->base.type) == HA_KEYTYPE_BINARY)
|
||||||
{
|
{
|
||||||
@ -349,7 +348,6 @@ int _nisam_key_cmp(register N_KEYSEG *keyseg, register uchar *a, register uchar
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
while (a < end)
|
while (a < end)
|
||||||
if ((flag= (int) *a++ - (int) *b++))
|
if ((flag= (int) *a++ - (int) *b++))
|
||||||
@ -382,7 +380,6 @@ int _nisam_key_cmp(register N_KEYSEG *keyseg, register uchar *a, register uchar
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
#ifdef USE_STRCOLL
|
|
||||||
if (use_strnxfrm(default_charset_info)) {
|
if (use_strnxfrm(default_charset_info)) {
|
||||||
if (((enum ha_base_keytype) keyseg->base.type) == HA_KEYTYPE_BINARY)
|
if (((enum ha_base_keytype) keyseg->base.type) == HA_KEYTYPE_BINARY)
|
||||||
{
|
{
|
||||||
@ -400,7 +397,6 @@ int _nisam_key_cmp(register N_KEYSEG *keyseg, register uchar *a, register uchar
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
while (a < end)
|
while (a < end)
|
||||||
if ((flag= (int) *a++ - (int) *b++))
|
if ((flag= (int) *a++ - (int) *b++))
|
||||||
|
@ -123,11 +123,9 @@ ha_rows filesort(THD *thd, TABLE *table, SORT_FIELD *sortorder, uint s_length,
|
|||||||
if (param.sort_length == param.ref_length && records > param.max_rows)
|
if (param.sort_length == param.ref_length && records > param.max_rows)
|
||||||
records=param.max_rows; /* purecov: inspected */
|
records=param.max_rows; /* purecov: inspected */
|
||||||
|
|
||||||
#ifdef USE_STRCOLL
|
|
||||||
if (use_strnxfrm(charset) &&
|
if (use_strnxfrm(charset) &&
|
||||||
!(param.tmp_buffer=my_malloc(param.sort_length,MYF(MY_WME))))
|
!(param.tmp_buffer=my_malloc(param.sort_length,MYF(MY_WME))))
|
||||||
goto err;
|
goto err;
|
||||||
#endif
|
|
||||||
|
|
||||||
memavl= thd->variables.sortbuff_size;
|
memavl= thd->variables.sortbuff_size;
|
||||||
while (memavl >= MIN_SORT_MEMORY)
|
while (memavl >= MIN_SORT_MEMORY)
|
||||||
@ -200,10 +198,8 @@ ha_rows filesort(THD *thd, TABLE *table, SORT_FIELD *sortorder, uint s_length,
|
|||||||
error =0;
|
error =0;
|
||||||
|
|
||||||
err:
|
err:
|
||||||
#ifdef USE_STRCOLL
|
|
||||||
if (param.tmp_buffer)
|
if (param.tmp_buffer)
|
||||||
x_free(param.tmp_buffer);
|
x_free(param.tmp_buffer);
|
||||||
#endif
|
|
||||||
x_free((gptr) sort_keys);
|
x_free((gptr) sort_keys);
|
||||||
x_free((gptr) buffpek);
|
x_free((gptr) buffpek);
|
||||||
close_cached_file(&tempfile);
|
close_cached_file(&tempfile);
|
||||||
@ -494,7 +490,6 @@ static void make_sortkey(register SORTPARAM *param,
|
|||||||
diff=0; /* purecov: inspected */
|
diff=0; /* purecov: inspected */
|
||||||
length=sort_field->length;
|
length=sort_field->length;
|
||||||
}
|
}
|
||||||
#ifdef USE_STRCOLL
|
|
||||||
if (use_strnxfrm(cs))
|
if (use_strnxfrm(cs))
|
||||||
{
|
{
|
||||||
if (item->binary())
|
if (item->binary())
|
||||||
@ -520,15 +515,12 @@ static void make_sortkey(register SORTPARAM *param,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
#endif
|
|
||||||
if (res->ptr() != (char*) to)
|
if (res->ptr() != (char*) to)
|
||||||
memcpy(to,res->ptr(),length);
|
memcpy(to,res->ptr(),length);
|
||||||
bzero((char *)to+length,diff);
|
bzero((char *)to+length,diff);
|
||||||
if (!item->binary())
|
if (!item->binary())
|
||||||
my_tosort(cs, (char*) to,length);
|
my_tosort(cs, (char*) to,length);
|
||||||
#ifdef USE_STRCOLL
|
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case INT_RESULT:
|
case INT_RESULT:
|
||||||
@ -930,34 +922,27 @@ sortlength(SORT_FIELD *sortorder, uint s_length)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
sortorder->length=sortorder->field->pack_length();
|
sortorder->length=sortorder->field->pack_length();
|
||||||
#ifdef USE_STRCOLL
|
|
||||||
if (!sortorder->field->binary())
|
if (!sortorder->field->binary())
|
||||||
{
|
{
|
||||||
CHARSET_INFO *cs=sortorder->field->charset();
|
CHARSET_INFO *cs=sortorder->field->charset();
|
||||||
if (use_strnxfrm(cs))
|
if (use_strnxfrm(cs))
|
||||||
sortorder->length= sortorder->length*cs->strxfrm_multiply;
|
sortorder->length= sortorder->length*cs->strxfrm_multiply;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
if (sortorder->field->maybe_null())
|
if (sortorder->field->maybe_null())
|
||||||
length++; // Place for NULL marker
|
length++; // Place for NULL marker
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
#ifdef USE_STRCOLL
|
|
||||||
|
|
||||||
#endif
|
|
||||||
switch ((sortorder->result_type=sortorder->item->result_type())) {
|
switch ((sortorder->result_type=sortorder->item->result_type())) {
|
||||||
case STRING_RESULT:
|
case STRING_RESULT:
|
||||||
sortorder->length=sortorder->item->max_length;
|
sortorder->length=sortorder->item->max_length;
|
||||||
#ifdef USE_STRCOLL
|
|
||||||
if (!sortorder->item->binary())
|
if (!sortorder->item->binary())
|
||||||
{
|
{
|
||||||
CHARSET_INFO *cs=sortorder->item->charset();
|
CHARSET_INFO *cs=sortorder->item->charset();
|
||||||
if (use_strnxfrm(cs))
|
if (use_strnxfrm(cs))
|
||||||
sortorder->length= sortorder->length*cs->strxfrm_multiply;
|
sortorder->length= sortorder->length*cs->strxfrm_multiply;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
case INT_RESULT:
|
case INT_RESULT:
|
||||||
#if SIZEOF_LONG_LONG > 4
|
#if SIZEOF_LONG_LONG > 4
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
<charsets>
|
<charsets>
|
||||||
|
|
||||||
<charset name="">
|
<charset name="cp1256">
|
||||||
|
|
||||||
<ctype>
|
<ctype>
|
||||||
<map>
|
<map>
|
||||||
|
@ -2476,7 +2476,9 @@ TABLE_COUNTER_TYPE Query_cache::is_cacheable(THD *thd, uint32 query_len,
|
|||||||
(tables_used->db_length == 5 &&
|
(tables_used->db_length == 5 &&
|
||||||
#ifdef FN_NO_CASE_SENCE
|
#ifdef FN_NO_CASE_SENCE
|
||||||
// TODO: latin1 charset should be replaced with system charset
|
// TODO: latin1 charset should be replaced with system charset
|
||||||
my_strncasecmp(my_charset_latin1,tables_used->db,"mysql",5) == 0
|
my_strncasecmp(&my_charset_latin1,
|
||||||
|
tables_used->db,
|
||||||
|
"mysql",5) == 0
|
||||||
#else
|
#else
|
||||||
tables_used->db[0]=='m' &&
|
tables_used->db[0]=='m' &&
|
||||||
tables_used->db[1]=='y' &&
|
tables_used->db[1]=='y' &&
|
||||||
|
@ -38,9 +38,7 @@ typedef struct st_sort_param {
|
|||||||
SORT_FIELD *end;
|
SORT_FIELD *end;
|
||||||
uchar *unique_buff;
|
uchar *unique_buff;
|
||||||
bool not_killable;
|
bool not_killable;
|
||||||
#ifdef USE_STRCOLL
|
|
||||||
char* tmp_buffer;
|
char* tmp_buffer;
|
||||||
#endif
|
|
||||||
} SORTPARAM;
|
} SORTPARAM;
|
||||||
|
|
||||||
|
|
||||||
|
@ -577,7 +577,6 @@ int sortcmp(const String *x,const String *y)
|
|||||||
const char *t= y->ptr();
|
const char *t= y->ptr();
|
||||||
uint32 x_len=x->length(),y_len=y->length(),len=min(x_len,y_len);
|
uint32 x_len=x->length(),y_len=y->length(),len=min(x_len,y_len);
|
||||||
|
|
||||||
#ifdef USE_STRCOLL
|
|
||||||
if (use_strnxfrm(x->str_charset))
|
if (use_strnxfrm(x->str_charset))
|
||||||
{
|
{
|
||||||
#ifndef CMP_ENDSPACE
|
#ifndef CMP_ENDSPACE
|
||||||
@ -591,7 +590,6 @@ int sortcmp(const String *x,const String *y)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
#endif /* USE_STRCOLL */
|
|
||||||
x_len-=len; // For easy end space test
|
x_len-=len; // For easy end space test
|
||||||
y_len-=len;
|
y_len-=len;
|
||||||
if (x->str_charset->sort_order)
|
if (x->str_charset->sort_order)
|
||||||
@ -634,9 +632,7 @@ int sortcmp(const String *x,const String *y)
|
|||||||
#else
|
#else
|
||||||
return (int) (x_len-y_len);
|
return (int) (x_len-y_len);
|
||||||
#endif /* CMP_ENDSPACE */
|
#endif /* CMP_ENDSPACE */
|
||||||
#ifdef USE_STRCOLL
|
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -25,12 +25,9 @@
|
|||||||
#include <m_ctype.h>
|
#include <m_ctype.h>
|
||||||
#include <my_xml.h>
|
#include <my_xml.h>
|
||||||
|
|
||||||
#define CHARSETS_SUBDIR "sql/share/charsets"
|
|
||||||
#define CTYPE_TABLE_SIZE 257
|
|
||||||
#define TO_LOWER_TABLE_SIZE 256
|
|
||||||
#define TO_UPPER_TABLE_SIZE 256
|
|
||||||
#define SORT_ORDER_TABLE_SIZE 256
|
|
||||||
|
|
||||||
|
#define ROW_LEN 16
|
||||||
|
#define ROW16_LEN 8
|
||||||
#define MAX_BUF 16*1024
|
#define MAX_BUF 16*1024
|
||||||
|
|
||||||
static CHARSET_INFO all_charsets[256];
|
static CHARSET_INFO all_charsets[256];
|
||||||
@ -45,12 +42,30 @@ print_array(FILE *f, const char *set, const char *name, uchar *a, int n)
|
|||||||
|
|
||||||
for (i=0 ;i<n ; i++)
|
for (i=0 ;i<n ; i++)
|
||||||
{
|
{
|
||||||
fprintf(f,"0x%02X%s%s",a[i], (i+1<n) ? "," :"", i % 16 ? "" : "\n");
|
fprintf(f,"0x%02X",a[i]);
|
||||||
|
fprintf(f, (i+1<n) ? "," :"" );
|
||||||
|
fprintf(f, ((i+1) % ROW_LEN == n % ROW_LEN) ? "\n" : "" );
|
||||||
}
|
}
|
||||||
fprintf(f,"};\n\n");
|
fprintf(f,"};\n\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
print_array16(FILE *f, const char *set, const char *name, uint16 *a, int n)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
fprintf(f,"uchar %s_%s[] = {\n", name, set);
|
||||||
|
|
||||||
|
for (i=0 ;i<n ; i++)
|
||||||
|
{
|
||||||
|
fprintf(f,"0x%04X",a[i]);
|
||||||
|
fprintf(f, (i+1<n) ? "," :"" );
|
||||||
|
fprintf(f, ((i+1) % ROW16_LEN == n % ROW16_LEN) ? "\n" : "" );
|
||||||
|
}
|
||||||
|
fprintf(f,"};\n\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int get_charset_number(const char *charset_name)
|
static int get_charset_number(const char *charset_name)
|
||||||
{
|
{
|
||||||
@ -261,10 +276,13 @@ main(int argc, char **argv __attribute__((unused)))
|
|||||||
{
|
{
|
||||||
if (simple_cs_is_full(cs))
|
if (simple_cs_is_full(cs))
|
||||||
{
|
{
|
||||||
print_array(f, cs->name, "ctype", cs->ctype, CTYPE_TABLE_SIZE);
|
fprintf(f,"#ifdef HAVE_CHARSET_%s\n",cs->csname);
|
||||||
print_array(f, cs->name, "to_lower", cs->to_lower, TO_LOWER_TABLE_SIZE);
|
print_array(f, cs->name, "ctype", cs->ctype, MY_CS_CTYPE_TABLE_SIZE);
|
||||||
print_array(f, cs->name, "to_upper", cs->to_upper, TO_UPPER_TABLE_SIZE);
|
print_array(f, cs->name, "to_lower", cs->to_lower, MY_CS_TO_LOWER_TABLE_SIZE);
|
||||||
print_array(f, cs->name, "sort_order", cs->sort_order, SORT_ORDER_TABLE_SIZE);
|
print_array(f, cs->name, "to_upper", cs->to_upper, MY_CS_TO_UPPER_TABLE_SIZE);
|
||||||
|
print_array(f, cs->name, "sort_order", cs->sort_order, MY_CS_SORT_ORDER_TABLE_SIZE);
|
||||||
|
print_array16(f, cs->name, "to_uni", cs->tab_to_uni, MY_CS_TO_UNI_TABLE_SIZE);
|
||||||
|
fprintf(f,"#endif\n");
|
||||||
fprintf(f,"\n");
|
fprintf(f,"\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#include "m_ctype.h"
|
#include "m_ctype.h"
|
||||||
|
|
||||||
|
|
||||||
static uint16 latin1_uni[256]={
|
static my_wc_t latin1_uni[256]={
|
||||||
0,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
|
0,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
|
||||||
0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
|
0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
|
||||||
0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
|
0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
|
||||||
@ -72,12 +72,6 @@ static uchar uni_latin1[]={
|
|||||||
0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,
|
0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,
|
||||||
0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF};
|
0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF};
|
||||||
|
|
||||||
static MY_UNI_IDX idx_uni_latin1[]={
|
|
||||||
{0x0000,0x00FF,uni_latin1},
|
|
||||||
{0,0,NULL}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
static uchar ctype_latin1[] = {
|
static uchar ctype_latin1[] = {
|
||||||
0,
|
0,
|
||||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 32, 32,
|
32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 32, 32,
|
||||||
@ -156,6 +150,31 @@ static uchar sort_order_latin1[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static
|
||||||
|
int my_mb_wc_latin1(CHARSET_INFO *cs __attribute__((unused)),
|
||||||
|
my_wc_t *wc,
|
||||||
|
const unsigned char *str,
|
||||||
|
const unsigned char *end)
|
||||||
|
{
|
||||||
|
if (str >= end)
|
||||||
|
return MY_CS_TOOFEW(0);
|
||||||
|
|
||||||
|
return ((wc[0]= latin1_uni[*str]) || (!str[0])) ? 1 : MY_CS_ILSEQ;
|
||||||
|
}
|
||||||
|
|
||||||
|
static
|
||||||
|
int my_wc_mb_latin1(CHARSET_INFO *cs __attribute__((unused)),
|
||||||
|
my_wc_t wc,
|
||||||
|
unsigned char *str,
|
||||||
|
unsigned char *end)
|
||||||
|
{
|
||||||
|
if (str >= end)
|
||||||
|
return MY_CS_TOOSMALL;
|
||||||
|
|
||||||
|
return ((wc < 256) && ((str[0]=uni_latin1[wc]) || (!wc))) ? 1 : MY_CS_ILUNI;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
CHARSET_INFO my_charset_latin1 =
|
CHARSET_INFO my_charset_latin1 =
|
||||||
{
|
{
|
||||||
8, /* number */
|
8, /* number */
|
||||||
@ -167,8 +186,8 @@ CHARSET_INFO my_charset_latin1 =
|
|||||||
to_lower_latin1,
|
to_lower_latin1,
|
||||||
to_upper_latin1,
|
to_upper_latin1,
|
||||||
sort_order_latin1,
|
sort_order_latin1,
|
||||||
latin1_uni, /* tab_to_uni */
|
NULL, /* tab_to_uni */
|
||||||
idx_uni_latin1, /* tab_from_uni */
|
NULL, /* tab_from_uni */
|
||||||
2, /* strxfrm_multiply */
|
2, /* strxfrm_multiply */
|
||||||
my_strnncoll_simple,
|
my_strnncoll_simple,
|
||||||
my_strnxfrm_simple,
|
my_strnxfrm_simple,
|
||||||
@ -178,8 +197,8 @@ CHARSET_INFO my_charset_latin1 =
|
|||||||
NULL, /* ismbchar */
|
NULL, /* ismbchar */
|
||||||
NULL, /* ismbhead */
|
NULL, /* ismbhead */
|
||||||
NULL, /* mbcharlen */
|
NULL, /* mbcharlen */
|
||||||
my_mb_wc_8bit, /* mb_wc */
|
my_mb_wc_latin1, /* mb_wc */
|
||||||
my_wc_mb_8bit, /* wc_mb */
|
my_wc_mb_latin1, /* wc_mb */
|
||||||
my_caseup_str_8bit,
|
my_caseup_str_8bit,
|
||||||
my_casedn_str_8bit,
|
my_casedn_str_8bit,
|
||||||
my_caseup_8bit,
|
my_caseup_8bit,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user