Changeset: d5484d9a10f0 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/d5484d9a10f0
Branch: txtsim
Log Message:

Merge with default.


diffs (truncated from 824 to 300 lines):

diff --git a/.editorconfig b/.editorconfig
--- a/.editorconfig
+++ b/.editorconfig
@@ -23,3 +23,7 @@ charset = utf-8
 indent_style = space
 indent_size = 2
 trim_trailing_whitespace = true
+
+[{clients/{mapilib,odbc},gdk}/**.{c,h}{,.in}]
+tab_width = 8
+max_line_length = 72
diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -2859,7 +2859,8 @@ doFile(Mapi mid, stream *fp, bool useins
                                                }
                                        } else {
                                                setFormatter(line);
-                                               mapi_set_size_header(mid, 
strcmp(line, "raw") == 0);
+                                               if (mode == SQL)
+                                                       
mapi_set_size_header(mid, strcmp(line, "raw") == 0);
                                        }
                                        continue;
                                case 't':
@@ -3543,6 +3544,19 @@ main(int argc, char **argv)
        mapi_setAutocommit(mid, autocommit);
        if (mode == SQL && !settz)
                mapi_set_time_zone(mid, 0);
+       if (output) {
+               setFormatter(output);
+               if (mode == SQL)
+                       mapi_set_size_header(mid, strcmp(output, "raw") == 0);
+               free(output);
+       } else {
+               if (mode == SQL) {
+                       setFormatter("sql");
+                       mapi_set_size_header(mid, false);
+               } else {
+                       setFormatter("raw");
+               }
+       }
 
        if (mapi_error(mid) == MOK)
                mapi_reconnect(mid);    /* actually, initial connect */
@@ -3571,18 +3585,6 @@ main(int argc, char **argv)
                mapi_log(mid, logfile);
 
        mapi_trace(mid, trace);
-       if (output) {
-               setFormatter(output);
-               mapi_set_size_header(mid, strcmp(output, "raw") == 0);
-               free(output);
-       } else {
-               if (mode == SQL) {
-                       setFormatter("sql");
-               } else {
-                       setFormatter("raw");
-                       mapi_set_size_header(mid, true);
-               }
-       }
        /* give the user a welcome message with some general info */
        if (!has_fileargs && command == NULL && isatty(fileno(stdin))) {
                char *lang;
diff --git a/clients/mapilib/.editorconfig b/clients/mapilib/.editorconfig
deleted file mode 100644
--- a/clients/mapilib/.editorconfig
+++ /dev/null
@@ -1,3 +0,0 @@
-[*.{c,h}]
-tab_width = 8
-max_line_length = 72
diff --git a/clients/odbc/.editorconfig b/clients/odbc/.editorconfig
deleted file mode 100644
--- a/clients/odbc/.editorconfig
+++ /dev/null
@@ -1,3 +0,0 @@
-[*.{c,h}]
-tab_width = 8
-max_line_length = 72
diff --git a/gdk/.editorconfig b/gdk/.editorconfig
deleted file mode 100644
--- a/gdk/.editorconfig
+++ /dev/null
@@ -1,3 +0,0 @@
-[*.{c,h}]
-tab_width = 8
-max_line_length = 72
diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -683,7 +683,7 @@ BATappend2(BAT *b, BAT *n, BAT *s, bool 
        ALIGNapp(b, force, GDK_FAIL);
 
        if (ATOMstorage(ATOMtype(b->ttype)) != ATOMstorage(ATOMtype(n->ttype))) 
{
-               GDKerror("Incompatible operands.\n");
+               GDKerror("Incompatible operands ("ALGOBATFMT" vs. 
"ALGOBATFMT").\n", ALGOBATPAR(b), ALGOBATPAR(n));
                return GDK_FAIL;
        }
 
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -1506,6 +1506,8 @@ BBPtrim(bool aggressive)
        if (!aggressive)
                flag |= BBPHOT;
        for (bat bid = 1, nbat = (bat) ATOMIC_GET(&BBPsize); bid < nbat; bid++) 
{
+               /* don't do this during a (sub)commit */
+               MT_lock_set(&GDKtmLock);
                MT_lock_set(&GDKswapLock(bid));
                BAT *b = NULL;
                bool swap = false;
@@ -1531,6 +1533,7 @@ BBPtrim(bool aggressive)
                                GDKerror("unload failed for bat %d", bid);
                        n++;
                }
+               MT_lock_unset(&GDKtmLock);
        }
        TRC_DEBUG(BAT_, "unloaded %d bats%s\n", n, aggressive ? " (also hot)" : 
"");
 }
diff --git a/gdk/gdk_calc_convert.c b/gdk/gdk_calc_convert.c
--- a/gdk/gdk_calc_convert.c
+++ b/gdk/gdk_calc_convert.c
@@ -489,7 +489,7 @@ convert_##TYPE##_msk(const TYPE *src, ui
                     oid candoff, bool *reduce)                         \
 {                                                                      \
        BUN cnt = ci->ncand / 32;                                       \
-       BUN i, j, k;                                                    \
+       BUN i, j;                                                       \
        uint32_t mask;                                                  \
        oid x;                                                          \
        lng timeoffset = 0;                                             \
@@ -499,14 +499,12 @@ convert_##TYPE##_msk(const TYPE *src, ui
        }                                                               \
                                                                        \
        *reduce = true;                                                 \
