summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOleksandr Byelkin <sanja@mariadb.com>2015-10-19 12:15:49 +0200
committerOleksandr Byelkin <sanja@mariadb.com>2015-10-19 12:15:49 +0200
commit9a3ff0789fbf6c0ea627415c90ae5487449f433b (patch)
tree0804d71662e1b4497bc77559afa2e759a768229a
parent151f967380c44d46a6d9a5fda1d19985ebf0e22c (diff)
downloadmariadb-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.result15
-rw-r--r--mysql-test/t/dyncol.test12
-rw-r--r--mysys/ma_dyncol.c6
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));