diff options
Diffstat (limited to 'innobase/pars/pars0sym.c')
-rw-r--r-- | innobase/pars/pars0sym.c | 27 |
1 files changed, 6 insertions, 21 deletions
diff --git a/innobase/pars/pars0sym.c b/innobase/pars/pars0sym.c index 5d8fa306b2d..1a0608ed142 100644 --- a/innobase/pars/pars0sym.c +++ b/innobase/pars/pars0sym.c @@ -127,19 +127,13 @@ sym_tab_add_str_lit( /*================*/ /* out: symbol table node */ sym_tab_t* sym_tab, /* in: symbol table */ - byte* str, /* in: string starting with a single - quote; the string literal will - extend to the next single quote, but - the quotes are not included in it */ + byte* str, /* in: string with no quotes around + it */ ulint len) /* in: string length */ { sym_node_t* node; byte* data; - ulint i; - ut_a(len > 1); - ut_a(str[0] == '\''); - node = mem_heap_alloc(sym_tab->heap, sizeof(sym_node_t)); node->common.type = QUE_NODE_SYMBOL; @@ -151,23 +145,14 @@ sym_tab_add_str_lit( dtype_set(&(node->common.val.type), DATA_VARCHAR, DATA_ENGLISH, 0, 0); - for (i = 1;; i++) { - ut_a(i < len); - - if (str[i] == '\'') { - - break; - } - } - - if (i > 1) { - data = mem_heap_alloc(sym_tab->heap, i - 1); - ut_memcpy(data, str + 1, i - 1); + if (len) { + data = mem_heap_alloc(sym_tab->heap, len); + ut_memcpy(data, str, len); } else { data = NULL; } - dfield_set_data(&(node->common.val), data, i - 1); + dfield_set_data(&(node->common.val), data, len); node->common.val_buf_size = 0; node->prefetch_buf = NULL; |