diff options
Diffstat (limited to 'sql/parse_file.cc')
-rw-r--r-- | sql/parse_file.cc | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/sql/parse_file.cc b/sql/parse_file.cc index f3dab4f7b2f..6f188660407 100644 --- a/sql/parse_file.cc +++ b/sql/parse_file.cc @@ -145,6 +145,7 @@ write_parameter(IO_CACHE *file, uchar* base, File_option *parameter) switch (parameter->type) { case FILE_OPTIONS_STRING: + case FILE_OPTIONS_FIXSTRING: { LEX_STRING *val_s= (LEX_STRING *)(base + parameter->offset); if (my_b_write(file, (const uchar *)val_s->str, val_s->length)) @@ -830,6 +831,22 @@ File_parser::parse(uchar* base, MEM_ROOT *mem_root, } ptr= eol+1; break; + case FILE_OPTIONS_FIXSTRING: + { + /* string have to be allocated already and length set */ + LEX_STRING *val= (LEX_STRING *)(base + parameter->offset); + DBUG_ASSERT(val->length != 0); + if (ptr[val->length] != '\n') + { + my_error(ER_FPARSER_ERROR_IN_PARAMETER, MYF(0), + parameter->name.str, line); + DBUG_RETURN(TRUE); + } + memcpy(val->str, ptr, val->length); + val->str[val->length]= '\0'; + ptr+= (val->length + 1); + break; + } case FILE_OPTIONS_TIMESTAMP: { /* string have to be allocated already */ |