From ffc0f5b3de2b322dc05a3646243e0028c6691a1c Mon Sep 17 00:00:00 2001 From: Olivier Bertrand Date: Wed, 19 Aug 2015 17:52:33 +0200 Subject: Add new UDF noconst. modified: storage/connect/noconst.c Fix a few bugs in json udf's. modified: storage/connect/jsonudf.cpp --- storage/connect/noconst.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 storage/connect/noconst.c (limited to 'storage/connect/noconst.c') diff --git a/storage/connect/noconst.c b/storage/connect/noconst.c new file mode 100644 index 00000000000..043eae7c54e --- /dev/null +++ b/storage/connect/noconst.c @@ -0,0 +1,38 @@ +/***********************************************************************/ +/* (C) Copyright to the author Olivier BERTRAND 2015 */ +/***********************************************************************/ +#include +#include +#include + +#if defined(__WIN__) +#define DllExport __declspec( dllexport ) +#else // !__WIN__ +#define DllExport +#endif // !__WIN__ + +extern "C" { + DllExport my_bool noconst_init(UDF_INIT*, UDF_ARGS*, char*); + DllExport char *noconst(UDF_INIT*, UDF_ARGS*, char*, unsigned long*, char*, char*); +} // extern "C" + +/***********************************************************************/ +/* Returns its argument saying it is not a constant. */ +/***********************************************************************/ +my_bool noconst_init(UDF_INIT *initid, UDF_ARGS *args, char *message) +{ + if (args->arg_count != 1 || args->arg_type[0] != STRING_RESULT) { + strcpy(message, "noconst unique argument must be a string"); + return true; + } // endif arg + + initid->const_item = false; // The trick! + return false; +} // end of noconst_init + +char *noconst(UDF_INIT *initid, UDF_ARGS *args, char *result, + unsigned long *res_length, char *, char *) +{ + return args->args[0]; +} // end of noconst + -- cgit v1.2.1