summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnel Husakovic <anel@mariadb.org>2019-06-05 10:52:54 -0700
committerAnel Husakovic <anel@mariadb.org>2019-07-08 08:53:29 -0700
commitd4bcef55f306756072af78f33a5eab7497b8a502 (patch)
tree2ea054507e1921d5fa9c0cd89e28aed6465f9111
parentf4b751cac1c0b696df770e17f6d71fb52c6d3ea2 (diff)
downloadmariadb-git-d4bcef55f306756072af78f33a5eab7497b8a502.tar.gz
Add literals and array test
-rw-r--r--mysql-test/main/anel_array.result11
-rw-r--r--mysql-test/main/anel_literals.result18
-rw-r--r--mysql-test/main/anel_literals.test15
-rw-r--r--mysql-test/std_data/literals.MYDbin0 -> 60 bytes
-rw-r--r--mysql-test/std_data/literals.MYIbin0 -> 1024 bytes
-rw-r--r--mysql-test/std_data/literals.frmbin0 -> 8554 bytes
-rw-r--r--sql/mysql_json.cc34
7 files changed, 78 insertions, 0 deletions
diff --git a/mysql-test/main/anel_array.result b/mysql-test/main/anel_array.result
new file mode 100644
index 00000000000..24ff232ea38
--- /dev/null
+++ b/mysql-test/main/anel_array.result
@@ -0,0 +1,11 @@
+drop table if exists mysql_json;
+Warnings:
+Note 1051 Unknown table 'test.mysql_json'
+#
+# Array test
+#
+select * from test.mysql_json;
+t
+{"a":[1,2],"b":["x","y"]}
+Finshed
+drop table mysql_json;
diff --git a/mysql-test/main/anel_literals.result b/mysql-test/main/anel_literals.result
new file mode 100644
index 00000000000..0be80ae92af
--- /dev/null
+++ b/mysql-test/main/anel_literals.result
@@ -0,0 +1,18 @@
+#
+# Test literals
+#
+drop table if exists mysql_json;
+Warnings:
+Note 1051 Unknown table 'test.mysql_json'
+select * from test.mysql_json;
+t
+true
+Finshed
+false
+Finshed
+null
+Finshed
+Warnings:
+Error 145 Table './test/mysql_json' is marked as crashed and should be repaired
+Error 1034 1 client is using or hasn't closed the table properly
+drop table mysql_json;
diff --git a/mysql-test/main/anel_literals.test b/mysql-test/main/anel_literals.test
new file mode 100644
index 00000000000..1a20e9a4549
--- /dev/null
+++ b/mysql-test/main/anel_literals.test
@@ -0,0 +1,15 @@
+--echo #
+--echo # Test literals
+--echo #
+
+let $datadir=`select @@datadir`;
+drop table if exists mysql_json;
+
+--copy_file std_data/literals.frm $datadir/test/mysql_json.frm
+--copy_file std_data/literals.MYI $datadir/test/mysql_json.MYI
+--copy_file std_data/literals.MYD $datadir/test/mysql_json.MYD
+
+# Now can read
+select * from test.mysql_json;
+
+drop table mysql_json;
diff --git a/mysql-test/std_data/literals.MYD b/mysql-test/std_data/literals.MYD
new file mode 100644
index 00000000000..6f745a06268
--- /dev/null
+++ b/mysql-test/std_data/literals.MYD
Binary files differ
diff --git a/mysql-test/std_data/literals.MYI b/mysql-test/std_data/literals.MYI
new file mode 100644
index 00000000000..efd5c5612e8
--- /dev/null
+++ b/mysql-test/std_data/literals.MYI
Binary files differ
diff --git a/mysql-test/std_data/literals.frm b/mysql-test/std_data/literals.frm
new file mode 100644
index 00000000000..c55262019fc
--- /dev/null
+++ b/mysql-test/std_data/literals.frm
Binary files differ
diff --git a/sql/mysql_json.cc b/sql/mysql_json.cc
index 1124e3e3a41..c184000d8a1 100644
--- a/sql/mysql_json.cc
+++ b/sql/mysql_json.cc
@@ -256,6 +256,40 @@ bool parse_mysql_scalar(String* buffer, size_t value_json_type,
switch(value_json_type)
{
+ case JSONB_TYPE_LITERAL:
+ {
+ switch (static_cast<uint8>(*data))
+ {
+ case JSONB_NULL_LITERAL:
+ {
+ if(buffer->append("null"))
+ {
+ return true;
+ }
+ break;
+ }
+ case JSONB_TRUE_LITERAL:
+ {
+ if(buffer->append("true"))
+ {
+ return true;
+ }
+ break;
+ }
+ case JSONB_FALSE_LITERAL:
+ {
+ if(buffer->append("false"))
+ {
+ return true;
+ }
+ break;
+ }
+ default:
+ return true;
+
+ }
+ break;
+ }
/** FINISHED WORKS **/
case JSONB_TYPE_INT16 :
{