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
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list