diff options
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 00000000..830a8494 --- /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(_WIN32) +#define DllExport __declspec( dllexport ) +#else // !_WIN32 +#define DllExport +#endif // !_WIN32 + +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 + |