Skip to content

Commit f3718a1

Browse files
committed
MDEV-18220: Backport some code from MariaDB 10.2
fts_get_table_name(): Output to a caller-allocated buffer. fts_get_table_name_prefix(): Use the lower-overhead allocation ut_malloc() instead of mem_alloc(). This is based on mysql/mysql-server@d1584b9 in MySQL 5.7.4.
1 parent f92749e commit f3718a1

File tree

14 files changed

+612
-536
lines changed

14 files changed

+612
-536
lines changed

storage/innobase/fts/fts0config.cc

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ fts_config_get_value(
8585
que_t* graph;
8686
dberr_t error;
8787
ulint name_len = strlen(name);
88+
char table_name[MAX_FULL_NAME_LEN];
8889

8990
info = pars_info_create();
9091

@@ -100,12 +101,14 @@ fts_config_get_value(
100101
pars_info_bind_varchar_literal(info, "name", (byte*) name, name_len);
101102

102103
fts_table->suffix = "CONFIG";
104+
fts_get_table_name(fts_table, table_name);
105+
pars_info_bind_id(info, true, "table_name", table_name);
103106

104107
graph = fts_parse_sql(
105108
fts_table,
106109
info,
107110
"DECLARE FUNCTION my_func;\n"
108-
"DECLARE CURSOR c IS SELECT value FROM \"%s\""
111+
"DECLARE CURSOR c IS SELECT value FROM $table_name"
109112
" WHERE key = :name;\n"
110113
"BEGIN\n"
111114
""
@@ -212,6 +215,7 @@ fts_config_set_value(
212215
undo_no_t undo_no;
213216
undo_no_t n_rows_updated;
214217
ulint name_len = strlen(name);
218+
char table_name[MAX_FULL_NAME_LEN];
215219

216220
info = pars_info_create();
217221

@@ -220,10 +224,13 @@ fts_config_set_value(
220224
value->f_str, value->f_len);
221225

222226
fts_table->suffix = "CONFIG";
227+
fts_get_table_name(fts_table, table_name);
228+
pars_info_bind_id(info, true, "table_name", table_name);
223229

224230
graph = fts_parse_sql(
225231
fts_table, info,
226-
"BEGIN UPDATE \"%s\" SET value = :value WHERE key = :name;");
232+
"BEGIN UPDATE $table_name SET value = :value "
233+
"WHERE key = :name;");
227234

228235
trx->op_info = "setting FTS config value";
229236

@@ -245,10 +252,13 @@ fts_config_set_value(
245252
pars_info_bind_varchar_literal(
246253
info, "value", value->f_str, value->f_len);
247254

255+
fts_get_table_name(fts_table, table_name);
256+
pars_info_bind_id(info, true, "table_name", table_name);
257+
248258
graph = fts_parse_sql(
249259
fts_table, info,
250260
"BEGIN\n"
251-
"INSERT INTO \"%s\" VALUES(:name, :value);");
261+
"INSERT INTO $table_name VALUES(:name, :value);");
252262

253263
trx->op_info = "inserting FTS config value";
254264

@@ -465,6 +475,7 @@ fts_config_increment_value(
465475
que_t* graph = NULL;
466476
ulint name_len = strlen(name);
467477
pars_info_t* info = pars_info_create();
478+
char table_name[MAX_FULL_NAME_LEN];
468479

469480
/* We set the length of value to the max bytes it can hold. This
470481
information is used by the callback that reads the value.*/
@@ -479,11 +490,13 @@ fts_config_increment_value(
479490
info, "my_func", fts_config_fetch_value, &value);
480491

481492
fts_table->suffix = "CONFIG";
493+
fts_get_table_name(fts_table, table_name);
494+
pars_info_bind_id(info, true, "config_table", table_name);
482495

483496
graph = fts_parse_sql(
484497
fts_table, info,
485498
"DECLARE FUNCTION my_func;\n"
486-
"DECLARE CURSOR c IS SELECT value FROM \"%s\""
499+
"DECLARE CURSOR c IS SELECT value FROM $config_table"
487500
" WHERE key = :name FOR UPDATE;\n"
488501
"BEGIN\n"
489502
""

0 commit comments

Comments
 (0)