lihaosky commented on code in PR #26924:
URL: https://github.com/apache/flink/pull/26924#discussion_r2320938943


##########
flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/inference/StaticArgument.java:
##########
@@ -144,6 +145,45 @@ public static StaticArgument table(
         return new StaticArgument(name, dataType, null, isOptional, 
enrichTableTraits(traits));
     }
 
+    /**
+     * Declares a model argument such as {@code f(m => myModel)} or {@code f(m 
=> MODEL myModel))}.
+     *
+     * <p>By only providing a conversion class, the argument supports a 
"polymorphic" behavior. In
+     * other words: it accepts models with arbitrary schemas or types. For 
this case, a class
+     * satisfying the model's conversion requirements must be used.
+     *
+     * @param name name for the assignment operator e.g. {@code f(myArg => 
myModel)}
+     * @param isOptional whether the argument is optional
+     * @param traits set of {@link StaticArgumentTrait} requiring {@link 
StaticArgumentTrait#MODEL}
+     */
+    public static StaticArgument model(
+            String name, boolean isOptional, EnumSet<StaticArgumentTrait> 
traits) {
+        final EnumSet<StaticArgumentTrait> enrichedTraits = 
EnumSet.copyOf(traits);
+        enrichedTraits.add(StaticArgumentTrait.MODEL);
+        return new StaticArgument(name, null, null, isOptional, 
enrichedTraits);
+    }
+
+    /**
+     * Declares a model argument such as {@code f(m => myModel)} or {@code f(m 
=> MODEL myModel))}.
+     *
+     * <p>By providing a concrete data type, the argument only accepts models 
with corresponding
+     * schema or type structure. The data type must be appropriate for the 
specific model type.
+     *
+     * @param name name for the assignment operator e.g. {@code f(myArg => 
myModel)}
+     * @param dataType explicit type to which the argument is cast if necessary

Review Comment:
   I can remove this method. It's not used and I think we should have both 
input and output types. We may extend `StaticArgument` with more than one 
datatypes later when needed



##########
flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/inference/CallBindingCallContext.java:
##########
@@ -62,6 +65,7 @@ public final class CallBindingCallContext extends 
AbstractSqlCallContext {
     private final List<DataType> argumentDataTypes;
     private final @Nullable DataType outputType;
     private final @Nullable List<StaticArgument> staticArguments;
+    private final SqlValidator validator;

Review Comment:
   Refactored



##########
flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/QueryOperationConverter.java:
##########
@@ -335,6 +335,8 @@ public RelNode visit(FunctionQueryOperation functionTable) {
                                             inputStack.add(relBuilder.build());
                                             return tableArgCall;
                                         }
+                                        // TODO: Check 
ModelReferenceExpression and construct
+                                        // RexModelArgCall

Review Comment:
   Removed



##########
flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/expressions/resolver/rules/ResolveCallByArgumentsRule.java:
##########
@@ -651,6 +652,12 @@ public Optional<TableSemantics> getTableSemantics(int pos) 
{
             return Optional.of(semantics);
         }
 
+        @Override
+        public Optional<ModelSemantics> getModelSemantics(int pos) {
+            // TODO: Add ModelReferenceExpression checks and 
TableApiModelSemantics

Review Comment:
   Removed



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@flink.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to