mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-05-28 13:01:26 +03:00
58 lines
1.3 KiB
ReStructuredText
58 lines
1.3 KiB
ReStructuredText
.. _udafmap:
|
|
|
|
UDAFMap
|
|
=======
|
|
|
|
The UDAFMap is where we tell the system about our function. For Columnstore 1.2, you must manually place your function into this map.
|
|
|
|
* open mcsv1_udaf.cpp
|
|
* add your header to the #include list
|
|
* add a new line to the UDAFMap::getMap() function
|
|
|
|
::
|
|
|
|
#include "allnull.h"
|
|
#include "ssq.h"
|
|
#include "median.h"
|
|
#include "avg_mode.h"
|
|
UDAF_MAP& UDAFMap::getMap()
|
|
{
|
|
if (fm.size() > 0)
|
|
{
|
|
return fm;
|
|
}
|
|
// first: function name
|
|
// second: Function pointer
|
|
// please use lower case for the function name. Because the names might be
|
|
// case-insensitive in MySQL depending on the setting. In such case,
|
|
// 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();
|
|
|
|
return fm;
|
|
}
|
|
|
|
An alternative method added for 1.2 is to put the following in your .cpp file.
|
|
replace "median" with the name of your function:
|
|
|
|
::
|
|
|
|
class Add_median_ToUDAFMap
|
|
{
|
|
public:
|
|
Add_median_ToUDAFMap()
|
|
{
|
|
UDAFMap::getMap()["median"] = new median();
|
|
}
|
|
};
|
|
|
|
static Add_median_ToUDAFMap addToMap;
|
|
|
|
This defines an object whose constructor adds the entry to the UDAFMap. The
|
|
static declaration instatiates an object at runtime, thus adding the entry
|
|
at startup.
|
|
|
|
|