Changeset: c783fdedff62 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c783fdedff62
Modified Files:
        sql/server/rel_unnest.c
        sql/test/SQLancer/Tests/sqlancer11.test
Branch: default
Log Message:

Merge with Oct2020 branch.


diffs (267 lines):

diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -865,7 +865,12 @@ ilog2(BUN x)
                                /* degenerates into half range */       \
                                /* -inf < x <[=] *tl */                 \
                                anti = false;                           \
-                               th = tl;                                \
+                               if (tl == &vl.v_##TYPE) {               \
+                                       vh.v_##TYPE = vl.v_##TYPE;      \
+                                       th = &vh.v_##TYPE;              \
+                               } else {                                \
+                                       th = tl;                        \
+                               }                                       \
                                hi = !li;                               \
                                lval = false;                           \
                                /* further dealt with below */          \
diff --git a/monetdb5/mal/mal_runtime.c b/monetdb5/mal/mal_runtime.c
--- a/monetdb5/mal/mal_runtime.c
+++ b/monetdb5/mal/mal_runtime.c
@@ -52,7 +52,7 @@ clearUSRstats(size_t idx)
  * If USRstats is full, extend it.
  */
 static
-size_t 
+size_t
 getUSRstatsIdx(MalBlkPtr mb, oid user)
 {
        size_t i = 0;
@@ -289,6 +289,7 @@ void
 runtimeProfileFinish(Client cntxt, MalBlkPtr mb, MalStkPtr stk)
 {
        size_t i;
+       bool found = false;
 
        MT_lock_set(&mal_delayLock);
        i=qtail;
@@ -309,12 +310,36 @@ runtimeProfileFinish(Client cntxt, MalBl
                        updateUserStats(cntxt, mb, QRYqueue[i].ticks, 
QRYqueue[i].start, QRYqueue[i].finished, QRYqueue[i].query);
                        // assume that the user is now idle
                        cntxt->idle = time(0);
+                       found = true;
                        break;
                }
                i++;
                if ( i >= qsize)
                        i = 0;
        }
+
+       // every query that has been started has an entry in QRYqueue.  If this
+       // finished query is not found, we want to print some informational
+       // messages for debugging.
+       if (!found) {
+               TRC_INFO_IF(MAL_SERVER) {
+                       TRC_INFO_ENDIF(MAL_SERVER, "runtimeProfilerFinish: stk 
(%p) not found in QRYqueue", stk);
+                       i = qtail;
+                       while (i != qhead){
+                               // print some info. of queries not "finished"
+                               if (strcmp(QRYqueue[i].status, "finished") != 
0) {
+                                       TRC_INFO_ENDIF(MAL_SERVER, 
"QRYqueue[%zu]: stk(%p), tag("OIDFMT"), username(%s), start(%ld), status(%s), 
query(%s)",
+                                                                  i, 
QRYqueue[i].stk, QRYqueue[i].tag,
+                                                                  
QRYqueue[i].username, QRYqueue[i].start,
+                                                                  
QRYqueue[i].status, QRYqueue[i].query);
+                               }
+                               i++;
+                               if ( i >= qsize)
+                                       i = 0;
+                       }
+               }
+       }
+
        MT_lock_unset(&mal_delayLock);
 }
 
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
@@ -2701,7 +2701,7 @@ rewrite_compare(visitor *v, sql_rel *rel
                                        set_processed(rsq);
                                }
                                if (rsq)
-                                       (void)rewrite_inner(v->sql, rel, rsq, 
is_cnt?op_left:op_join);
+                                       (void)rewrite_inner(v->sql, rel, rsq, 
((!quantifier && depth > 0)||is_cnt)?op_left:op_join);
 
                                if (rel_convert_types(v->sql, NULL, NULL, &le, 
&re, 1, type_equal) < 0)
                                        return NULL;
diff --git a/sql/test/SQLancer/Tests/sqlancer11.test 
b/sql/test/SQLancer/Tests/sqlancer11.test
--- a/sql/test/SQLancer/Tests/sqlancer11.test
+++ b/sql/test/SQLancer/Tests/sqlancer11.test
@@ -118,14 +118,14 @@ INSERT INTO "t2" VALUES (4, 0, 6, NULL),
 (0.39272912837466945, 8, NULL, NULL),(NULL, NULL, 4, NULL),(2, 0, 6, 
NULL),(-1596101049, 0, 6, NULL),(-1951243968, 0, 6, NULL),(NULL, 0, 6, NULL),
 (NULL, 0, 6, NULL),(NULL, 0, 6, NULL),(NULL, 0, 6, NULL)
 
-query T rowsort
+query I rowsort
 SELECT 4 = ANY(SELECT t2.c2 FROM t2) FROM t0
 ----
-True
-True
-True
-True
-True
+1
+1
+1
+1
+1
 
 statement ok
 ROLLBACK
@@ -158,14 +158,152 @@ NULL
 NULL
 NULL
 
-query T rowsort
+query I rowsort
 SELECT FALSE BETWEEN t0.c3 = ANY(SELECT t0.c0 FROM t0 WHERE t0.c1) AND TRUE 
FROM t2, t0
 ----
-True
-True
-True
+1
+1
+1
 
 statement ok
 ROLLBACK
 
+statement ok
+START TRANSACTION
 
+statement ok
+CREATE TABLE "sys"."t0" ("c0" BINARY LARGE OBJECT NOT NULL,CONSTRAINT 
"t0_c0_pkey" PRIMARY KEY ("c0"),CONSTRAINT "t0_c0_unique" UNIQUE ("c0"))
+
+statement ok
+INSERT INTO "sys"."t0" VALUES (BINARY LARGE OBJECT 'F4BECB7E'),(BINARY LARGE 
OBJECT ''),(BINARY LARGE OBJECT 'E0'),(BINARY LARGE OBJECT 'B0'),(BINARY LARGE 
OBJECT 'A0FA'),
+(BINARY LARGE OBJECT 'E67D3FC0'),(BINARY LARGE OBJECT 'A324'),(BINARY LARGE 
OBJECT '49E0')
+
+statement ok
+CREATE TABLE "sys"."t1" ("c0" BINARY LARGE OBJECT)
+
+statement ok
+INSERT INTO "sys"."t1" VALUES (BINARY LARGE OBJECT ''), (BINARY LARGE OBJECT 
'A0'), (BINARY LARGE OBJECT '')
+
+query T rowsort
+SELECT t0.c0 FROM t1, t0 WHERE 4 NOT IN (6, 1.7976931348623157E308, 0)
+----
+(empty)
+(empty)
+(empty)
+49E0
+49E0
+49E0
+A0FA
+A0FA
+A0FA
+A324
+A324
+A324
+B0
+B0
+B0
+E0
+E0
+E0
+E67D3FC0
+E67D3FC0
+E67D3FC0
+F4BECB7E
+F4BECB7E
+F4BECB7E
+
+query I rowsort
+SELECT 4 NOT IN (6, 1.7976931348623157E308, 0) FROM t1, t0
+----
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+
+statement ok
+ROLLBACK
+
+statement ok
+START TRANSACTION
+
+statement ok
+CREATE TABLE "sys"."t1" ("c1" TINYINT,"c2" CHAR(22),"c4" INTEGER)
+
+statement ok
+INSERT INTO "sys"."t1" VALUES (NULL, NULL, 0),(NULL, NULL, -391221783),(NULL, 
NULL, -1107653660),(NULL, NULL, 0),(7, 'cTR'' Abp', 0),(7, 'cTR'' Abp', 1),(7, 
'cTR'' Abp', -1)
+
+query T rowsort
+SELECT t1.c2 FROM t1 WHERE CASE 3 WHEN ((SELECT 0.48) INTERSECT DISTINCT 
(SELECT -1.2)) THEN FALSE ELSE TRUE END
+----
+NULL
+NULL
+NULL
+NULL
+cTR' Abp
+cTR' Abp
+cTR' Abp
+
+query I rowsort
+SELECT CASE 3 WHEN ((SELECT 0.48) INTERSECT DISTINCT (SELECT -1.2)) THEN FALSE 
ELSE TRUE END FROM t1
+----
+1
+1
+1
+1
+1
+1
+1
+
+statement ok
+ROLLBACK
+
+statement ok
+START TRANSACTION
+
+statement ok
+CREATE TABLE "t0" ("c0" SMALLINT NOT NULL,"c2" INTEGER)
+
+statement ok
+CREATE TABLE "t1" ("c0" SMALLINT NOT NULL,"c2" SMALLINT)
+
+statement ok
+INSERT INTO "t1" VALUES (4, NULL),(3, 4),(3, 5),(2, NULL),(6, NULL),(6, 
NULL),(6, NULL),(6, NULL),(6, NULL),(6, NULL),(6, NULL),(6, NULL),(6, NULL),(6, 
NULL),(3, NULL),(5, NULL),
+(0, 8),(3, NULL),(8, 7),(-1, 6),(3, -3),(7, 7),(0, 1),(8, NULL),(9, NULL),(9, 
NULL),(-1, NULL),(2, NULL),(7, 8),(1, 2)
+
+statement ok
+CREATE TABLE "t2" ("c0" SMALLINT)
+
+statement ok
+INSERT INTO "t2" VALUES (NULL), (NULL), (0)
+
+query I rowsort
+SELECT t1.c0 FROM t1 FULL OUTER JOIN (SELECT 3.3 FROM t2) AS sub0 ON true 
WHERE (EXISTS (SELECT 1)) OR greatest(TRUE, FALSE)
+----
+
+query I rowsort
+SELECT (EXISTS (SELECT 1)) OR greatest(TRUE, FALSE) FROM t1 FULL OUTER JOIN 
(SELECT 3.3 FROM t2) AS sub0 ON true
+----
+
+statement ok
+ROLLBACK
+
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to