diff options
author | unknown <marko@hundin.mysql.fi> | 2004-10-19 11:00:02 +0300 |
---|---|---|
committer | unknown <marko@hundin.mysql.fi> | 2004-10-19 11:00:02 +0300 |
commit | b42ab12527094c0aac220d1948fc0d411e50f108 (patch) | |
tree | 47e7c3a70baadae433468442fd435c88afdef491 /innobase | |
parent | 5d14a6eef401d3b214c041224c335b61169c4436 (diff) | |
parent | 0cef3945a447be357d478e105175e7be971bb575 (diff) | |
download | mariadb-git-b42ab12527094c0aac220d1948fc0d411e50f108.tar.gz |
Merge marko@bk-internal.mysql.com:/home/bk/mysql-4.1
into hundin.mysql.fi:/home/marko/j/mysql-4.1
Diffstat (limited to 'innobase')
-rw-r--r-- | innobase/dict/dict0dict.c | 59 | ||||
-rw-r--r-- | innobase/include/ut0byte.h | 19 | ||||
-rw-r--r-- | innobase/ut/ut0byte.c | 48 |
3 files changed, 36 insertions, 90 deletions
diff --git a/innobase/dict/dict0dict.c b/innobase/dict/dict0dict.c index f670c0dc16d..c3d0d8d9ac1 100644 --- a/innobase/dict/dict0dict.c +++ b/innobase/dict/dict0dict.c @@ -53,6 +53,30 @@ rw_lock_t dict_operation_lock; /* table create, drop, etc. reserve /* Identifies generated InnoDB foreign key names */ static char dict_ibfk[] = "_ibfk_"; +/********************************************************************** +Compares NUL-terminated UTF-8 strings case insensitively. + +NOTE: the prototype of this function is copied from ha_innodb.cc! If you change +this function, you MUST change also the prototype here! */ +extern +int +innobase_strcasecmp( +/*================*/ + /* out: 0 if a=b, <0 if a<b, >1 if a>b */ + const char* a, /* in: first string to compare */ + const char* b); /* in: second string to compare */ + +/********************************************************************** +Makes all characters in a NUL-terminated UTF-8 string lower case. + +NOTE: the prototype of this function is copied from ha_innodb.cc! If you change +this function, you MUST change also the prototype here! */ +extern +void +innobase_casedn_str( +/*================*/ + char* a); /* in/out: string to put in lower case */ + /************************************************************************** Adds a column to the data dictionary hash table. */ static @@ -2066,7 +2090,7 @@ dict_foreign_find_index( break; } - if (0 != ut_cmp_in_lower_case(columns[i], + if (0 != innobase_strcasecmp(columns[i], col_name)) { break; } @@ -2436,7 +2460,7 @@ dict_scan_col( col = dict_table_get_nth_col(table, i); - if (0 == ut_cmp_in_lower_case(col->name, *name)) { + if (0 == innobase_strcasecmp(col->name, *name)) { /* Found */ *success = TRUE; @@ -2528,30 +2552,19 @@ dict_scan_table_name( table_name_len = strlen(table_name); + /* Copy database_name, '/', table_name, '\0' */ ref = mem_heap_alloc(heap, database_name_len + table_name_len + 2); - -#ifdef __WIN__ - ut_cpy_in_lower_case(ref, database_name, database_name_len); -#else - if (srv_lower_case_table_names) { - ut_cpy_in_lower_case(ref, database_name, database_name_len); - } else { - memcpy(ref, database_name, database_name_len); - } -#endif - (ref)[database_name_len] = '/'; - -#ifdef __WIN__ - ut_cpy_in_lower_case(ref + database_name_len + 1, - table_name, table_name_len + 1); -#else + memcpy(ref, database_name, database_name_len); + ref[database_name_len] = '/'; + memcpy(ref + database_name_len + 1, table_name, table_name_len + 1); +#ifndef __WIN__ if (srv_lower_case_table_names) { - ut_cpy_in_lower_case(ref + database_name_len + 1, - table_name, table_name_len + 1); - } else { - strcpy(ref + database_name_len + 1, table_name); +#endif /* !__WIN__ */ + /* The table name is always put to lower case on Windows. */ + innobase_casedn_str(ref); +#ifndef __WIN__ } -#endif +#endif /* !__WIN__ */ *success = TRUE; *ref_name = ref; diff --git a/innobase/include/ut0byte.h b/innobase/include/ut0byte.h index fed6a23d144..a62c2e2e318 100644 --- a/innobase/include/ut0byte.h +++ b/innobase/include/ut0byte.h @@ -229,25 +229,6 @@ ut_bit_set_nth( ulint a, /* in: ulint */ ulint n, /* in: nth bit requested */ ibool val); /* in: value for the bit to set */ -/**************************************************************** -Copies a string to a memory location, setting characters to lower case. */ - -void -ut_cpy_in_lower_case( -/*=================*/ - char* dest, /* in: destination */ - const char* source, /* in: source */ - ulint len); /* in: string length */ -/**************************************************************** -Compares two strings when converted to lower case. */ - -int -ut_cmp_in_lower_case( -/*=================*/ - /* out: -1, 0, 1 if str1 < str2, str1 == str2, - str1 > str2, respectively */ - const char* str1, /* in: string1 */ - const char* str2); /* in: string2 */ #ifndef UNIV_NONINL #include "ut0byte.ic" diff --git a/innobase/ut/ut0byte.c b/innobase/ut/ut0byte.c index 8764103dc36..cc83aacc90b 100644 --- a/innobase/ut/ut0byte.c +++ b/innobase/ut/ut0byte.c @@ -29,51 +29,3 @@ ut_dulint_sort(dulint* arr, dulint* aux_arr, ulint low, ulint high) UT_SORT_FUNCTION_BODY(ut_dulint_sort, arr, aux_arr, low, high, ut_dulint_cmp); } - -/**************************************************************** -Copies a string to a memory location, setting characters to lower case. */ - -void -ut_cpy_in_lower_case( -/*=================*/ - char* dest, /* in: destination */ - const char* source, /* in: source */ - ulint len) /* in: string length */ -{ - ulint i; - - for (i = 0; i < len; i++) { - dest[i] = tolower(source[i]); - } -} - -/**************************************************************** -Compares two strings when converted to lower case. */ - -int -ut_cmp_in_lower_case( -/*=================*/ - /* out: -1, 0, 1 if str1 < str2, str1 == str2, - str1 > str2, respectively */ - const char* str1, /* in: string1 */ - const char* str2) /* in: string2 */ -{ - for (;;) { - int c1, c2; - if (!*str1) { - return(*str2 ? -1 : 0); - } else if (!*str2) { - return 1; - } - c1 = tolower(*str1++); - c2 = tolower(*str2++); - if (c1 < c2) { - return(-1); - } - if (c1 > c2) { - return(1); - } - } - - return(0); -} |