diff options
author | unknown <monty@hundin.mysql.fi> | 2002-04-13 15:34:39 +0300 |
---|---|---|
committer | unknown <monty@hundin.mysql.fi> | 2002-04-13 15:34:39 +0300 |
commit | a0f6209e513af147ae9ab73e76e59be2dc7bbdd5 (patch) | |
tree | 6bb12842fb04d64fa854f04ec3d07da1e1f7c48b /include | |
parent | 965b47479c5741cfe27a26eef8d649aa4252a029 (diff) | |
parent | 71db022d084d86850be710dedd722e3289da2e0f (diff) | |
download | mariadb-git-a0f6209e513af147ae9ab73e76e59be2dc7bbdd5.tar.gz |
merge
BitKeeper/etc/ignore:
auto-union
BitKeeper/etc/logging_ok:
auto-union
BUILD/FINISH.sh:
Auto merged
BUILD/SETUP.sh:
Auto merged
BUILD/compile-pentium-debug:
Auto merged
acconfig.h:
Auto merged
client/mysql.cc:
Auto merged
client/mysqldump.c:
Auto merged
client/mysqltest.c:
Auto merged
heap/hp_rfirst.c:
Auto merged
heap/hp_rnext.c:
Auto merged
include/my_sys.h:
Auto merged
include/myisam.h:
Auto merged
libmysql/Makefile.shared:
Auto merged
myisam/mi_write.c:
Auto merged
mysql-test/mysql-test-run.sh:
Auto merged
mysql-test/r/heap.result:
Auto merged
mysql-test/r/select_found.result:
Auto merged
mysql-test/r/union.result:
Auto merged
mysql-test/t/heap.test:
Auto merged
mysql-test/t/select_found.test:
Auto merged
mysql-test/t/union.test:
Auto merged
mysys/mf_iocache2.c:
Auto merged
mysys/my_vsnprintf.c:
Auto merged
sql/convert.cc:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/filesort.cc:
Auto merged
sql/ha_myisam.cc:
Auto merged
sql/item.cc:
Auto merged
sql/item.h:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_func.h:
Auto merged
sql/item_strfunc.cc:
Auto merged
sql/item_timefunc.cc:
Auto merged
sql/lex.h:
Auto merged
sql/log.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/opt_range.cc:
Auto merged
sql/opt_range.h:
Auto merged
sql/opt_sum.cc:
Auto merged
sql/slave.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_cache.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_db.cc:
Auto merged
sql/sql_handler.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_show.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_union.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/structs.h:
Auto merged
sql/table.cc:
Auto merged
sql/table.h:
Auto merged
strings/Makefile.am:
Auto merged
Diffstat (limited to 'include')
-rw-r--r-- | include/hash.h | 12 | ||||
-rw-r--r-- | include/m_ctype.h | 312 | ||||
-rw-r--r-- | include/my_sys.h | 16 | ||||
-rw-r--r-- | include/myisam.h | 2 |
4 files changed, 246 insertions, 96 deletions
diff --git a/include/hash.h b/include/hash.h index e9c8c73c05b..a4afe03fb59 100644 --- a/include/hash.h +++ b/include/hash.h @@ -40,13 +40,15 @@ typedef struct st_hash { DYNAMIC_ARRAY array; /* Place for hash_keys */ hash_get_key get_key; void (*free)(void *); - uint (*calc_hashnr)(const byte *key,uint length); + uint (*calc_hashnr)(CHARSET_INFO *cs, const byte *key,uint length); + CHARSET_INFO *charset; } HASH; -#define hash_init(A,B,C,D,E,F,G) _hash_init(A,B,C,D,E,F,G CALLER_INFO) -my_bool _hash_init(HASH *hash,uint default_array_elements, uint key_offset, - uint key_length, hash_get_key get_key, - void (*free_element)(void*), uint flags CALLER_INFO_PROTO); +#define hash_init(A,B,C,D,E,F,G) _hash_init(A,B,C,D,E,F,G, H CALLER_INFO) +my_bool _hash_init(HASH *hash, CHARSET_INFO *charset, + uint default_array_elements, uint key_offset, + uint key_length, hash_get_key get_key, + void (*free_element)(void*), uint flags CALLER_INFO_PROTO); void hash_free(HASH *tree); byte *hash_element(HASH *hash,uint idx); gptr hash_search(HASH *info,const byte *key,uint length); diff --git a/include/m_ctype.h b/include/m_ctype.h index fc983d1d580..3b095b41d4f 100644 --- a/include/m_ctype.h +++ b/include/m_ctype.h @@ -26,8 +26,29 @@ extern "C" { #endif + #define CHARSET_DIR "charsets/" +#define my_wc_t ulong + +typedef struct unicase_info_st { + uint16 toupper; + uint16 tolower; + uint16 sort; +} MY_UNICASE_INFO; + +#define MY_CS_ILSEQ 0 +#define MY_CS_ILUNI 0 +#define MY_CS_TOOSMALL -1 +#define MY_CS_TOOFEW(n) (-1-(n)) + +typedef struct my_uni_idx_st { + uint16 from; + uint16 to; + uchar *tab; +} MY_UNI_IDX; + + typedef struct charset_info_st { uint number; @@ -36,23 +57,47 @@ typedef struct charset_info_st uchar *to_lower; uchar *to_upper; uchar *sort_order; - + uint16 *tab_to_uni; + MY_UNI_IDX *tab_from_uni; + + /* Collation routines */ uint strxfrm_multiply; - int (*strcoll)(const uchar *, const uchar *); - int (*strxfrm)(uchar *, const uchar *, int); - int (*strnncoll)(const uchar *, int, const uchar *, int); - int (*strnxfrm)(uchar *, const uchar *, int, int); - my_bool (*like_range)(const char *, uint, pchar, uint, + int (*strnncoll)(struct charset_info_st *, + const uchar *, uint, const uchar *, uint); + int (*strnxfrm)(struct charset_info_st *, + uchar *, uint, const uchar *, uint); + my_bool (*like_range)(struct charset_info_st *, + const char *, uint, pchar, uint, char *, char *, uint *, uint *); - + + /* Multibyte routines */ uint mbmaxlen; - int (*ismbchar)(const char *, const char *); - my_bool (*ismbhead)(uint); - int (*mbcharlen)(uint); + int (*ismbchar)(struct charset_info_st *, const char *, const char *); + my_bool (*ismbhead)(struct charset_info_st *, uint); + int (*mbcharlen)(struct charset_info_st *, uint); + + /* Unicode convertion */ + int (*mb_wc)(struct charset_info_st *cs,my_wc_t *wc, + const unsigned char *s,const unsigned char *e); + int (*wc_mb)(struct charset_info_st *cs,my_wc_t wc, + unsigned char *s,unsigned char *e); + + /* Functions for case convertion */ + void (*caseup_str)(struct charset_info_st *, char *); + void (*casedn_str)(struct charset_info_st *, char *); + void (*caseup)(struct charset_info_st *, char *, uint); + void (*casedn)(struct charset_info_st *, char *, uint); + + /* Functions for case comparison */ + int (*strcasecmp)(struct charset_info_st *, const char *, const char *); + int (*strncasecmp)(struct charset_info_st *, const char *, const char *, uint); + + char max_sort_char; /* For LIKE otimization */ } CHARSET_INFO; /* strings/ctype.c */ extern CHARSET_INFO *default_charset_info; +extern CHARSET_INFO *system_charset_info; extern CHARSET_INFO *find_compiled_charset(uint cs_number); extern CHARSET_INFO *find_compiled_charset_by_name(const char *name); extern CHARSET_INFO compiled_charsets[]; @@ -62,32 +107,160 @@ extern const char *compiled_charset_name(uint charset_number); #define MY_CHARSET_UNDEFINED 0 #define MY_CHARSET_CURRENT (default_charset_info->number) -/* Don't include std ctype.h when this is included */ -#define _CTYPE_H -#define _CTYPE_H_ -#define _CTYPE_INCLUDED -#define __CTYPE_INCLUDED -#define _CTYPE_USING /* Don't put names in global namespace. */ - -/* Fix things, if ctype.h would have been included before */ -#undef toupper -#undef _toupper -#undef _tolower -#undef toupper -#undef tolower -#undef isalpha -#undef isupper -#undef islower -#undef isdigit -#undef isxdigit -#undef isalnum -#undef isspace -#undef ispunct -#undef isprint -#undef isgraph -#undef iscntrl -#undef isascii -#undef toascii +/* declarations for simple charsets */ +extern int my_strnxfrm_simple(CHARSET_INFO *, char *, uint, const char *, uint); +extern int my_strnncoll_simple(CHARSET_INFO *, const char *, uint, const char *, uint); + +/* Functions for 8bit */ +extern void my_caseup_str_8bit(CHARSET_INFO *, char *); +extern void my_casedn_str_8bit(CHARSET_INFO *, char *); +extern void my_caseup_8bit(CHARSET_INFO *, char *, uint); +extern void my_casedn_8bit(CHARSET_INFO *, char *, uint); + +extern int my_strcasecmp_8bit(CHARSET_INFO * cs, const char *, const char *); +extern int my_strncasecmp_8bit(CHARSET_INFO * cs, const char *, const char *, uint); + +int my_mb_wc_8bit(CHARSET_INFO *cs,my_wc_t *wc, const uchar *s,const uchar *e); +int my_wc_mb_8bit(CHARSET_INFO *cs,my_wc_t wc, uchar *s, uchar *e); + + +#ifdef USE_MB +/* Functions for multibyte charsets */ +extern void my_caseup_str_mb(CHARSET_INFO *, char *); +extern void my_casedn_str_mb(CHARSET_INFO *, char *); +extern void my_caseup_mb(CHARSET_INFO *, char *, uint); +extern void my_casedn_mb(CHARSET_INFO *, char *, uint); +extern int my_strcasecmp_mb(CHARSET_INFO * cs,const char *, const char *); +extern int my_strncasecmp_mb(CHARSET_INFO * cs,const char *, const char *t, uint); +#endif + +#ifdef HAVE_CHARSET_big5 +/* declarations for the big5 character set */ +extern uchar ctype_big5[], to_lower_big5[], to_upper_big5[], sort_order_big5[]; +extern int my_strnncoll_big5(CHARSET_INFO *,const uchar *, uint, const uchar *, uint); +extern int my_strnxfrm_big5(CHARSET_INFO *,uchar *, uint, const uchar *, uint); +extern my_bool my_like_range_big5(CHARSET_INFO *,const char *, uint, pchar, uint, + char *, char *, uint *, uint *); +extern int ismbchar_big5(CHARSET_INFO *, const char *, const char *); +extern my_bool ismbhead_big5(CHARSET_INFO *, uint); +extern int mbcharlen_big5(CHARSET_INFO *, uint); +int my_mb_wc_big5(CHARSET_INFO *cs,my_wc_t *wc, const uchar *s,const uchar *e); +int my_wc_mb_big5(CHARSET_INFO *cs,my_wc_t wc, uchar *s, uchar *e); +#endif + +#ifdef HAVE_CHARSET_czech +/* declarations for the czech character set */ +extern uchar ctype_czech[], to_lower_czech[], to_upper_czech[], sort_order_czech[]; +extern int my_strnncoll_czech(CHARSET_INFO *, const uchar *, uint, const uchar *, uint); +extern int my_strnxfrm_czech(CHARSET_INFO *, uchar *, uint, const uchar *, uint); +extern my_bool my_like_range_czech(CHARSET_INFO *, + const char *, uint, pchar, uint, + char *, char *, uint *, uint *); +#endif + +#ifdef HAVE_CHARSET_euc_kr +/* declarations for the euc_kr character set */ +extern uchar ctype_euc_kr[], to_lower_euc_kr[], to_upper_euc_kr[], sort_order_euc_kr[]; +extern int ismbchar_euc_kr(CHARSET_INFO *, const char *, const char *); +extern my_bool ismbhead_euc_kr(CHARSET_INFO *, uint); +extern int mbcharlen_euc_kr(CHARSET_INFO *, uint); +int my_mb_wc_euc_kr(CHARSET_INFO *cs,my_wc_t *wc, const uchar *s,const uchar *e); +int my_wc_mb_euc_kr(CHARSET_INFO *cs,my_wc_t wc, uchar *s, uchar *e); +#endif + +#ifdef HAVE_CHARSET_gb2312 +/* declarations for the gb2312 character set */ +extern uchar ctype_gb2312[], to_lower_gb2312[], to_upper_gb2312[], sort_order_gb2312[]; +extern int ismbchar_gb2312(CHARSET_INFO *, const char *, const char *); +extern my_bool ismbhead_gb2312(CHARSET_INFO *, uint); +extern int mbcharlen_gb2312(CHARSET_INFO *, uint); +int my_mb_wc_gb2312(CHARSET_INFO *cs,my_wc_t *wc, const uchar *s,const uchar *e); +int my_wc_mb_gb2312(CHARSET_INFO *cs,my_wc_t wc, uchar *s, uchar *e); +#endif + +#ifdef HAVE_CHARSET_gbk +/* declarations for the gbk character set */ +extern uchar ctype_gbk[], to_lower_gbk[], to_upper_gbk[], sort_order_gbk[]; +extern int my_strnncoll_gbk(CHARSET_INFO *, const uchar *, uint, const uchar *, uint); +extern int my_strnxfrm_gbk(CHARSET_INFO *, uchar *, uint, const uchar *, uint); +extern my_bool my_like_range_gbk(CHARSET_INFO *, const char *, uint, pchar, uint, + char *, char *, uint *, uint *); +extern int ismbchar_gbk(CHARSET_INFO *, const char *, const char *); +extern my_bool ismbhead_gbk(CHARSET_INFO *, uint); +extern int mbcharlen_gbk(CHARSET_INFO *, uint); +int my_mb_wc_gbk(CHARSET_INFO *cs,my_wc_t *wc, const uchar *s,const uchar *e); +int my_wc_mb_gbk(CHARSET_INFO *cs,my_wc_t wc, uchar *s, uchar *e); +#endif + +#ifdef HAVE_CHARSET_latin1_de +/* declarations for the latin1_de character set */ +extern uchar ctype_latin1_de[], to_lower_latin1_de[], to_upper_latin1_de[], sort_order_latin1_de[]; +extern int my_strnncoll_latin1_de(CHARSET_INFO *, const uchar *, uint, const uchar *, uint); +extern int my_strnxfrm_latin1_de(CHARSET_INFO *, uchar *, uint, const uchar *, uint); +extern my_bool my_like_range_latin1_de(CHARSET_INFO *, const char *, uint, pchar, uint, + char *, char *, uint *, uint *); +#endif + +#ifdef HAVE_CHARSET_sjis +/* declarations for the sjis character set */ +extern uchar ctype_sjis[], to_lower_sjis[], to_upper_sjis[], sort_order_sjis[]; +extern int my_strnncoll_sjis(CHARSET_INFO *, const uchar *, uint, const uchar *, uint); +extern int my_strnxfrm_sjis(CHARSET_INFO *, uchar *, uint, const uchar *, uint); +extern my_bool my_like_range_sjis(CHARSET_INFO *, const char *, uint, pchar, uint, + char *, char *, uint *, uint *); +extern int ismbchar_sjis(CHARSET_INFO *, const char *, const char *); +extern my_bool ismbhead_sjis(CHARSET_INFO *, uint); +extern int mbcharlen_sjis(CHARSET_INFO *, uint); +int my_mb_wc_sjis(CHARSET_INFO *cs,my_wc_t *wc, const uchar *s,const uchar *e); +int my_wc_mb_sjis(CHARSET_INFO *cs,my_wc_t wc, uchar *s, uchar *e); +#endif + +#ifdef HAVE_CHARSET_tis620 +/* declarations for the tis620 character set */ +extern uchar ctype_tis620[], to_lower_tis620[], to_upper_tis620[], sort_order_tis620[]; +extern int my_strnncoll_tis620(CHARSET_INFO *, const uchar *, uint, const uchar *, uint); +extern int my_strnxfrm_tis620(CHARSET_INFO *, uchar *, uint, const uchar *, uint); +extern my_bool my_like_range_tis620(CHARSET_INFO *, const char *, uint, pchar, uint, + char *, char *, uint *, uint *); +#endif + +#ifdef HAVE_CHARSET_ujis +/* declarations for the ujis character set */ +extern uchar ctype_ujis[], to_lower_ujis[], to_upper_ujis[], sort_order_ujis[]; +extern int ismbchar_ujis(CHARSET_INFO *, const char *, const char *); +extern my_bool ismbhead_ujis(CHARSET_INFO *, uint); +extern int mbcharlen_ujis(CHARSET_INFO *, uint); +int my_mb_wc_euc_jp(CHARSET_INFO *cs,my_wc_t *wc, const uchar *s,const uchar *e); +int my_wc_mb_euc_jp(CHARSET_INFO *cs,my_wc_t wc, uchar *s, uchar *e); +#endif + +#ifdef HAVE_CHARSET_utf8 + +extern uchar ctype_utf8[]; +extern uchar to_lower_utf8[]; +extern uchar to_upper_utf8[]; + +int my_strnncoll_utf8(CHARSET_INFO *cs, + const uchar *s, uint s_len, const uchar *t, uint t_len); + +int my_strnxfrm_utf8(CHARSET_INFO *cs, + uchar *dest, uint destlen, const uchar *src, uint srclen); + +int my_ismbchar_utf8(CHARSET_INFO *cs, const char *b, const char *e); +my_bool my_ismbhead_utf8(CHARSET_INFO * cs, uint ch); +int my_mbcharlen_utf8(CHARSET_INFO *cs, uint c); + +void my_caseup_str_utf8(CHARSET_INFO * cs, char * s); +void my_casedn_str_utf8(CHARSET_INFO *cs, char * s); +void my_caseup_utf8(CHARSET_INFO *cs, char *s, uint len); +void my_casedn_utf8(CHARSET_INFO *cs, char *s, uint len); + +int my_strcasecmp_utf8(CHARSET_INFO *cs, const char *s, const char *t); +int my_strncasecmp_utf8(CHARSET_INFO *cs, const char *s,const char *t,uint l); + +int my_utf8_uni (CHARSET_INFO *cs, my_wc_t *p, const uchar *s, const uchar *e); +int my_uni_utf8 (CHARSET_INFO *cs, my_wc_t wc, uchar *b, uchar *e); +#endif #define _U 01 /* Upper case */ #define _L 02 /* Lower case */ @@ -98,34 +271,13 @@ extern const char *compiled_charset_name(uint charset_number); #define _B 0100 /* Blank */ #define _X 0200 /* heXadecimal digit */ -#define my_ctype (default_charset_info->ctype) -#define my_to_upper (default_charset_info->to_upper) -#define my_to_lower (default_charset_info->to_lower) -#define my_sort_order (default_charset_info->sort_order) - -#define _toupper(c) (char) my_to_upper[(uchar) (c)] -#define _tolower(c) (char) my_to_lower[(uchar) (c)] -#define toupper(c) (char) my_to_upper[(uchar) (c)] -#define tolower(c) (char) my_to_lower[(uchar) (c)] - -#define isalpha(c) ((my_ctype+1)[(uchar) (c)] & (_U | _L)) -#define isupper(c) ((my_ctype+1)[(uchar) (c)] & _U) -#define islower(c) ((my_ctype+1)[(uchar) (c)] & _L) -#define isdigit(c) ((my_ctype+1)[(uchar) (c)] & _NMR) -#define isxdigit(c) ((my_ctype+1)[(uchar) (c)] & _X) -#define isalnum(c) ((my_ctype+1)[(uchar) (c)] & (_U | _L | _NMR)) -#define isspace(c) ((my_ctype+1)[(uchar) (c)] & _SPC) -#define ispunct(c) ((my_ctype+1)[(uchar) (c)] & _PNT) -#define isprint(c) ((my_ctype+1)[(uchar) (c)] & (_PNT | _U | _L | _NMR | _B)) -#define isgraph(c) ((my_ctype+1)[(uchar) (c)] & (_PNT | _U | _L | _NMR)) -#define iscntrl(c) ((my_ctype+1)[(uchar) (c)] & _CTR) -#define isascii(c) (!((c) & ~0177)) -#define toascii(c) ((c) & 0177) - -#ifdef ctype -#undef ctype -#endif /* ctype */ +#define my_isascii(c) (!((c) & ~0177)) +#define my_toascii(c) ((c) & 0177) +#define my_tocntrl(c) ((c) & 31) +#define my_toprint(c) ((c) | 64) +#define my_toupper(s,c) (char) ((s)->to_upper[(uchar) (c)]) +#define my_tolower(s,c) (char) ((s)->to_lower[(uchar) (c)]) #define my_isalpha(s, c) (((s)->ctype+1)[(uchar) (c)] & (_U | _L)) #define my_isupper(s, c) (((s)->ctype+1)[(uchar) (c)] & _U) #define my_islower(s, c) (((s)->ctype+1)[(uchar) (c)] & _L) @@ -138,26 +290,28 @@ extern const char *compiled_charset_name(uint charset_number); #define my_isgraph(s, c) (((s)->ctype+1)[(uchar) (c)] & (_PNT | _U | _L | _NMR)) #define my_iscntrl(s, c) (((s)->ctype+1)[(uchar) (c)] & _CTR) -#define use_strcoll(s) ((s)->strcoll != NULL) -#define MY_STRXFRM_MULTIPLY (default_charset_info->strxfrm_multiply) -#define my_strnxfrm(s, a, b, c, d) ((s)->strnxfrm((a), (b), (c), (d))) -#define my_strnncoll(s, a, b, c, d) ((s)->strnncoll((a), (b), (c), (d))) -#define my_strxfrm(s, a, b, c, d) ((s)->strnxfrm((a), (b), (c))) -#define my_strcoll(s, a, b) ((s)->strcoll((a), (b))) +/* Some macros that should be cleaned up a little */ +#define my_isvar(s,c) (my_isalnum(s,c) || (c) == '_') +#define my_isvar_start(s,c) (my_isalpha(s,c) || (c) == '_') + +#define use_strcoll(s) ((s)->strnncoll != NULL) +#define my_strnxfrm(s, a, b, c, d) ((s)->strnxfrm((s), (a), (b), (c), (d))) +#define my_strnncoll(s, a, b, c, d) ((s)->strnncoll((s), (a), (b), (c), (d))) #define my_like_range(s, a, b, c, d, e, f, g, h) \ - ((s)->like_range((a), (b), (c), (d), (e), (f), (g), (h))) + ((s)->like_range((s), (a), (b), (c), (d), (e), (f), (g), (h))) #define use_mb(s) ((s)->ismbchar != NULL) -#define MBMAXLEN (default_charset_info->mbmaxlen) -#define my_ismbchar(s, a, b) ((s)->ismbchar((a), (b))) -#define my_ismbhead(s, a) ((s)->ismbhead((a))) -#define my_mbcharlen(s, a) ((s)->mbcharlen((a))) +#define my_ismbchar(s, a, b) ((s)->ismbchar((s), (a), (b))) +#define my_ismbhead(s, a) ((s)->ismbhead((s), (a))) +#define my_mbcharlen(s, a) ((s)->mbcharlen((s),(a))) + +#define my_caseup(s, a, l) ((s)->caseup((s), (a), (l))) +#define my_casedn(s, a, l) ((s)->casedn((s), (a), (l))) +#define my_caseup_str(s, a) ((s)->caseup_str((s), (a))) +#define my_casedn_str(s, a) ((s)->casedn_str((s), (a))) +#define my_strcasecmp(s, a, b) ((s)->strcasecmp((s), (a), (b))) +#define my_strncasecmp(s, a, b, l) ((s)->strncasecmp((s), (a), (b), (l))) -/* Some macros that should be cleaned up a little */ -#define isvar(c) (isalnum(c) || (c) == '_') -#define isvar_start(c) (isalpha(c) || (c) == '_') -#define tocntrl(c) ((c) & 31) -#define toprint(c) ((c) | 64) /* XXX: still need to take care of this one */ #ifdef MY_CHARSET_TIS620 diff --git a/include/my_sys.h b/include/my_sys.h index 5867368198f..3b69092d5ae 100644 --- a/include/my_sys.h +++ b/include/my_sys.h @@ -572,11 +572,7 @@ extern void allow_break(void); #endif extern void my_remember_signal(int signal_number,sig_handler (*func)(int)); -extern void caseup(my_string str,uint length); -extern void casedn(my_string str,uint length); -extern void caseup_str(my_string str); -extern void casedn_str(my_string str); -extern void case_sort(my_string str,uint length); +extern void case_sort(CHARSET_INFO *cs, my_string str,uint length); extern uint dirname_part(my_string to,const char *name); extern uint dirname_length(const char *name); #define base_name(A) (A+dirname_length(A)) @@ -601,18 +597,14 @@ extern my_string my_path(my_string to,const char *progname, extern my_string my_load_path(my_string to, const char *path, const char *own_path_prefix); extern int wild_compare(const char *str,const char *wildstr); -extern my_string my_strcasestr(const char *src,const char *suffix); -extern int my_strcasecmp(const char *s,const char *t); -extern int my_strsortcmp(const char *s,const char *t); -extern int my_casecmp(const char *s,const char *t,uint length); -extern int my_sortcmp(const char *s,const char *t,uint length); -extern int my_sortncmp(const char *s,uint s_len, const char *t,uint t_len); +extern int my_sortcmp(CHARSET_INFO *cs, const char *s,const char *t,uint length); +extern int my_sortncmp(CHARSET_INFO *cs, const char *s,uint s_len, const char *t,uint t_len); extern WF_PACK *wf_comp(my_string str); extern int wf_test(struct wild_file_pack *wf_pack,const char *name); extern void wf_end(struct wild_file_pack *buffer); extern size_s stripp_sp(my_string str); extern void get_date(my_string to,int timeflag,time_t use_time); -extern void soundex(my_string out_pntr, my_string in_pntr,pbool remove_garbage); +extern void soundex(CHARSET_INFO *, my_string out_pntr, my_string in_pntr,pbool remove_garbage); extern int init_record_cache(RECORD_CACHE *info,uint cachesize,File file, uint reclength,enum cache_type type, pbool use_async_io); diff --git a/include/myisam.h b/include/myisam.h index b7010dab814..ecf34a7e156 100644 --- a/include/myisam.h +++ b/include/myisam.h @@ -147,6 +147,8 @@ typedef struct st_mi_keydef /* Key definition with open & info */ struct st_mi_s_param *s_temp); void (*store_key)(struct st_mi_keydef *keyinfo, uchar *key_pos, struct st_mi_s_param *s_temp); + int (*ck_insert)(struct st_myisam_info *inf, uint k_nr, uchar *k, uint klen); + int (*ck_delete)(struct st_myisam_info *inf, uint k_nr, uchar *k, uint klen); } MI_KEYDEF; |