From 3a159908f4ca9e4ae5e3e169121de70720f830c7 Mon Sep 17 00:00:00 2001 From: Andrew Hutchings Date: Fri, 3 Aug 2018 11:55:49 +0100 Subject: [PATCH] MCOL-1385 Fix window functions MariaDB maps MEDIAN to PERCENTILE_CONT and also has PERCENTILE_DISC now. So remove our MEDIAN UDAF but keep the source as it is used in docs. --- dbcon/mysql/ha_window_function.cpp | 7 +++ utils/udfsdk/CMakeLists.txt | 2 +- utils/udfsdk/mcsv1_udaf.cpp | 2 - utils/udfsdk/udfmysql.cpp | 72 ------------------------------ 4 files changed, 8 insertions(+), 75 deletions(-) diff --git a/dbcon/mysql/ha_window_function.cpp b/dbcon/mysql/ha_window_function.cpp index ac7a2af3a..0c57ce8bc 100644 --- a/dbcon/mysql/ha_window_function.cpp +++ b/dbcon/mysql/ha_window_function.cpp @@ -289,6 +289,13 @@ string ConvertFuncName(Item_sum* item) return "PERCENT_RANK"; break; + case Item_sum::PERCENTILE_CONT_FUNC: + return "PERCENTILE_CONT"; + break; + + case Item_sum::PERCENTILE_DISC_FUNC: + return "PERCENTILE_DISC"; + case Item_sum::CUME_DIST_FUNC: return "CUME_DIST"; break; diff --git a/utils/udfsdk/CMakeLists.txt b/utils/udfsdk/CMakeLists.txt index 01009e35a..ad4460977 100755 --- a/utils/udfsdk/CMakeLists.txt +++ b/utils/udfsdk/CMakeLists.txt @@ -4,7 +4,7 @@ include_directories( ${ENGINE_COMMON_INCLUDES} ########### next target ############### -set(udfsdk_LIB_SRCS udfsdk.cpp mcsv1_udaf.cpp allnull.cpp ssq.cpp median.cpp avg_mode.cpp regr_avgx.cpp avgx.cpp) +set(udfsdk_LIB_SRCS udfsdk.cpp mcsv1_udaf.cpp allnull.cpp ssq.cpp avg_mode.cpp regr_avgx.cpp avgx.cpp) add_definitions(-DMYSQL_DYNAMIC_PLUGIN) diff --git a/utils/udfsdk/mcsv1_udaf.cpp b/utils/udfsdk/mcsv1_udaf.cpp index b042d63f5..9e4596440 100644 --- a/utils/udfsdk/mcsv1_udaf.cpp +++ b/utils/udfsdk/mcsv1_udaf.cpp @@ -34,7 +34,6 @@ using namespace mcsv1sdk; UDAF_MAP UDAFMap::fm; #include "allnull.h" #include "ssq.h" -#include "median.h" #include "avg_mode.h" #include "regr_avgx.h" #include "avgx.h" @@ -52,7 +51,6 @@ UDAF_MAP& UDAFMap::getMap() // the function names passed to the interface is always in lower case. fm["allnull"] = new allnull(); fm["ssq"] = new ssq(); - fm["median"] = new median(); fm["avg_mode"] = new avg_mode(); fm["regr_avgx"] = new regr_avgx(); fm["avgx"] = new avgx(); diff --git a/utils/udfsdk/udfmysql.cpp b/utils/udfsdk/udfmysql.cpp index b0b2ebb9c..1c0fee1db 100644 --- a/utils/udfsdk/udfmysql.cpp +++ b/utils/udfsdk/udfmysql.cpp @@ -349,78 +349,6 @@ extern "C" return data->sumsq; } -//======================================================================= - - /** - * MEDIAN connector stub - */ -#ifdef _MSC_VER - __declspec(dllexport) -#endif - my_bool median_init(UDF_INIT* initid, UDF_ARGS* args, char* message) - { - if (args->arg_count != 1) - { - strcpy(message, "median() requires one argument"); - return 1; - } - - /* - if (!(data = (struct ssq_data*) malloc(sizeof(struct ssq_data)))) - { - strmov(message,"Couldn't allocate memory"); - return 1; - } - data->sumsq = 0; - - initid->ptr = (char*)data; - */ - return 0; - } - -#ifdef _MSC_VER - __declspec(dllexport) -#endif - void median_deinit(UDF_INIT* initid) - { -// free(initid->ptr); - } - -#ifdef _MSC_VER - __declspec(dllexport) -#endif - void - median_clear(UDF_INIT* initid, char* is_null __attribute__((unused)), - char* message __attribute__((unused))) - { -// struct ssq_data* data = (struct ssq_data*)initid->ptr; -// data->sumsq = 0; - } - -#ifdef _MSC_VER - __declspec(dllexport) -#endif - void - median_add(UDF_INIT* initid, UDF_ARGS* args, - char* is_null, - char* message __attribute__((unused))) - { -// struct ssq_data* data = (struct ssq_data*)initid->ptr; -// double val = cvtArgToDouble(args->arg_type[0], args->args[0]); -// data->sumsq = val*val; - } - -#ifdef _MSC_VER - __declspec(dllexport) -#endif - long long median(UDF_INIT* initid, UDF_ARGS* args __attribute__((unused)), - char* is_null, char* error __attribute__((unused))) - { -// struct ssq_data* data = (struct ssq_data*)initid->ptr; -// return data->sumsq; - return 0; - } - /** * avg_mode connector stub */