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

merged with default


diffs (174 lines):

diff --git a/clients/odbc/tests/ODBCtester.c b/clients/odbc/tests/ODBCtester.c
--- a/clients/odbc/tests/ODBCtester.c
+++ b/clients/odbc/tests/ODBCtester.c
@@ -17,6 +17,7 @@
 #include <string.h>
 #include <sql.h>
 #include <sqlext.h>
+#include <inttypes.h>
 
 static void
 prerr(SQLSMALLINT tpe, SQLHANDLE hnd, const char *func, const char *pref)
@@ -81,6 +82,8 @@ compareResult(char * testname, char * te
        }
 }
 
+#define LLFMT                   "%" PRId64
+
 static SQLRETURN
 testGetDataTruncatedString(SQLHANDLE stmt, SWORD ctype)
 {
@@ -99,7 +102,7 @@ testGetDataTruncatedString(SQLHANDLE stm
        check(ret, SQL_HANDLE_STMT, stmt, "SQLExecDirect");
 
        ret = SQLRowCount(stmt, &RowCount);
-       pos += snprintf(outp + pos, outp_len - pos, "SQLRowCount is %ld\n", 
RowCount);
+       pos += snprintf(outp + pos, outp_len - pos, "SQLRowCount is " LLFMT 
"\n", (int64_t) RowCount);
        check(ret, SQL_HANDLE_STMT, stmt, "SQLRowCount");
 
        ret = SQLNumResultCols(stmt, &NumResultCols);
@@ -118,7 +121,7 @@ testGetDataTruncatedString(SQLHANDLE stm
 
                /* test SQLGetData(SQL_C_(W)CHAR, 20) with a restricted buffer 
size (20) for the queried string value (47) */
                ret = SQLGetData(stmt, (UWORD)col, (SWORD)ctype, (PTR)&buf, 
(SQLLEN)20, &vallen);
-               pos += snprintf(outp + pos, outp_len - pos, "SQLGetData(%d, %s, 
20) returns %d, vallen %ld, buf: '%s'\n", col, ctype_str, ret, vallen, buf);
+               pos += snprintf(outp + pos, outp_len - pos, "SQLGetData(%d, %s, 
20) returns %d, vallen " LLFMT ", buf: '%s'\n", col, ctype_str, ret, (int64_t) 
vallen, buf);
                /* we expect SQL_SUCCESS_WITH_INFO with warning msg set, fetch 
them */
                if (ret == SQL_SUCCESS_WITH_INFO) {
                        SQLCHAR state[6];
@@ -130,7 +133,7 @@ testGetDataTruncatedString(SQLHANDLE stm
 
                        /* get the next data part of the value (this is how 
SQLGetData is intended to be used to get large data in chunks) */
                        ret = SQLGetData(stmt, (UWORD)col, (SWORD)ctype, 
(PTR)&buf2, (SQLLEN)30, &vallen);
-                       pos += snprintf(outp + pos, outp_len - pos, 
"SQLGetData(%d, %s, 30) returns %d, vallen %ld, buf: '%s'\n", col, ctype_str, 
ret, vallen, buf2);
+                       pos += snprintf(outp + pos, outp_len - pos, 
"SQLGetData(%d, %s, 30) returns %d, vallen " LLFMT ", buf: '%s'\n", col, 
ctype_str, ret, (int64_t) vallen, buf2);
                        if (ret == SQL_SUCCESS_WITH_INFO) {
                                ret = SQLGetDiagRec(SQL_HANDLE_STMT, stmt, 1, 
state, &errnr, msg, sizeof(msg), &msglen);
                                pos += snprintf(outp + pos, outp_len - pos, 
"SQLstate %s, Errnr %d, Message %s\n", (char*)state, (int)errnr, (char*)msg);
diff --git a/sql/backends/monet5/sql_scenario.c 
b/sql/backends/monet5/sql_scenario.c
--- a/sql/backends/monet5/sql_scenario.c
+++ b/sql/backends/monet5/sql_scenario.c
@@ -398,6 +398,7 @@ SQLprepareClient(Client c, const char *p
 
                if (mvc_trans(m) < 0) {
                        // we have -1 here
+                       MT_lock_set(&sql_contextLock);
                        throw(INVCRED, "checkCredentials", INVCRED_INVALID_USER 
" '%s'", c->username);
                }
 
diff --git a/sql/server/rel_unnest.c b/sql/server/rel_unnest.c
--- a/sql/server/rel_unnest.c
+++ b/sql/server/rel_unnest.c
@@ -1602,6 +1602,19 @@ push_up_table(mvc *sql, sql_rel *rel, li
        return rel;
 }
 
+static bool
+exps_have_rank(list *exps)
+{
+       if (!exps)
+               return false;
+       for(node *n=exps->h; n; n = n->next) {
+               sql_exp *e = n->data;
+               if (is_analytic(e))
+                       return true;
+       }
+       return false;
+}
+
 static sql_rel *
 rel_unnest_dependent(mvc *sql, sql_rel *rel)
 {
@@ -1682,7 +1695,7 @@ rel_unnest_dependent(mvc *sql, sql_rel *
                                }
                        }
 
-                       if (r && is_simple_project(r->op) && 
((!exps_have_freevar(sql, r->exps) && !exps_have_unsafe(r->exps, 1)) || 
is_distinct_set(sql, l, ad))) {
+                       if (r && is_simple_project(r->op) && ((!r->r && 
!exps_have_rank(r->exps)) || (!exps_have_freevar(sql, r->exps) && 
!exps_have_unsafe(r->exps, 1)) || is_distinct_set(sql, l, ad))) {
                                rel = push_up_project(sql, rel, ad);
                                return rel_unnest_dependent(sql, rel);
                        }
diff --git a/sql/test/SQLancer/Tests/sqlancer18.test 
b/sql/test/SQLancer/Tests/sqlancer18.test
--- a/sql/test/SQLancer/Tests/sqlancer18.test
+++ b/sql/test/SQLancer/Tests/sqlancer18.test
@@ -313,7 +313,7 @@ SELECT vx.vc0 FROM vx WHERE vx.vc0 <> AL
 1970-01-01
 NULL
 
-statement error GDK reported error: mergejoin: more than one match
+statement error GDK reported error: BATsubcross: more than one match
 SELECT max((SELECT (SELECT rt2.c1 FROM t2) FROM t2 as rt2))
 
 statement ok
@@ -330,7 +330,7 @@ SELECT 1 FROM (select 4) v100(vc0) WHERE
 ----
 1
 
-statement error GDK reported error: mergejoin: more than one match
+statement error GDK reported error: BATsubcross: more than one match
 select 1 from t1 where exists (select min((select t2.c0 from t1)) from t1 as 
t2)
 
 query I rowsort
diff --git a/sql/test/subquery/Tests/correlated.test 
b/sql/test/subquery/Tests/correlated.test
--- a/sql/test/subquery/Tests/correlated.test
+++ b/sql/test/subquery/Tests/correlated.test
@@ -42,7 +42,7 @@ 3
 2
 1
 
-statement error GDK reported error: mergejoin: more than one match
+statement error GDK reported error: BATsubcross: more than one match
 SELECT i, (SELECT 42+i1.i FROM integers) AS j FROM integers i1 ORDER BY i
 
 statement error
@@ -329,7 +329,7 @@ NULL
 statement error 42000!SELECT: subquery must return only one column
 SELECT (SELECT SUM(i + i1.i), 1 FROM integers) FROM integers i1
 
-statement error GDK reported error: mergejoin: more than one match
+statement error GDK reported error: BATsubcross: more than one match
 SELECT (SELECT SUM(i1.i) FROM integers) AS k FROM integers i1 GROUP BY i ORDER 
BY i
 
 query II nosort
@@ -401,7 +401,7 @@ SELECT CAST(SUM((SELECT i+i1.i FROM inte
 ----
 9
 
-statement error GDK reported error: mergejoin: more than one match
+statement error GDK reported error: BATsubcross: more than one match
 SELECT i, CAST(SUM(i1.i) AS BIGINT), CAST((SELECT SUM(i1.i) FROM integers) AS 
BIGINT) AS k FROM integers i1 GROUP BY i ORDER BY i
 
 query II nosort
@@ -511,7 +511,7 @@ 2
 3
 3
 
-statement error GDK reported error: mergejoin: more than one match
+statement error GDK reported error: BATsubcross: more than one match
 SELECT i, SUM(i1.i) FROM integers i1 GROUP BY i ORDER BY (SELECT SUM(i1.i) 
FROM integers)
 
 statement error
diff --git a/sql/test/subquery/Tests/subquery2.test 
b/sql/test/subquery/Tests/subquery2.test
--- a/sql/test/subquery/Tests/subquery2.test
+++ b/sql/test/subquery/Tests/subquery2.test
@@ -296,7 +296,7 @@ 1
 0
 0
 
-statement error GDK reported error: mergejoin: more than one match
+statement error GDK reported error: BATsubcross: more than one match
 SELECT
        (SELECT MAX(col6) FROM tbl_ProductSales) IN (SELECT MIN(col3) FROM 
another_T)
 FROM another_T
diff --git a/sql/test/subquery/Tests/subquery5.test 
b/sql/test/subquery/Tests/subquery5.test
--- a/sql/test/subquery/Tests/subquery5.test
+++ b/sql/test/subquery/Tests/subquery5.test
@@ -404,7 +404,7 @@ SELECT SUM((SELECT MAX(i1.i + i2.i) FROM
 ----
 15
 
-statement error GDK reported error: mergejoin: more than one match
+statement error GDK reported error: BATsubcross: more than one match
 SELECT CORR((SELECT i1.i FROM integers i2), (SELECT SUM(i1.i + i2.i) FROM 
integers i2)) FROM integers i1
 
 query I rowsort
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to