diff options
author | Oleksandr Byelkin <sanja@mariadb.com> | 2015-10-19 12:15:49 +0200 |
---|---|---|
committer | Oleksandr Byelkin <sanja@mariadb.com> | 2015-10-19 12:15:49 +0200 |
commit | 9a3ff0789fbf6c0ea627415c90ae5487449f433b (patch) | |
tree | 0804d71662e1b4497bc77559afa2e759a768229a | |
parent | 151f967380c44d46a6d9a5fda1d19985ebf0e22c (diff) | |
download | mariadb-git-9a3ff0789fbf6c0ea627415c90ae5487449f433b.tar.gz |
MDEV-8565: COLUMN_CHECK fails on valid data
Check allows zero lengts int/uint now.
-rw-r--r-- | mysql-test/r/dyncol.result | 15 | ||||
-rw-r--r-- | mysql-test/t/dyncol.test | 12 | ||||
-rw-r--r-- | mysys/ma_dyncol.c | 6 |
3 files changed, 31 insertions, 2 deletions
diff --git a/mysql-test/r/dyncol.result b/mysql-test/r/dyncol.result index 04ab385bca6..62e3b1c7331 100644 --- a/mysql-test/r/dyncol.result +++ b/mysql-test/r/dyncol.result @@ -1805,5 +1805,20 @@ set impressions = column_add(impressions, ); drop table t1; # +# MDEV-8565: COLUMN_CHECK fails on valid data +# +SELECT COLUMN_CHECK(COLUMN_CREATE('a',0,'b','1')); +COLUMN_CHECK(COLUMN_CREATE('a',0,'b','1')) +1 +SELECT COLUMN_CHECK(COLUMN_CREATE('a',1,'b','1')); +COLUMN_CHECK(COLUMN_CREATE('a',1,'b','1')) +1 +SELECT COLUMN_JSON(COLUMN_CREATE('a',0,'b','1')); +COLUMN_JSON(COLUMN_CREATE('a',0,'b','1')) +{"a":0,"b":"1"} +SELECT COLUMN_JSON(COLUMN_CREATE('a',1,'b','1')); +COLUMN_JSON(COLUMN_CREATE('a',1,'b','1')) +{"a":1,"b":"1"} +# # end of 10.0 tests # diff --git a/mysql-test/t/dyncol.test b/mysql-test/t/dyncol.test index 86dcee8148a..ac55fec3e2b 100644 --- a/mysql-test/t/dyncol.test +++ b/mysql-test/t/dyncol.test @@ -872,5 +872,17 @@ set impressions = column_add(impressions, drop table t1; --echo # +--echo # MDEV-8565: COLUMN_CHECK fails on valid data +--echo # + +SELECT COLUMN_CHECK(COLUMN_CREATE('a',0,'b','1')); + +SELECT COLUMN_CHECK(COLUMN_CREATE('a',1,'b','1')); + +SELECT COLUMN_JSON(COLUMN_CREATE('a',0,'b','1')); + +SELECT COLUMN_JSON(COLUMN_CREATE('a',1,'b','1')); + +--echo # --echo # end of 10.0 tests --echo # diff --git a/mysys/ma_dyncol.c b/mysys/ma_dyncol.c index a7a048acac1..7e47856ce2d 100644 --- a/mysys/ma_dyncol.c +++ b/mysys/ma_dyncol.c @@ -3723,10 +3723,12 @@ mariadb_dyncol_check(DYNAMIC_COLUMN *str) if (prev_type != DYN_COL_NULL) { /* It is not first entry */ - if (prev_data_offset >= data_offset) + if (prev_data_offset > data_offset || + ((prev_type != DYN_COL_INT && + prev_type != DYN_COL_UINT) && prev_data_offset == data_offset)) { DBUG_PRINT("info", ("Field order: %u Previous data offset: %u" - " >= Current data offset: %u", + " >(=) Current data offset: %u", (uint)i, (uint)prev_data_offset, (uint)data_offset)); |