summaryrefslogtreecommitdiff
path: root/sql/sql_table.h
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mariadb.org>2016-11-02 18:04:35 +0400
committerAlexander Barkov <bar@mariadb.org>2016-12-16 17:31:40 +0400
commite5dfe04da02244e592db0b5955a4d95148e0928a (patch)
treebfb8e3fe124d856e60e261c80afabb58a882bc0b /sql/sql_table.h
parent239287b22e7bb7dfe27970ac2f32f8874f24229c (diff)
downloadmariadb-git-e5dfe04da02244e592db0b5955a4d95148e0928a.tar.gz
MDEV-11146 SP variables of the SET data type erroneously allow values with comma
There was a duplicate code to create TYPELIB from List<String>: - In typelib() and mysql_prepare_create_table(), which was used to initialize table fields. - create_typelib() and sp_prepare_create_field(), which was used to initialize SP variables. create_typelib() was incomplete and didn't check for wrong SET values. Fix: - Moving the code from create_typelib() and mysql_prepare_create_field() to news methods Column_definition::create_interval_from_interval_list() and Column_definition::prepare_interval_field(). - Moving the code from calculate_interval_lengths() in sql_table.cc to a new method Column_definition::calculate_interval_lengths(), as it's now needed only in Column_definition::create_interval_from_interval_list() - Reusing the new method Column_definition::prepare_interval_field() in both mysql_prepare_create_table() and sp_prepare_create_field(), instead of the old duplicate code pieces - Removing global functions typelib() and create_typelib() This patch also fixes: MDEV-11155 Bad error message when creating a SET column with comma and non-ASCII characters The problem was that ErrCongString() was called with a wrong "charset" parameter.
Diffstat (limited to 'sql/sql_table.h')
-rw-r--r--sql/sql_table.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/sql/sql_table.h b/sql/sql_table.h
index 628c51f678f..0d1a2ccf459 100644
--- a/sql/sql_table.h
+++ b/sql/sql_table.h
@@ -251,7 +251,8 @@ bool quick_rm_table(THD *thd, handlerton *base, const char *db,
const char *table_name, uint flags,
const char *table_path=0);
void close_cached_table(THD *thd, TABLE *table);
-void sp_prepare_create_field(THD *thd, Column_definition *sql_field);
+bool sp_prepare_create_field(THD *thd, MEM_ROOT *mem_root,
+ Column_definition *sql_field);
int prepare_create_field(Column_definition *sql_field,
uint *blob_columns,
longlong table_flags);