[V1] Function and aggregation improvements for typing and implementations. #1585
Open
Description
A couple of function things..
- Functions (and aggregations) should be typed on their families rather than specific PTypes.
- FnSignature (and AggSignature) should be removed in favor of the interface methods.
- Functions (and aggregations) should have an implementation provider rather than a single invoke method.
- Use type families rather than PTypes
- Use a computeReturnType method like Calcite for function typing (massively simplifies PlanType logic...)
/**
* TODO REPLACE ME WITH `getInstance(args: Array<PType>)` which returns an invocable instance of this function.
*
* Invoke the function with the given arguments. Required.
*
* @param args the arguments to the function
* @return the result of the function
*/
public fun invoke(args: Array<Datum>): Datum