Changeset: fe0346d0a13f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/fe0346d0a13f
Modified Files:
        sql/backends/monet5/rel_bin.c
        sql/server/rel_exp.c
        sql/server/rel_optimize_proj.c
        sql/server/rel_select.c
        sql/server/rel_unnest.c
        sql/test/miscellaneous/Tests/simple_plans.test
Branch: balanced_union
Log Message:

Merges default


diffs (truncated from 2573 to 300 lines):

diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml
--- a/.github/workflows/linux.yml
+++ b/.github/workflows/linux.yml
@@ -48,7 +48,12 @@ jobs:
           ref: ${{ github.ref }}
 
       - name: install pymonetdb cryptography
-        run: pip3 install pymonetdb cryptography
+        run: pip3 install --user --upgrade pymonetdb cryptography
+        if: runner.os != 'macOS'
+
+      - name: install pymonetdb cryptography
+        run: pip3 install --user --break-system-packages --upgrade pymonetdb 
cryptography
+        if: runner.os == 'macOS'
 
       - name: make MonetDB on linux
         run: |
@@ -83,7 +88,23 @@ jobs:
             -DBISON_EXECUTABLE=/usr/local/opt/bison/bin/bison \
             -DCMAKE_SUMMARY=ON
           make install -j3
-        if: runner.os == 'macOS'
+        if: runner.os == 'macOS' && runner.arch == 'x64'
+
+      - name: make MonetDB on macos
+        run: |
+          mkdir build
+          cd build 
+          cmake .. \
+            -DCMAKE_INSTALL_PREFIX=$HOME/MDB \
+            -DPY3INTEGRATION=OFF \
+            -DRINTEGRATION=OFF  \
+            -DCMAKE_BUILD_TYPE=Release \
+            -DASSERT=OFF \
+            -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} \
+            -DBISON_EXECUTABLE=/opt/homebrew/opt/bison/bin/bison \
+            -DCMAKE_SUMMARY=ON
+          make install -j3
+        if: runner.os == 'macOS' && runner.arch == 'arm64'
 
       - name: choco packages
         run: |
diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -825,3 +825,4 @@ dcc8c702e685a4faf21ccf663028d1bc3d1165d1
 dcc8c702e685a4faf21ccf663028d1bc3d1165d1 Dec2023_SP1_release
 d656785f49ee62c19705722aa6b7c171904c64d5 Dec2023_7
 d656785f49ee62c19705722aa6b7c171904c64d5 Dec2023_SP2_release
+9a694c41042503a22d6c92aeab5bc4ca1912b62e Dec2023_9
diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -91,7 +91,7 @@ Group: Applications/Databases
 License: MPL-2.0
 URL: https://www.monetdb.org/
 BugURL: https://github.com/MonetDB/MonetDB/issues
-Source: 
https://www.monetdb.org/downloads/sources/Dec2023-SP2/%{name}-%{version}.tar.bz2
+Source: 
https://www.monetdb.org/downloads/sources/Dec2023-SP3/%{name}-%{version}.tar.bz2
 
 # The Fedora packaging document says we need systemd-rpm-macros for
 # the _unitdir and _tmpfilesdir macros to exist; however on RHEL 7
@@ -916,6 +916,25 @@ fi
 %endif
 
 %changelog
+* Thu May 02 2024 Sjoerd Mullender <sjo...@acm.org> - 11.49.9-20240502
+- Rebuilt.
+- GH#7422: Aggregate functions with variadic arguments
+- GH#7472: MonetDB server crashes in `tail_type`
+- GH#7473: MonetDB server crashes in `SQLunionfunc`
+- GH#7478: MonetDB server crashes in `exp_equal`
+- GH#7496: Query on view fails to produce a resultset. Assertion triggered
+  in rel2bin_select.
+- GH#7499: create schema + set schema inside a transaction that is rolled
+  back causes the connection to be aborted
+- GH#7501: files remain in backup causing problems at restart
+- GH#7503: MonetDB server crashes using `WHEN MATCHED THEN UPDATE`
+- GH#7504: possible deadlock when a bat is made persistent when it is also
+  getting unloaded
+- GH#7506: MonetDB Dec2023-SP2 crashes at `rel_value_exp2`
+- GH#7507: BBPextend: ERROR: trying to extend BAT pool beyond the limit
+  (163840000)
+- GH#7508: MonetDB Dec2023-SP2 crashes at `exp_ref`
+
 * Tue Apr 09 2024 Sjoerd Mullender <sjo...@acm.org> - 11.49.7-20240409
 - Rebuilt.
 - GH#7469: Crash when using `CONTAINS`
diff --git a/clients/mapilib/mapi.c b/clients/mapilib/mapi.c
--- a/clients/mapilib/mapi.c
+++ b/clients/mapilib/mapi.c
@@ -1777,6 +1777,11 @@ mapi_new(msettings *settings)
        Mapi mid;
        static ATOMIC_TYPE index = ATOMIC_VAR_INIT(0);
 
