Changeset: 6144f788ab60 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6144f788ab60
Modified Files:
        monetdb5/modules/weldudfs/weld_udfs.c
        sql/backends/monet5/rel_weld.c
Branch: rel-weld
Log Message:

weld date_extract_year udf


diffs (52 lines):

diff --git a/monetdb5/modules/weldudfs/weld_udfs.c 
b/monetdb5/modules/weldudfs/weld_udfs.c
--- a/monetdb5/modules/weldudfs/weld_udfs.c
+++ b/monetdb5/modules/weldudfs/weld_udfs.c
@@ -9,6 +9,7 @@
 #include "monetdb_config.h"
 #include "gdk.h"
 #include "mal.h"
+#include "mtime.h"
 #include "pcre_pub.h"
 
 typedef struct {
@@ -20,6 +21,7 @@ MT_Lock initLock MT_LOCK_INITIALIZER("ud
 
 mal_export void state_init(i8vec *op, int64_t *state_ptr);
 mal_export void like(int64_t *state_ptr, i8vec *col, i8vec *pattern, i8vec 
*exc, int8_t *result);
+mal_export void year(int32_t *col, int32_t *result);
 
 void state_init(i8vec *op, int64_t *state_ptr) {
        (void)op;
@@ -43,3 +45,7 @@ void like(int64_t *state_ptr, i8vec *col
        }
        *result = (int8_t)re_match_no_ignore(col->data, re);
 }
+
+void year(int32_t *col, int32_t *result) {
+       (void)MTIMEdate_extract_year(result, col);
+}
diff --git a/sql/backends/monet5/rel_weld.c b/sql/backends/monet5/rel_weld.c
--- a/sql/backends/monet5/rel_weld.c
+++ b/sql/backends/monet5/rel_weld.c
@@ -149,6 +149,8 @@ get_weld_func(sql_subfunc *f) {
                return "/";
        else if (strcmp(name, "like") == 0)
                return "like";
+       else if (strcmp(name, "year") == 0)
+               return "year";
        return NULL;
 }
 
@@ -344,7 +346,11 @@ exp_to_weld(backend *be, weld_state *wst
                        if (right_type < left_type)
                                wprintf(wstate, ")");
                } else {
-                       wprintf(wstate, "%s(", weld_func);
+                       if (strcmp(weld_func, "year") == 0) {
+                               wprintf(wstate, "cudf[%s, i32](", weld_func);
+                       } else {
+                               wprintf(wstate, "%s(", weld_func);
+                       }
                        exps_to_weld(be, wstate, exp->l, ", ");
                        wprintf(wstate, ")");
                }
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to