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
def test_create_uda(name, inputs, output, ser): def make_ex(serialize=False): lines = [ f"CREATE AGGREGATE FUNCTION bar.`{name}`(string, string) returns bigint location '/foo/bar.so'", # noqa: E501 "init_fn='Init'", "update_fn='Update'", "merge_fn='Merge'", ] if serialize: lines.append("serialize_fn='Serialize'") lines.append("finalize_fn='Finalize'") return "\n".join(lines) func = api.wrap_uda( '/foo/bar.so', inputs, 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=name, database='bar') result = stmt.compile() expected = make_ex(ser) assert result == expected
def conforming_wrapper( where, inputs, output, prefix, serialize=True, name=None ): kwds = {'name': name} if serialize: kwds['serialize_fn'] = f'{prefix}Serialize' return api.wrap_uda( where, inputs, output, f'{prefix}Update', init_fn=f'{prefix}Init', merge_fn=f'{prefix}Merge', finalize_fn=f'{prefix}Finalize', **kwds, )
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, )
def wrapped_count_uda(uda_so): name = f'user_count_{util.guid()}' return api.wrap_uda(uda_so, ['int32'], 'int64', 'CountUpdate', name=name)
def wrapped_count_uda(uda_so): name = 'user_count_{0}'.format(util.guid()) return api.wrap_uda(uda_so, ['int32'], 'int64', 'CountUpdate', name=name)