-       k = 0;                                                          \
        if (ci->tpe == cand_dense) {                                    \
                TIMEOUT_LOOP_IDX(i, cnt, timeoffset) {                  \
                        mask = 0;                                       \
                        for (j = 0; j < 32; j++) {                      \
                                x = canditer_next_dense(ci) - candoff;  \
                                mask |= (uint32_t) (!is_##TYPE##_nil(src[x]) && 
src[x] != 0) << j; \
-                               k++;                                    \
                        }                                               \
                        dst[i] = mask;                                  \
                }                                                       \
@@ -517,7 +515,6 @@ convert_##TYPE##_msk(const TYPE *src, ui
                        for (j = 0; j < cnt; j++) {                     \
                                x = canditer_next_dense(ci) - candoff;  \
                                mask |= (uint32_t) (!is_##TYPE##_nil(src[x]) && 
src[x] != 0) << j; \
-                               k++;                                    \
                        }                                               \
                        dst[i] = mask;                                  \
                }                                                       \
@@ -527,7 +524,6 @@ convert_##TYPE##_msk(const TYPE *src, ui
                        for (j = 0; j < 32; j++) {                      \
                                x = canditer_next(ci) - candoff;        \
                                mask |= (uint32_t) (!is_##TYPE##_nil(src[x]) && 
src[x] != 0) << j; \
-                               k++;                                    \
                        }                                               \
                        dst[i] = mask;                                  \
                }                                                       \
