Changeset: 5a346a4fbb59 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5a346a4fbb59
Modified Files:
NT/monetdb_config.h.in
clients/Tests/exports.stable.out
gdk/gdk.h
gdk/gdk_aggr.c
gdk/gdk_align.c
gdk/gdk_bat.c
gdk/gdk_batop.c
gdk/gdk_bbp.c
gdk/gdk_bbp.h
gdk/gdk_calc.c
gdk/gdk_calc_compare.h
gdk/gdk_cross.c
gdk/gdk_delta.c
gdk/gdk_group.c
gdk/gdk_heap.c
gdk/gdk_join.c
gdk/gdk_join_legacy.c
gdk/gdk_logger.c
gdk/gdk_private.h
gdk/gdk_sample.c
gdk/gdk_search.c
gdk/gdk_select.c
gdk/gdk_setop.c
gdk/gdk_storage.c
gdk/gdk_tm.c
gdk/gdk_unique.c
gdk/gdk_utils.c
geom/monetdb5/geom.c
monetdb5/extras/jaql/jaql.c
monetdb5/extras/jaql/json_jaql.c
monetdb5/extras/rdf/rdf_shredder.c
monetdb5/extras/rdf/rdfalgebra.c
monetdb5/extras/sphinx/sphinx.c
monetdb5/mal/Tests/tst1012.mal
monetdb5/mal/Tests/tst1012.stable.out
monetdb5/mal/mal_authorize.c
monetdb5/mal/mal_profiler.c
monetdb5/mal/mal_type.h
monetdb5/modules/atoms/batxml.c
monetdb5/modules/atoms/json.c
monetdb5/modules/atoms/mtime.c
monetdb5/modules/atoms/str.c
monetdb5/modules/kernel/algebra.c
monetdb5/modules/kernel/array.c
monetdb5/modules/kernel/bat5.c
monetdb5/modules/kernel/bat5.h
monetdb5/modules/kernel/batcolor.c
monetdb5/modules/kernel/batmmath.c
monetdb5/modules/kernel/batstr.c
monetdb5/modules/kernel/counters.c
monetdb5/modules/kernel/microbenchmark.c
monetdb5/modules/kernel/status.c
monetdb5/modules/mal/Tests/inspect05.stable.out
monetdb5/modules/mal/batExtensions.c
monetdb5/modules/mal/batExtensions.h
monetdb5/modules/mal/batExtensions.mal
monetdb5/modules/mal/bbp.c
monetdb5/modules/mal/clients.c
monetdb5/modules/mal/cluster.c
monetdb5/modules/mal/inspect.c
monetdb5/modules/mal/mal_mapi.c
monetdb5/modules/mal/manifold.c
monetdb5/modules/mal/mat.c
monetdb5/modules/mal/mdb.c
monetdb5/modules/mal/mkey.c
monetdb5/modules/mal/pcre.c
monetdb5/modules/mal/pqueue.c
monetdb5/modules/mal/querylog.c
monetdb5/modules/mal/sysmon.c
monetdb5/modules/mal/tablet.c
monetdb5/modules/mal/tokenizer.c
monetdb5/modules/mal/txtsim.c
monetdb5/modules/mal/zorder.c
monetdb5/optimizer/opt_pipes.c
monetdb5/optimizer/opt_statistics.c
monetdb5/tests/gdkTests/Tests/TMsubcommit.mal
monetdb5/tests/gdkTests/Tests/TMsubcommit.stable.out
monetdb5/tests/gdkTests/Tests/bat_insert.mal
monetdb5/tests/gdkTests/Tests/bat_insert.stable.out
monetdb5/tests/gdkTests/Tests/reload.mal
monetdb5/tests/gdkTests/Tests/str_heap.mal
monetdb5/tests/gdkTests/Tests/str_heap.stable.out
monetdb5/tools/Tests/mserver5--help.stable.err
sql/backends/monet5/LSST/lsst.c
sql/backends/monet5/UDF/udf.c
sql/backends/monet5/datacell/basket.c
sql/backends/monet5/datacell/dcoperator.c
sql/backends/monet5/datacell/emitter.c
sql/backends/monet5/datacell/petrinet.c
sql/backends/monet5/datacell/receptor.c
sql/backends/monet5/gsl/gsl.c
sql/backends/monet5/sql.c
sql/backends/monet5/sql_bat2time.c
sql/backends/monet5/sql_cast.c
sql/backends/monet5/sql_cast_impl_down_from_flt.h
sql/backends/monet5/sql_cast_impl_down_from_int.h
sql/backends/monet5/sql_cast_impl_up_to_flt.h
sql/backends/monet5/sql_cast_impl_up_to_int.h
sql/backends/monet5/sql_fround.c
sql/backends/monet5/sql_optimizer.c
sql/backends/monet5/sql_round.c
sql/backends/monet5/vaults/fits.c
sql/backends/monet5/vaults/mseed.c
sql/storage/bat/bat_logger.c
sql/storage/bat/bat_storage.c
sql/storage/bat/bat_utils.c
sql/storage/bat/bat_utils.h
sql/storage/restrict/restrict_storage.c
testing/Mtest.py.in
tools/mserver/mserver5.1
tools/mserver/mserver5.c
Branch: multifarm
Log Message:
Implemented a "multifarm" database; use --dbextra command line option.
diffs (truncated from 8079 to 300 lines):
diff --git a/NT/monetdb_config.h.in b/NT/monetdb_config.h.in
--- a/NT/monetdb_config.h.in
+++ b/NT/monetdb_config.h.in
@@ -738,9 +738,12 @@
#undef fstat
#endif
#define fstat _fstat64
-#ifndef S_ISREG /* in case this file wasn't included first */
+#ifndef S_ISREG
#define S_ISREG(mode) (((mode) & _S_IFMT) == _S_IFREG)
#endif
+#ifndef S_ISDIR
+#define S_ISDIR(mode) (((mode) & _S_IFMT) == _S_IFDIR)
+#endif
/* Define to the sub-directory in which libtool stores uninstalled libraries.
*/
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
@@ -24,7 +24,7 @@ BAT *BATantiuselect_(BAT *b, const void
BAT *BATappend(BAT *b, BAT *c, bit force);
void BATassertProps(BAT *b);
atomDesc BATatoms[];
-BAT *BATattach(int tt, const char *heapfile);
+BAT *BATattach(int tt, const char *heapfile, int role);
BAT *BATbandjoin(BAT *l, BAT *r, const void *mnus, const void *plus, bit li,
bit hi);
BAT *BATcalcabsolute(BAT *b, BAT *s);
BAT *BATcalcadd(BAT *b1, BAT *b2, BAT *s, int tp, int abort_on_error);
@@ -100,10 +100,10 @@ BAT *BATcalcxor(BAT *b1, BAT *b2, BAT *s
BAT *BATcalcxorcst(BAT *b, const ValRecord *v, BAT *s);
BAT *BATclear(BAT *b, int force);
BAT *BATcommit(BAT *b);
-BAT *BATconst(BAT *l, int tt, const void *val);
-BAT *BATconstant(int tt, const void *val, BUN cnt);
+BAT *BATconst(BAT *l, int tt, const void *val, int role);
+BAT *BATconstant(int tt, const void *val, BUN cnt, int role);
BAT *BATconvert(BAT *b, BAT *s, int tp, int abort_on_error);
-BAT *BATcopy(BAT *b, int ht, int tt, int writeable);
+BAT *BATcopy(BAT *b, int ht, int tt, int writeable, int role);
BUN BATcount(BAT *b);
BUN BATcount_no_nil(BAT *b);
BAT *BATcross(BAT *l, BAT *r);
@@ -160,7 +160,7 @@ int BATmmap(BAT *b, int hb, int tb, int
BAT *BATmode(BAT *b, int onoff);
gdk_return BATmultiprintf(stream *f, int argc, BAT *argv[], int printoid, int
order, int printorderby);
int BATname(BAT *b, const char *nme);
-BAT *BATnew(int hdtype, int tltype, BUN capacity);
+BAT *BATnew(int hdtype, int tltype, BUN capacity, int role);
BAT *BATorder(BAT *b);
BAT *BATorder_rev(BAT *b);
int BATordered(BAT *b);
@@ -212,6 +212,7 @@ BAT *BATundo(BAT *b);
BAT *BATuselect(BAT *b, const void *tl, const void *th);
BAT *BATuselect_(BAT *b, const void *tl, const void *th, bit li, bit hi);
BBPrec *BBP[N_BBPINIT];
+void BBPaddfarm(const char *dirname, int rolemask);
void BBPclear(bat bid);
void BBPcold(bat b);
int BBPcurstamp(void);
@@ -255,7 +256,7 @@ int GDKerror(_In_z_ _Printf_format_strin
void GDKexit(int status);
int GDKexiting(void);
int GDKfatal(_In_z_ _Printf_format_string_ const char *format, ...)
__attribute__((__format__(__printf__, 1, 2)));
-void GDKfilepath(str path, const char *nme, const char *mode, const char *ext);
+char *GDKfilepath(int farmid, const char *dir, const char *nme, const char
*ext);
void GDKfree(void *blk);
char *GDKgetenv(const char *name);
int GDKgetenv_int(const char *name, int def);
@@ -966,7 +967,7 @@ str BKCmergecand(bat *ret, bat *aid, bat
str BKCmirror(int *ret, int *bid);
str BKCmmap(bit *res, int *bid, int *hbns, int *tbns, int *hhp, int *thp);
str BKCmmap2(bit *res, int *bid, int *bns);
-str BKCnewBAT(int *res, int *ht, int *tt, BUN *cap);
+str BKCnewBAT(int *res, int *ht, int *tt, BUN *cap, int role);
str BKCorder(int *ret, int *bid);
str BKCorder_rev(int *ret, int *bid);
str BKCpersists(int *r, int *bid, bit *flg);
@@ -1120,7 +1121,7 @@ str CMDBATimprints(int *ret, int *bid);
str CMDBATimprintsize(lng *ret, int *bid);
str CMDBATnew(Client cntxt, MalBlkPtr m, MalStkPtr s, InstrPtr p);
str CMDBATnewDerived(Client cntxt, MalBlkPtr m, MalStkPtr s, InstrPtr p);
-str CMDBATnewint(Client cntxt, MalBlkPtr m, MalStkPtr s, InstrPtr p);
+str CMDBATnew_persistent(Client cntxt, MalBlkPtr m, MalStkPtr s, InstrPtr p);
str CMDBATpartition(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
str CMDBATpartition2(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
str CMDBATprod(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
@@ -1426,10 +1427,6 @@ int JSONtoString(str *s, int *len, json
str JSONunfold(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
str JSONvalueArray(json *ret, json *arg);
str JSONvalueTable(int *ret, json *j);
-str KVdropdatabase(str name);
-str KVget(str dbkey, str name, ValPtr val, int tpe);
-str KVnewdatabase(str name, str tpe);
-str KVput(str dbkey, str name, ValPtr val, int tpe);
char *M5OutOfMemory;
str MACROprocessor(Client cntxt, MalBlkPtr mb, Symbol t);
int MAL_MAXCLIENTS;
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -724,6 +724,7 @@ typedef struct {
storage_t storage; /* storage mode (mmap/malloc). */
storage_t newstorage; /* new desired storage mode at re-allocation. */
bte dirty; /* specific heap dirty marker */
+ bte farmid; /* id of farm where heap is located */
bat parentid; /* cache id of VIEW parent bat */
} Heap;
@@ -909,7 +910,8 @@ typedef struct {
descdirty:1, /* bat descriptor dirty marker */
restricted:2, /* access privileges */
persistence:1, /* should the BAT persist on disk? */
- unused:23; /* value=0 for now */
+ role:8, /* role of the bat */
+ unused:15; /* value=0 for now */
int sharecnt; /* incoming view count */
char map_head; /* mmap mode for head bun heap */
char map_tail; /* mmap mode for tail bun heap */
@@ -1001,6 +1003,7 @@ typedef int (*GDKfcn) ();
#define batStamp S->stamp
#define batSharecnt S->sharecnt
#define batRestricted S->restricted
+#define batRole S->role
#define creator_tid S->tid
#define htype H->type
#define ttype T->type
@@ -1109,7 +1112,7 @@ gdk_export void HEAP_free(Heap *heap, va
* @- BAT construction
* @multitable @columnfractions 0.08 0.7
* @item @code{BAT* }
- * @tab BATnew (int headtype, int tailtype, BUN cap)
+ * @tab BATnew (int headtype, int tailtype, BUN cap, int role)
* @item @code{BAT* }
* @tab BATextend (BAT *b, BUN newcap)
* @end multitable
@@ -1127,7 +1130,7 @@ gdk_export void HEAP_free(Heap *heap, va
*/
#define BATDELETE (-9999)
-gdk_export BAT *BATnew(int hdtype, int tltype, BUN capacity);
+gdk_export BAT *BATnew(int hdtype, int tltype, BUN capacity, int role);
gdk_export BAT *BATextend(BAT *b, BUN newcap);
/* internal */
@@ -1561,7 +1564,7 @@ gdk_export int BATgetaccess(BAT *b);
* @item BAT *
* @tab BATclear (BAT *b, int force)
* @item BAT *
- * @tab BATcopy (BAT *b, int ht, int tt, int writeable)
+ * @tab BATcopy (BAT *b, int ht, int tt, int writeable, int role)
* @item BAT *
* @tab BATmark (BAT *b, oid base)
* @item BAT *
@@ -1585,7 +1588,7 @@ gdk_export int BATgetaccess(BAT *b);
* exist at the same time.
*/
gdk_export BAT *BATclear(BAT *b, int force);
-gdk_export BAT *BATcopy(BAT *b, int ht, int tt, int writeable);
+gdk_export BAT *BATcopy(BAT *b, int ht, int tt, int writeable, int role);
gdk_export BAT *BATmark(BAT *b, oid base);
gdk_export BAT *BATmark_grp(BAT *b, BAT *g, oid *base);
@@ -1647,7 +1650,7 @@ gdk_export int BATmadvise(BAT *b, int hb
gdk_export int BATdelete(BAT *b);
gdk_export size_t BATmemsize(BAT *b, int dirty);
-gdk_export void GDKfilepath(str path, const char *nme, const char *mode, const
char *ext);
+gdk_export char *GDKfilepath(int farmid, const char *dir, const char *nme,
const char *ext);
gdk_export int GDKcreatedir(const char *nme);
/*
@@ -2547,7 +2550,7 @@ gdk_export int GDKfatal(_In_z_ _Printf_f
/* functions defined in gdk_bat.c */
gdk_export BUN void_replace_bat(BAT *b, BAT *u, bit force);
gdk_export int void_inplace(BAT *b, oid id, const void *val, bit force);
-gdk_export BAT *BATattach(int tt, const char *heapfile);
+gdk_export BAT *BATattach(int tt, const char *heapfile, int role);
#ifdef NATIVE_WIN32
#ifdef _MSC_VER
@@ -3288,8 +3291,8 @@ gdk_export BAT *BATantiuselect_(BAT *b,
gdk_export BAT *BATselect(BAT *b, const void *tl, const void *th);
gdk_export BAT *BATuselect(BAT *b, const void *tl, const void *th);
-gdk_export BAT *BATconstant(int tt, const void *val, BUN cnt);
-gdk_export BAT *BATconst(BAT *l, int tt, const void *val);
+gdk_export BAT *BATconstant(int tt, const void *val, BUN cnt, int role);
+gdk_export BAT *BATconst(BAT *l, int tt, const void *val, int role);
gdk_export BAT *BATthetajoin(BAT *l, BAT *r, int mode, BUN estimate);
gdk_export BAT *BATsemijoin(BAT *l, BAT *r);
gdk_export BAT *BATjoin(BAT *l, BAT *r, BUN estimate);
diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -471,7 +471,7 @@ BATgroupsum(BAT *b, BAT *g, BAT *e, BAT
if (BATcount(b) == 0 || ngrp == 0) {
/* trivial: no sums, so return bat aligned with g with
* nil in the tail */
- bn = BATconstant(tp, ATOMnilptr(tp), ngrp);
+ bn = BATconstant(tp, ATOMnilptr(tp), ngrp, TRANSIENT);
BATseqbase(bn, ngrp == 0 ? 0 : min);
return bn;
}
@@ -484,7 +484,7 @@ BATgroupsum(BAT *b, BAT *g, BAT *e, BAT
return BATconvert(b, s, tp, abort_on_error);
}
- bn = BATconstant(tp, ATOMnilptr(tp), ngrp);
+ bn = BATconstant(tp, ATOMnilptr(tp), ngrp, TRANSIENT);
if (bn == NULL) {
return NULL;
}
@@ -964,7 +964,7 @@ BATgroupprod(BAT *b, BAT *g, BAT *e, BAT
if (BATcount(b) == 0 || ngrp == 0) {
/* trivial: no products, so return bat aligned with g
* with nil in the tail */
- bn = BATconstant(tp, ATOMnilptr(tp), ngrp);
+ bn = BATconstant(tp, ATOMnilptr(tp), ngrp, TRANSIENT);
BATseqbase(bn, ngrp == 0 ? 0 : min);
return bn;
}
@@ -977,7 +977,7 @@ BATgroupprod(BAT *b, BAT *g, BAT *e, BAT
return BATconvert(b, s, tp, abort_on_error);
}
- bn = BATconstant(tp, ATOMnilptr(tp), ngrp);
+ bn = BATconstant(tp, ATOMnilptr(tp), ngrp, TRANSIENT);
if (bn == NULL) {
return NULL;
}
@@ -1242,11 +1242,11 @@ BATgroupavg(BAT **bnp, BAT **cntsp, BAT
if (BATcount(b) == 0 || ngrp == 0) {
/* trivial: no averages, so return bat aligned with g
* with nil in the tail */
- bn = BATconstant(TYPE_dbl, &dbl_nil, ngrp);
+ bn = BATconstant(TYPE_dbl, &dbl_nil, ngrp, TRANSIENT);
BATseqbase(bn, ngrp == 0 ? 0 : min);
if (cntsp) {
wrd zero = 0;
- if ((*cntsp = BATconstant(TYPE_wrd, &zero, ngrp)) ==
NULL) {
+ if ((*cntsp = BATconstant(TYPE_wrd, &zero, ngrp,
TRANSIENT)) == NULL) {
BBPreclaim(bn);
return GDK_FAIL;
}
@@ -1265,7 +1265,7 @@ BATgroupavg(BAT **bnp, BAT **cntsp, BAT
return GDK_FAIL;
if (cntsp) {
wrd one = 1;
- if ((*cntsp = BATconstant(TYPE_wrd, &one, ngrp)) ==
NULL) {
+ if ((*cntsp = BATconstant(TYPE_wrd, &one, ngrp,
TRANSIENT)) == NULL) {
BBPreclaim(bn);
return GDK_FAIL;
}
@@ -1289,7 +1289,7 @@ BATgroupavg(BAT **bnp, BAT **cntsp, BAT
break;
}
if (cntsp) {
- if ((*cntsp = BATnew(TYPE_void, TYPE_wrd, ngrp)) == NULL)
+ if ((*cntsp = BATnew(TYPE_void, TYPE_wrd, ngrp, TRANSIENT)) ==
NULL)
goto alloc_fail;
cnts = (wrd *) Tloc(*cntsp, BUNfirst(*cntsp));
memset(cnts, 0, ngrp * sizeof(wrd));
@@ -1299,7 +1299,7 @@ BATgroupavg(BAT **bnp, BAT **cntsp, BAT
goto alloc_fail;
}
- bn = BATnew(TYPE_void, TYPE_dbl, ngrp);
+ bn = BATnew(TYPE_void, TYPE_dbl, ngrp, TRANSIENT);
if (bn == NULL)
goto alloc_fail;
dbls = (dbl *) Tloc(bn, BUNfirst(bn));
@@ -1583,12 +1583,12 @@ BATgroupcount(BAT *b, BAT *g, BAT *e, BA
/* trivial: no products, so return bat aligned with g
* with zero in the tail */
wrd zero = 0;
- bn = BATconstant(TYPE_wrd, &zero, ngrp);
+ bn = BATconstant(TYPE_wrd, &zero, ngrp, TRANSIENT);
BATseqbase(bn, ngrp == 0 ? 0 : min);
return bn;
}
- bn = BATnew(TYPE_void, TYPE_wrd, ngrp);
+ bn = BATnew(TYPE_void, TYPE_wrd, ngrp, TRANSIENT);
if (bn == NULL)
return NULL;
cnts = (wrd *) Tloc(bn, BUNfirst(bn));
@@ -1701,12 +1701,12 @@ BATgroupsize(BAT *b, BAT *g, BAT *e, BAT
/* trivial: no products, so return bat aligned with g
* with zero in the tail */
wrd zero = 0;
- bn = BATconstant(TYPE_wrd, &zero, ngrp);
+ bn = BATconstant(TYPE_wrd, &zero, ngrp, TRANSIENT);
BATseqbase(bn, ngrp == 0 ? 0 : min);
return bn;
}
- bn = BATnew(TYPE_void, TYPE_wrd, ngrp);
+ bn = BATnew(TYPE_void, TYPE_wrd, ngrp, TRANSIENT);
if (bn == NULL)
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list