Changeset: bd7bcdd865f7 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=bd7bcdd865f7 Modified Files: sql/backends/monet5/UDF/80_udf.sql sql/backends/monet5/UDF/udf.c sql/backends/monet5/UDF/udf.h sql/backends/monet5/UDF/udf.mal Branch: default Log Message:
Merge with Apr2012 branch. diffs (117 lines): diff --git a/sql/backends/monet5/UDF/80_udf.sql b/sql/backends/monet5/UDF/80_udf.sql --- a/sql/backends/monet5/UDF/80_udf.sql +++ b/sql/backends/monet5/UDF/80_udf.sql @@ -17,6 +17,10 @@ Copyright August 2008-2012 MonetDB B.V. All Rights Reserved. */ + +-- add function signatures to SQL catalog + + -- Reverse a string create function reverse(src string) returns string external name udf.reverse; 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 @@ -17,12 +17,14 @@ * All Rights Reserved. */ +/* monetdb_config.h must be the first include in each .c file */ #include "monetdb_config.h" #include "udf.h" /* Reverse a string */ /* actual implementation */ +/* all non-exported functions must be declared static */ static str UDFreverse_(str *ret, str src) { @@ -176,6 +178,7 @@ UDFBATreverse(bat *ret, bat *bid) /* scalar fuse */ +/* using C macro for convenient type-expansion */ #define UDFfuse_scalar_impl(in,uin,out,shift) \ /* fuse two (shift-byte) in values into one (2*shift-byte) out value */ \ /* actual implementation */ \ @@ -247,6 +250,7 @@ UDFBATfuse_(BAT **ret, BAT *bone, BAT *b BATaccessBegin(bone, USE_TAIL, MMAP_SEQUENTIAL); BATaccessBegin(btwo, USE_TAIL, MMAP_SEQUENTIAL); +/* using C macro for convenient type-expansion */ #define UDFBATfuse_TYPE(in,uin,out,shift) \ do { /* type-specific core algorithm */ \ in *one = NULL, *two = 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 @@ -17,11 +17,17 @@ * All Rights Reserved. */ +/* In your own module, replace "UDF" & "udf" by your module's name */ + #ifndef _SQL_UDF_H_ #define _SQL_UDF_H_ #include "sql.h" #include <string.h> +/* This is required as-is (except from renaming "UDF" & "udf" as suggested + * above) for all modules for correctly exporting function on Unix-like and + * Windows systems. */ + #ifdef WIN32 #ifndef LIBUDF #define udf_export extern __declspec(dllimport) @@ -32,9 +38,12 @@ #define udf_export extern #endif +/* export MAL wrapper functions */ + udf_export str UDFreverse(str *ret, str *src); udf_export str UDFBATreverse(int *ret, int *bid); +/* 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) UDFfuse_scalar_decl(bte, sht); diff --git a/sql/backends/monet5/UDF/udf.mal b/sql/backends/monet5/UDF/udf.mal --- a/sql/backends/monet5/UDF/udf.mal +++ b/sql/backends/monet5/UDF/udf.mal @@ -15,6 +15,7 @@ # Copyright August 2008-2012 MonetDB B.V. # All Rights Reserved. +# scalar MAL signatures module udf; command reverse(ra1:str):str @@ -22,6 +23,7 @@ address UDFreverse comment "Reverse a string"; +# BAT MAL signatures module batudf; command reverse(b:bat[:oid,:str]):bat[:oid,:str] @@ -30,6 +32,7 @@ comment "Reverse a BAT of strings"; +# scalar MAL signatures module udf; command fuse(one:bte,two:bte):sht @@ -45,6 +48,7 @@ address UDFfuse_int_lng comment "fuse two (4-byte) int values into one (8-byte) lng value"; +# BAT MAL signatures module batudf; command fuse(one:bat[:oid,:bte],two:bat[:oid,:bte]):bat[:oid,:sht] _______________________________________________ Checkin-list mailing list Checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list