No, I don’t think so. We’d have one enforcer function for each type
that we can have for a parameter in a function signature. And all type
checking would be removed from the individual functions. The
translator/rewriter would then ensure that all parameters go though an
enforcer function, unless the type checker can statically determine that
no type check is necessary.
Does this make sense?
Cheers,
Till
On 9 Dec 2015, at 12:37, Ildar Absalyamov wrote:
That will still mean that we’ll have to double the number of
functions by creating “enforced” version of each function, right?
In either case it will introduce additional code. However in the
former approach it is going to be located in only type computers. In
ideal world all those type computers should be auto generated, since
it is a bunch of boilerplate code, without any specifics (except for
the type of course). In that case having additional checks there will
be tolerable.
On Dec 9, 2015, at 11:59, Till Westmann <[email protected]> wrote:
Hi,
Ildar has filed ASTERIXDB-1219 in response to a number of issues with
built-in functions that do not handle untyped parameters well. While
I see the problem, I think that the solution should not be to add
conditional code to each implementation.
Instead, I think that we should have functions that guarantee the
correct input type or type conversion (or throw an error) and rely on
the rewriter to ensure that these “enforcing” functions are
placed into the plan only if the type check cannot determine that the
correct input type is provided.
That way the enforcement code would be only in the plan when needed.
Thoughts?
Cheers,
Till
[1] https://issues.apache.org/jira/browse/ASTERIXDB-1219
Best regards,
Ildar