Changeset: 4b7fdaf3a228 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4b7fdaf3a228
Added Files:
sql/test/BugTracker-2020/Tests/select-and.Bug-6878.sql
sql/test/BugTracker-2020/Tests/select-and.Bug-6878.stable.err
sql/test/BugTracker-2020/Tests/select-and.Bug-6878.stable.out
sql/test/Tests/like_tests.sql
Removed Files:
sql/test/Tests/like_tests.SQL.py
sql/test/like_tests.sql
Modified Files:
MonetDB.spec
NT/mksqlwxs.py
cmake/monetdb-defines.cmake
cmake/monetdb-options.cmake
ctest/tools/embedded/CMakeLists.txt
debian/libmonetdb-dev.install
gdk/ChangeLog.Jun2020
gdk/gdk_hash.c
gdk/gdk_logger.c
gdk/gdk_select.c
monetdb5/mal/mal_debugger.c
monetdb5/modules/mal/pcre.c
sql/backends/monet5/sql_execute.c
sql/test/BugTracker-2020/Tests/All
sql/test/Tests/hot_snapshot.py
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64
sql/test/miscellaneous/Tests/simple_selects.sql
sql/test/miscellaneous/Tests/simple_selects.stable.out
Branch: unlock
Log Message:
merged
diffs (truncated from 672 to 300 lines):
diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -201,6 +201,7 @@ functionality of MonetDB.
%dir %{_includedir}/monetdb
%{_includedir}/monetdb/gdk*.h
%{_includedir}/monetdb/matomic.h
+%{_includedir}/monetdb/mstring.h
%{_includedir}/monetdb/monet*.h
%{_libdir}/libbat.so
%{_libdir}/pkgconfig/monetdb-gdk.pc
diff --git a/NT/mksqlwxs.py b/NT/mksqlwxs.py
--- a/NT/mksqlwxs.py
+++ b/NT/mksqlwxs.py
@@ -158,6 +158,7 @@ def main():
sorted([r'include\monetdb\{}'.format(x) for x in filter(lambda
x: (x.startswith('gdk') or x.startswith('monet') or x.startswith('mal')) and
x.endswith('.h'), os.listdir(os.path.join(sys.argv[3], 'include', 'monetdb')))]
+
[r'include\monetdb\mapi.h',
r'include\monetdb\matomic.h',
+ r'include\monetdb\mstring.h',
r'include\monetdb\stream.h',
r'include\monetdb\stream_socket.h']),
vital = 'no')
diff --git a/cmake/monetdb-defines.cmake b/cmake/monetdb-defines.cmake
--- a/cmake/monetdb-defines.cmake
+++ b/cmake/monetdb-defines.cmake
@@ -113,13 +113,8 @@ function(monetdb_configure_defines)
check_function_exists("uname" HAVE_UNAME)
# Some libc versions on Linux distributions don't have it
check_symbol_exists("semtimedop" "sys/types.h;sys/ipc.h;sys/sem.h"
HAVE_SEMTIMEDOP)
- cmake_push_check_state()
- if (NOT APPLE)
- set(CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES};pthread")
- endif()
- check_symbol_exists("pthread_kill" "pthread.h;signal.h" HAVE_PTHREAD_KILL)
- check_symbol_exists("pthread_sigmask" "pthread.h;signal.h"
HAVE_PTHREAD_SIGMASK)
- cmake_pop_check_state()
+ check_function_exists("pthread_kill" HAVE_PTHREAD_KILL)
+ check_function_exists("pthread_sigmask" HAVE_PTHREAD_SIGMASK)
check_symbol_exists("regcomp" "regex.h" HAVE_POSIX_REGEX)
endfunction()
diff --git a/cmake/monetdb-options.cmake b/cmake/monetdb-options.cmake
--- a/cmake/monetdb-options.cmake
+++ b/cmake/monetdb-options.cmake
@@ -74,13 +74,13 @@ option(SANITIZER
OFF)
cmake_dependent_option(STRICT
- "Enable strict compiler flags (default=ON for development sources, OFF for
tarball instalation)"
+ "Enable strict compiler flags (default=ON for development sources, OFF for
tarball installation)"
ON
"DEVELOPMENT"
OFF)
cmake_dependent_option(ASSERT
- "Enable asserts (default=ON for development sources, OFF for tarball
instalation)"
+ "Enable asserts (default=ON for development sources, OFF for tarball
installation)"
ON
"DEVELOPMENT"
OFF)
diff --git a/ctest/tools/embedded/CMakeLists.txt
b/ctest/tools/embedded/CMakeLists.txt
--- a/ctest/tools/embedded/CMakeLists.txt
+++ b/ctest/tools/embedded/CMakeLists.txt
@@ -10,72 +10,42 @@ add_executable(example1 example1.c)
target_link_libraries(example1
PRIVATE
monetdb_config_header
- embedded
- sqlinclude
- gdk
- mapi
- #sql
- )
+ embedded)
add_test(run_example1 example1)
add_executable(example2 example2.c)
target_link_libraries(example2
PRIVATE
monetdb_config_header
- embedded
- sqlinclude
- gdk
- mapi
- #sql
- )
+ embedded)
add_test(run_example2 example2)
add_executable(example_temporal example_temporal.c)
target_link_libraries(example_temporal
PRIVATE
monetdb_config_header
- embedded
- sqlinclude
- gdk
- mapi
- #sql
- )
+ embedded)
add_test(run_example_temporal example_temporal)
add_executable(example_decimals example_decimals.c)
target_link_libraries(example_decimals
PRIVATE
monetdb_config_header
- embedded
- sqlinclude
- gdk
- mapi
- #sql
- )
+ embedded)
add_test(run_example_decimals example_decimals)
add_executable(example_blob example_blob.c)
target_link_libraries(example_blob
PRIVATE
monetdb_config_header
- embedded
- sqlinclude
- gdk
- mapi
- #sql
- )
+ embedded)
add_test(run_example_blob example_blob)
add_executable(example_append example_append.c)
target_link_libraries(example_append
PRIVATE
monetdb_config_header
- embedded
- sqlinclude
- gdk
- mapi
- #sql
- )
+ embedded)
add_test(run_example_append example_append)
add_executable(backup backup.c mapi.h mapi.c
../../../clients/mapiclient/dump.c)
@@ -84,6 +54,6 @@ target_link_libraries(backup
PRIVATE
monetdb_config_header
embedded
- sqlinclude
- gdk)
+ stream
+ matomic)
add_test(run_backup backup)
diff --git a/debian/libmonetdb-dev.install b/debian/libmonetdb-dev.install
--- a/debian/libmonetdb-dev.install
+++ b/debian/libmonetdb-dev.install
@@ -1,5 +1,6 @@
debian/tmp/usr/lib/x86_64-linux-gnu/libbat.so usr/lib/x86_64-linux-gnu
debian/tmp/usr/include/monetdb/gdk*.h usr/include/monetdb
debian/tmp/usr/include/monetdb/matomic.h usr/include/monetdb
+debian/tmp/usr/include/monetdb/mstring.h usr/include/monetdb
debian/tmp/usr/include/monetdb/monet*.h usr/include/monetdb
debian/tmp/usr/lib/x86_64-linux-gnu/pkgconfig/monetdb-gdk.pc
usr/lib/x86_64-linux-gnu/pkgconfig
diff --git a/gdk/ChangeLog.Jun2020 b/gdk/ChangeLog.Jun2020
--- a/gdk/ChangeLog.Jun2020
+++ b/gdk/ChangeLog.Jun2020
@@ -1,3 +1,8 @@
# ChangeLog file for GDK
# This file is updated with Maddlog
+* Tue Jun 9 2020 Sjoerd Mullender <[email protected]>
+- Hash buckets come in variable widths. But if a BAT grows long enough so
+ that the BAT indexes that are stored in the buckets don't fit anymore,
+ the buckets need to be widened. This is now fixed.
+
diff --git a/gdk/gdk_hash.c b/gdk/gdk_hash.c
--- a/gdk/gdk_hash.c
+++ b/gdk/gdk_hash.c
@@ -35,7 +35,7 @@
#include "gdk.h"
#include "gdk_private.h"
-static int
+static uint8_t
HASHwidth(BUN hashsize)
{
if (hashsize <= (BUN) BUN2_NONE)
@@ -1007,51 +1007,61 @@ HASHprobe(const Hash *h, const void *v)
}
}
-void
-HASHins(BAT *b, BUN i, const void *v)
+static void
+HASHins_locked(BAT *b, BUN i, const void *v)
{
- MT_lock_set(&b->batIdxLock);
Hash *h = b->thash;
if (h == NULL) {
- /* nothing to do */
- } else if (h == (Hash *) 1) {
- GDKunlink(BBPselectfarm(b->batRole, b->ttype, hashheap),
- BATDIR,
- BBP_physical(b->batCacheid),
- "thash");
+ return;
+ }
+ if (h == (Hash *) 1) {
b->thash = NULL;
- } else if ((ATOMsize(b->ttype) > 2 &&
- HASHgrowbucket(b) != GDK_SUCCEED) ||
- ((i + 1) * h->width > h->heaplink.size &&
- HEAPextend(&h->heaplink,
- i * h->width + GDK_mmap_pagesize,
- true) != GDK_SUCCEED)) {
+ doHASHdestroy(b, h);
+ return;
+ }
+ if (HASHwidth(i + 1) > h->width &&
+ HASHupgradehashheap(b) != GDK_SUCCEED) {
+ return;
+ }
+ if ((ATOMsize(b->ttype) > 2 &&
+ HASHgrowbucket(b) != GDK_SUCCEED) ||
+ ((i + 1) * h->width > h->heaplink.size &&
+ HEAPextend(&h->heaplink,
+ i * h->width + GDK_mmap_pagesize,
+ true) != GDK_SUCCEED)) {
b->thash = NULL;
HEAPfree(&h->heapbckt, true);
HEAPfree(&h->heaplink, true);
GDKfree(h);
- } else {
- h->Link = h->heaplink.base;
- BUN c = HASHprobe(h, v);
- h->heaplink.free += h->width;
- BUN hb = HASHget(h, c);
- BUN hb2;
- BATiter bi = bat_iterator(b);
- for (hb2 = hb;
- hb2 != HASHnil(h);
- hb2 = HASHgetlink(h, hb2)) {
- if (ATOMcmp(h->type,
- v,
- BUNtail(bi, hb2)) == 0)
- break;
- }
- h->nheads += hb == HASHnil(h);
- h->nunique += hb2 == HASHnil(h);
- HASHputlink(h, i, hb);
- HASHput(h, c, i);
- h->heapbckt.dirty = true;
- h->heaplink.dirty = true;
+ return;
}
+ h->Link = h->heaplink.base;
+ BUN c = HASHprobe(h, v);
+ h->heaplink.free += h->width;
+ BUN hb = HASHget(h, c);
+ BUN hb2;
+ BATiter bi = bat_iterator(b);
+ for (hb2 = hb;
+ hb2 != HASHnil(h);
+ hb2 = HASHgetlink(h, hb2)) {
+ if (ATOMcmp(h->type,
+ v,
+ BUNtail(bi, hb2)) == 0)
+ break;
+ }
+ h->nheads += hb == HASHnil(h);
+ h->nunique += hb2 == HASHnil(h);
+ HASHputlink(h, i, hb);
+ HASHput(h, c, i);
+ h->heapbckt.dirty = true;
+ h->heaplink.dirty = true;
+}
+
+void
+HASHins(BAT *b, BUN i, const void *v)
+{
+ MT_lock_set(&b->batIdxLock);
+ HASHins_locked(b, i, v);
MT_lock_unset(&b->batIdxLock);
}
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -2123,7 +2123,7 @@ log_bat_clear(logger *lg, int id)
#define DBLKSZ 8192
#define SEGSZ (64*DBLKSZ)
-#define LOG_LARGE LL_CONSTANT(2)*1024
+#define LOG_LARGE (LL_CONSTANT(2)*1024)
//*1024*1024
static gdk_return
diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -1971,6 +1971,7 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT
rhval = ro - rl->hseqbase + rl->tseqbase;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list