Changeset: 07e0a354a573 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=07e0a354a573
Added Files:
        sql/test/BugTracker-2019/Tests/select-char.Bug-6761.sql
Modified Files:
        MonetDB.spec
        clients/mapiclient/stethoscope.c
        configure.ag
        monetdb5/mal/mal_dataflow.c
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_result.c
        sql/backends/monet5/sql_result.h
        sql/server/sql_mvc.c
        sql/server/sql_parser.y
        sql/storage/bat/res_table.c
        sql/storage/sql_storage.h
        sql/storage/store.c
        
sql/test/BugTracker-2009/Tests/insert_into_done_by_procedure.SF-2607293.sql
        sql/test/BugTracker-2019/Tests/All
        sql/test/analytics/Tests/analytics09.stable.err
        sql/test/analytics/Tests/analytics09.stable.out
Branch: default
Log Message:

Merge with Nov2019 branch.


diffs (truncated from 1174 to 300 lines):

diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -84,9 +84,9 @@
 %bcond_without rintegration
 %endif
 
-# On Fedora and RHEL 7, create the MonetDB-python2 package.
+# On Fedora <= 30 and RHEL 7, create the MonetDB-python2 package.
 # On RHEL 6, numpy is too old.
-%if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} >= 7
+%if 0%{?rhel} == 7 || %{!?fedora:1000}%{?fedora} <= 30
 %bcond_without py2integration
 %endif
 %if %{?rhel:0}%{!?rhel:1}
@@ -164,12 +164,7 @@ BuildRequires: python-devel
 # RedHat Enterprise Linux calls it simply numpy
 BuildRequires: numpy
 %else
-%if (0%{?fedora} >= 24)
 BuildRequires: python2-numpy
-%else
-# Fedora <= 23 doesn't have python2-numpy
-BuildRequires: numpy
-%endif
 %endif
 %endif
 %if %{with py3integration}
@@ -1053,7 +1048,12 @@ do
   install -p -m 644 buildtools/selinux/monetdb.pp.${selinuxvariant} \
     %{buildroot}%{_datadir}/selinux/${selinuxvariant}/monetdb.pp
 done
-/usr/sbin/hardlink -cv %{buildroot}%{_datadir}/selinux
+if [ -x /usr/sbin/hardlink ]; then
+    /usr/sbin/hardlink -cv %{buildroot}%{_datadir}/selinux
+else
+    # Fedora 31
+    /usr/bin/hardlink -cv %{buildroot}%{_datadir}/selinux
+fi
 %endif
 
 %post -p /sbin/ldconfig
