Changeset: 6822b8d5a1e2 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6822b8d5a1e2
Modified Files:
        sql/backends/monet5/UDF/capi/capi.c
Branch: jitudf
Log Message:

Use NULL instead of str_nil for string NULL values.


diffs (82 lines):

diff --git a/sql/backends/monet5/UDF/capi/capi.c 
b/sql/backends/monet5/UDF/capi/capi.c
--- a/sql/backends/monet5/UDF/capi/capi.c
+++ b/sql/backends/monet5/UDF/capi/capi.c
@@ -292,6 +292,8 @@ GENERATE_BASE_HEADERS(cudf_data_blob, bl
                goto wrapup;                                                    
       \
        }                                                                       
   \
        outputs[index] = bat_data;                                              
   \
+       bat_data->count = 0;                                                    
   \
+       bat_data->data = NULL;                                                  
   \
        bat_data->is_null = tpe##_is_null;                                      
   \
        bat_data->scale = argnode ? pow(10, ((sql_arg 
*)argnode->data)->type.scale) : 1;    \
        bat_data->initialize = (void (*)(void *, size_t))tpe##_initialize;
@@ -299,8 +301,6 @@ GENERATE_BASE_HEADERS(cudf_data_blob, bl
 #define GENERATE_BAT_OUTPUT(tpe)                                               
\
        {                                                                       
   \
                GENERATE_BAT_OUTPUT_BASE(tpe);                                  
       \
-               bat_data->count = 0;                                            
       \
-               bat_data->data = NULL;                                          
       \
                bat_data->null_value = (tpe)tpe##_nil;                          
       \
        }
 
@@ -910,6 +910,7 @@ static str CUDFeval(Client cntxt, MalBlk
                                GENERATE_BAT_INPUT_BASE(input_bats[index], str);
                                bat_data->count = BATcount(input_bats[index]);
                                bat_data->data = GDKmalloc(sizeof(char *) * 
bat_data->count);
+                               bat_data->null_value = NULL;
                                if (!bat_data->data) {
                                        msg = createException(MAL, "cudf.eval", 
MAL_MALLOC_FAIL);
                                        goto wrapup;
@@ -920,7 +921,11 @@ static str CUDFeval(Client cntxt, MalBlk
                                BATloop(input_bats[index], p, q)
                                {
                                        char *t = (char *)BUNtail(li, p);
-                                       bat_data->data[j] = t;
+                                       if (strcmp(t, str_nil) == 0) {
+                                               bat_data->data[j] = NULL;
+                                       } else {
+                                               bat_data->data[j] = t;  
+                                       }
                                        j++;
                                }
                                // for string columns, mprotect the varheap of 
the BAT
@@ -1078,7 +1083,8 @@ static str CUDFeval(Client cntxt, MalBlk
                } else if (bat_type == TYPE_dbl) {
                        GENERATE_BAT_OUTPUT(dbl);
                } else if (bat_type == TYPE_str) {
-                       GENERATE_BAT_OUTPUT(str);
+                       GENERATE_BAT_OUTPUT_BASE(str);
+                       bat_data->null_value = NULL;
                } else if (bat_type == TYPE_date) {
                        GENERATE_BAT_OUTPUT_BASE(date);
                        data_from_date(date_nil, &bat_data->null_value);
@@ -1094,7 +1100,8 @@ static str CUDFeval(Client cntxt, MalBlk
                        bat_data->null_value.data = NULL;
                } else {
                        // unsupported type, convert from string output
-                       GENERATE_BAT_OUTPUT(str);
+                       GENERATE_BAT_OUTPUT_BASE(str);
+                       bat_data->null_value = NULL;
                }
                argnode = argnode ? argnode->next : NULL;
        }
@@ -1254,7 +1261,7 @@ static str CUDFeval(Client cntxt, MalBlk
                                if (!ptr) {
                                        ptr = str_nil;
                                }
-                               if (BUNappend(b, source_base[j], FALSE) != 
GDK_SUCCEED) {
+                               if (BUNappend(b, ptr, FALSE) != GDK_SUCCEED) {
                                        msg = createException(MAL, "cudf.eval", 
MAL_MALLOC_FAIL);
                                        goto wrapup;
                                }
@@ -1664,7 +1671,9 @@ int timestamp_is_null(cudf_data_timestam
        return ts_isnil(timestamp_from_data(&value));
 }
 
-int str_is_null(char *value) { return strcmp(value, str_nil) == 0; }
+int str_is_null(char *value) {
+       return value == NULL;
+}
 
 int blob_is_null(cudf_data_blob value) {
        return value.data == NULL;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to