Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: add log1p function #273
feat: add log1p function #273
Changes from all commits
e19923c
77711aa
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I realize the surrounding functions don't do this but do these arguments need a
nullability
parameter?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Which arguments; as in
- value: fp32
? And by the same logic, would we also want a lot of the arithmetic functions to have anullability
parameter then? Or did you mean something else?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@cpcloud why? The default is
MIRROR
(see table here), which is correct here.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does this signature handle the case of
NULL
inputs? It looks like it only accepts non-nullable inputs.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, because
MIRROR
andDECLARED_OUTPUT
are IMO weird special cases simply because the return type derivation expressions lack the generality to describe them. See https://substrait.io/expressions/scalar_functions/#nullability-handling.MIRROR
andDECLARED_OUTPUT
ignore the nullability flag of the arguments and accept any combination of both nullable and non-nullable arguments, andMIRROR
ignores and overrides the nullability flag of the return type with the boolean or of all argument nullability flags.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FWIW, for the validator I'll be implementing a generalization of the type derivation grammar that uses
type??
to specify "either nullable or non-nullable" in a type pattern, andtype?parameter
to bind the nullability to the nameparameter
, so variadics aside, you could describeMIRROR
andDECLARED_OUTPUT
more flexibly and explicitly if you want. I want to support that if only to avoid adding code for all the special cases, even if Substrait itself won't ever support that syntax.ETA: heck, I could do away with the special cases even for variadics if I add a
type?parameter?
syntax for patterns, whereparameter
is bound totrue
iff any matched patterns were nullable :D But I realize that the syntax is arcane at best. Ultimately I just want to be able to round-trip the grammar with my IR for these things while being 100% compatible with Substrait grammar (for as far as that's possible at all due to all the conflicting descriptions in Substrait itself).