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(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 _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
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 _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)
def wrapped_count_uda(uda_so): name = 'user_count_{0}'.format(util.guid()) return api.wrap_uda(uda_so, ['int32'], 'int64', 'CountUpdate', name=name)