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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list