hequn8128 commented on a change in pull request #9858: [FLINK-14208][python] 
Optimize Python UDFs with parameters of constant values
URL: https://github.com/apache/flink/pull/9858#discussion_r334217523
 
 

 ##########
 File path: flink-python/pyflink/table/tests/test_udf.py
 ##########
 @@ -112,6 +112,96 @@ def test_udf_in_join_condition_2(self):
         actual = source_sink_utils.results()
         self.assert_equals(actual, ["2,Hi,2,Flink"])
 
+    def test_udf_with_constant_params(self):
+        def udf_with_constant_params(p, null_param, tinyint_param, 
smallint_param, int_param,
+                                     bigint_param, decimal_param, float_param, 
double_param,
+                                     boolean_param, str_param,
+                                     date_param, time_param, timestamp_param):
+            from decimal import Decimal
+            import datetime
+
+            assert null_param is None, 'null_param is wrong value %s' % 
null_param
+
+            assert isinstance(tinyint_param, int), 'tinyint_param of wrong 
type %s !' \
+                                                   % type(tinyint_param)
+            p += tinyint_param
+            assert isinstance(smallint_param, int), 'smallint_param of wrong 
type %s !' \
+                                                    % type(smallint_param)
+            p += smallint_param
+            assert isinstance(int_param, int), 'int_param of wrong type %s !' \
+                                               % type(int_param)
+            p += int_param
+            assert isinstance(bigint_param, int), 'bigint_param of wrong type 
%s !' \
+                                                  % type(bigint_param)
+            p += bigint_param
+            assert isinstance(decimal_param, Decimal), 'decimal_param of wrong 
type %s !' \
+                                                       % type(decimal_param)
+            p += int(decimal_param)
+
+            assert isinstance(float_param, float), 'float_param of wrong type 
%s !' \
+                                                   % type(float_param)
+            p += float_param
+            assert isinstance(double_param, float), 'double_param of wrong 
type %s !' \
+                                                    % type(double_param)
+            p += double_param
+
+            assert boolean_param is True, 'boolean_param is wrong value %s' % 
boolean_param
+
+            assert str_param == 'flink', 'str_param is wrong value %s' % 
str_param
+
+            assert date_param == datetime.date(year=2014, month=9, day=13), \
+                'date_param is wrong value %s' % date_param
+
+            assert time_param == datetime.time(hour=12, minute=0, second=0), \
+                'time_param is wrong value %s' % time_param
+
+            assert timestamp_param == datetime.datetime(1999, 9, 10, 5, 20, 
10), \
+                'timestamp_param is wrong value %s' % timestamp_param
+
+            return p
+
+        self.t_env.register_function("udf_with_constant_params",
+                                     udf(udf_with_constant_params,
+                                         input_types=[DataTypes.BIGINT(),
+                                                      DataTypes.BIGINT(),
+                                                      DataTypes.TINYINT(),
+                                                      DataTypes.SMALLINT(),
+                                                      DataTypes.INT(),
+                                                      DataTypes.BIGINT(),
+                                                      DataTypes.DECIMAL(20, 
10),
+                                                      DataTypes.FLOAT(),
+                                                      DataTypes.DOUBLE(),
+                                                      DataTypes.BOOLEAN(),
+                                                      DataTypes.STRING(),
+                                                      DataTypes.DATE(),
+                                                      DataTypes.TIME(),
+                                                      DataTypes.TIMESTAMP()],
+                                         result_type=DataTypes.BIGINT()))
 
 Review comment:
   Also test interval? From the `PythonBridgeUtils.convertLiteralToPython()`, 
it seems that it is planned to be supported.

----------------------------------------------------------------
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:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to