+       if (!ATOMIC_TAS(&mapi_initialized)) {
+               if (mnstr_init() < 0)
+                       return NULL;
+       }
+
        mid = malloc(sizeof(*mid));
        if (mid == NULL)
                return NULL;
@@ -1885,11 +1890,6 @@ mapi_mapiuri(const char *url, const char
 {
        Mapi mid;
 
-       if (!ATOMIC_TAS(&mapi_initialized)) {
-               if (mnstr_init() < 0)
-                       return NULL;
-       }
-
        mid = mapi_new(NULL);
        if (mid == NULL)
                return NULL;
@@ -1944,11 +1944,6 @@ mapi_mapi(const char *host, int port, co
 {
        Mapi mid;
 
-       if (!ATOMIC_TAS(&mapi_initialized)) {
-               if (mnstr_init() < 0)
-                       return NULL;
-       }
-
        mid = mapi_new(NULL);
        if (mid == NULL)
                return NULL;
diff --git a/cmake/monetdb-versions.cmake b/cmake/monetdb-versions.cmake
--- a/cmake/monetdb-versions.cmake
+++ b/cmake/monetdb-versions.cmake
@@ -44,19 +44,19 @@ set(MONETDB_VERSION "${MONETDB_VERSION_M
 # common/options and common/utils)
 set(GDK_VERSION_MAJOR "28")
 set(GDK_VERSION_MINOR "1")
-set(GDK_VERSION_PATCH "2")
+set(GDK_VERSION_PATCH "3")
 set(GDK_VERSION 
"${GDK_VERSION_MAJOR}.${GDK_VERSION_MINOR}.${GDK_VERSION_PATCH}")
 
 # version of the MAPI library (subdirectory clients/mapilib)
 set(MAPI_VERSION_MAJOR "26")
 set(MAPI_VERSION_MINOR "2")
-set(MAPI_VERSION_PATCH "1")
+set(MAPI_VERSION_PATCH "2")
 set(MAPI_VERSION 
"${MAPI_VERSION_MAJOR}.${MAPI_VERSION_MINOR}.${MAPI_VERSION_PATCH}")
 
 # version of the MONETDB5 library (subdirectory monetdb5, not including extras 
or sql)
 set(MONETDB5_VERSION_MAJOR "35")
 set(MONETDB5_VERSION_MINOR "0")
-set(MONETDB5_VERSION_PATCH "3")
+set(MONETDB5_VERSION_PATCH "4")
 set(MONETDB5_VERSION 
"${MONETDB5_VERSION_MAJOR}.${MONETDB5_VERSION_MINOR}.${MONETDB5_VERSION_PATCH}")
 
 # version of the MONETDBE library (subdirectory tools/monetdbe)
@@ -74,5 +74,5 @@ set(STREAM_VERSION "${STREAM_VERSION_MAJ
 # version of the SQL library (subdirectory sql)
 set(SQL_VERSION_MAJOR "14")
 set(SQL_VERSION_MINOR "1")
-set(SQL_VERSION_PATCH "3")
+set(SQL_VERSION_PATCH "4")
 set(SQL_VERSION 
"${SQL_VERSION_MAJOR}.${SQL_VERSION_MINOR}.${SQL_VERSION_PATCH}")
diff --git a/common/utils/GenerateVersionHeader.cmake 
b/common/utils/GenerateVersionHeader.cmake
--- a/common/utils/GenerateVersionHeader.cmake
+++ b/common/utils/GenerateVersionHeader.cmake
@@ -18,34 +18,34 @@ elseif(EXISTS "${DIR}/.hg")
   find_package(Hg)
   if(HG_FOUND)
     message("hg found: ${HG_EXECUTABLE}")
+    execute_process(COMMAND "${HG_EXECUTABLE}" "id" "-i" WORKING_DIRECTORY 
"${DIR}" RESULT_VARIABLE HG_RETURN_CODE
+      OUTPUT_VARIABLE HG_OUPUT_RES OUTPUT_STRIP_TRAILING_WHITESPACE)
+    if(HG_RETURN_CODE EQUAL 0 AND HG_OUPUT_RES)
+      set(MERCURIAL_ID "${HG_OUPUT_RES}")
+    else()
+      message(WARNING "Failed to find mercurial ID")
+      set(MERCURIAL_ID "Unknown")
+    endif()
   else()
     message(WARNING "Failed to find mercurial")
     set(MERCURIAL_ID "Unknown")
   endif()
-  execute_process(COMMAND "${HG_EXECUTABLE}" "id" "-i" WORKING_DIRECTORY 
"${DIR}" RESULT_VARIABLE HG_RETURN_CODE
-    OUTPUT_VARIABLE HG_OUPUT_RES OUTPUT_STRIP_TRAILING_WHITESPACE)
-  if(HG_RETURN_CODE EQUAL 0 AND HG_OUPUT_RES)
-    set(MERCURIAL_ID "${HG_OUPUT_RES}")
-  else()
-    message(WARNING "Failed to find mercurial ID")
-    set(MERCURIAL_ID "Unknown")
-  endif()
 elseif(EXISTS "${DIR}/.git")
   find_package(Git)
   if(GIT_FOUND)
     message("git found: ${GIT_EXECUTABLE}")
+    execute_process(COMMAND "${GIT_EXECUTABLE}" "rev-parse" "--short" "HEAD" 
WORKING_DIRECTORY "${DIR}"
+      RESULT_VARIABLE GIT_RETURN_CODE OUTPUT_VARIABLE GIT_OUPUT_RES 
OUTPUT_STRIP_TRAILING_WHITESPACE)
+    if(GIT_RETURN_CODE EQUAL 0 AND GIT_OUPUT_RES)
+      set(MERCURIAL_ID "${GIT_OUPUT_RES}")
+    else()
+      message(WARNING "Failed to find git ID")
+      set(MERCURIAL_ID "Unknown")
+    endif()
   else()
     message(WARNING "Failed to find git")
     set(MERCURIAL_ID "Unknown")
   endif()
-  execute_process(COMMAND "${GIT_EXECUTABLE}" "rev-parse" "--short" "HEAD" 
WORKING_DIRECTORY "${DIR}"
-    RESULT_VARIABLE GIT_RETURN_CODE OUTPUT_VARIABLE GIT_OUPUT_RES 
OUTPUT_STRIP_TRAILING_WHITESPACE)
-  if(GIT_RETURN_CODE EQUAL 0 AND GIT_OUPUT_RES)
-    set(MERCURIAL_ID "${GIT_OUPUT_RES}")
-  else()
-    message(WARNING "Failed to find git ID")
-    set(MERCURIAL_ID "Unknown")
-  endif()
 else()
   set(MERCURIAL_ID "Unknown")
 endif()
diff --git a/debian/changelog b/debian/changelog
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,25 @@
+monetdb (11.49.9) unstable; urgency=low
+
+  * Rebuilt.
+  * GH#7422: Aggregate functions with variadic arguments
+  * GH#7472: MonetDB server crashes in `tail_type`
+  * GH#7473: MonetDB server crashes in `SQLunionfunc`
+  * GH#7478: MonetDB server crashes in `exp_equal`
+  * GH#7496: Query on view fails to produce a resultset. Assertion triggered
+    in rel2bin_select.
+  * GH#7499: create schema + set schema inside a transaction that is rolled
+    back causes the connection to be aborted
+  * GH#7501: files remain in backup causing problems at restart
+  * GH#7503: MonetDB server crashes using `WHEN MATCHED THEN UPDATE`
+  * GH#7504: possible deadlock when a bat is made persistent when it is also
+    getting unloaded
+  * GH#7506: MonetDB Dec2023-SP2 crashes at `rel_value_exp2`
+  * GH#7507: BBPextend: ERROR: trying to extend BAT pool beyond the limit
+    (163840000)
+  * GH#7508: MonetDB Dec2023-SP2 crashes at `exp_ref`
+
+ -- Sjoerd Mullender <sjo...@acm.org>  Thu, 02 May 2024 12:35:52 +0200
+
 monetdb (11.49.7) unstable; urgency=low
 
   * Rebuilt.
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -2550,6 +2550,7 @@ BATmode(BAT *b, bool transient)
 
        BATiter bi = bat_iterator(b);
        bool mustrelease = false;
+       bool mustretain = false;
        bat bid = b->batCacheid;
 
        if (transient != bi.transient) {
@@ -2564,16 +2565,20 @@ BATmode(BAT *b, bool transient)
                        }
                }
 
-               /* persistent BATs get a logical reference */
+               /* we need to delay the calls to BBPretain and
+                * BBPrelease until after we have released our reference
+                * to the heaps (i.e. until after bat_iterator_end),
+                * because in either case, BBPfree can be called (either
+                * directly here or in BBPtrim) which waits for the heap
+                * reference to come down.  BBPretain calls incref which
+                * waits until the trim that is waiting for us is done,
+                * so that causes deadlock, and BBPrelease can call
+                * BBPfree which causes deadlock with a single thread */
                if (!transient) {
-                       BBPretain(bid);
+                       /* persistent BATs get a logical reference */
+                       mustretain = true;
                } else if (!bi.transient) {
-                       /* we need to delay the release because if there
-                        * is no fix and the bat is loaded, BBPrelease
-                        * can call BBPfree which calls BATfree which
-                        * may hang while waiting for the heap reference
-                        * that we have because of the BAT iterator to
-                        * come down, in other words, deadlock */
+                       /* transient BATs loose their logical reference */
                        mustrelease = true;
                }
                MT_lock_set(&GDKswapLock(bid));
@@ -2605,8 +2610,10 @@ BATmode(BAT *b, bool transient)
                MT_lock_unset(&GDKswapLock(bid));
        }
        bat_iterator_end(&bi);
-       /* release after bat_iterator_end because of refs to heaps */
-       if (mustrelease)
+       /* retain/release after bat_iterator_end because of refs to heaps */
+       if (mustretain)
+               BBPretain(bid);
+       else if (mustrelease)
                BBPrelease(bid);
        return GDK_SUCCEED;
 }
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -1711,6 +1711,9 @@ BBPjson_upgrade(json_storage_conversion 
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to