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