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

monetdbe_append removed constraint of 16 rows


diffs (188 lines):

diff --git a/tools/monetdbe/monetdbe.c b/tools/monetdbe/monetdbe.c
--- a/tools/monetdbe/monetdbe.c
+++ b/tools/monetdbe/monetdbe.c
@@ -1079,107 +1079,101 @@ monetdbe_append(monetdbe_database dbhdl,
                goto cleanup;
        }
 
-       /* small number of rows */
-       if (input[0]->count <= 16) {
-               size_t i, cnt = input[0]->count;
-               node *n;
+       size_t i, cnt = input[0]->count;
+       node *n;
+
+       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;
+               int w = 1;
 
-               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;
-                       int w = 1;
-
-                       if (mtype < 0) {
-                               mdbe->msg = createException(SQL, 
"monetdbe.monetdbe_append", "Cannot find type for column %zu", i);
-                               goto cleanup;
+               if (mtype < 0) {
+                       mdbe->msg = createException(SQL, 
"monetdbe.monetdbe_append", "Cannot find type for column %zu", i);
+                       goto cleanup;
+               }
+               if ((mtype >= TYPE_bit && mtype <= TYPE_lng)) {
+                       w = ATOMsize(mtype);
+                       for (size_t j=0; j<cnt; j++, v+=w){
+                               if (store_funcs.append_col(m->session->tr, c, 
v, mtype) != 0) {
+                                       mdbe->msg = createException(SQL, 
"monetdbe.monetdbe_append", "Cannot append values");
+                                       goto cleanup;
+                               }
                        }
-                       if ((mtype >= TYPE_bit && mtype <= TYPE_lng)) {
-                               w = ATOMsize(mtype);
-                               for (size_t j=0; j<cnt; j++, v+=w){
-                                       if 
(store_funcs.append_col(m->session->tr, c, v, mtype) != 0) {
-                                               mdbe->msg = 
createException(SQL, "monetdbe.monetdbe_append", "Cannot append values");
-                                               goto cleanup;
-                                       }
-                               }
-                       } else if (mtype == TYPE_str) {
-                               char **d = (char**)v;
+               } else if (mtype == TYPE_str) {
+                       char **d = (char**)v;
+
+                       for (size_t j=0; j<cnt; j++){
+                               char *s = d[j];
+                               if (!s)
+                                       s = (char*) nil;
 
-                               for (size_t j=0; j<cnt; j++){
-                                       char *s = d[j];
-                                       if (!s)
-                                               s = (char*) nil;
+                               if (store_funcs.append_col(m->session->tr, c, 
s, mtype) != 0) {
+                                       mdbe->msg = createException(SQL, 
"monetdbe.monetdbe_append", "Cannot append values");
+                                       goto cleanup;
+                               }
+                       }
+               } else if (mtype == TYPE_timestamp) {
+                       monetdbe_data_timestamp* ts = 
(monetdbe_data_timestamp*)v;
 
-                                       if 
(store_funcs.append_col(m->session->tr, c, s, mtype) != 0) {
-                                               mdbe->msg = 
createException(SQL, "monetdbe.monetdbe_append", "Cannot append values");
-                                               goto cleanup;
-                                       }
-                               }
-                       } else if (mtype == TYPE_timestamp) {
-                               monetdbe_data_timestamp* ts = 
(monetdbe_data_timestamp*)v;
-
-                               for (size_t j=0; j<cnt; j++){
-                                       timestamp t = *(timestamp*) nil;
-                                       if(!timestamp_is_null(ts[j]))
-                                               t = timestamp_from_data(&ts[j]);
+                       for (size_t j=0; j<cnt; j++){
+                               timestamp t = *(timestamp*) nil;
+                               if(!timestamp_is_null(ts[j]))
+                                       t = timestamp_from_data(&ts[j]);
 
-                                       if 
(store_funcs.append_col(m->session->tr, c, &t, mtype) != 0) {
-                                               mdbe->msg = 
createException(SQL, "monetdbe.monetdbe_append", "Cannot append values");
-                                               goto cleanup;
-                                       }
+                               if (store_funcs.append_col(m->session->tr, c, 
&t, mtype) != 0) {
+                                       mdbe->msg = createException(SQL, 
"monetdbe.monetdbe_append", "Cannot append values");
+                                       goto cleanup;
                                }
-                       } else if (mtype == TYPE_date) {
-                               monetdbe_data_date* de = (monetdbe_data_date*)v;
+                       }
+               } else if (mtype == TYPE_date) {
+                       monetdbe_data_date* de = (monetdbe_data_date*)v;
 
-                               for (size_t j=0; j<cnt; j++){
-                                       date d = *(date*) nil;
-                                       if(!date_is_null(de[j]))
-                                               d = date_from_data(&de[j]);
+                       for (size_t j=0; j<cnt; j++){
+                               date d = *(date*) nil;
+                               if(!date_is_null(de[j]))
+                                       d = date_from_data(&de[j]);
 
-                                       if 
(store_funcs.append_col(m->session->tr, c, &d, mtype) != 0) {
-                                               mdbe->msg = 
createException(SQL, "monetdbe.monetdbe_append", "Cannot append values");
-                                               goto cleanup;
-                                       }
+                               if (store_funcs.append_col(m->session->tr, c, 
&d, mtype) != 0) {
+                                       mdbe->msg = createException(SQL, 
"monetdbe.monetdbe_append", "Cannot append values");
+                                       goto cleanup;
                                }
-                       } else if (mtype == TYPE_daytime) {
-                               monetdbe_data_time* t = (monetdbe_data_time*)v;
+                       }
+               } else if (mtype == TYPE_daytime) {
+                       monetdbe_data_time* t = (monetdbe_data_time*)v;
 
-                               for (size_t j=0; j<cnt; j++){
-                                       daytime dt = *(daytime*) nil;
-                                       if(!time_is_null(t[j]))
-                                               dt = time_from_data(&t[j]);
+                       for (size_t j=0; j<cnt; j++){
+                               daytime dt = *(daytime*) nil;
+                               if(!time_is_null(t[j]))
+                                       dt = time_from_data(&t[j]);
 
-                                       if 
(store_funcs.append_col(m->session->tr, c, &dt, mtype) != 0) {
-                                               mdbe->msg = 
createException(SQL, "monetdbe.monetdbe_append", "Cannot append values");
-                                               goto cleanup;
-                                       }
+                               if (store_funcs.append_col(m->session->tr, c, 
&dt, mtype) != 0) {
+                                       mdbe->msg = createException(SQL, 
"monetdbe.monetdbe_append", "Cannot append values");
+                                       goto cleanup;
                                }
-                       } else if (mtype == TYPE_blob) {
-                               monetdbe_data_blob* be = (monetdbe_data_blob*)v;
+                       }
+               } else if (mtype == TYPE_blob) {
+                       monetdbe_data_blob* be = (monetdbe_data_blob*)v;
 
-                               for (size_t j=0; j<cnt; j++){
-                                       blob* b = (blob*) nil;
-                                       if (!blob_is_null(be[j])) {
-                                               size_t len = be[j].size;
-                                               b = (blob*) 
GDKmalloc(blobsize(len));
-                                               if (b == NULL)
-                                                       mdbe->msg = 
createException(MAL, "monetdbe.monetdbe_append", MAL_MALLOC_FAIL);
+                       for (size_t j=0; j<cnt; j++){
+                               blob* b = (blob*) nil;
+                               if (!blob_is_null(be[j])) {
+                                       size_t len = be[j].size;
+                                       b = (blob*) GDKmalloc(blobsize(len));
+                                       if (b == NULL)
+                                               mdbe->msg = 
createException(MAL, "monetdbe.monetdbe_append", MAL_MALLOC_FAIL);
 
-                                               b->nitems = len;
-                                               memcpy(b->data, be[j].data, 
len);
-                                       }
+                                       b->nitems = len;
+                                       memcpy(b->data, be[j].data, len);
+                               }
 
-                                       if 
(store_funcs.append_col(m->session->tr, c, b, mtype) != 0) {
-                                               mdbe->msg = 
createException(SQL, "monetdbe.monetdbe_append", "Cannot append values");
-                                               goto cleanup;
-                                       }
+                               if (store_funcs.append_col(m->session->tr, c, 
b, mtype) != 0) {
+                                       mdbe->msg = createException(SQL, 
"monetdbe.monetdbe_append", "Cannot append values");
+                                       goto cleanup;
                                }
                        }
                }
-       } else {
-               mdbe->msg = createException(SQL, "monetdbe.monetdbe_append", 
"TODO bulk insert");
-               goto cleanup;
        }
 cleanup:
        mdbe->msg = commit_action(m, mdbe, NULL, NULL);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to