summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <sanja@askmonty.org>2014-11-17 17:13:30 +0100
committerunknown <sanja@askmonty.org>2014-11-17 17:13:30 +0100
commit4d882329a998b7955cf164b5ff687e623d25bbb5 (patch)
treedc18758f285309ba290738108bef94b2e18d7214
parente9fc98b5838c06356209196384e37a11e8e3c058 (diff)
downloadmariadb-git-4d882329a998b7955cf164b5ff687e623d25bbb5.tar.gz
MDEV-7116: Dynamic column hangs/segfaults
Going to 'create_new_string:' caused double freeing alloc_plan (there and at 'end:').
-rw-r--r--mysql-test/r/dyncol.result22
-rw-r--r--mysql-test/t/dyncol.test26
-rw-r--r--mysys/ma_dyncol.c1
3 files changed, 48 insertions, 1 deletions
diff --git a/mysql-test/r/dyncol.result b/mysql-test/r/dyncol.result
index 4753728793a..cc4e8074395 100644
--- a/mysql-test/r/dyncol.result
+++ b/mysql-test/r/dyncol.result
@@ -1777,5 +1777,27 @@ group_concat(cast(column_json(dyn) as char))
{"name1":"value1","name2":"value2"}
drop table t1;
#
+# MDEV-7116: Dynamic column hangs/segfaults
+#
+create table t1 (
+impressions mediumblob
+);
+insert into t1 values ("");
+update t1
+set impressions = column_add(impressions,
+'total', 12,
+'2014-10-28 16:00:00', 3,
+'2014-10-30 15:00:00', 3,
+'2014-11-04 09:00:00', 6
+);
+update t1
+set impressions = column_add(impressions,
+'total', "a12",
+'2014-10-28 16:00:00', "a3",
+'2014-10-30 15:00:00', "a3",
+'2014-11-04 09:00:00', "a6"
+ );
+drop table t1;
+#
# end of 10.0 tests
#
diff --git a/mysql-test/t/dyncol.test b/mysql-test/t/dyncol.test
index c5d442ebe49..65a94dcb49e 100644
--- a/mysql-test/t/dyncol.test
+++ b/mysql-test/t/dyncol.test
@@ -839,5 +839,31 @@ select group_concat(cast(column_json(dyn) as char)) from t1;
drop table t1;
--echo #
+--echo # MDEV-7116: Dynamic column hangs/segfaults
+--echo #
+create table t1 (
+ impressions mediumblob
+);
+
+insert into t1 values ("");
+
+update t1
+set impressions = column_add(impressions,
+ 'total', 12,
+ '2014-10-28 16:00:00', 3,
+ '2014-10-30 15:00:00', 3,
+ '2014-11-04 09:00:00', 6
+ );
+update t1
+set impressions = column_add(impressions,
+ 'total', "a12",
+ '2014-10-28 16:00:00', "a3",
+ '2014-10-30 15:00:00', "a3",
+ '2014-11-04 09:00:00', "a6"
+ );
+
+drop table t1;
+
+--echo #
--echo # end of 10.0 tests
--echo #
diff --git a/mysys/ma_dyncol.c b/mysys/ma_dyncol.c
index c0508b97922..a7a048acac1 100644
--- a/mysys/ma_dyncol.c
+++ b/mysys/ma_dyncol.c
@@ -3591,7 +3591,6 @@ end:
create_new_string:
/* There is no columns from before, so let's just add the new ones */
rc= ER_DYNCOL_OK;
- my_free(alloc_plan);
if (not_null != 0)
rc= dynamic_column_create_many_internal_fmt(str, add_column_count,
(uint*)column_keys, values,