diff options
author | Anel Husakovic <anel@mariadb.org> | 2019-06-05 10:52:54 -0700 |
---|---|---|
committer | Anel Husakovic <anel@mariadb.org> | 2019-07-08 08:53:29 -0700 |
commit | d4bcef55f306756072af78f33a5eab7497b8a502 (patch) | |
tree | 2ea054507e1921d5fa9c0cd89e28aed6465f9111 | |
parent | f4b751cac1c0b696df770e17f6d71fb52c6d3ea2 (diff) | |
download | mariadb-git-d4bcef55f306756072af78f33a5eab7497b8a502.tar.gz |
Add literals and array test
-rw-r--r-- | mysql-test/main/anel_array.result | 11 | ||||
-rw-r--r-- | mysql-test/main/anel_literals.result | 18 | ||||
-rw-r--r-- | mysql-test/main/anel_literals.test | 15 | ||||
-rw-r--r-- | mysql-test/std_data/literals.MYD | bin | 0 -> 60 bytes | |||
-rw-r--r-- | mysql-test/std_data/literals.MYI | bin | 0 -> 1024 bytes | |||
-rw-r--r-- | mysql-test/std_data/literals.frm | bin | 0 -> 8554 bytes | |||
-rw-r--r-- | sql/mysql_json.cc | 34 |
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 Binary files differnew file mode 100644 index 00000000000..6f745a06268 --- /dev/null +++ b/mysql-test/std_data/literals.MYD diff --git a/mysql-test/std_data/literals.MYI b/mysql-test/std_data/literals.MYI Binary files differnew file mode 100644 index 00000000000..efd5c5612e8 --- /dev/null +++ b/mysql-test/std_data/literals.MYI diff --git a/mysql-test/std_data/literals.frm b/mysql-test/std_data/literals.frm Binary files differnew file mode 100644 index 00000000000..c55262019fc --- /dev/null +++ b/mysql-test/std_data/literals.frm 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 : { |