Changeset: 645c75d4fc2d for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=645c75d4fc2d
Added Files:
sql/test/pg_regress/Tests/oid.stable.err.oid32.int128
Modified Files:
clients/Tests/All
clients/Tests/exports.stable.out
clients/mapilib/mapi.c
gdk/gdk_bbp.c
gdk/gdk_private.h
gdk/gdk_system.c
gdk/gdk_utils.c
gdk/gdk_utils.h
java/ChangeLog
java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
monetdb5/mal/mal.c
monetdb5/mal/mal.h
monetdb5/mal/mal_authorize.c
monetdb5/mal/mal_client.c
monetdb5/mal/mal_dataflow.c
monetdb5/mal/mal_factory.c
monetdb5/mal/mal_linker.c
monetdb5/mal/mal_module.c
monetdb5/mal/mal_namespace.c
monetdb5/mal/mal_private.h
monetdb5/mal/mal_recycle.c
monetdb5/mal/mal_resource.c
monetdb5/mal/mal_runtime.c
monetdb5/mal/mal_scenario.c
monetdb5/modules/kernel/bat5.c
monetdb5/modules/mal/Tests/remote03.malC
monetdb5/modules/mal/Tests/remote03.stable.err
sql/test/BugTracker-2012/Tests/querycache.Bug-3212.stable.out
sql/test/BugTracker/Tests/insert_not_exists.SF-1380287.stable.out
sql/test/Skyserver/Tests/Skyserver.stable.out
sql/test/Tests/All
sql/test/bugs/Tests/unicode_varchar-bug-sf-1041324_JdbcClient.stable.out
sql/test/bugs/Tests/unicode_varchar-bug-sf-1041324_MapiClient.stable.out
sql/test/leaks/Tests/All
sql/test/pg_regress/Tests/int8.sql
sql/test/pg_regress/Tests/int8.stable.err
sql/test/pg_regress/Tests/int8.stable.out
sql/test/pg_regress/Tests/int8.stable.out.int128
sql/test/pg_regress/Tests/random.sql
sql/test/pg_regress/Tests/random.stable.out
sql/test/pg_regress/Tests/strings.stable.out
Branch: embedded
Log Message:
merge with default
diffs (truncated from 1913 to 300 lines):
diff --git a/clients/Tests/All b/clients/Tests/All
--- a/clients/Tests/All
+++ b/clients/Tests/All
@@ -1,4 +1,4 @@
exports
-HAVE_NETCDF&HAVE_FITS&HAVE_GEOM&HAVE_GSL&HAVE_LIBR&HAVE_SAMTOOLS&HAVE_SPHINXCLIENT?MAL-signatures
-HAVE_NETCDF&HAVE_FITS&HAVE_GEOM&HAVE_GSL&HAVE_SAMTOOLS&!BITS32&!BITS64OID32?SQL-dump
+HAVE_FITS&HAVE_GEOM&HAVE_GSL&HAVE_LIBR&!HAVE_LIDAR&HAVE_NETCDF&HAVE_SAMTOOLS&HAVE_SPHINXCLIENT?MAL-signatures
+!BITS32&!BITS64OID32&HAVE_FITS&HAVE_GEOM&HAVE_GSL&!HAVE_LIDAR&HAVE_NETCDF&HAVE_SAMTOOLS?SQL-dump
MERCURIAL?malcheck
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -236,6 +236,7 @@ int GDKnr_threads;
void GDKqsort(void *h, void *t, const void *base, size_t n, int hs, int ts,
int tpe);
void GDKqsort_rev(void *h, void *t, const void *base, size_t n, int hs, int
ts, int tpe);
void *GDKrealloc(void *pold, size_t size)
__attribute__((__warn_unused_result__));
+void GDKreset(int status);
void GDKsetenv(str name, str value);
ssize_t GDKstrFromStr(unsigned char *dst, const unsigned char *src, ssize_t
len);
str GDKstrdup(const char *s) __attribute__((__warn_unused_result__));
@@ -722,6 +723,7 @@ str AUTHgetUsername(str *ret, Client c);
str AUTHgetUsers(BAT **ret1, BAT **ret2, Client c);
str AUTHinitTables(str *passwd);
str AUTHremoveUser(Client c, str *username);
+void AUTHreset(void) __attribute__((__visibility__("hidden")));
str AUTHresolveUser(str *ret, oid *uid);
str AUTHsetPassword(Client c, str *username, str *passwd);
str AUTHunlockVault(str *password);
@@ -2190,15 +2192,24 @@ str malCommandCall(MalStkPtr stk, InstrP
int malProfileMode;
str malRef;
MT_Lock mal_beatLock;
+void mal_client_reset(void) __attribute__((__visibility__("hidden")));
ClientRec *mal_clients;
MT_Lock mal_contextLock;
MT_Lock mal_copyLock;
+void mal_dataflow_reset(void) __attribute__((__visibility__("hidden")));
MT_Lock mal_delayLock;
void mal_exit(void);
+void mal_factory_reset(void) __attribute__((__visibility__("hidden")));
int mal_init(void);
+void mal_linker_reset(void) __attribute__((__visibility__("hidden")));
+void mal_module_reset(void) __attribute__((__visibility__("hidden")));
+void mal_namespace_reset(void) __attribute__((__visibility__("hidden")));
MT_Lock mal_profileLock;
str mal_quote(const char *msg, size_t size);
MT_Lock mal_remoteLock;
+void mal_resource_reset(void) __attribute__((__visibility__("hidden")));
+void mal_runtime_reset(void) __attribute__((__visibility__("hidden")));
+void mal_scenario_reset(void) __attribute__((__visibility__("hidden")));
int mal_trace;
void mal_unquote(char *msg);
str manifoldRef;
@@ -2253,6 +2264,7 @@ char monet_characteristics[PATHLENGTH];
char monet_cwd[PATHLENGTH];
size_t monet_memory;
void moveInstruction(MalBlkPtr mb, int pc, int target);
+void mserver_reset(void);
str mtimeRef;
str mulRef;
str multicolumnRef;
diff --git a/clients/mapilib/mapi.c b/clients/mapilib/mapi.c
--- a/clients/mapilib/mapi.c
+++ b/clients/mapilib/mapi.c
@@ -1593,7 +1593,9 @@ close_result(MapiHdl hdl)
hdl->active == result &&
read_into_cache(hdl, -1) != MOK)
return MERROR;
- assert(hdl->active != result);
+ if( hdl->active == result)
+ return MERROR;
+ //assert(hdl->active != result);
if (result->fields) {
for (i = 0; i < result->maxfields; i++) {
if (result->fields[i].tablename)
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -119,6 +119,7 @@ static gdk_return BBPdir(int cnt, bat *s
static MT_Lock stampLock MT_LOCK_INITIALIZER("stampLock");
#endif
static volatile ATOMIC_TYPE stamp = 0;
+
static inline int
BBPstamp(void)
{
@@ -3923,8 +3924,7 @@ BBPdiskscan(const char *parent)
#else
delete = TRUE;
#endif
- } else if (strncmp(p + 1, "hhash", 5) == 0 ||
- strncmp(p + 1, "thash", 5) == 0) {
+ } else if (strncmp(p + 1, "thash", 5) == 0) {
#ifdef PERSISTENTHASH
BAT *b = getdesc(bid);
delete = b == NULL;
@@ -4019,3 +4019,34 @@ BBPatom_load(int atom)
}
#endif
+void
+gdk_bbp_reset(void)
+{
+ memset((char*) BBP, 0, sizeof(BBP));
+ BBPlimit = 0;
+ BBPsize = 0;
+ memset((char*) BBPfarms, 0, sizeof(BBPfarms));
+ BBP_hash = 0;
+ BBP_mask = 0;
+ stamp = 0;
+
+ BBP_curstamp = 0;
+ BBP_notrim = ~((MT_Id) 0);
+ BBP_dirty = 0;
+ BBPin = 0;
+ BBPout = 0;
+
+ locked_by = 0;
+ BBPunloadCnt = 0;
+ memset((char*) lastused, 0, sizeof(lastused));
+ memset((char*) bbptrim, 0, sizeof(bbptrim));
+ bbptrimfirst = BBPMAXTRIM;
+ bbptrimlast = 0;
+ bbptrimmax = BBPMAXTRIM;
+ bbpscanstart = 1;
+ bbpunloadtail = 0;
+ bbpunload = 0;
+ backup_files = 0;
+ backup_dir = 0;
+ backup_subdir = 0;
+}
diff --git a/gdk/gdk_private.h b/gdk/gdk_private.h
--- a/gdk/gdk_private.h
+++ b/gdk/gdk_private.h
@@ -94,6 +94,8 @@ void BBPdump(void); /* never called: fo
__attribute__((__visibility__("hidden")));
__hidden void BBPunshare(bat b)
__attribute__((__visibility__("hidden")));
+__hidden void gdk_bbp_reset(void)
+ __attribute__((__visibility__("hidden")));
__hidden gdk_return BUNreplace(BAT *b, oid left, const void *right, bit force)
__attribute__((__visibility__("hidden")));
__hidden void GDKclrerr(void)
@@ -205,6 +207,10 @@ void BBPdump(void); /* never called: fo
__attribute__((__visibility__("hidden")));
__hidden BAT *virtualize(BAT *bn)
__attribute__((__visibility__("hidden")));
+__hidden void gdk_bbp_reset(void)
+ __attribute__((__visibility__("hidden")));
+__hidden void gdk_system_reset(void)
+ __attribute__((__visibility__("hidden")));
#define BBP_BATMASK 511
#define BBP_THREADMASK 63
diff --git a/gdk/gdk_system.c b/gdk/gdk_system.c
--- a/gdk/gdk_system.c
+++ b/gdk/gdk_system.c
@@ -165,6 +165,12 @@ static struct winthread {
static CRITICAL_SECTION winthread_cs;
static int winthread_cs_init = 0;
+void
+gdk_system_reset(void)
+{
+ winthread_cs_init = 0;
+}
+
static struct winthread *
find_winthread(DWORD tid)
{
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -24,6 +24,9 @@ static char GDKdbpathStr[PATHLENGTH] = {
BAT *GDKkey = NULL;
BAT *GDKval = NULL;
+int GDKdebug = 0;
+
+static char THRprintbuf[BUFSIZ];
#include <signal.h>
@@ -1239,46 +1242,49 @@ GDKexiting(void)
/* coverity[+kill] */
void
-GDKexit(int status)
+GDKreset(int status)
{
-#ifndef HAVE_EMBEDDED
- if (GDKlockFile == NULL) {
- /* no database lock, so no threads, so exit now */
- MT_global_exit(status);
+ MT_Id pid = MT_getpid();
+ Thread t, s;
+ int i;
+
+ if( GDKkey){
+ BBPunfix(GDKkey->batCacheid);
+ GDKkey = 0;
}
-#endif
- if (ATOMIC_TAS(GDKstopped, GDKstoppedLock) == 0) {
- MT_Id pid = MT_getpid();
- Thread t, s;
- int i;
+ if( GDKval){
+ BBPunfix(GDKval->batCacheid);
+ GDKval = 0;
+ }
+ if (GDKvmtrim_id)
+ MT_join_thread(GDKvmtrim_id);
+ /* first give the other threads a chance to exit properly*/
+ for (i = 0; i < 10 && GDKnrofthreads; i++) {
+ MT_lock_set(&GDKthreadLock);
+ for (t = GDKthreads, s = t + THREADS; t < s; t++)
+ if (t->pid && t->pid != pid)
+ break;
+ MT_lock_unset(&GDKthreadLock);
+ if (t == s) /* no other threads? */
+ break;
+ MT_sleep_ms(CATNAP);
+ }
+ if (status == 0) {
+ /* they had there chance, now kill them */
MT_lock_set(&GDKthreadLock);
- GDKnrofthreads = 0;
- MT_lock_unset(&GDKthreadLock);
- if (GDKvmtrim_id)
- MT_join_thread(GDKvmtrim_id);
- /* first give the other threads a chance to exit */
- for (i = 0; i < 10; i++) {
- MT_lock_set(&GDKthreadLock);
- for (t = GDKthreads, s = t + THREADS; t < s; t++)
- if (t->pid && t->pid != pid)
- break;
- MT_lock_unset(&GDKthreadLock);
- if (t == s) /* no other threads? */
- break;
- MT_sleep_ms(CATNAP);
+ for (t = GDKthreads, s = t + THREADS; t < s; t++) {
+ if (t->pid) {
+ MT_Id victim = t->pid;
+
+ if (t->pid != pid) {
+ fprintf(stderr, "#GDKexit: killing
thread %d\n", MT_kill_thread(victim));
+ }
+ GDKnrofthreads --;
+ }
}
- if (status == 0) {
- /* they had their chance, now kill them */
- MT_lock_set(&GDKthreadLock);
- for (t = GDKthreads, s = t + THREADS; t < s; t++) {
- if (t->pid && t->pid != pid) {
- fprintf(stderr, "#GDKexit: killing
thread\n");
- MT_kill_thread(t->pid);
- }
- }
- MT_lock_unset(&GDKthreadLock);
- }
+ assert(GDKnrofthreads == 0);
+ /* all threads ceased running, now we can clean up */
#if 0
/* we can't clean up after killing threads */
BBPexit();
@@ -1288,14 +1294,51 @@ GDKexit(int status)
#if !defined(USE_PTHREAD_LOCKS) && !defined(NDEBUG)
TEMDEBUG GDKlockstatistics(1);
#endif
-#ifdef HAVE_EMBEDDED
- GDKatomcnt = TYPE_str + 1;
- return;
-#else
+ GDKdebug = 0;
+ strcpy(GDKdbpathStr,"dbpath");
+ GDK_mmap_minsize = (size_t) 1 << 18;
+ GDK_mmap_pagesize = (size_t) 1 << 16;
+ GDK_mem_maxsize = GDK_VM_MAXSIZE;
+ GDK_vm_maxsize = GDK_VM_MAXSIZE;
+
+ GDK_vm_trim = 1;
+
+ GDK_mallocedbytes_estimate = 0;
+ GDK_vm_cursize = 0;
+ _MT_pagesize = 0;
+ _MT_npages = 0;
+#ifdef GDK_VM_KEEPHISTO
+ memset((char*)GDK_vm_nallocs[MAX_BIT], 0,
sizeof(GDK_vm_nallocs));
+#endif
+#ifdef GDK_MEM_KEEPHISTO
+ memset((char*)GDK_nmallocs[MAX_BIT], 0, sizeof(GDK_nmallocs));
+#endif
+ GDKvmtrim_id =0;
+ GDKnr_threads = 0;
+ GDKnrofthreads = 0;
+ memset((char*) GDKbatLock,0, sizeof(GDKbatLock));
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list