Use this issue to track InQL RFC 015, which already exists at docs/rfcs/015_core_scalar_functions.md.
Area
- Specification (RFCs)
- Package & tests
- Documentation
Summary
RFC 015 defines the first required scalar function and operator slice for InQL: column references, literals, casts, comparisons, boolean logic, null checks, basic arithmetic, conditionals, membership predicates, range predicates, and ordering expressions.
Motivation
Typed dataframe and query-block authoring need a stable scalar vocabulary before broader math, string, date/time, nested, and format catalogs can be added coherently.
Proposal sketch
The RFC establishes the minimum scalar surface for credible typed authoring and keeps it aligned with RFC 012 and the RFC 014 registry model. It covers canonical function/operator meaning, typechecking expectations, lowering constraints, and diagnostics for the foundational scalar forms.
Implementation decisions now recorded in the RFC:
- Boolean helper names are
and_, or_, and not_.
try_cast has null-on-conversion-failure semantics for this RFC.
- Numeric promotion remains registry/type-metadata level for this package slice; no package-local promotion table is introduced here.
in_ accepts literal or expression lists; relation-valued subqueries remain out of scope.
- Function/operator calls use one registry-backed scalar function application node, while
ColumnRefExpr and literal nodes remain structural.
Alternatives considered
The RFC rejects waiting for the broad function catalog, keeping separate helper families for filter/projection expressions, and using backend SQL expression strings for all scalar expressions.
Impact / compatibility
This RFC affects scalar function documentation, package helpers, compiler query/operator lowering, Prism/Substrait expression lowering, and diagnostics around casts, comparisons, null-safe equality, boolean logic, and ordering null placement.
Implementation notes
RFC 014 is merged and treated as the registry/decorator baseline. Scalar entries should land as declaration-side registered catalog functions, not ad hoc helpers or a hardcoded central registry list.
Checklist
Use this issue to track InQL RFC 015, which already exists at
docs/rfcs/015_core_scalar_functions.md.Area
Summary
RFC 015 defines the first required scalar function and operator slice for InQL: column references, literals, casts, comparisons, boolean logic, null checks, basic arithmetic, conditionals, membership predicates, range predicates, and ordering expressions.
Motivation
Typed dataframe and query-block authoring need a stable scalar vocabulary before broader math, string, date/time, nested, and format catalogs can be added coherently.
Proposal sketch
The RFC establishes the minimum scalar surface for credible typed authoring and keeps it aligned with RFC 012 and the RFC 014 registry model. It covers canonical function/operator meaning, typechecking expectations, lowering constraints, and diagnostics for the foundational scalar forms.
Implementation decisions now recorded in the RFC:
and_,or_, andnot_.try_casthas null-on-conversion-failure semantics for this RFC.in_accepts literal or expression lists; relation-valued subqueries remain out of scope.ColumnRefExprand literal nodes remain structural.Alternatives considered
The RFC rejects waiting for the broad function catalog, keeping separate helper families for filter/projection expressions, and using backend SQL expression strings for all scalar expressions.
Impact / compatibility
This RFC affects scalar function documentation, package helpers, compiler query/operator lowering, Prism/Substrait expression lowering, and diagnostics around casts, comparisons, null-safe equality, boolean logic, and ordering null placement.
Implementation notes
RFC 014 is merged and treated as the registry/decorator baseline. Scalar entries should land as declaration-side registered catalog functions, not ad hoc helpers or a hardcoded central registry list.
Checklist