Changeset: 3a6043886300 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3a6043886300 Modified Files: sql/backends/monet5/UDF/README sql/backends/monet5/UDF/udf.c sql/backends/monet5/UDF/udf.h sql/backends/monet5/UDF/udf_impl.h Branch: default Log Message:
Merge with Feb2013 branch. diffs (213 lines): diff --git a/sql/backends/monet5/UDF/README b/sql/backends/monet5/UDF/README --- a/sql/backends/monet5/UDF/README +++ b/sql/backends/monet5/UDF/README @@ -1,3 +1,3 @@ This directory is a template for extending SQL with a new scalar type. For further documentation, see the MonetDB website at -http://www.monetdb.org/Documentation/Cookbooks/SQLrecipies/UserDefinedFunction +http://www.monetdb.org/Documentation/Cookbooks/SQLrecipes/UserDefinedFunction diff --git a/sql/backends/monet5/UDF/udf.c b/sql/backends/monet5/UDF/udf.c --- a/sql/backends/monet5/UDF/udf.c +++ b/sql/backends/monet5/UDF/udf.c @@ -25,11 +25,11 @@ /* actual implementation */ /* all non-exported functions must be declared static */ -static str -UDFreverse_(str *ret, str src) +static char * +UDFreverse_(char **ret, const char *src) { size_t len = 0; - str dst = NULL; + char *dst = NULL; /* assert calling sanity */ assert(ret != NULL); @@ -60,8 +60,8 @@ UDFreverse_(str *ret, str src) } /* MAL wrapper */ -str -UDFreverse(str *ret, str *arg) +char * +UDFreverse(char **ret, const char **arg) { /* assert calling sanity */ assert(ret != NULL && arg != NULL); @@ -77,8 +77,8 @@ UDFreverse(str *ret, str *arg) */ /* actual implementation */ -static str -UDFBATreverse_(BAT **ret, BAT *left) +static char * +UDFBATreverse_(BAT **ret, BAT *src) { BATiter li; BAT *bn = NULL; @@ -88,32 +88,32 @@ UDFBATreverse_(BAT **ret, BAT *left) assert(ret != NULL); /* handle NULL pointer */ - if (left == NULL) + if (src == NULL) throw(MAL, "batudf.reverse", RUNTIME_OBJECT_MISSING); /* check tail type */ - if (left->ttype != TYPE_str) { + if (src->ttype != TYPE_str) { throw(MAL, "batudf.reverse", "tail-type of input BAT must be TYPE_str"); } /* allocate result BAT */ - bn = BATnew(left->htype, TYPE_str, BATcount(left)); + bn = BATnew(src->htype, TYPE_str, BATcount(src)); if (bn == NULL) { throw(MAL, "batudf.reverse", MAL_MALLOC_FAIL); } - BATseqbase(bn, left->hseqbase); + BATseqbase(bn, src->hseqbase); /* create BAT iterator */ - li = bat_iterator(left); + li = bat_iterator(src); /* the core of the algorithm, expensive due to malloc/frees */ - BATloop(left, p, q) { - str tr = NULL, err = NULL; + BATloop(src, p, q) { + char *tr = NULL, *err = NULL; /* get original head & tail value */ ptr h = BUNhead(li, p); - str t = (str) BUNtail(li, p); + const char *t = (const char *) BUNtail(li, p); /* revert tail value */ err = UDFreverse_(&tr, t); @@ -140,24 +140,24 @@ UDFBATreverse_(BAT **ret, BAT *left) } /* MAL wrapper */ -str -UDFBATreverse(bat *ret, bat *bid) +char * +UDFBATreverse(bat *ret, const bat *arg) { - BAT *res = NULL, *left = NULL; - str msg = NULL; + BAT *res = NULL, *src = NULL; + char *msg = NULL; /* assert calling sanity */ - assert(ret != NULL && bid != NULL); + assert(ret != NULL && arg != NULL); /* bat-id -> BAT-descriptor */ - if ((left = BATdescriptor(*bid)) == NULL) + if ((src = BATdescriptor(*arg)) == NULL) throw(MAL, "batudf.reverse", RUNTIME_OBJECT_MISSING); /* do the work */ - msg = UDFBATreverse_ ( &res, left ); + msg = UDFBATreverse_ ( &res, src ); /* release input BAT-descriptor */ - BBPreleaseref(left->batCacheid); + BBPreleaseref(src->batCacheid); if (msg == MAL_SUCCEED) { /* register result BAT in buffer pool */ @@ -200,14 +200,14 @@ UDFBATreverse(bat *ret, bat *bid) /* BAT fuse */ /* actual implementation */ -static str -UDFBATfuse_(BAT **ret, BAT *bone, BAT *btwo) +static char * +UDFBATfuse_(BAT **ret, const BAT *bone, const BAT *btwo) { BAT *bres = NULL; bit two_tail_sorted_unsigned = FALSE; bit two_tail_revsorted_unsigned = FALSE; BUN n; - str msg = NULL; + char *msg = NULL; /* assert calling sanity */ assert(ret != NULL); @@ -309,11 +309,11 @@ UDFBATfuse_(BAT **ret, BAT *bone, BAT *b } /* MAL wrapper */ -str -UDFBATfuse(bat *ires, bat *ione, bat *itwo) +char * +UDFBATfuse(bat *ires, const bat *ione, const bat *itwo) { BAT *bres = NULL, *bone = NULL, *btwo = NULL; - str msg = NULL; + char *msg = NULL; /* assert calling sanity */ assert(ires != NULL && ione != NULL && itwo != NULL); diff --git a/sql/backends/monet5/UDF/udf.h b/sql/backends/monet5/UDF/udf.h --- a/sql/backends/monet5/UDF/udf.h +++ b/sql/backends/monet5/UDF/udf.h @@ -40,16 +40,16 @@ /* export MAL wrapper functions */ -udf_export str UDFreverse(str *ret, str *src); -udf_export str UDFBATreverse(int *ret, int *bid); +udf_export char * UDFreverse(char **ret, const char **arg); +udf_export char * UDFBATreverse(bat *ret, const bat *arg); /* using C macro for convenient type-expansion */ #define UDFfuse_scalar_decl(in,out) \ - udf_export str UDFfuse_##in##_##out(out *ret, in *one, in *two) + udf_export char * UDFfuse_##in##_##out(out *ret, const in *one, const in *two) UDFfuse_scalar_decl(bte, sht); UDFfuse_scalar_decl(sht, int); UDFfuse_scalar_decl(int, lng); -udf_export str UDFBATfuse(bat *ret, bat *one, bat *two); +udf_export char * UDFBATfuse(bat *ret, const bat *one, const bat *two); #endif /* _SQL_UDF_H_ */ diff --git a/sql/backends/monet5/UDF/udf_impl.h b/sql/backends/monet5/UDF/udf_impl.h --- a/sql/backends/monet5/UDF/udf_impl.h +++ b/sql/backends/monet5/UDF/udf_impl.h @@ -38,7 +38,7 @@ /* fuse two (shift-byte) in values into one (2*shift-byte) out value */ /* actual implementation */ -static str +static char * UF(UDFfuse_,UI,UO,_) ( UO *ret , UI one , UI two ) { int shift = sizeof(UI) * 8; @@ -56,8 +56,8 @@ UF(UDFfuse_,UI,UO,_) ( UO *ret , UI one return MAL_SUCCEED; } /* MAL wrapper */ -str -UF(UDFfuse_,UI,UO,) ( UO *ret , UI *one , UI *two ) +char * +UF(UDFfuse_,UI,UO,) ( UO *ret , const UI *one , const UI *two ) { /* assert calling sanity */ assert(ret != NULL && one != NULL && two != NULL); @@ -72,8 +72,8 @@ UF(UDFfuse_,UI,UO,) ( UO *ret , UI *one */ /* type-specific core algorithm */ -static str -UF(UDFBATfuse_,UI,UO,) ( BAT *bres, BAT *bone, BAT *btwo, BUN n, +static char * +UF(UDFBATfuse_,UI,UO,) ( const BAT *bres, const BAT *bone, const BAT *btwo, BUN n, bit *two_tail_sorted_unsigned, bit *two_tail_revsorted_unsigned ) { _______________________________________________ checkin-list mailing list [email protected] http://mail.monetdb.org/mailman/listinfo/checkin-list
