Repository navigation
Conversation
antiguru
added this pull request to stack #38942
September 24, 2026 08:52
antiguru
force-pushed
the
sqlfunc-convert-list
branch
from
September 24, 2026 10:14
e1e3e5f to
f9a0c1b
Compare
antiguru
force-pushed
the
sqlfunc-convert-record
branch
from
September 24, 2026 10:14
8fb9b56 to
ab71954
Compare
antiguru
force-pushed
the
sqlfunc-convert-list
branch
from
September 24, 2026 14:29
f9a0c1b to
4ecb9b0
Compare
antiguru
force-pushed
the
sqlfunc-convert-list
branch
from
September 25, 2026 16:00
4ecb9b0 to
e0ab240
Compare
antiguru
force-pushed
the
sqlfunc-convert-record
branch
from
September 25, 2026 16:00
165fb4f to
6eb1536
Compare
antiguru
force-pushed
the
sqlfunc-convert-record
branch
from
October 14, 2026 09:11
6eb1536 to
5663ac0
Compare
antiguru
force-pushed
the
sqlfunc-convert-list
branch
from
October 14, 2026 09:11
e0ab240 to
07abebd
Compare
`CastListToString` was hand-written because it allocates its result, which the eager trait now covers: a `String` output is pushed into the arena by `OutputDatumType::into_result`. It also checked NULL in the body, which under the macro has to come from the input type. Its input is `ExcludeNull<Datum<'a>>`, because `stringify_datum` takes a raw `Datum` and a bare `Datum` accepts NULL. `ExcludeNull` reports `nullable() == false`, so the derived `propagates_nulls` is true, matching the declaration, and its `try_from_result` turns `Datum::Null` into `Err(Ok(Datum::Null))`, which the evaluation layer returns as `Ok(Datum::Null)`. `introduces_nulls` derives false from the `String` inside the `Result`. Its remaining overrides: `output_sql_type` returned `String.nullable(input_type.nullable)`, which the derived output plus the unary tail gives for a non-nullable input, so no output modifier is needed. `preserves_uniqueness = true` carries over, `could_error` derives true from the fallible output, matching the `LazyUnaryFunc` default the impl inherited, and `inverse`, `is_monotone` and `is_eliminable_cast` returned the trait defaults and are dropped. The `TODO?` on `inverse` now sits on the function. `Display` wrote a fixed string, so `sqlname` reproduces it. `ListLengthMax` is an `EagerBinaryFunc` that reads `max_layer` in `call`, so it takes a `&self` receiver. Its `output_sql_type` spelled out the macro's own binary tail, minus the non-nullable-position term, which the `Option` output's `nullable` of true subsumes, so it needs no output modifier. Nothing else was overridden: `could_error` and `introduces_nulls` derive true from `Result<Option<i32>, EvalError>`, `propagates_nulls` derives true from the non-nullable inputs, and `is_infix_op`, `is_monotone`, `is_infinity_monotone` and `negate` keep the trait defaults. Its `Display` wrote `list_length_max`, which is the function name, so the generated impl reproduces it without a `sqlname`. The struct doc loses only its now satisfied TODO. `doc/developer/sqlfunc.md` counted the convertible hand-written `LazyUnaryFunc` implementations. Seven of the ten are now converted, so the paragraph names the three that remain, all in `string.rs`. The registry reports only `sqlfunc_signature` moving, on both records. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
antiguru
force-pushed
the
sqlfunc-convert-list
branch
from
October 14, 2026 15:18
07abebd to
cb7b4a1
Compare
antiguru
removed this pull request from stack #38942
October 14, 2026 15:45
Member
Author
|
Folded into #39062, which now carries all twenty file conversions as separate commits, per review feedback to land them as one PR. Posted by Claude Code. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Converts
CastListToStringandListLengthMaxto#[sqlfunc].CastListToStringallocates its result, which the arena passed toEagerUnaryFunc::callnow covers, and its NULL check moves into itsExcludeNull<Datum<'a>>input.ListLengthMaxreadsmax_layer, so it takes&self, and it needs no output modifier.doc/developer/sqlfunc.mdnow names the three hand-writtenLazyUnaryFuncimpls that remain convertible, all instring.rs.The registry reports only
sqlfunc_signaturemoving, on both records.Based on #39094.
🤖 Generated with Claude Code