wangxlong commented on a change in pull request #9916: 
[FLINK-14408][Table-Planner]UDF's open method is invoked to initialize when sql 
is optimized in oldPlanner
URL: https://github.com/apache/flink/pull/9916#discussion_r338371307
 
 

 ##########
 File path: 
flink-table/flink-table-planner/src/main/scala/org/apache/flink/table/codegen/ExpressionReducer.scala
 ##########
 @@ -164,3 +180,96 @@ class ExpressionReducer(config: TableConfig)
     }
   }
 }
+
+/**
+  * A [[ConstantFunctionContext]] allows to obtain user-defined configuration 
information set
+  * in [[TableConfig]].
+  *
+  * @param parameters User-defined configuration set in [[TableConfig]].
+  */
+class ConstantFunctionContext(parameters: Configuration) extends 
FunctionContext(null) {
+
+  override def getMetricGroup: MetricGroup = {
+    throw new UnsupportedOperationException("getMetricGroup is not supported 
when optimizing")
+  }
+
+  override def getCachedFile(name: String): File = {
+    throw new UnsupportedOperationException("getCachedFile is not supported 
when optimizing")
+  }
+
+  /**
+    * Gets the user-defined configuration value associated with the given key 
as a string.
+    *
+    * @param key          key pointing to the associated value
+    * @param defaultValue default value which is returned in case user-defined 
configuration
+    *                     value is null or there is no value associated with 
the given key
+    * @return (default) value associated with the given key
+    */
+  override def getJobParameter(key: String, defaultValue: String): String = {
+    parameters.getString(key, defaultValue)
+  }
+}
+
+/**
+  * A [[ConstantFunctionCodeGenerator]] used for constant expression code 
generator
+  * @param config configuration that determines runtime behavior
+  * @param nullableInput input(s) can be null.
+  * @param input1 type information about the first input of the Function
+  * @param functionContext functionContext that used for code generator
+  * @param parameters parameters that accessed by openFunction
+  */
+class ConstantFunctionCodeGenerator(config: TableConfig,
+                                    nullableInput: Boolean,
+                                    input1: TypeInformation[_ <: Any],
+                                    functionContext: FunctionContext,
+                                    parameters: String = null)
+  extends FunctionCodeGenerator(config, nullableInput, input1) {
+
+  override def addReusableFunction(function: UserDefinedFunction,
 
 Review comment:
   Yes, I think this will be better

----------------------------------------------------------------
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.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to