Changeset: 73cdbbcb3a7c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/73cdbbcb3a7c
Modified Files:
clients/Tests/exports.stable.out
gdk/gdk.h
gdk/gdk_batop.c
gdk/gdk_tm.c
sql/server/rel_optimize_sel.c
Branch: no_type_bat
Log Message:
merged with default
diffs (truncated from 486 to 300 lines):
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
@@ -181,7 +181,6 @@ BAT *BATproject2(BAT *restrict l, BAT *r
BAT *BATprojectchain(BAT **bats);
gdk_return BATrangejoin(BAT **r1p, BAT **r2p, BAT *l, BAT *rl, BAT *rh, BAT
*sl, BAT *sr, bool li, bool hi, bool anti, bool symmetric, BUN estimate)
__attribute__((__warn_unused_result__));
gdk_return BATreplace(BAT *b, BAT *p, BAT *n, bool force)
__attribute__((__warn_unused_result__));
-gdk_return BATreplacepos(BAT *b, const oid *positions, BAT *n, bool autoincr,
bool force) __attribute__((__warn_unused_result__));
void BATrmprop(BAT *b, enum prop_t idx);
void BATrmprop_nolock(BAT *b, enum prop_t idx);
gdk_return BATrtree(BAT *wkb, BAT *mbr);
@@ -401,12 +400,10 @@ ssize_t OIDtoStr(str *dst, size_t *len,
BUN ORDERfnd(BAT *b, Heap *oidxh, const void *v);
BUN ORDERfndfirst(BAT *b, Heap *oidxh, const void *v);
BUN ORDERfndlast(BAT *b, Heap *oidxh, const void *v);
-void RTREEdecref(BAT *b);
void RTREEdestroy(BAT *b);
bool RTREEexists(BAT *b);
-bool RTREEexists_bid(bat *bid);
+bool RTREEexists_bid(bat bid);
void RTREEfree(BAT *b);
-void RTREEincref(BAT *b);
BUN *RTREEsearch(BAT *b, mbr_t *inMBR, int result_limit);
BUN SORTfnd(BAT *b, const void *v);
BUN SORTfndfirst(BAT *b, const void *v);
@@ -415,7 +412,6 @@ gdk_return STRMPcreate(BAT *b, BAT *s);
void STRMPdestroy(BAT *b);
BAT *STRMPfilter(BAT *b, BAT *s, const char *q, const bool keep_nils);
bool THRhighwater(void);
-gdk_return TMsubcommit(BAT *bl) __attribute__((__warn_unused_result__));
gdk_return TMsubcommit_list(bat *restrict subcommit, BUN *restrict sizes, int
cnt, lng logno) __attribute__((__warn_unused_result__));
void VALclear(ValPtr v);
int VALcmp(const ValRecord *p, const ValRecord *q);
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -357,13 +357,6 @@ gdk_export _Noreturn void GDKfatal(_In_z
#include "stream.h"
#include "mstring.h"
-#ifdef HAVE_RTREE
-#ifndef SIZEOF_RTREE_COORD_T
-#define SIZEOF_RTREE_COORD_T 4
-#endif
-#include <rtree.h>
-#endif
-
#undef MIN
#undef MAX
#define MAX(A,B) ((A)<(B)?(B):(A))
@@ -1314,8 +1307,6 @@ gdk_export gdk_return BATreplace(BAT *b,
__attribute__((__warn_unused_result__));
gdk_export gdk_return BATupdate(BAT *b, BAT *p, BAT *n, bool force)
__attribute__((__warn_unused_result__));
-gdk_export gdk_return BATreplacepos(BAT *b, const oid *positions, BAT *n, bool
autoincr, bool force)
- __attribute__((__warn_unused_result__));
gdk_export gdk_return BATupdatepos(BAT *b, const oid *positions, BAT *n, bool
autoincr, bool force)
__attribute__((__warn_unused_result__));
@@ -1904,21 +1895,12 @@ gdk_export gdk_return BATsetstrimps(BAT
/* Rtree structure functions */
#ifdef HAVE_RTREE
-//TODO REMOVE
-typedef struct mbr_t {
- float xmin;
- float ymin;
- float xmax;
- float ymax;
-
-} mbr_t;
-
gdk_export bool RTREEexists(BAT *b);
-gdk_export bool RTREEexists_bid(bat *bid);
+gdk_export bool RTREEexists_bid(bat bid);
gdk_export gdk_return BATrtree(BAT *wkb, BAT* mbr);
-gdk_export BUN* RTREEsearch(BAT *b, mbr_t *inMBR, int result_limit);
-gdk_export void RTREEdecref(BAT *b);
-gdk_export void RTREEincref(BAT *b);
+/* inMBR is really a struct mbr * from geom module, but that is not
+ * available here */
+gdk_export BUN* RTREEsearch(BAT *b, const void *inMBR, int result_limit);
#endif
gdk_export void RTREEdestroy(BAT *b);
@@ -2100,8 +2082,6 @@ BUNtoid(BAT *b, BUN p)
/*
* @+ Transaction Management
*/
-gdk_export gdk_return TMsubcommit(BAT *bl)
- __attribute__((__warn_unused_result__));
gdk_export gdk_return TMsubcommit_list(bat *restrict subcommit, BUN *restrict
sizes, int cnt, lng logno)
__attribute__((__warn_unused_result__));
diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -1783,12 +1783,14 @@ BATupdate(BAT *b, BAT *p, BAT *n, bool f
return BATappend_or_update(b, p, NULL, n, true, false, force);
}
+#if 0 /* not used */
/* like BATreplace, but the positions are given by an array of oid values */
gdk_return
BATreplacepos(BAT *b, const oid *positions, BAT *n, bool autoincr, bool force)
{
return BATappend_or_update(b, NULL, positions, n, false, autoincr,
force);
}
+#endif
/* like BATreplace, but the positions are given by an array of oid
* values, and they may specify locations beyond the end of b */
diff --git a/gdk/gdk_private.h b/gdk/gdk_private.h
--- a/gdk/gdk_private.h
+++ b/gdk/gdk_private.h
@@ -459,14 +459,6 @@ struct Strimps {
* bitstring construction */
};
-#ifdef HAVE_RTREE
-struct RTree {
- ATOMIC_TYPE refs; /* counter for logical references to the rtree
*/
- rtree_t *rtree; /* rtree structure */
- bool destroy; /* destroy rtree when there are no more logical
references */
-};
-#endif
-
typedef struct {
MT_Lock swap;
} batlock_t;
diff --git a/gdk/gdk_rtree.c b/gdk/gdk_rtree.c
--- a/gdk/gdk_rtree.c
+++ b/gdk/gdk_rtree.c
@@ -25,15 +25,37 @@
* - DB Farm is persistent i.e. not in memory
*/
#ifdef HAVE_RTREE
+
+#ifndef SIZEOF_RTREE_COORD_T
+#define SIZEOF_RTREE_COORD_T 4
+#endif
+#include <rtree.h>
+
+struct RTree {
+ ATOMIC_TYPE refs; /* counter for logical references to the rtree
*/
+ rtree_t *rtree; /* rtree structure */
+ bool destroy; /* destroy rtree when there are no more logical
references */
+};
+
+/* this is a copy from the geom module */
+typedef struct mbr {
+ float xmin;
+ float ymin;
+ float xmax;
+ float ymax;
+
+} mbr;
+
static bool
-RTREEpersistcheck (BAT *b) {
+RTREEpersistcheck(BAT *b)
+{
return ((BBP_status(b->batCacheid) & BBPEXISTING)
&& b->batInserted == b->batCount
&& !b->theap->dirty
&& !GDKinmemory(b->theap->farmid));
}
-void
+static void
RTREEdecref(BAT *b)
{
ATOMIC_BASE_TYPE refs = ATOMIC_DEC(&b->trtree->refs);
@@ -48,7 +70,7 @@ RTREEdecref(BAT *b)
}
-void
+static void
RTREEincref(BAT *b)
{
(void) ATOMIC_INC(&b->trtree->refs);
@@ -56,7 +78,7 @@ RTREEincref(BAT *b)
// Persist rtree to disk if the conditions are right
static gdk_return
-persistRtree (BAT *b)
+persistRtree(BAT *b)
{
if (RTREEpersistcheck(b)) {
//TODO Necessary?
@@ -67,8 +89,7 @@ persistRtree (BAT *b)
const char * filename = BBP_physical(b->batCacheid);
int farmid = b->theap->farmid;
- int fd = GDKfdlocate(farmid, filename, "w", "bsrt");
- FILE *file_stream = fdopen(fd,"w");
+ FILE *file_stream = GDKfilelocate(farmid, filename,
"w", "bsrt");
if (file_stream != NULL) {
int err;
@@ -79,20 +100,21 @@ persistRtree (BAT *b)
return GDK_FAIL;
}
- if (!(GDKdebug & NOSYNCMASK)) {
- #if defined(NATIVE_WIN32)
- _commit(fd);
- #elif defined(HAVE_FDATASYNC)
- fdatasync(fd);
- #elif defined(HAVE_FSYNC)
- fsync(fd);
- #endif
+ if (fflush(file_stream) == EOF ||
+ (!(ATOMIC_GET(&GDKdebug) & NOSYNCMASK)
+#if defined(NATIVE_WIN32)
+ && _commit(_fileno(file_stream)) < 0
+#elif defined(HAVE_FDATASYNC)
+ && fdatasync(fileno(file_stream)) < 0
+#elif defined(HAVE_FSYNC)
+ && fsync(fileno(file_stream)) < 0
+#endif
+ )) {
+ GDKsyserror("Syncing %s.bsrt failed\n",
filename);
}
fclose(file_stream);
}
else {
- GDKerror("%s",strerror(errno));
- close(fd);
return GDK_FAIL;
}
}
@@ -103,16 +125,13 @@ persistRtree (BAT *b)
}
static gdk_return
-BATcheckrtree(BAT *b) {
+BATcheckrtree(BAT *b)
+{
const char * filename = BBP_physical(b->batCacheid);
int farmid = b->theap->farmid;
- int fd = GDKfdlocate(farmid, filename, "r", "bsrt");
//Do we have the rtree on file?
- if (fd == -1)
- return GDK_SUCCEED;
-
- FILE *file_stream = fdopen(fd,"r");
+ FILE *file_stream = GDKfilelocate(farmid, filename, "r", "bsrt");
if (file_stream != NULL) {
rtree_t* rtree = rtree_bsrt_read(file_stream);
if (!rtree) {
@@ -128,15 +147,14 @@ BATcheckrtree(BAT *b) {
return GDK_SUCCEED;
}
else {
- GDKerror("%s",strerror(errno));
- close(fd);
return GDK_FAIL;
}
}
//Check if RTree exists on file (previously created index)
static bool
-RTREEexistsonfile(BAT *b) {
+RTREEexistsonfile(BAT *b)
+{
const char * filename = BBP_physical(b->batCacheid);
if (!b->theap) return false;
@@ -176,11 +194,11 @@ RTREEexists(BAT *b)
}
bool
-RTREEexists_bid(bat *bid)
+RTREEexists_bid(bat bid)
{
BAT *b;
bool ret;
- if ((b = BATdescriptor(*bid)) == NULL)
+ if ((b = BATdescriptor(bid)) == NULL)
return false;
ret = RTREEexists(b);
BBPunfix(b->batCacheid);
@@ -188,7 +206,7 @@ RTREEexists_bid(bat *bid)
}
gdk_return
-BATrtree(BAT *wkb, BAT *mbr)
+BATrtree(BAT *wkb, BAT *mbrb)
{
BAT *pb;
BATiter bi;
@@ -219,12 +237,12 @@ BATrtree(BAT *wkb, BAT *mbr)
GDKerror("rtree_new failed\n");
return GDK_FAIL;
}
- bi = bat_iterator(mbr);
- canditer_init(&ci, mbr,NULL);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]