diff options
author | Olivier Bertrand <bertrandop@gmail.com> | 2015-08-19 17:52:33 +0200 |
---|---|---|
committer | Olivier Bertrand <bertrandop@gmail.com> | 2015-08-19 17:52:33 +0200 |
commit | ffc0f5b3de2b322dc05a3646243e0028c6691a1c (patch) | |
tree | 4534c5a6db780a768277d3e912d87b49adad1d3a /storage/connect/noconst.c | |
parent | 69ce20c4bdcfc32b3e78a4108313031688204cb9 (diff) | |
download | mariadb-git-ffc0f5b3de2b322dc05a3646243e0028c6691a1c.tar.gz |
Add new UDF noconst.
modified: storage/connect/noconst.c
Fix a few bugs in json udf's.
modified: storage/connect/jsonudf.cpp
Diffstat (limited to 'storage/connect/noconst.c')
-rw-r--r-- | storage/connect/noconst.c | 38 |
1 files changed, 38 insertions, 0 deletions
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 <my_global.h> +#include <mysqld.h> +#include <string.h> + +#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 + |