diff --git a/clients/mapiclient/stethoscope.c b/clients/mapiclient/stethoscope.c
--- a/clients/mapiclient/stethoscope.c
+++ b/clients/mapiclient/stethoscope.c
@@ -110,7 +110,7 @@ renderEvent(EventRecord *ev){
                return;
        fprintf(s, "[ ");
        fprintf(s, "%"PRId64",  ", ev->eventnr);
-       printf("\"%s\", ", ev->time);
+       fprintf(s, "\"%s\",     ", ev->time);
        if( ev->function && *ev->function)
                fprintf(s, "\"%s[%d]%d\",       ", ev->function, ev->pc, 
ev->tag);
        else
diff --git a/configure.ag b/configure.ag
--- a/configure.ag
+++ b/configure.ag
@@ -1013,7 +1013,7 @@ AC_PROG_LN_S
 AC_CHECK_PROGS([DIFF], [gdiff diff])
 AC_DEFINE_UNQUOTED([DIFF], ["$DIFF"], [Program to perform diffs])
 
-AC_CHECK_PROGS([RPMBUILD], [rpmbuild])
+AC_CHECK_PROG([RPMBUILD], [rpmbuild], [rpmbuild], [false])
 
 # This is how we use the various Python-related configuration variables.
 # PYTHON - the Python interpreter we use for testing.  This can either
@@ -2268,7 +2268,6 @@ AC_CHECK_HEADERS([ \
        sys/param.h \
        sys/resource.h \
        sys/socket.h \
-       sys/sysctl.h \
        sys/time.h \
        sys/times.h \
        sys/types.h \
@@ -2283,12 +2282,14 @@ AC_CHECK_HEADERS([ \
        ])
 
 # on OpenBSD, sys/sysctl.h requires sys/param.h to be included beforehand
-AC_CHECK_HEADERS([sys/sysctl.h], [], [],
-[
-  @%:@ifdef HAVE_SYS_PARAM_H
-  @%:@ include <sys/param.h>
-  @%:@endif
-])
+AS_CASE([$host_os],
+       [linux*], [],
+       [AC_CHECK_HEADERS([sys/sysctl.h], [], [],
+               [
+                 @%:@ifdef HAVE_SYS_PARAM_H
+                 @%:@ include <sys/param.h>
+                 @%:@endif
+               ])])
 
 
 SOCKET_LIBS=""
diff --git a/monetdb5/mal/mal_dataflow.c b/monetdb5/mal/mal_dataflow.c
--- a/monetdb5/mal/mal_dataflow.c
+++ b/monetdb5/mal/mal_dataflow.c
@@ -234,26 +234,30 @@ q_dequeue(Queue *q, Client cntxt)
 
                for (i = q->last - 1; i >= 0; i--) {
                        if (q->data[i]->flow->cntxt == cntxt) {
-                               if(minpc < 0){
+                               if (q->last > 1024) {
+                                       /* for long "queues", just grab the 
first eligible
+                                        * entry we encounter */
+                                       minpc = i;
+                                       break;
+                               }
+                               /* for shorter "queues", find the oldest 
eligible entry */
+                               if (minpc < 0) {
                                        minpc = i;
                                        s = q->data[i];
                                }
                                r = q->data[i];
-                               if( s && r && s->pc > r->pc){
+                               if (s && r && s->pc > r->pc) {
                                        minpc = i;
                                        s = r;
                                }
                        }
                }
-               if( minpc >= 0){
+               if (minpc >= 0) {
                        r = q->data[minpc];
                        i = minpc;
                        q->last--;
-                       while (i < q->last) {
-                               q->data[i] = q->data[i + 1];
-                               i++;
-                       }
-               } else r = NULL;
+                       memmove(q->data + i, q->data + i + 1, (q->last - i) * 
sizeof(q->data[0]));
+               }
 
                MT_lock_unset(&q->l);
                return r;
diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -5684,7 +5684,7 @@ rel_bin(backend *be, sql_rel *rel)
 {
        mvc *sql = be->mvc;
        list *refs = sa_list(sql->sa);
-       int sqltype = sql->type;
+       sql_query_t sqltype = sql->type;
        stmt *s = subrel_bin(be, rel, refs);
 
        if (sqltype == Q_SCHEMA)
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -2249,7 +2249,7 @@ mvc_result_set_wrap( Client cntxt, MalBl
        b = BATdescriptor(bid);
        if ( b == NULL)
                throw(MAL,"sql.resultset", SQLSTATE(HY005) "Cannot access 
column descriptor");
-       res = *res_id = mvc_result_table(m, mb->tag, pci->argc - (pci->retc + 
5), 1, b);
+       res = *res_id = mvc_result_table(m, mb->tag, pci->argc - (pci->retc + 
5), Q_TABLE, b);
        if (res < 0)
                msg = createException(SQL, "sql.resultSet", SQLSTATE(45000) 
"Result table construction failed");
        BBPunfix(b->batCacheid);
@@ -2340,7 +2340,7 @@ mvc_export_table_wrap( Client cntxt, Mal
        order = BATdescriptor(bid);
        if ( order == NULL)
                throw(MAL,"sql.resultset", SQLSTATE(HY005) "Cannot access 
column descriptor");
-       res = *res_id = mvc_result_table(m, mb->tag, pci->argc - (pci->retc + 
12), 1, order);
+       res = *res_id = mvc_result_table(m, mb->tag, pci->argc - (pci->retc + 
12), Q_TABLE, order);
        t = m->results;
        if (res < 0){
                msg = createException(SQL, "sql.resultSet", SQLSTATE(45000) 
"Result set construction failed");
@@ -2457,7 +2457,7 @@ mvc_row_result_wrap( Client cntxt, MalBl
                return msg;
        if ((msg = checkSQLContext(cntxt)) != NULL)
                return msg;
-       res = *res_id = mvc_result_table(m, mb->tag, pci->argc - (pci->retc + 
5), 1, NULL);
+       res = *res_id = mvc_result_table(m, mb->tag, pci->argc - (pci->retc + 
5), Q_TABLE, NULL);
        if (res < 0)
                throw(SQL, "sql.resultset", SQLSTATE(HY001) MAL_MALLOC_FAIL);
 
@@ -2542,7 +2542,7 @@ mvc_export_row_wrap( Client cntxt, MalBl
                throw(MAL, "sql.resultSet", "cannot transfer files to client");
        }
 
-       res = *res_id = mvc_result_table(m, mb->tag, pci->argc - (pci->retc + 
12), 1, NULL);
+       res = *res_id = mvc_result_table(m, mb->tag, pci->argc - (pci->retc + 
12), Q_TABLE, NULL);
 
        t = m->results;
        if (res < 0){
@@ -2640,7 +2640,7 @@ mvc_table_result_wrap(Client cntxt, MalB
        str msg;
        int *res_id;
        int nr_cols;
-       int qtype;
+       sql_query_t qtype;
        bat order_bid;
 
        if ( pci->argc > 6)
@@ -2648,7 +2648,7 @@ mvc_table_result_wrap(Client cntxt, MalB
 
        res_id = getArgReference_int(stk, pci, 0);
        nr_cols = *getArgReference_int(stk, pci, 1);
-       qtype = *getArgReference_int(stk, pci, 2);
+       qtype = (sql_query_t) *getArgReference_int(stk, pci, 2);
        order_bid = *getArgReference_bat(stk, pci, 3);
 
        if ((msg = getSQLContext(cntxt, mb, &m, NULL)) != NULL)
@@ -2802,7 +2802,7 @@ mvc_scalar_value_wrap(Client cntxt, MalB
                p = *(ptr *) p;
 
        // scalar values are single-column result sets
-       if((res_id = mvc_result_table(b->mvc, mb->tag, 1, 1, NULL)) < 0)
+       if ((res_id = mvc_result_table(b->mvc, mb->tag, 1, Q_TABLE, NULL)) < 0)
                throw(SQL, "sql.exportValue", SQLSTATE(HY001) MAL_MALLOC_FAIL);
        if (mvc_result_value(b->mvc, tn, cn, type, digits, scale, p, mtype))
                throw(SQL, "sql.exportValue", SQLSTATE(45000) "Result set 
construction failed");
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
@@ -857,17 +857,14 @@ mvc_import_table(Client cntxt, BAT ***ba
 
        if (!bs) {
                sql_error(m, 500, "no stream (pointer) provided");
-               m->type = -1;
                return NULL;
        }
        if (mnstr_errnr(bs->s)) {
                sql_error(m, 500, "stream not open %d", mnstr_errnr(bs->s));
-               m->type = -1;
                return NULL;
        }
        if (offset < 0 || offset > (lng) BUN_MAX) {
                sql_error(m, 500, "offset out of range");
-               m->type = -1;
                return NULL;
        }
 
@@ -2601,7 +2598,7 @@ mvc_export_chunk(backend *b, stream *s, 
 
 
 int
-mvc_result_table(mvc *m, oid query_id, int nr_cols, int type, BAT *order)
+mvc_result_table(mvc *m, oid query_id, int nr_cols, sql_query_t type, BAT 
*order)
 {
        res_table *t = res_table_create(m->session->tr, m->result_id++, 
query_id, nr_cols, type, m->results, order);
        m->results = t;
diff --git a/sql/backends/monet5/sql_result.h b/sql/backends/monet5/sql_result.h
--- a/sql/backends/monet5/sql_result.h
+++ b/sql/backends/monet5/sql_result.h
@@ -26,7 +26,7 @@ extern int mvc_export_chunk(backend *b, 
 extern int mvc_export_prepare(mvc *c, stream *s, cq *q, str w);
 
 extern str mvc_import_table(Client cntxt, BAT ***bats, mvc *c, bstream *s, 
sql_table *t, const char *sep, const char *rsep, const char *ssep, const char 
*ns, lng nr, lng offset, int locked, int best, bool from_stdin);
-extern int mvc_result_table(mvc *m, oid query_id, int nr_cols, int type, BAT 
*order);
+extern int mvc_result_table(mvc *m, oid query_id, int nr_cols, sql_query_t 
type, BAT *order);
 
 extern int mvc_result_column(mvc *m, char *tn, char *name, char *typename, int 
digits, int scale, BAT *b);
 extern int mvc_result_value(mvc *m, const char *tn, const char *name, const 
char *typename, int digits, int scale, ptr *p, int mtype);
diff --git a/sql/server/sql_mvc.c b/sql/server/sql_mvc.c
--- a/sql/server/sql_mvc.c
+++ b/sql/server/sql_mvc.c
@@ -612,7 +612,6 @@ str
 mvc_release(mvc *m, const char *name)
 {
        int ok = SQL_OK;
-       int res = Q_TRANS;
        sql_trans *tr = m->session->tr;
        str msg = MAL_SUCCEED;
 
@@ -647,7 +646,7 @@ mvc_release(mvc *m, const char *name)
        m->session->tr = tr;
        m->session->schema = find_sql_schema(m->session->tr, 
m->session->schema_name);
 
-       m->type = res;
+       m->type = Q_TRANS;
        return msg;
 }
 
@@ -1411,7 +1410,7 @@ void
 mvc_create_dependency(mvc *m, sqlid id, sqlid depend_id, sql_dependency 
depend_type)
 {
        if (mvc_debug)
-               fprintf(stderr, "#mvc_create_dependency %d %d %d\n", id, 
depend_id, depend_type);
+               fprintf(stderr, "#mvc_create_dependency %d %d %d\n", id, 
depend_id, (int) depend_type);
        if ( (id != depend_id) || (depend_type == BEDROPPED_DEPENDENCY) )
                sql_trans_create_dependency(m->session->tr, id, depend_id, 
depend_type);
 }
diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y
--- a/sql/server/sql_parser.y
+++ b/sql/server/sql_parser.y
@@ -164,7 +164,7 @@ uescape_xform(char *restrict s, const ch
 %lex-param { void *m }
 
 /* reentrant parser */
-%pure-parser
+%define api.pure
 %union {
        int             i_val,bval;
        lng             l_val,operation;
diff --git a/sql/storage/bat/res_table.c b/sql/storage/bat/res_table.c
--- a/sql/storage/bat/res_table.c
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to