Changeset: 209f5381b23e for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=209f5381b23e
Modified Files:
        sql/backends/monet5/sql_result.c
Branch: protocol
Log Message:

Deal with NULL blobs correctly.


diffs (32 lines):

diff --git a/sql/backends/monet5/sql_result.c b/sql/backends/monet5/sql_result.c
--- a/sql/backends/monet5/sql_result.c
+++ b/sql/backends/monet5/sql_result.c
@@ -2059,7 +2059,7 @@ int mvc_export_resultset_prot10(mvc *m, 
                                        if (convert_to_string || 
ATOMvarsized(mtype)) {
                                                if (c->type.type->eclass == 
EC_BLOB) {
                                                        blob *b = (blob*) 
BUNtail(iterators[i], row);
-                                                       rowsize += sizeof(lng) 
+ b->nitems;
+                                                       rowsize += sizeof(lng) 
+ b->nitems == ~(size_t) 0 ? 0 : b->nitems;
                                                } else {
                                                        size_t slen = 
strlen((const char*) BUNtail(iterators[i], row));
                                                        rowsize += slen + 1;
@@ -2143,10 +2143,15 @@ int mvc_export_resultset_prot10(mvc *m, 
                                        buf += sizeof(lng);
                                        for (crow = srow; crow < row; crow++) {
                                                blob *b = (blob*) 
BUNtail(iterators[i], crow);
-                                               (*(lng*)buf) = b->nitems == 
~(size_t) 0 ? -1 : (lng) b->nitems;
-                                               buf += sizeof(lng);
-                                               memcpy(buf, b->data, b->nitems);
-                                               buf += b->nitems;
+                                               if (b->nitems == ~(size_t) 0) {
+                                                       (*(lng*)buf) = -1;
+                                                       buf += sizeof(lng);
+                                               } else {
+                                                       (*(lng*)buf) = (lng) 
b->nitems;
+                                                       buf += sizeof(lng);
+                                                       memcpy(buf, b->data, 
b->nitems);
+                                                       buf += b->nitems;
+                                               }
                                        }
                                        // after the loop we know the size of 
the column, so write it
                                        *((lng*)startbuf) = buf - (startbuf + 
sizeof(lng));
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to