Changeset: 9090af8beb37 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/9090af8beb37
Modified Files:
        gdk/gdk_aggr.c
        
sql/test/BugTracker-2017/Tests/crash_after_oidx_on_sys_statistics.Bug-6251.test
        sql/test/mergetables/Tests/mergequery.test
Branch: analyze-fix
Log Message:

Set minpos and maxpos on the respective aggregates. Also propagate them to the 
parent bat


diffs (truncated from 592 to 300 lines):

diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -3823,8 +3823,18 @@ BATmin_skipnil(BAT *b, void *aggr, bit s
                }
                if (is_oid_nil(pos)) {
                        res = ATOMnilptr(b->ttype);
+                       b->tminpos = BUN_NONE;
                } else {
-                       res = BUNtail(bi, pos - b->hseqbase);
+                       BUN minpos = pos - b->hseqbase;
+                       res = BUNtail(bi, minpos);
+                       b->tminpos = minpos;
+               }
+               if (VIEWtparent(b)) {
+                       BAT *pb = BBP_cache(VIEWtparent(b));
+                       MT_lock_set(&pb->theaplock);
+                       if (bi.count == BATcount(pb))
+                               pb->tminpos = b->tminpos;
+                       MT_lock_unset(&pb->theaplock);
                }
        }
        if (aggr == NULL) {
@@ -3963,8 +3973,18 @@ BATmax_skipnil(BAT *b, void *aggr, bit s
                }
                if (is_oid_nil(pos)) {
                        res = ATOMnilptr(b->ttype);
+                       b->tmaxpos = BUN_NONE;
                } else {
-                       res = BUNtail(bi, pos - b->hseqbase);
+                       BUN maxpos = pos - b->hseqbase;
+                       res = BUNtail(bi, maxpos);
+                       b->tmaxpos = maxpos;
+               }
+               if (VIEWtparent(b)) {
+                       BAT *pb = BBP_cache(VIEWtparent(b));
+                       MT_lock_set(&pb->theaplock);
+                       if (bi.count == BATcount(pb))
+                               pb->tmaxpos = b->tmaxpos;
+                       MT_lock_unset(&pb->theaplock);
                }
        }
        if (aggr == NULL) {
diff --git 
a/sql/test/BugTracker-2017/Tests/crash_after_oidx_on_sys_statistics.Bug-6251.test
 
b/sql/test/BugTracker-2017/Tests/crash_after_oidx_on_sys_statistics.Bug-6251.test
--- 
a/sql/test/BugTracker-2017/Tests/crash_after_oidx_on_sys_statistics.Bug-6251.test
+++ 
b/sql/test/BugTracker-2017/Tests/crash_after_oidx_on_sys_statistics.Bug-6251.test
@@ -41,8 +41,8 @@ int
 4
 True
 False
-NULL
-NULL
+8125
+8136
 True
 False
 count
@@ -50,8 +50,8 @@ bigint
 8
 True
 False
-NULL
-NULL
+0
+11
 True
 False
 maxval
@@ -59,8 +59,8 @@ clob
 1
 False
 True
-NULL
-NULL
+0
+true
 False
 False
 minval
@@ -68,8 +68,8 @@ clob
 1
 False
 True
-NULL
-NULL
+0
+int
 False
 False
 nils
@@ -77,8 +77,8 @@ bigint
 8
 False
 False
-NULL
-NULL
+0
+1
 False
 False
 revsorted
@@ -86,8 +86,8 @@ boolean
 1
 False
 False
-NULL
-NULL
+false
+true
 False
 False
 sample
@@ -95,8 +95,8 @@ bigint
 8
 True
 False
-NULL
-NULL
+0
+11
 True
 False
 sorted
@@ -104,8 +104,8 @@ boolean
 1
 False
 False
-NULL
-NULL
+false
+true
 False
 False
 stamp
@@ -113,8 +113,8 @@ timestamp
 8
 True
 False
-NULL
-NULL
+2021-03-09 08:10:25.983772
+2021-03-09 08:10:25.985546
 True
 False
 type
@@ -122,8 +122,8 @@ clob
 1
 False
 False
-NULL
-NULL
+bigint
+timestamp
 False
 False
 unique
@@ -131,8 +131,8 @@ bigint
 8
 False
 False
-NULL
-NULL
+0
+7
 False
 False
 width
@@ -140,8 +140,8 @@ int
 4
 False
 False
-NULL
-NULL
+1
+8
 False
 False
 
@@ -153,8 +153,8 @@ int
 4
 True
 False
-NULL
-NULL
+8125
+8136
 True
 False
 count
@@ -162,8 +162,8 @@ bigint
 8
 True
 False
-NULL
-NULL
+0
+11
 True
 False
 maxval
@@ -171,8 +171,8 @@ clob
 1
 False
 True
-NULL
-NULL
+0
+true
 False
 False
 minval
@@ -180,8 +180,8 @@ clob
 1
 False
 True
-NULL
-NULL
+0
+int
 False
 False
 nils
@@ -189,8 +189,8 @@ bigint
 8
 False
 False
-NULL
-NULL
+0
+1
 False
 False
 revsorted
@@ -198,8 +198,8 @@ boolean
 1
 False
 False
-NULL
-NULL
+false
+true
 False
 False
 sample
@@ -207,8 +207,8 @@ bigint
 8
 True
 False
-NULL
-NULL
+0
+11
 True
 False
 sorted
@@ -216,8 +216,8 @@ boolean
 1
 False
 False
-NULL
-NULL
+false
+true
 False
 False
 stamp
@@ -225,8 +225,8 @@ timestamp
 8
 True
 False
-NULL
-NULL
+2021-03-09 08:10:25.983772
+2021-03-09 08:10:25.985546
 True
 False
 type
@@ -234,8 +234,8 @@ clob
 1
 False
 False
-NULL
-NULL
+bigint
+timestamp
 False
 False
 unique
@@ -243,8 +243,8 @@ bigint
 8
 False
 False
-NULL
-NULL
+0
+7
 False
 False
 width
@@ -252,8 +252,8 @@ int
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to