Changeset: 0f9aa618e0e1 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0f9aa618e0e1
Modified Files:
        tools/monetdbe/monetdbe.c
Branch: default
Log Message:

fixed monetdbe_append


diffs (71 lines):

diff --git a/tools/monetdbe/monetdbe.c b/tools/monetdbe/monetdbe.c
--- a/tools/monetdbe/monetdbe.c
+++ b/tools/monetdbe/monetdbe.c
@@ -1855,6 +1855,7 @@ monetdbe_append(monetdbe_database dbhdl,
        size_t i, cnt;
        node *n;
        Symbol remote_prg = NULL;
+       size_t pos = 0;
 
        if ((mdbe->msg = validate_database_handle(mdbe, 
"monetdbe.monetdbe_append")) != MAL_SUCCEED) {
                return mdbe->msg;
@@ -1942,13 +1943,13 @@ remote_cleanup:
        }
 
        cnt = input[0]->count;
+       pos = store->storage_api.claim_tab(m->session->tr, t, cnt);
 
        for (i = 0, n = t->columns.set->h; i < column_count && n; i++, n = 
n->next) {
                sql_column *c = n->data;
                int mtype = monetdbe_type(input[i]->type);
                const void* nil = (mtype>=0)?ATOMnilptr(mtype):NULL;
                char *v = input[i]->data;
-               size_t pos = store->storage_api.claim_tab(m->session->tr, t, 
cnt);
 
                if (mtype < 0) {
                        mdbe->msg = createException(SQL, 
"monetdbe.monetdbe_append", "Cannot find type for column %zu", i);
@@ -2010,7 +2011,7 @@ remote_cleanup:
                                if (!s)
                                        s = (char*) nil;
 
-                               if 
(store->storage_api.append_col(m->session->tr, c, pos, s, mtype) != 0) {
+                               if 
(store->storage_api.append_col(m->session->tr, c, pos+j, s, mtype) != 0) {
                                        mdbe->msg = createException(SQL, 
"monetdbe.monetdbe_append", "Cannot append values");
                                        goto cleanup;
                                }
@@ -2023,7 +2024,7 @@ remote_cleanup:
                                if(!timestamp_is_null(ts+j))
                                        t = timestamp_from_data(&ts[j]);
 
-                               if 
(store->storage_api.append_col(m->session->tr, c, pos, &t, mtype) != 0) {
+                               if 
(store->storage_api.append_col(m->session->tr, c, pos+j, &t, mtype) != 0) {
                                        mdbe->msg = createException(SQL, 
"monetdbe.monetdbe_append", "Cannot append values");
                                        goto cleanup;
                                }
@@ -2036,7 +2037,7 @@ remote_cleanup:
                                if(!date_is_null(de+j))
                                        d = date_from_data(&de[j]);
 
-                               if 
(store->storage_api.append_col(m->session->tr, c, pos, &d, mtype) != 0) {
+                               if 
(store->storage_api.append_col(m->session->tr, c, pos+j, &d, mtype) != 0) {
                                        mdbe->msg = createException(SQL, 
"monetdbe.monetdbe_append", "Cannot append values");
                                        goto cleanup;
                                }
@@ -2049,7 +2050,7 @@ remote_cleanup:
                                if(!time_is_null(t+j))
                                        dt = time_from_data(&t[j]);
 
-                               if 
(store->storage_api.append_col(m->session->tr, c, pos, &dt, mtype) != 0) {
+                               if 
(store->storage_api.append_col(m->session->tr, c, pos+j, &dt, mtype) != 0) {
                                        mdbe->msg = createException(SQL, 
"monetdbe.monetdbe_append", "Cannot append values");
                                        goto cleanup;
                                }
@@ -2070,7 +2071,7 @@ remote_cleanup:
                                        memcpy(b->data, be[j].data, len);
                                }
 
-                               res = 
store->storage_api.append_col(m->session->tr, c, pos, b, mtype);
+                               res = 
store->storage_api.append_col(m->session->tr, c, pos+j, b, mtype);
                                if (b && b != (blob*)nil)
                                        GDKfree(b);
                                if (res != 0) {
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to