diff options
author | unknown <sanja@askmonty.org> | 2014-11-17 17:13:30 +0100 |
---|---|---|
committer | unknown <sanja@askmonty.org> | 2014-11-17 17:13:30 +0100 |
commit | 4d882329a998b7955cf164b5ff687e623d25bbb5 (patch) | |
tree | dc18758f285309ba290738108bef94b2e18d7214 | |
parent | e9fc98b5838c06356209196384e37a11e8e3c058 (diff) | |
download | mariadb-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.result | 22 | ||||
-rw-r--r-- | mysql-test/t/dyncol.test | 26 | ||||
-rw-r--r-- | mysys/ma_dyncol.c | 1 |
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, |