summaryrefslogtreecommitdiff
path: root/innobase/dict
diff options
context:
space:
mode:
authorunknown <heikki@hundin.mysql.fi>2004-02-01 19:20:16 +0200
committerunknown <heikki@hundin.mysql.fi>2004-02-01 19:20:16 +0200
commit7eefcb75db0707dbc8044808390f047b60484454 (patch)
tree428fdc3c912c514fa6c2e187f6cf6e2e828a1569 /innobase/dict
parentef55f2dcdbc79c78aa37e6646ac2aef62c23e7d3 (diff)
downloadmariadb-git-7eefcb75db0707dbc8044808390f047b60484454.tar.gz
dict0dict.c:
Cleanup innobase/dict/dict0dict.c: Cleanup
Diffstat (limited to 'innobase/dict')
-rw-r--r--innobase/dict/dict0dict.c111
1 files changed, 65 insertions, 46 deletions
diff --git a/innobase/dict/dict0dict.c b/innobase/dict/dict0dict.c
index dc7acfcba36..b7740321831 100644
--- a/innobase/dict/dict0dict.c
+++ b/innobase/dict/dict0dict.c
@@ -2139,36 +2139,39 @@ dict_scan_col(
}
if (*ptr == '`' || *ptr == '"') {
- /*
- The identifier is quoted. Search for end quote.
- We can't use the general code here as the name may contain
- special characters like space.
- */
- char quote= *ptr++;
-
- old_ptr= ptr;
- /*
- The colum name should always end with 'quote' but we check for
- end zero just to be safe if this is called outside of MySQL
- */
- while (*ptr && *ptr != quote)
- ptr++;
- *column_name_len = (ulint)(ptr - old_ptr);
-
- if (*ptr) /* Skip end quote */
- ptr++;
- }
- else
- {
- old_ptr = ptr;
+ /* The identifier is quoted. Search for the end quote. We
+ cannot use the general code here as the name may contain
+ special characters like the space. */
+
+ char quote = *ptr;
+
+ ptr++; /* Skip the quote */
+
+ old_ptr = ptr;
+
+ /* The column name should always end with 'quote' but we check
+ for an end zero just to be safe if this is called outside of
+ MySQL. */
+
+ while (*ptr && *ptr != quote) {
+ ptr++;
+ }
+ *column_name_len = (ulint)(ptr - old_ptr);
+
+ if (*ptr) { /* Skip end quote */
+ ptr++;
+ } else {
+ return(ptr); /* Syntax error */
+ }
+ } else {
+ old_ptr = ptr;
- while (!isspace(*ptr) && *ptr != ',' && *ptr != ')'
- && *ptr != '\0') {
- ptr++;
- }
- *column_name_len = (ulint)(ptr - old_ptr);
+ while (!isspace(*ptr) && *ptr != ',' && *ptr != ')'
+ && *ptr != '\0') {
+ ptr++;
+ }
+ *column_name_len = (ulint)(ptr - old_ptr);
}
-
if (table == NULL) {
*success = TRUE;
@@ -2181,7 +2184,7 @@ dict_scan_col(
if (ut_strlen(col->name) == *column_name_len
&& 0 == ut_cmp_in_lower_case(col->name, old_ptr,
- *column_name_len)) {
+ *column_name_len)) {
/* Found */
*success = TRUE;
@@ -2211,10 +2214,10 @@ dict_scan_table_name(
the referenced table name; must be at least
2500 bytes */
{
- char* dot_ptr = NULL;
+ char* dot_ptr = NULL;
char* old_ptr;
+ char quote = '\0';
ulint i;
- char quote = 0;
*success = FALSE;
*table = NULL;
@@ -2229,22 +2232,33 @@ dict_scan_table_name(
}
if (*ptr == '`' || *ptr == '"') {
- quote= *ptr++;
+ quote = *ptr;
+ ptr++;
}
old_ptr = ptr;
-
- while (*ptr != quote &&
- (quote || (!isspace(*ptr) && *ptr != '(')) &&
- *ptr != '\0') {
- if (!quote && *ptr == '.') {
- dot_ptr = ptr;
+
+ if (quote) {
+ while (*ptr != quote && *ptr != '\0') {
+ ptr++;
}
- ptr++;
+ if (*ptr == '\0') {
+
+ return(old_ptr); /* Syntax error */
+ }
+ } else {
+ while (!isspace(*ptr) && *ptr != '(' && *ptr != '\0') {
+
+ if (*ptr == '.') {
+ dot_ptr = ptr;
+ }
+ ptr++;
+ }
}
if (ptr - old_ptr > 2000) {
+
return(old_ptr);
}
@@ -2290,7 +2304,7 @@ dict_scan_table_name(
*table = dict_table_get_low(second_table_name);
- if (*ptr && *ptr == quote) {
+ if (quote && *ptr == quote) {
ptr++;
}
@@ -2310,7 +2324,7 @@ dict_scan_id(
scannable */
ulint* len) /* out: length of the id */
{
- char quote = 0;
+ char quote = '\0';
*start = NULL;
@@ -2329,11 +2343,16 @@ dict_scan_id(
*start = ptr;
- while (*ptr != quote &&
- (!quote || (!isspace(*ptr) && *ptr != ',' && *ptr != '(' &&
- *ptr != ')'))
- && *ptr != '\0') {
- ptr++;
+ if (quote) {
+ while (*ptr != quote && *ptr != '\0') {
+ ptr++;
+ }
+ } else {
+ while (!isspace(*ptr) && *ptr != '(' && *ptr != ')'
+ && *ptr != ',' && *ptr != '\0') {
+
+ ptr++;
+ }
}
*len = (ulint) (ptr - *start);