summaryrefslogtreecommitdiff
path: root/unittest
diff options
context:
space:
mode:
authorOleksandr Byelkin <sanja@mariadb.com>2016-03-24 09:24:02 +0100
committerOleksandr Byelkin <sanja@mariadb.com>2016-03-24 09:24:02 +0100
commit2cb72dcccb640e546cf202481fa545c9cf5ded3a (patch)
tree09bb9268562bd49684a1dc6b3632b211fe929fa5 /unittest
parent4374501806ce2adcac73c8b90cb3509ccada7041 (diff)
parentf6d99a0d8a805873ca1846db4773afa4b0c5e1b7 (diff)
downloadmariadb-git-2cb72dcccb640e546cf202481fa545c9cf5ded3a.tar.gz
Merge branch '10.0' into 10.1
Diffstat (limited to 'unittest')
-rw-r--r--unittest/mysys/ma_dyncol-t.c44
1 files changed, 43 insertions, 1 deletions
diff --git a/unittest/mysys/ma_dyncol-t.c b/unittest/mysys/ma_dyncol-t.c
index 51e84bc4e40..b3fff638b65 100644
--- a/unittest/mysys/ma_dyncol-t.c
+++ b/unittest/mysys/ma_dyncol-t.c
@@ -691,13 +691,54 @@ err:
mariadb_dyncol_free(&str2);
}
+static void test_mdev_9773()
+{
+ int rc;
+ uint i;
+ uint num_keys[5]= {1,2,3,4,5};
+ char const *strval[]= {"Val1", "Val2", "Val3", "Val4", "Val5"};
+ DYNAMIC_COLUMN_VALUE vals[5];
+ DYNAMIC_COLUMN dynstr;
+ uint unpack_columns= 0;
+ MYSQL_LEX_STRING *unpack_keys= 0;
+ DYNAMIC_COLUMN_VALUE *unpack_vals= 0;
+
+ for (i = 0; i < 5; i++)
+ {
+ vals[i].type= DYN_COL_STRING;
+ vals[i].x.string.value.str= (char *)strval[i];
+ vals[i].x.string.value.length= strlen(strval[i]);
+ vals[i].x.string.charset= &my_charset_latin1;
+ }
+
+ mariadb_dyncol_init(&dynstr);
+
+ /* create numeric */
+ rc= mariadb_dyncol_create_many_num(&dynstr, 5, num_keys, vals, 1);
+
+ if (rc == ER_DYNCOL_OK)
+ rc= mariadb_dyncol_unpack(&dynstr, &unpack_columns, &unpack_keys,
+ &unpack_vals);
+ ok (rc == ER_DYNCOL_OK && unpack_columns == 5, "5 fields unpacked");
+ for (i = 0; i < unpack_columns; i++)
+ {
+ ok(memcmp(unpack_vals[i].x.string.value.str,
+ vals[i].x.string.value.str, vals[i].x.string.value.length) == 0,
+ "unpack %u", i);
+ }
+
+ my_free(unpack_keys);
+ my_free(unpack_vals);
+ mariadb_dyncol_free(&dynstr);
+}
+
int main(int argc __attribute__((unused)), char **argv)
{
uint i;
char *big_string= (char *)malloc(1024*1024);
MY_INIT(argv[0]);
- plan(62);
+ plan(68);
if (!big_string)
exit(1);
@@ -830,6 +871,7 @@ int main(int argc __attribute__((unused)), char **argv)
}
test_mdev_4994();
test_mdev_4995();
+ test_mdev_9773();
my_end(0);
return exit_status();