[
https://issues.apache.org/jira/browse/IGNITE-26636?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Konstantin Orlov updated IGNITE-26636:
--------------------------------------
Ignite Flags: (was: Docs Required,Release Notes Required)
> Introduce basic API for expression execution and predicate implementation
> -------------------------------------------------------------------------
>
> Key: IGNITE-26636
> URL: https://issues.apache.org/jira/browse/IGNITE-26636
> Project: Ignite
> Issue Type: Improvement
> Components: sql ai3
> Reporter: Konstantin Orlov
> Assignee: Konstantin Orlov
> Priority: Major
> Labels: ignite-3
> Fix For: 3.2
>
> Time Spent: 3h 50m
> Remaining Estimate: 0h
>
> Let's introduce basic set of interfaces and simple implementation of one
> expression.
> The proposed API is as follow:
> {code}
> /**
> * A context enclosing information for a context-dependent function, such
> * as CURRENT_USER, CURRENT_TIMESTAMP, etc.
> */
> public interface EvaluationContext {
> EvaluationContext EMPTY = new EvaluationContext() {};
> }
> /**
> * Class representing a reader for the input row.
> *
> * @param <RowT> Type of the supported row.
> */
> @FunctionalInterface
> public interface RowFieldAccessor<RowT> {
> /** Reads the specified field of the given row. */
> @Nullable Object get(int field, RowT row);
> }
> @FunctionalInterface
> public interface IgnitePredicate {
> <RowT> boolean test(
> EvaluationContext context,
> RowFieldAccessor<RowT> accessor,
> RowT row
> );
> }
> public interface IgniteExpressionFactory {
> /**
> * Creates predicate which accepts a single row as input.
> *
> * @param expression String representation of expression to create.
> * @param inputRowType A type of the input row.
> * @return A predicate representing the provided expression.
> */
> IgnitePredicate predicate(
> String expression,
> RowNativeType inputRowType
> );
> }
> {code}
> h3. Definition of Done
> It's possible to execute arbitrary expression over a provided row. All types
> should be supported. Validation exceptions should have reasonable message.
> Runtime exceptions (e.g. division by zero) should have reasonable message.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)