summaryrefslogtreecommitdiff
path: root/innobase
diff options
context:
space:
mode:
authorunknown <heikki@donna.mysql.fi>2001-12-11 22:45:32 +0200
committerunknown <heikki@donna.mysql.fi>2001-12-11 22:45:32 +0200
commita2675d291612f64f47bbccd72f8366065def2c00 (patch)
tree225aadb08bc235e5b4b323c3a87f1157fa5a09e0 /innobase
parent2d1e16eb04a3e78830447400a55f7cd2291e566c (diff)
downloadmariadb-git-a2675d291612f64f47bbccd72f8366065def2c00.tar.gz
ut0byte.h, ut0byte.c, dict0dict.c:
Make column names non-case-sensitive in referential constraints and put table and database names there in lower case in Windows innobase/dict/dict0dict.c: Make column names non-case-sensitive in referential constraints and put table and database names there in lower case in Windows innobase/ut/ut0byte.c: Make column names non-case-sensitive in referential constraints and put table and database names there in lower case in Windows innobase/include/ut0byte.h: Make column names non-case-sensitive in referential constraints and put table and database names there in lower case in Windows
Diffstat (limited to 'innobase')
-rw-r--r--innobase/dict/dict0dict.c14
-rw-r--r--innobase/include/ut0byte.h20
-rw-r--r--innobase/ut/ut0byte.c43
3 files changed, 74 insertions, 3 deletions
diff --git a/innobase/dict/dict0dict.c b/innobase/dict/dict0dict.c
index ba032013baf..bf3e134febb 100644
--- a/innobase/dict/dict0dict.c
+++ b/innobase/dict/dict0dict.c
@@ -1761,9 +1761,8 @@ dict_scan_col(
col = dict_table_get_nth_col(table, i);
if (ut_strlen(col->name) == (ulint)(ptr - old_ptr)
- && 0 == ut_memcmp(col->name, old_ptr,
+ && 0 == ut_cmp_in_lower_case(col->name, old_ptr,
(ulint)(ptr - old_ptr))) {
-
/* Found */
*success = TRUE;
@@ -1827,11 +1826,20 @@ dict_scan_table_name(
break;
}
}
-
+#ifdef __WIN__
+ ut_cpy_in_lower_case(second_table_name + i, old_ptr,
+ ptr - old_ptr);
+#else
ut_memcpy(second_table_name + i, old_ptr, ptr - old_ptr);
+#endif
second_table_name[i + (ptr - old_ptr)] = '\0';
} else {
+#ifdef __WIN__
+ ut_cpy_in_lower_case(second_table_name, old_ptr,
+ ptr - old_ptr);
+#else
ut_memcpy(second_table_name, old_ptr, ptr - old_ptr);
+#endif
second_table_name[dot_ptr - old_ptr] = '/';
second_table_name[ptr - old_ptr] = '\0';
}
diff --git a/innobase/include/ut0byte.h b/innobase/include/ut0byte.h
index 77795ee0708..b45f2160392 100644
--- a/innobase/include/ut0byte.h
+++ b/innobase/include/ut0byte.h
@@ -220,6 +220,26 @@ 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 */
+ 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 */
+ char* str1, /* in: string1 */
+ char* str2, /* in: string2 */
+ ulint len); /* in: length of both strings */
#ifndef UNIV_NONINL
diff --git a/innobase/ut/ut0byte.c b/innobase/ut/ut0byte.c
index fa0d904a6a7..02bdf2065ee 100644
--- a/innobase/ut/ut0byte.c
+++ b/innobase/ut/ut0byte.c
@@ -30,3 +30,46 @@ ut_dulint_sort(dulint* arr, dulint* aux_arr, ulint low, ulint 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 */
+ 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 */
+ char* str1, /* in: string1 */
+ char* str2, /* in: string2 */
+ ulint len) /* in: length of both strings */
+{
+ ulint i;
+
+ for (i = 0; i < len; i++) {
+ if (tolower(str1[i]) < tolower(str2[i])) {
+ return(-1);
+ }
+
+ if (tolower(str1[i]) > tolower(str2[i])) {
+ return(1);
+ }
+ }
+
+ return(0);
+}