Details
-
Task
-
Status: Closed (View Workflow)
-
Critical
-
Resolution: Fixed
-
None
Description
We currently have a patched in MariaDB's parser to support UDAFs. We need to work with the server team to do this in a more generic way.
Attachments
Activity
Field | Original Value | New Value |
---|---|---|
Epic Link |
|
Fix Version/s | 1.3 [ 22101 ] | |
Key |
|
|
Workflow | MariaDB ColumnStore workflow [ 84413 ] | MariaDB v3 [ 85140 ] |
Issue Type | New Feature [ 2 ] | Task [ 3 ] |
Project | MariaDB ColumnStore [ 10902 ] | MariaDB Server [ 10000 ] |
Fix Version/s | 10.4 [ 22408 ] |
Assignee | Oleksandr Byelkin [ sanja ] |
Priority | Major [ 3 ] | Critical [ 2 ] |
Link | This issue is part of MDEV-16624 [ MDEV-16624 ] |
Epic Link |
|
PT-81 [ 68562 ] |
Rank | Ranked higher |
Status | Open [ 1 ] | In Progress [ 3 ] |
Summary | Generic UDAF parser code in server | Generic UDAF parser code in server for windows functions |
Status | In Progress [ 3 ] | Stalled [ 10000 ] |
Assignee | Oleksandr Byelkin [ sanja ] | Sergei Golubchik [ serg ] |
Status | Stalled [ 10000 ] | In Review [ 10002 ] |
Assignee | Sergei Golubchik [ serg ] | Oleksandr Byelkin [ sanja ] |
Status | In Review [ 10002 ] | Stalled [ 10000 ] |
Component/s | OTHER [ 10125 ] | |
Fix Version/s | 10.4.1 [ 23228 ] | |
Fix Version/s | 10.4 [ 22408 ] | |
Resolution | Fixed [ 1 ] | |
Status | Stalled [ 10000 ] | Closed [ 6 ] |
Workflow | MariaDB v3 [ 85140 ] | MariaDB v4 [ 133420 ] |
Current patch used by ColumnStore for UDAF window functions:
@@ -10482,6 +10478,29 @@ window_func:
|
sum_expr
{
+ ((Item_sum *) $1)->mark_as_window_func_sum_expr();
+ }
+ |
+ function_call_generic
+ {
+ /*
+ We want to allow UDF aggregate (UDAF) functions as Window functions.
+ function_call_generic handles UDAF, so we leverage
+ that and then filter out anything that isn't a UDAF.
+ */
+ Item* item = (Item*)$1;
+ if (item == NULL)
+ {
+ my_error(ER_SP_DOES_NOT_EXIST, MYF(0), "FUNCTION", "");
+ MYSQL_YYABORT;
+ }
+ if ((item->type() != Item::SUM_FUNC_ITEM)
+ || (((Item_sum *)item)->sum_func() != Item_sum::UDF_SUM_FUNC))
+ {
+ my_error(ER_SP_DOES_NOT_EXIST, MYF(0), "FUNCTION", ((Item_func_sp*)item)->func_name());
+ MYSQL_YYABORT;
+ }
+
((Item_sum *) $1)->mark_as_window_func_sum_expr();
}
;