mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
- Fix MDEV-7616 by adding SQLCOM_SET_OPTION to the accepted command list.
modified: storage/connect/ha_connect.cc - Add new JSON UDF functions and JSON functionalities. modified: storage/connect/json.cpp storage/connect/json.h storage/connect/jsonudf.cpp storage/connect/tabjson.cpp
This commit is contained in:
@@ -37,6 +37,10 @@ DllExport my_bool Json_Object_init(UDF_INIT*, UDF_ARGS*, char*);
|
||||
DllExport char *Json_Object(UDF_INIT*, UDF_ARGS*, char*,
|
||||
unsigned long*, char *, char *);
|
||||
DllExport void Json_Object_deinit(UDF_INIT*);
|
||||
DllExport my_bool Json_Object_Nonull_init(UDF_INIT*, UDF_ARGS*, char*);
|
||||
DllExport char *Json_Object_Nonull(UDF_INIT*, UDF_ARGS*, char*,
|
||||
unsigned long*, char *, char *);
|
||||
DllExport void Json_Object_Nonull_deinit(UDF_INIT*);
|
||||
DllExport my_bool Json_Array_Grp_init(UDF_INIT*, UDF_ARGS*, char*);
|
||||
DllExport void Json_Array_Grp_add(UDF_INIT *, UDF_ARGS *, char *, char *);
|
||||
DllExport char *Json_Array_Grp(UDF_INIT*, UDF_ARGS*, char*,
|
||||
@@ -437,6 +441,46 @@ void Json_Object_deinit(UDF_INIT* initid)
|
||||
PlugExit((PGLOBAL)initid->ptr);
|
||||
} // end of Json_Object_deinit
|
||||
|
||||
/***********************************************************************/
|
||||
/* Make a Json Oject containing all not null parameters. */
|
||||
/***********************************************************************/
|
||||
my_bool Json_Object_Nonull_init(UDF_INIT *initid, UDF_ARGS *args,
|
||||
char *message)
|
||||
{
|
||||
unsigned long reslen, memlen;
|
||||
|
||||
CalcLen(args, true, reslen, memlen);
|
||||
return JsonInit(initid, message, reslen, memlen);
|
||||
} // end of Json_Object_Nonull_init
|
||||
|
||||
char *Json_Object_Nonull(UDF_INIT *initid, UDF_ARGS *args, char *result,
|
||||
unsigned long *res_length, char *is_null, char *error)
|
||||
{
|
||||
char *str;
|
||||
uint i;
|
||||
PJOB objp;
|
||||
PJVAL jvp;
|
||||
PGLOBAL g = (PGLOBAL)initid->ptr;
|
||||
|
||||
PlugSubSet(g, g->Sarea, g->Sarea_Size);
|
||||
objp = new(g) JOBJECT;
|
||||
|
||||
for (i = 0; i < args->arg_count; i++)
|
||||
if (!(jvp = MakeValue(g, args, i))->IsNull())
|
||||
objp->SetValue(g, jvp, MakeKey(g, args, i));
|
||||
|
||||
if (!(str = Serialize(g, objp, NULL, 0)))
|
||||
str = strcpy(result, g->Message);
|
||||
|
||||
*res_length = strlen(str);
|
||||
return str;
|
||||
} // end of Json_Object_Nonull
|
||||
|
||||
void Json_Object_Nonull_deinit(UDF_INIT* initid)
|
||||
{
|
||||
PlugExit((PGLOBAL)initid->ptr);
|
||||
} // end of Json_Object_nonull_deinit
|
||||
|
||||
/***********************************************************************/
|
||||
/* Make a Json array from values comming from rows. */
|
||||
/***********************************************************************/
|
||||
|
Reference in New Issue
Block a user