summaryrefslogtreecommitdiff
path: root/innobase
diff options
context:
space:
mode:
authorunknown <marko@hundin.mysql.fi>2004-12-10 23:33:55 +0200
committerunknown <marko@hundin.mysql.fi>2004-12-10 23:33:55 +0200
commit96a927b5dd531249a8b7f6ef2827c0e5f841e021 (patch)
tree781b2b9514408dd4d7bfb20656c23932d9eb1890 /innobase
parentf4f4e6367dcbe917ca6a935b881650c28949ce00 (diff)
parentc486461e4430ced16300cc86c007a8d1d980af93 (diff)
downloadmariadb-git-96a927b5dd531249a8b7f6ef2827c0e5f841e021.tar.gz
Merge marko@bk-internal.mysql.com:/home/bk/mysql-4.0
into hundin.mysql.fi:/home/marko/k/mysql-4.0
Diffstat (limited to 'innobase')
-rw-r--r--innobase/dict/dict0dict.c41
-rw-r--r--innobase/include/dict0dict.h2
2 files changed, 34 insertions, 9 deletions
diff --git a/innobase/dict/dict0dict.c b/innobase/dict/dict0dict.c
index aa5bab210ef..b4be9108659 100644
--- a/innobase/dict/dict0dict.c
+++ b/innobase/dict/dict0dict.c
@@ -27,6 +27,8 @@ Created 1/8/1996 Heikki Tuuri
#include "que0que.h"
#include "rem0cmp.h"
+ibool dict_char_0xA0_is_space = FALSE; /* A special fix for 4.0 */
+
dict_sys_t* dict_sys = NULL; /* the dictionary system */
rw_lock_t dict_operation_lock; /* table create, drop, etc. reserve
@@ -172,7 +174,28 @@ and unique key errors */
FILE* dict_foreign_err_file = NULL;
mutex_t dict_foreign_err_mutex; /* mutex protecting the foreign
and unique error buffers */
-
+/************************************************************************
+Checks if a byte is considered space in the current charset of MySQL.
+TODO: find out if this works correctly in multibyte charsets. */
+static
+ibool
+dict_isspace(
+/*=========*/
+ /* out: TRUE if considered space */
+ char c) /* in: one-byte character */
+{
+ if (isspace(c)) {
+
+ return(TRUE);
+ }
+
+ if (dict_char_0xA0_is_space && (byte)c == (byte)0xA0) {
+
+ return(TRUE);
+ }
+
+ return(FALSE);
+}
/************************************************************************
Checks if the database name in two table names is the same. */
@@ -2198,7 +2221,7 @@ dict_accept(
*success = FALSE;
- while (isspace(*ptr)) {
+ while (dict_isspace(*ptr)) {
ptr++;
}
@@ -2241,7 +2264,7 @@ dict_scan_id(
*id = NULL;
- while (isspace(*ptr)) {
+ while (dict_isspace(*ptr)) {
ptr++;
}
@@ -2272,7 +2295,7 @@ dict_scan_id(
len++;
}
} else {
- while (!isspace(*ptr) && *ptr != '(' && *ptr != ')'
+ while (!dict_isspace(*ptr) && *ptr != '(' && *ptr != ')'
&& (accept_also_dot || *ptr != '.')
&& *ptr != ',' && *ptr != '\0') {
@@ -2765,11 +2788,11 @@ loop:
ut_a(success);
- if (!isspace(*ptr) && *ptr != '"' && *ptr != '`') {
+ if (!dict_isspace(*ptr) && *ptr != '"' && *ptr != '`') {
goto loop;
}
- while (isspace(*ptr)) {
+ while (dict_isspace(*ptr)) {
ptr++;
}
@@ -2795,7 +2818,7 @@ loop:
ptr = dict_accept(ptr, "FOREIGN", &success);
- if (!isspace(*ptr)) {
+ if (!dict_isspace(*ptr)) {
goto loop;
}
@@ -2883,7 +2906,7 @@ col_loop1:
}
ptr = dict_accept(ptr, "REFERENCES", &success);
- if (!success || !isspace(*ptr)) {
+ if (!success || !dict_isspace(*ptr)) {
dict_foreign_report_syntax_err(name, start_of_latest_foreign,
ptr);
return(DB_CANNOT_ADD_CONSTRAINT);
@@ -3261,7 +3284,7 @@ loop:
ptr = dict_accept(ptr, "DROP", &success);
- if (!isspace(*ptr)) {
+ if (!dict_isspace(*ptr)) {
goto loop;
}
diff --git a/innobase/include/dict0dict.h b/innobase/include/dict0dict.h
index 9940be9832d..8b31e6f84a5 100644
--- a/innobase/include/dict0dict.h
+++ b/innobase/include/dict0dict.h
@@ -26,6 +26,8 @@ Created 1/8/1996 Heikki Tuuri
#include "ut0byte.h"
#include "trx0types.h"
+extern ibool dict_char_0xA0_is_space;
+
/************************************************************************
Get the database name length in a table name. */