예제 #1
0
    def test_create_uda(self):
        def make_ex(serialize=False):
            if serialize:
                serialize = "\nserialize_fn='Serialize'"
            else:
                serialize = ""
            return (("CREATE AGGREGATE FUNCTION "
                     "bar.`test_name`(string, string)"
                     " returns bigint location '/foo/bar.so'"
                     "\ninit_fn='Init'"
                     "\nupdate_fn='Update'"
                     "\nmerge_fn='Merge'") + serialize +
                    ("\nfinalize_fn='Finalize'"))

        for ser in [True, False]:
            func = api.wrap_uda(
                '/foo/bar.so',
                self.inputs,
                self.output,
                update_fn='Update',
                init_fn='Init',
                merge_fn='Merge',
                finalize_fn='Finalize',
                serialize_fn='Serialize' if ser else None,
            )
            stmt = ddl.CreateUDA(func, name=self.name, database='bar')
            result = stmt.compile()
            expected = make_ex(ser)
            assert result == expected
예제 #2
0
파일: test_udf.py 프로젝트: cloudera/ibis
    def test_create_uda(self):
        def make_ex(serialize=False):
            if serialize:
                serialize = "\nserialize_fn='Serialize'"
            else:
                serialize = ""
            return (
                (
                    "CREATE AGGREGATE FUNCTION "
                    "bar.`test_name`(string, string)"
                    " returns bigint location '/foo/bar.so'"
                    "\ninit_fn='Init'"
                    "\nupdate_fn='Update'"
                    "\nmerge_fn='Merge'"
                )
                + serialize
                + ("\nfinalize_fn='Finalize'")
            )

        for ser in [True, False]:
            func = api.wrap_uda(
                '/foo/bar.so',
                self.inputs,
                self.output,
                update_fn='Update',
                init_fn='Init',
                merge_fn='Merge',
                finalize_fn='Finalize',
                serialize_fn='Serialize' if ser else None,
            )
            stmt = ddl.CreateUDA(func, name=self.name, database='bar')
            result = stmt.compile()
            expected = make_ex(ser)
            assert result == expected
예제 #3
0
파일: test_udf.py 프로젝트: tvial/ibis
 def _wrap_count_uda(self, name=None):
     if name is None:
         name = 'user_count_{0}'.format(util.guid())
     func = api.wrap_uda(self.uda_so, ['int32'],
                         'int64',
                         'CountUpdate',
                         name=name)
     return func
예제 #4
0
파일: test_udf.py 프로젝트: zdog234/ibis
def conforming_wrapper(
    where, inputs, output, prefix, serialize=True, name=None
):
    kwds = {'name': name}
    if serialize:
        kwds['serialize_fn'] = '{0}Serialize'.format(prefix)
    return api.wrap_uda(where, inputs, output, '{0}Update'.format(prefix),
                        init_fn='{0}Init'.format(prefix),
                        merge_fn='{0}Merge'.format(prefix),
                        finalize_fn='{0}Finalize'.format(prefix),
                        **kwds)
예제 #5
0
 def _conforming_wrapper(self, where, inputs, output, prefix,
                         serialize=True, name=None):
     kwds = {
         'name': name
     }
     if serialize:
         kwds['serialize_fn'] = '{0}Serialize'.format(prefix)
     return api.wrap_uda(where, inputs, output, '{0}Update'.format(prefix),
                         init_fn='{0}Init'.format(prefix),
                         merge_fn='{0}Merge'.format(prefix),
                         finalize_fn='{0}Finalize'.format(prefix),
                         **kwds)
예제 #6
0
 def _wrap_count_uda(self, name=None):
     if name is None:
         name = 'user_count_{0}'.format(util.guid())
     func = api.wrap_uda(self.uda_so, ['int32'], 'int64',
                         'CountUpdate', name=name)
     return func
예제 #7
0
def wrapped_count_uda(uda_so):
    name = 'user_count_{0}'.format(util.guid())
    return api.wrap_uda(uda_so, ['int32'], 'int64', 'CountUpdate', name=name)
예제 #8
0
파일: test_udf.py 프로젝트: cloudera/ibis
def wrapped_count_uda(uda_so):
    name = 'user_count_{0}'.format(util.guid())
    return api.wrap_uda(uda_so, ['int32'], 'int64', 'CountUpdate', name=name)