Add the json_quote() function to the JSON1 extension.
FossilOrigin-Name: 269892abf6e59c417729669cc764d1f237e093fd
This commit is contained in:
commit
2ce26ff10a
@ -1211,6 +1211,25 @@ static void jsonTest1Func(
|
||||
** Scalar SQL function implementations
|
||||
****************************************************************************/
|
||||
|
||||
/*
|
||||
** Implementation of the json_QUOTE(VALUE) function. Return a JSON value
|
||||
** corresponding to the SQL value input. Mostly this means putting
|
||||
** double-quotes around strings and returning the unquoted string "null"
|
||||
** when given a NULL input.
|
||||
*/
|
||||
static void jsonQuoteFunc(
|
||||
sqlite3_context *ctx,
|
||||
int argc,
|
||||
sqlite3_value **argv
|
||||
){
|
||||
JsonString jx;
|
||||
|
||||
jsonInit(&jx, ctx);
|
||||
jsonAppendValue(&jx, argv[0]);
|
||||
jsonResult(&jx);
|
||||
sqlite3_result_subtype(ctx, JSON_SUBTYPE);
|
||||
}
|
||||
|
||||
/*
|
||||
** Implementation of the json_array(VALUE,...) function. Return a JSON
|
||||
** array that contains all values given in arguments. Or if any argument
|
||||
@ -2124,6 +2143,7 @@ int sqlite3Json1Init(sqlite3 *db){
|
||||
{ "json_extract", -1, 0, jsonExtractFunc },
|
||||
{ "json_insert", -1, 0, jsonSetFunc },
|
||||
{ "json_object", -1, 0, jsonObjectFunc },
|
||||
{ "json_quote", 1, 0, jsonQuoteFunc },
|
||||
{ "json_remove", -1, 0, jsonRemoveFunc },
|
||||
{ "json_replace", -1, 0, jsonReplaceFunc },
|
||||
{ "json_set", -1, 1, jsonSetFunc },
|
||||
|
16
manifest
16
manifest
@ -1,5 +1,5 @@
|
||||
C Small\stweak\sto\sthe\sbtree\sbalancer\sfor\simproved\stree\sbalance.
|
||||
D 2016-07-23T19:18:55.177
|
||||
C Add\sthe\sjson_quote()\sfunction\sto\sthe\sJSON1\sextension.
|
||||
D 2016-07-23T19:34:53.707
|
||||
F Makefile.in 6c20d44f72d4564f11652b26291a214c8367e5db
|
||||
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
|
||||
F Makefile.msc d66d0395c38571aab3804f8db0fa20707ae4609a
|
||||
@ -212,7 +212,7 @@ F ext/misc/eval.c f971962e92ebb8b0a4e6b62949463ee454d88fa2
|
||||
F ext/misc/fileio.c d4171c815d6543a9edef8308aab2951413cd8d0f
|
||||
F ext/misc/fuzzer.c 7c64b8197bb77b7d64eff7cac7848870235d4c25
|
||||
F ext/misc/ieee754.c f190d0cc5182529acb15babd177781be1ac1718c
|
||||
F ext/misc/json1.c b9c88d5c3b6ecd8c731ffdd7f5b3d902857f8c96
|
||||
F ext/misc/json1.c d51a764ba43a49e191bc3536238bfab3def258ca
|
||||
F ext/misc/nextchar.c 35c8b8baacb96d92abbb34a83a997b797075b342
|
||||
F ext/misc/percentile.c bcbee3c061b884eccb80e21651daaae8e1e43c63
|
||||
F ext/misc/regexp.c a68d25c659bd2d893cd1215667bbf75ecb9dc7d4
|
||||
@ -877,7 +877,7 @@ F test/journal3.test ff8af941f9e06161d3db1b46bb9f965ff0e7f307
|
||||
F test/jrnlmode.test 7864d59cf7f6e552b9b99ba0f38acd167edc10fa
|
||||
F test/jrnlmode2.test 81610545a4e6ed239ea8fa661891893385e23a1d
|
||||
F test/jrnlmode3.test 556b447a05be0e0963f4311e95ab1632b11c9eaa
|
||||
F test/json101.test ef42283f0b60d8bacbc2243448e7c84988578e52
|
||||
F test/json101.test 865776ed8580703e1684fe4b8ee2e473333bb121
|
||||
F test/json102.test bf3fe7a706d30936a76a0f7a0375e1e8e73aff5a
|
||||
F test/json103.test c5f6b85e69de05f6b3195f9f9d5ce9cd179099a0
|
||||
F test/keyword1.test 37ef6bba5d2ed5b07ecdd6810571de2956599dff
|
||||
@ -1507,8 +1507,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||
P d0bcaf0cd92ae5bbea7ad68537ba89437d5c39e8 d2a0af7a37e390439c3001fedb5834f47fb24a1f
|
||||
R e49116b4c5057a2c64e23fc9fb71ef64
|
||||
T +closed d2a0af7a37e390439c3001fedb5834f47fb24a1f
|
||||
P 8817dedb75430e6c78ff527f7ded4abb35776cef 2c3714aebf5e40e3728877a235b3c1f93defa33e
|
||||
R d8b644436fd0d857689e119dadae618e
|
||||
T +closed 2c3714aebf5e40e3728877a235b3c1f93defa33e
|
||||
U drh
|
||||
Z 96bd00cbee88b7adc25980f9570baf91
|
||||
Z e34798b2dc952c68e869c2ddf5f79301
|
||||
|
@ -1 +1 @@
|
||||
8817dedb75430e6c78ff527f7ded4abb35776cef
|
||||
269892abf6e59c417729669cc764d1f237e093fd
|
@ -356,5 +356,34 @@ do_execsql_test json-8.2 {
|
||||
SELECT a=json_extract(b,'$[0]') FROM t8;
|
||||
} {1}
|
||||
|
||||
# The json_quote() function transforms an SQL value into a JSON value.
|
||||
# String values are quoted and interior quotes are escaped. NULL values
|
||||
# are rendered as the unquoted string "null".
|
||||
#
|
||||
do_execsql_test json-9.1 {
|
||||
SELECT json_quote('abc"xyz');
|
||||
} {{"abc\"xyz"}}
|
||||
do_execsql_test json-9.2 {
|
||||
SELECT json_quote(3.14159);
|
||||
} {3.14159}
|
||||
do_execsql_test json-9.3 {
|
||||
SELECT json_quote(12345);
|
||||
} {12345}
|
||||
do_execsql_test json-9.4 {
|
||||
SELECT json_quote(null);
|
||||
} {"null"}
|
||||
do_catchsql_test json-9.5 {
|
||||
SELECT json_quote(x'30313233');
|
||||
} {1 {JSON cannot hold BLOB values}}
|
||||
do_catchsql_test json-9.6 {
|
||||
SELECT json_quote(123,456)
|
||||
} {1 {wrong number of arguments to function json_quote()}}
|
||||
do_catchsql_test json-9.7 {
|
||||
SELECT json_quote()
|
||||
} {1 {wrong number of arguments to function json_quote()}}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
finish_test
|
||||
|
Loading…
Reference in New Issue
Block a user