summaryrefslogtreecommitdiff
path: root/sql/sql_udf.h
diff options
context:
space:
mode:
authorOleksandr Byelkin <sanja@mariadb.com>2018-11-20 10:58:34 +0100
committerOleksandr Byelkin <sanja@mariadb.com>2018-11-20 10:58:34 +0100
commit49b63dcc0482bcb0fc7f642b0c19c8e24740ab27 (patch)
tree7637b7fe2b8db287f38bb1eff662325ee735923a /sql/sql_udf.h
parentb5ac863f1494920b5e7035c9dfa0ebfdaa50a15d (diff)
downloadmariadb-git-bb-10.4-MDEV-15073.tar.gz
MDEV-15073: Generic UDAF parser code in server for windows functionsbb-10.4-MDEV-15073
Added support for usual agreggate UDF (UDAF) Added remove() call support for more efficient window function processing Added example of aggregate UDF with efficient windows function support
Diffstat (limited to 'sql/sql_udf.h')
-rw-r--r--sql/sql_udf.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/sql/sql_udf.h b/sql/sql_udf.h
index 6e6fed2a81a..d1f2ae7bfb0 100644
--- a/sql/sql_udf.h
+++ b/sql/sql_udf.h
@@ -47,6 +47,7 @@ typedef struct st_udf_func
Udf_func_deinit func_deinit;
Udf_func_clear func_clear;
Udf_func_add func_add;
+ Udf_func_add func_remove;
ulong usage_count;
} udf_func;
@@ -131,6 +132,20 @@ class udf_handler :public Sql_alloc
func(&initid, &f_args, &is_null, &error);
*null_value= (my_bool) (is_null || error);
}
+ bool supports_removal()
+ { return MY_TEST(u_d->func_remove); }
+ void remove(my_bool *null_value)
+ {
+ DBUG_ASSERT(u_d->func_remove);
+ if (get_arguments())
+ {
+ *null_value=1;
+ return;
+ }
+ Udf_func_add func= u_d->func_remove;
+ func(&initid, &f_args, &is_null, &error);
+ *null_value= (my_bool) (is_null || error);
+ }
String *val_str(String *str,String *save_str);
};