rondb
rondb copied to clipboard
RONDB-589 Pushdown Aggregation
Description:
- API provides interfaces to write assembly-style code program for aggregation query.
- API pushes the program with scan request to RonDB data nodes.
- Data nodes scan the rows from specific table, for each row it gets, executing the pushed down program to generate the aggregation results locally.
- when the scan is done on data nodes, they send the local result back to API.
- API gathers and merge the results to get the final aggregation results.
Current abilities: a.Supported column type:
- TINYINT
- TINYINT UNSIGNED
- SMALLINT
- SMALLINT UNSIGNED
- MEDIUMINT
- MEDIUMINT UNSIGNED
- INT
- INT UNSIGNED
- BIGINT
- BIGINT UNSIGNED
- FLOAT
- DOUBLE
- DECIMAL(Partially supported. Pushdown interpreter can load and parse DECIMAL column and try to convert it to BIGINT/BIGINT UNSIGNED/DOUBLE dynamically)
b.Supported arithmetic operator:
- Addition
- Subtraction
- Multiplication
- Division (DIV operator is supported. TODO: support / operator)
- Modulus
c. Support group by operation
d. Support working with pushdown filter
e. Support working with table-scan, index-scan( and range-scan).