@@ -538,7 +534,6 @@ convert_##TYPE##_msk(const TYPE *src, ui
                        for (j = 0; j < cnt; j++) {                     \
                                x = canditer_next(ci) - candoff;        \
                                mask |= (uint32_t) (!is_##TYPE##_nil(src[x]) && 
src[x] != 0) << j; \
-                               k++;                                    \
                        }                                               \
                        dst[i] = mask;                                  \
                }                                                       \
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -755,8 +755,9 @@ la_bat_destroy(logger *lg, logaction *la
        if (bid < 0)
                return GDK_FAIL;
        if (!bid) {
-               GDKerror("la_bat_destroy failed to find bid for object %d\n", 
la->cid);
-               return GDK_FAIL;
+               GDKerror("la_bat_destroy failed to find bid for object %d 
(issue ignored)\n", la->cid);
+               GDKclrerr();
+               return GDK_SUCCEED;
        }
        if (bid && log_del_bat(lg, bid) != GDK_SUCCEED)
                return GDK_FAIL;
diff --git a/monetdb5/mal/mal_session.c b/monetdb5/mal/mal_session.c
--- a/monetdb5/mal/mal_session.c
+++ b/monetdb5/mal/mal_session.c
@@ -368,7 +368,10 @@ MSscheduleClient(str command, str challe
                        mnstr_printf(c->fdout, "!%s\n", s);
                        mnstr_flush(c->fdout, MNSTR_FLUSH_DATA);
                        GDKfree(s);
+                       exit_streams(fin, fout);
+                       GDKfree(command);
                        MCcloseClient(c);
+                       return;
                }
                if (!GDKgetenv_isyes(mal_enableflag) &&
                                (strncasecmp("sql", lang, 3) != 0 && uid != 0)) 
{
diff --git a/sql/backends/monet5/UDF/capi/Tests/All 
b/sql/backends/monet5/UDF/capi/Tests/All
--- a/sql/backends/monet5/UDF/capi/Tests/All
+++ b/sql/backends/monet5/UDF/capi/Tests/All
@@ -16,5 +16,5 @@ NOT_WIN32?capi13
 NOT_WIN32?capi14
 NOT_WIN32?capi15
 NOT_WIN32?capi16
-#NOT_WIN32?capi17 no oids
+NOT_WIN32?capi17
 NOT_WIN32?capi18
diff --git a/sql/backends/monet5/UDF/capi/Tests/capi17.test 
b/sql/backends/monet5/UDF/capi/Tests/capi17.test
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/UDF/capi/Tests/capi17.test
@@ -0,0 +1,75 @@
+statement ok
+create or replace function my_test(stub string)
+returns string
+language c {
+    result->initialize(result, stub.count);
+    for (int i = 0; i < stub.count; i++) {
+        result->data[i] = malloc(4);
+        result->data[i][0] = 'a';
+        result->data[i][1] = 'b';
+        result->data[i][2] = 'c';
+        result->data[i][3] = '\0';
+    }
+}
+
+query T rowsort
+select my_test('');
+----
+abc
+
+statement ok
+create or replace function my_test(stub int)
+returns string
+language c {
+    result->initialize(result, stub.count);
+    for (int i = 0; i < stub.count; i++) {
+        result->data[i] = malloc(4);
+        result->data[i][0] = 'a';
+        result->data[i][1] = 'b';
+        result->data[i][2] = 'c';
+        result->data[i][3] = '\0';
+    }
+}
+
+query T rowsort
+select my_test(1);
+----
+abc
+
+statement ok
+create or replace aggregate my_test2(stub string)
+returns string
+language c {
+    result->initialize(result, aggr_group.count);
+    for (int i = 0; i < aggr_group.count; i++) {
+        result->data[i] = malloc(4);
+        result->data[i][0] = 'a';
+        result->data[i][1] = 'b';
+        result->data[i][2] = 'c';
+        result->data[i][3] = '\0';
+    }
+}
+
+query T rowsort
+select my_test2('') from sys._tables;
+----
+abc
+
+statement ok
+create or replace aggregate my_test2(stub string)
+returns string
+language c {
+    result->initialize(result, aggr_group.count);
+    for (int i = 0; i < aggr_group.count; i++) {
+        result->data[i] = malloc(4);
+        result->data[i][0] = 'a';
+        result->data[i][1] = 'b';
+        result->data[i][2] = 'c';
+        result->data[i][3] = '\0';
+    }
+};
+
+query T rowsort
+select count(*) > 1 from (select my_test2('') from sys._tables group by id) as 
c
+----
+True
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
@@ -201,28 +201,6 @@ static void wrapped_GDK_free(void* ptr) 
        return;
 }
 
-static void *wrapped_GDK_malloc_nojump(size_t size)
-{
-       if (size == 0)
-               return NULL;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to