Пример #1
0
    def visit_create_udf(self, statement: CreateUDFStatement):
        """Convertor for parsed create udf statement

        Arguments:
            statement {CreateUDFStatement} -- Create UDF Statement
        """
        annotated_inputs = column_definition_to_udf_io(statement.inputs, True)
        annotated_outputs = column_definition_to_udf_io(
            statement.outputs, False)

        create_udf_opr = LogicalCreateUDF(statement.name,
                                          statement.if_not_exists,
                                          annotated_inputs, annotated_outputs,
                                          statement.impl_path,
                                          statement.udf_type)
        self._plan = create_udf_opr
Пример #2
0
    def test_column_definition_to_udf_io(self, mock_func, mock):
        mock.return_value.udf_io.return_value = 'udf_io'
        col = MagicMock(spec=ColumnDefinition)
        col.name = 'name'
        col.type = 'type'
        col.dimension = 'dimension'
        col_list = [col, col]
        mock_func.return_value = col.type
        actual = column_definition_to_udf_io(col_list, True)
        for col in col_list:
            mock_func.assert_called_with('type')
            mock.return_value.udf_io.assert_called_with(
                'name', 'type', 'dimension', True)

        self.assertEqual(actual, ['udf_io', 'udf_io'])

        # input not list
        actual2 = column_definition_to_udf_io(col, True)
        mock.return_value.udf_io.assert_called_with('name', 'type',
                                                    'dimension', True)
        self.assertEqual(actual2, ['udf_io'])
Пример #3
0
    def test_column_definition_to_udf_io(self):
        col = ColumnDefinition('data', ColumnType.NDARRAY, NdArrayType.UINT8,
                               [None, None, None])
        col_list = [col, col]
        actual = column_definition_to_udf_io(col_list, True)
        for io in actual:
            self.assertEqual(io.name, 'data')
            self.assertEqual(io.type, ColumnType.NDARRAY)
            self.assertEqual(io.is_nullable, False)
            self.assertEqual(io.array_type, NdArrayType.UINT8)
            self.assertEqual(io.array_dimensions, [None, None, None])
            self.assertEqual(io.is_input, True)
            self.assertEqual(io.udf_id, None)

        # input not list
        actual2 = column_definition_to_udf_io(col, True)
        for io in actual2:
            self.assertEqual(io.name, 'data')
            self.assertEqual(io.type, ColumnType.NDARRAY)
            self.assertEqual(io.is_nullable, False)
            self.assertEqual(io.array_type, NdArrayType.UINT8)
            self.assertEqual(io.array_dimensions, [None, None, None])
            self.assertEqual(io.is_input, True)
            self.assertEqual(io.udf_id, None)