to the MySQL server providing the ability to: * calculate the median of any values, * calculate the skewness and kurtosis of a distribution of value * retrieve the effective length of the longest value in a STRING column, * get the longest value from a STRING column, * calculate the faculty of a value, * calculate linear regression parameters (intercept, slope, correlation coefficent) of any values WWW: http://mysql-udf.sourceforge.net/
490 lines
15 KiB
Groff
490 lines
15 KiB
Groff
diff -C3 -r mysql-udf-orig/udf_colwidth.cc udf_colwidth.cc
|
|
*** mysql-udf-orig/udf_colwidth.cc 2004-07-16 00:35:05.000000000 +0200
|
|
--- udf_colwidth.cc 2005-10-05 14:37:55.000000000 +0200
|
|
***************
|
|
*** 42,47 ****
|
|
--- 42,48 ----
|
|
my_bool colwidth_init( UDF_INIT* initid, UDF_ARGS* args, char* message );
|
|
void colwidth_deinit( UDF_INIT* initid );
|
|
void colwidth_reset( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char *error );
|
|
+ void colwidth_clear( UDF_INIT* initid, char* is_null, char *error );
|
|
void colwidth_add( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char *error );
|
|
long long colwidth( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char* error );
|
|
|
|
***************
|
|
*** 93,102 ****
|
|
|
|
void colwidth_reset( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char* message )
|
|
{
|
|
struct colwidth_data* data = (struct colwidth_data*)initid->ptr;
|
|
|
|
data->maxlength=(long long) 0;
|
|
- colwidth_add( initid, args, is_null, message );
|
|
}
|
|
|
|
|
|
--- 94,110 ----
|
|
|
|
void colwidth_reset( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char* message )
|
|
{
|
|
+
|
|
+ colwidth_clear( initid, is_null, message );
|
|
+ colwidth_add( initid, args, is_null, message );
|
|
+ }
|
|
+
|
|
+
|
|
+ void colwidth_clear( UDF_INIT* initid, char* is_null, char* message )
|
|
+ {
|
|
struct colwidth_data* data = (struct colwidth_data*)initid->ptr;
|
|
|
|
data->maxlength=(long long) 0;
|
|
}
|
|
|
|
|
|
diff -C3 -r mysql-udf-orig/udf_confidence_higher.cc udf_confidence_higher.cc
|
|
*** mysql-udf-orig/udf_confidence_higher.cc 2004-07-15 23:39:09.000000000 +0200
|
|
--- udf_confidence_higher.cc 2005-06-01 10:19:48.000000000 +0200
|
|
***************
|
|
*** 38,43 ****
|
|
--- 38,44 ----
|
|
#include <mysql.h>
|
|
#include <m_ctype.h>
|
|
#include <m_string.h>
|
|
+ #include <math.h>
|
|
|
|
#ifdef HAVE_DLOPEN
|
|
|
|
diff -C3 -r mysql-udf-orig/udf_confidence_lower.cc udf_confidence_lower.cc
|
|
*** mysql-udf-orig/udf_confidence_lower.cc 2004-07-15 23:38:17.000000000 +0200
|
|
--- udf_confidence_lower.cc 2005-06-01 10:20:17.000000000 +0200
|
|
***************
|
|
*** 38,43 ****
|
|
--- 38,44 ----
|
|
#include <mysql.h>
|
|
#include <m_ctype.h>
|
|
#include <m_string.h>
|
|
+ #include <math.h>
|
|
|
|
#ifdef HAVE_DLOPEN
|
|
|
|
diff -C3 -r mysql-udf-orig/udf_correlation.cc udf_correlation.cc
|
|
*** mysql-udf-orig/udf_correlation.cc 2004-07-16 00:31:41.000000000 +0200
|
|
--- udf_correlation.cc 2005-10-05 14:14:22.000000000 +0200
|
|
***************
|
|
*** 36,41 ****
|
|
--- 36,42 ----
|
|
#include <mysql.h>
|
|
#include <m_ctype.h>
|
|
#include <m_string.h>
|
|
+ #include <math.h>
|
|
|
|
#ifdef HAVE_DLOPEN
|
|
|
|
***************
|
|
*** 49,54 ****
|
|
--- 50,56 ----
|
|
my_bool correlation_init( UDF_INIT* initid, UDF_ARGS* args, char* message );
|
|
void correlation_deinit( UDF_INIT* initid );
|
|
void correlation_reset( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char *error );
|
|
+ void correlation_clear( UDF_INIT* initid, char* is_null, char *error );
|
|
void correlation_add( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char *error );
|
|
double correlation( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char *error );
|
|
|
|
***************
|
|
*** 134,139 ****
|
|
--- 136,147 ----
|
|
|
|
void correlation_reset( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char* is_error )
|
|
{
|
|
+ correlation_clear( initid, is_null, is_error );
|
|
+ correlation_add( initid, args, is_null, is_error );
|
|
+ }
|
|
+
|
|
+ void correlation_clear( UDF_INIT* initid, char* is_null, char* is_error )
|
|
+ {
|
|
regression_data *buffer = (regression_data*)initid->ptr;
|
|
buffer->count = 0;
|
|
buffer->abscount=0;
|
|
***************
|
|
*** 156,162 ****
|
|
buffer->valuesx=(double *) malloc(BUFFERSIZE*sizeof(double));
|
|
buffer->valuesy=(double *) malloc(BUFFERSIZE*sizeof(double));
|
|
|
|
- correlation_add( initid, args, is_null, is_error );
|
|
}
|
|
|
|
|
|
--- 164,169 ----
|
|
diff -C3 -r mysql-udf-orig/udf_geomean.cc udf_geomean.cc
|
|
*** mysql-udf-orig/udf_geomean.cc 2004-07-16 00:10:42.000000000 +0200
|
|
--- udf_geomean.cc 2005-10-05 15:06:05.000000000 +0200
|
|
***************
|
|
*** 34,39 ****
|
|
--- 34,40 ----
|
|
#include <mysql.h>
|
|
#include <m_ctype.h>
|
|
#include <m_string.h>
|
|
+ #include <math.h>
|
|
|
|
#ifdef HAVE_DLOPEN
|
|
|
|
***************
|
|
*** 43,48 ****
|
|
--- 44,50 ----
|
|
my_bool geomean_init( UDF_INIT* initid, UDF_ARGS* args, char* message );
|
|
void geomean_deinit( UDF_INIT* initid );
|
|
void geomean_reset( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char *error );
|
|
+ void geomean_clear( UDF_INIT* initid, char* is_null, char *error );
|
|
void geomean_add( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char *error );
|
|
double geomean( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char *error );
|
|
}
|
|
***************
|
|
*** 104,109 ****
|
|
--- 106,117 ----
|
|
|
|
void geomean_reset( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char* is_error )
|
|
{
|
|
+ geomean_clear( initid, is_null, is_error );
|
|
+ geomean_add( initid, args, is_null, is_error );
|
|
+ }
|
|
+
|
|
+ void geomean_clear( UDF_INIT* initid, char* is_null, char* is_error )
|
|
+ {
|
|
geomean_data *buffer = (geomean_data*)initid->ptr;
|
|
buffer->count = 0;
|
|
buffer->value=0;
|
|
***************
|
|
*** 111,117 ****
|
|
*is_null = 0;
|
|
*is_error = 0;
|
|
|
|
- geomean_add( initid, args, is_null, is_error );
|
|
}
|
|
|
|
|
|
--- 119,124 ----
|
|
diff -C3 -r mysql-udf-orig/udf_intercept.cc udf_intercept.cc
|
|
*** mysql-udf-orig/udf_intercept.cc 2004-07-16 00:29:17.000000000 +0200
|
|
--- udf_intercept.cc 2005-10-05 14:45:26.000000000 +0200
|
|
***************
|
|
*** 48,53 ****
|
|
--- 48,54 ----
|
|
my_bool intercept_init( UDF_INIT* initid, UDF_ARGS* args, char* message );
|
|
void intercept_deinit( UDF_INIT* initid );
|
|
void intercept_reset( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char *error );
|
|
+ void intercept_clear( UDF_INIT* initid, char* is_null, char *error );
|
|
void intercept_add( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char *error );
|
|
double intercept( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char *error );
|
|
|
|
***************
|
|
*** 133,138 ****
|
|
--- 134,145 ----
|
|
|
|
void intercept_reset( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char* is_error )
|
|
{
|
|
+ intercept_clear( initid, is_null, is_error );
|
|
+ intercept_add( initid, args, is_null, is_error );
|
|
+ }
|
|
+
|
|
+ void intercept_clear( UDF_INIT* initid, char* is_null, char* is_error )
|
|
+ {
|
|
regression_data *buffer = (regression_data*)initid->ptr;
|
|
buffer->count = 0;
|
|
buffer->abscount=0;
|
|
***************
|
|
*** 155,165 ****
|
|
buffer->valuesx=(double *) malloc(BUFFERSIZE*sizeof(double));
|
|
buffer->valuesy=(double *) malloc(BUFFERSIZE*sizeof(double));
|
|
|
|
- intercept_add( initid, args, is_null, is_error );
|
|
}
|
|
|
|
|
|
-
|
|
void intercept_add( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char* is_error )
|
|
{
|
|
if (args->args[0]!=NULL && args->args[1]!=NULL)
|
|
--- 162,170 ----
|
|
diff -C3 -r mysql-udf-orig/udf_kurtosis.cc udf_kurtosis.cc
|
|
*** mysql-udf-orig/udf_kurtosis.cc 2004-07-15 23:55:53.000000000 +0200
|
|
--- udf_kurtosis.cc 2005-10-05 14:47:25.000000000 +0200
|
|
***************
|
|
*** 34,39 ****
|
|
--- 34,40 ----
|
|
#include <mysql.h>
|
|
#include <m_ctype.h>
|
|
#include <m_string.h>
|
|
+ #include <math.h>
|
|
|
|
#ifdef HAVE_DLOPEN
|
|
|
|
***************
|
|
*** 46,51 ****
|
|
--- 47,53 ----
|
|
my_bool kurtosis_init( UDF_INIT* initid, UDF_ARGS* args, char* message );
|
|
void kurtosis_deinit( UDF_INIT* initid );
|
|
void kurtosis_reset( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char *error );
|
|
+ void kurtosis_clear( UDF_INIT* initid, char* is_null, char *error );
|
|
void kurtosis_add( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char *error );
|
|
double kurtosis( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char *error );
|
|
}
|
|
***************
|
|
*** 116,121 ****
|
|
--- 118,130 ----
|
|
|
|
void kurtosis_reset( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char* is_error )
|
|
{
|
|
+ kurtosis_clear( initid, is_null, is_error );
|
|
+ kurtosis_add( initid, args, is_null, is_error );
|
|
+ }
|
|
+
|
|
+
|
|
+ void kurtosis_clear( UDF_INIT* initid, char* is_null, char* is_error )
|
|
+ {
|
|
kurtosis_data *buffer = (kurtosis_data*)initid->ptr;
|
|
buffer->count = 0;
|
|
buffer->abscount=0;
|
|
***************
|
|
*** 131,137 ****
|
|
|
|
buffer->values=(double *) malloc(BUFFERSIZE*sizeof(double));
|
|
|
|
- kurtosis_add( initid, args, is_null, is_error );
|
|
}
|
|
|
|
|
|
--- 140,145 ----
|
|
diff -C3 -r mysql-udf-orig/udf_longest.cc udf_longest.cc
|
|
*** mysql-udf-orig/udf_longest.cc 2004-07-16 00:34:09.000000000 +0200
|
|
--- udf_longest.cc 2005-10-05 14:48:58.000000000 +0200
|
|
***************
|
|
*** 41,46 ****
|
|
--- 41,47 ----
|
|
my_bool longest_init( UDF_INIT* initid, UDF_ARGS* args, char* message );
|
|
void longest_deinit( UDF_INIT* initid );
|
|
void longest_reset( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char *error );
|
|
+ void longest_clear( UDF_INIT* initid, char* is_null, char *error );
|
|
void longest_add( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char *error );
|
|
char *longest(UDF_INIT * initid, UDF_ARGS *args, char *result, unsigned long *length, char *is_null, char * /*error*/ );
|
|
}
|
|
***************
|
|
*** 97,102 ****
|
|
--- 98,109 ----
|
|
|
|
void longest_reset( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char* message )
|
|
{
|
|
+ longest_clear( initid, is_null, message );
|
|
+ longest_add( initid, args, is_null, message );
|
|
+ }
|
|
+
|
|
+ void longest_clear( UDF_INIT* initid, char* is_null, char* message )
|
|
+ {
|
|
struct longest_data* data = (struct longest_data*) initid->ptr;
|
|
if (data->result_string != NULL)
|
|
{
|
|
***************
|
|
*** 105,111 ****
|
|
}
|
|
data->length = 0;
|
|
*is_null = 0;
|
|
- longest_add( initid, args, is_null, message );
|
|
}
|
|
|
|
|
|
--- 112,117 ----
|
|
diff -C3 -r mysql-udf-orig/udf_median.cc udf_median.cc
|
|
*** mysql-udf-orig/udf_median.cc 2004-07-16 00:11:52.000000000 +0200
|
|
--- udf_median.cc 2005-10-05 13:49:00.000000000 +0200
|
|
***************
|
|
*** 46,51 ****
|
|
--- 46,52 ----
|
|
my_bool median_init( UDF_INIT* initid, UDF_ARGS* args, char* message );
|
|
void median_deinit( UDF_INIT* initid );
|
|
void median_reset( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char *error );
|
|
+ void median_clear( UDF_INIT* initid, char* is_null, char *error );
|
|
void median_add( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char *error );
|
|
double median( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char *error );
|
|
}
|
|
***************
|
|
*** 116,121 ****
|
|
--- 117,128 ----
|
|
|
|
void median_reset( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char* is_error )
|
|
{
|
|
+ median_clear(initid, is_null, is_error);
|
|
+ median_add( initid, args, is_null, is_error );
|
|
+ }
|
|
+
|
|
+ void median_clear( UDF_INIT* initid, char* is_null, char* is_error )
|
|
+ {
|
|
median_data *buffer = (median_data*)initid->ptr;
|
|
buffer->count = 0;
|
|
buffer->abscount=0;
|
|
***************
|
|
*** 131,140 ****
|
|
|
|
buffer->values=(double *) malloc(BUFFERSIZE*sizeof(double));
|
|
|
|
- median_add( initid, args, is_null, is_error );
|
|
}
|
|
|
|
-
|
|
void median_add( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char* is_error )
|
|
{
|
|
if (args->args[0]!=NULL)
|
|
--- 138,145 ----
|
|
diff -C3 -r mysql-udf-orig/udf_skewness.cc udf_skewness.cc
|
|
*** mysql-udf-orig/udf_skewness.cc 2004-07-15 23:56:06.000000000 +0200
|
|
--- udf_skewness.cc 2005-10-05 14:51:28.000000000 +0200
|
|
***************
|
|
*** 34,39 ****
|
|
--- 34,40 ----
|
|
#include <mysql.h>
|
|
#include <m_ctype.h>
|
|
#include <m_string.h>
|
|
+ #include <math.h>
|
|
|
|
#ifdef HAVE_DLOPEN
|
|
|
|
***************
|
|
*** 46,51 ****
|
|
--- 47,53 ----
|
|
my_bool skewness_init( UDF_INIT* initid, UDF_ARGS* args, char* message );
|
|
void skewness_deinit( UDF_INIT* initid );
|
|
void skewness_reset( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char *error );
|
|
+ void skewness_clear( UDF_INIT* initid, char* is_null, char *error );
|
|
void skewness_add( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char *error );
|
|
double skewness( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char *error );
|
|
}
|
|
***************
|
|
*** 116,121 ****
|
|
--- 118,129 ----
|
|
|
|
void skewness_reset( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char* is_error )
|
|
{
|
|
+ skewness_clear( initid, is_null, is_error );
|
|
+ skewness_add( initid, args, is_null, is_error );
|
|
+ }
|
|
+
|
|
+ void skewness_clear( UDF_INIT* initid, char* is_null, char* is_error )
|
|
+ {
|
|
skewness_data *buffer = (skewness_data*)initid->ptr;
|
|
buffer->count = 0;
|
|
buffer->abscount=0;
|
|
***************
|
|
*** 131,137 ****
|
|
|
|
buffer->values=(double *) malloc(BUFFERSIZE*sizeof(double));
|
|
|
|
- skewness_add( initid, args, is_null, is_error );
|
|
}
|
|
|
|
|
|
--- 139,144 ----
|
|
diff -C3 -r mysql-udf-orig/udf_slope.cc udf_slope.cc
|
|
*** mysql-udf-orig/udf_slope.cc 2004-07-16 00:28:02.000000000 +0200
|
|
--- udf_slope.cc 2005-10-05 14:53:30.000000000 +0200
|
|
***************
|
|
*** 49,54 ****
|
|
--- 49,55 ----
|
|
my_bool slope_init( UDF_INIT* initid, UDF_ARGS* args, char* message );
|
|
void slope_deinit( UDF_INIT* initid );
|
|
void slope_reset( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char *error );
|
|
+ void slope_clear( UDF_INIT* initid, char* is_null, char *error );
|
|
void slope_add( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char *error );
|
|
double slope( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char *error );
|
|
|
|
***************
|
|
*** 134,139 ****
|
|
--- 135,146 ----
|
|
|
|
void slope_reset( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char* is_error )
|
|
{
|
|
+ slope_clear( initid, is_null, is_error );
|
|
+ slope_add( initid, args, is_null, is_error );
|
|
+ }
|
|
+
|
|
+ void slope_clear( UDF_INIT* initid, char* is_null, char* is_error )
|
|
+ {
|
|
regression_data *buffer = (regression_data*)initid->ptr;
|
|
buffer->count = 0;
|
|
buffer->abscount=0;
|
|
***************
|
|
*** 156,162 ****
|
|
buffer->valuesx=(double *) malloc(BUFFERSIZE*sizeof(double));
|
|
buffer->valuesy=(double *) malloc(BUFFERSIZE*sizeof(double));
|
|
|
|
- slope_add( initid, args, is_null, is_error );
|
|
}
|
|
|
|
|
|
--- 163,168 ----
|
|
diff -C3 -r mysql-udf-orig/udf_stdnorm_density.cc udf_stdnorm_density.cc
|
|
*** mysql-udf-orig/udf_stdnorm_density.cc 2004-07-16 00:00:20.000000000 +0200
|
|
--- udf_stdnorm_density.cc 2005-06-01 11:43:29.000000000 +0200
|
|
***************
|
|
*** 34,39 ****
|
|
--- 34,40 ----
|
|
#include <mysql.h>
|
|
#include <m_ctype.h>
|
|
#include <m_string.h>
|
|
+ #include <math.h>
|
|
|
|
#ifdef HAVE_DLOPEN
|
|
|
|
***************
|
|
*** 42,48 ****
|
|
{
|
|
|
|
my_bool stdnorm_density_init(UDF_INIT *, UDF_ARGS *args, char *message);
|
|
! double stdnorm_density_(UDF_INIT *initid, UDF_ARGS *args, char *is_null,char *error);
|
|
|
|
}
|
|
|
|
--- 43,49 ----
|
|
{
|
|
|
|
my_bool stdnorm_density_init(UDF_INIT *, UDF_ARGS *args, char *message);
|
|
! double stdnorm_density(UDF_INIT *initid, UDF_ARGS *args, char *is_null,char *error);
|
|
|
|
}
|
|
|
|
diff -C3 -r mysql-udf-orig/udf_weightedavg.cc udf_weightedavg.cc
|
|
*** mysql-udf-orig/udf_weightedavg.cc 2004-07-29 21:15:43.000000000 +0200
|
|
--- udf_weightedavg.cc 2005-10-05 14:55:18.000000000 +0200
|
|
***************
|
|
*** 44,49 ****
|
|
--- 44,50 ----
|
|
my_bool weightedavg_init( UDF_INIT* initid, UDF_ARGS* args, char* message );
|
|
void weightedavg_deinit( UDF_INIT* initid );
|
|
void weightedavg_reset( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char *error );
|
|
+ void weightedavg_clear( UDF_INIT* initid, char* is_null, char *error );
|
|
void weightedavg_add( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char *error );
|
|
double weightedavg( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char *error );
|
|
}
|
|
***************
|
|
*** 111,116 ****
|
|
--- 112,124 ----
|
|
|
|
void weightedavg_reset( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char* is_error )
|
|
{
|
|
+ weightedavg_clear( initid, is_null, is_error );
|
|
+ weightedavg_add( initid, args, is_null, is_error );
|
|
+ }
|
|
+
|
|
+
|
|
+ void weightedavg_clear( UDF_INIT* initid, char* is_null, char* is_error )
|
|
+ {
|
|
weightedavg_data *buffer = (weightedavg_data*)initid->ptr;
|
|
buffer->count = 0;
|
|
buffer->datasum = 0;
|
|
***************
|
|
*** 118,124 ****
|
|
*is_null = 0;
|
|
*is_error = 0;
|
|
|
|
- weightedavg_add( initid, args, is_null, is_error );
|
|
}
|
|
|
|
|
|
--- 126,131 ----
|