Changeset: bbf52f558643 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=bbf52f558643
Added Files:
monetdb5/modules/kernel/algebra.c
monetdb5/modules/kernel/algebra.h
monetdb5/modules/kernel/algebra.mal
monetdb5/modules/mal/json_util.c
monetdb5/modules/mal/json_util.h
monetdb5/modules/mal/json_util.mal
monetdb5/optimizer/opt_json.c
monetdb5/optimizer/opt_json.h
Removed Files:
monetdb5/mal/Tests/recycle04.mal
monetdb5/mal/Tests/recycle04.stable.err
monetdb5/mal/Tests/recycle04.stable.out
monetdb5/mal/Tests/recycle13.mal
monetdb5/mal/Tests/recycle13.stable.err
monetdb5/mal/Tests/recycle13.stable.out
monetdb5/modules/kernel/algebra.mx
Modified Files:
.hgtags
NT/monetdb_config.h.in
clients/Tests/exports.stable.out
configure.ag
gdk/gdk_aggr.c
gdk/gdk_bat.c
gdk/gdk_bbp.c
gdk/gdk_calc.c
gdk/gdk_calc.h
gdk/gdk_calc_private.h
gdk/gdk_heap.c
gdk/gdk_join.c
gdk/gdk_posix.c
gdk/gdk_private.h
monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.sql
monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
monetdb5/mal/Tests/All
monetdb5/mal/Tests/recycle00.mal
monetdb5/mal/Tests/recycle01.mal
monetdb5/mal/Tests/recycle02.mal
monetdb5/mal/Tests/recycle03.mal
monetdb5/mal/Tests/recycle05.mal
monetdb5/mal/Tests/recycle06.mal
monetdb5/mal/Tests/recycle07.mal
monetdb5/mal/Tests/recycle08.mal
monetdb5/mal/Tests/recycle09.mal
monetdb5/mal/Tests/recycle10.mal
monetdb5/mal/Tests/recycle11.mal
monetdb5/mal/Tests/recycle12.mal
monetdb5/mal/mal.h
monetdb5/mal/mal_client.c
monetdb5/mal/mal_instruction.c
monetdb5/mal/mal_instruction.h
monetdb5/mal/mal_interpreter.c
monetdb5/mal/mal_profiler.h
monetdb5/mal/mal_recycle.c
monetdb5/mal/mal_recycle.h
monetdb5/modules/kernel/Makefile.ag
monetdb5/modules/mal/Makefile.ag
monetdb5/modules/mal/Tests/remote03.stable.out
monetdb5/modules/mal/batcalc.c
monetdb5/modules/mal/calc.mal
monetdb5/modules/mal/calc.mal.sh
monetdb5/modules/mal/mal_init.mal
monetdb5/modules/mal/recycle.c
monetdb5/modules/mal/recycle.h
monetdb5/modules/mal/recycle.mal
monetdb5/modules/mal/trader.c
monetdb5/optimizer/Makefile.ag
monetdb5/optimizer/Tests/dataflow.stable.out
monetdb5/optimizer/opt_dataflow.c
monetdb5/optimizer/opt_dataflow.h
monetdb5/optimizer/opt_multiplex.c
monetdb5/optimizer/opt_pipes.c
monetdb5/optimizer/opt_prelude.c
monetdb5/optimizer/opt_prelude.h
monetdb5/optimizer/opt_pushselect.c
monetdb5/optimizer/opt_recycler.c
monetdb5/optimizer/opt_recycler.h
monetdb5/optimizer/opt_remap.c
monetdb5/optimizer/opt_support.c
monetdb5/optimizer/opt_support.h
monetdb5/optimizer/opt_wrapper.c
monetdb5/optimizer/optimizer.mal
monetdb5/tests/BugTracker/Tests/kunion-and-nil.Bug-1667.stable.err
monetdb5/tests/BugTracker/Tests/kunion-and-nil.Bug-1667.stable.out
monetdb5/tools/Tests/mserver5--help.stable.err
sql/backends/monet5/UDF/README
sql/backends/monet5/UDF/udf.c
sql/backends/monet5/UDF/udf.h
sql/backends/monet5/UDF/udf_impl.h
sql/backends/monet5/sql_scenario.c
sql/test/BugDay_2005-12-19_2.9.3/Tests/select_from_env.SF-1240701.1242164.stable.err.Windows
sql/test/BugTracker-2008/Tests/All
sql/test/BugTracker-2012/Tests/create_function.Bug-3172.stable.err
sql/test/BugTracker-2012/Tests/create_function.Bug-3172.stable.out
sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.sql
sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.stable.err
sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.stable.out
sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090_nogeom.stable.err
sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090_nogeom.stable.out
sql/test/BugTracker-2012/Tests/table_function_with_column_subselects.Bug-3172.stable.err
sql/test/BugTracker/Tests/set_sql_debug_64__breaking_the_DB.SF-1906287.stable.out
sql/test/Tests/setoptimizer.stable.err
sql/test/Tests/setoptimizer.stable.out
sql/test/Tests/systemfunctions_nogeom.stable.out
sql/test/Tests/trace_nogeom.stable.out
sql/test/centipede/Tests/olap.sql
sql/test/leaks/Tests/check0_nogeom.stable.out
sql/test/leaks/Tests/check1.stable.out
sql/test/leaks/Tests/check1_nogeom.stable.out
sql/test/leaks/Tests/check2.stable.out
sql/test/leaks/Tests/check2_nogeom.stable.out
sql/test/leaks/Tests/check3.stable.out
sql/test/leaks/Tests/check3_nogeom.stable.out
sql/test/leaks/Tests/check4.stable.out
sql/test/leaks/Tests/check4_nogeom.stable.out
sql/test/leaks/Tests/check5.stable.out
sql/test/leaks/Tests/check5_nogeom.stable.out
sql/test/leaks/Tests/drop3_nogeom.stable.out
sql/test/leaks/Tests/select1_nogeom.stable.out
sql/test/leaks/Tests/select2_nogeom.stable.out
sql/test/leaks/Tests/temp1_nogeom.stable.out
sql/test/leaks/Tests/temp2_nogeom.stable.out
sql/test/leaks/Tests/temp3_nogeom.stable.out
sql/test/mapi/Tests/php_monetdb.stable.out
sql/test/mapi/Tests/php_monetdb_nogeom.stable.out
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
sql/test/testdb-upgrade/Tests/upgrade.stable.out
testing/Mfilter.py.in
tools/mserver/mserver5.c
Branch: rdf
Log Message:
Merge with default branch
diffs (truncated from 17295 to 300 lines):
diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -529,3 +529,6 @@ b9ccba3754cda87e79cac9e5348e46f35a883845
7c9bc94e85b75a79a48aa15af3a428ab5ef67bc7 Feb2013_11
b9ccba3754cda87e79cac9e5348e46f35a883845 Feb2013_SP3_release
efddb40b959a8ce6e77bec83cefd49c0a8de343c Feb2013_SP3_release
+64caf95db680ce67235697114693cbcf4cc859eb before_JSON_data_type
+334140294fb20e04aa85ab7f06bc3da45b1ae4f3 before_new_JOIN_implementation
+508d02b1f9bf8bac7a86664b092000dd3fd20824 before_reviving_RECYCLER
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
@@ -301,6 +301,9 @@
/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1
+/* Define to 1 if you have the `mremap' function. */
+/* #undef HAVE_MREMAP */
+
/* Define if you have the mseed library */
/* #undef HAVE_MSEED */
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
@@ -151,8 +151,10 @@ BAT *BATmark(BAT *b, oid base);
BAT *BATmark_grp(BAT *b, BAT *g, oid *base);
BAT *BATmaterialize(BAT *b);
BAT *BATmaterializeh(BAT *b);
+void *BATmax(BAT *b, void *aggr);
size_t BATmemsize(BAT *b, int dirty);
BAT *BATmergecand(BAT *a, BAT *b);
+void *BATmin(BAT *b, void *aggr);
int BATmmap(BAT *b, int hb, int tb, int hh, int th, int force);
BAT *BATmode(BAT *b, int onoff);
gdk_return BATmultiprintf(stream *f, int argc, BAT *argv[], int printoid, int
order, int printorderby);
@@ -728,8 +730,6 @@ str ALARMsleep(int *res, int *secs);
str ALARMtime(int *res);
str ALARMtimers(int *res);
str ALARMusec(lng *ret);
-str ALGBATmaximum(ptr *result, int *bid);
-str ALGBATminimum(ptr *result, int *bid);
str ALGantijoin(int *result, int *lid, int *rid);
str ALGantijoin2(int *l, int *r, int *lid, int *rid);
str ALGantiuselect1(int *result, int *bid, ptr value);
@@ -779,22 +779,8 @@ str ALGmarkHead_default(int *result, int
str ALGmark_grp_1(int *result, int *bid, int *gid);
str ALGmark_grp_2(int *result, int *bid, int *gid, oid *base);
str ALGmaterialize(int *ret, int *bid);
-str ALGmax_bte(bte *res, int *bid);
-str ALGmax_dbl(dbl *res, int *bid);
-str ALGmax_flt(flt *res, int *bid);
-str ALGmax_int(int *res, int *bid);
-str ALGmax_lng(lng *res, int *bid);
-str ALGmax_sht(sht *res, int *bid);
-str ALGmax_wrd(wrd *res, int *bid);
str ALGmaxany(ptr result, int *bid);
str ALGmerge(int *result, int *bid);
-str ALGmin_bte(bte *res, int *bid);
-str ALGmin_dbl(dbl *res, int *bid);
-str ALGmin_flt(flt *res, int *bid);
-str ALGmin_int(int *res, int *bid);
-str ALGmin_lng(lng *res, int *bid);
-str ALGmin_sht(sht *res, int *bid);
-str ALGmin_wrd(wrd *res, int *bid);
str ALGminany(ptr result, int *bid);
str ALGouterjoin(int *result, int *lid, int *rid);
str ALGouterjoinestimate(int *result, int *lid, int *rid, lng *estimate);
@@ -828,10 +814,9 @@ str ALGssort(int *result, int *bid);
str ALGssort_rev(int *result, int *bid);
str ALGstdev(dbl *res, int *bid);
str ALGstdevp(dbl *res, int *bid);
-str ALGsubleftjoin(bat *r1, bat *r2, bat *l, bat *r);
-str ALGsubleftjoin4(bat *r1, bat *r2, bat *l, bat *r, bat *sl, bat *sr);
-str ALGsubouterjoin(bat *r1, bat *r2, bat *l, bat *r);
-str ALGsubouterjoin4(bat *r1, bat *r2, bat *l, bat *r, bat *sl, bat *sr);
+str ALGsubjoin(bat *r1, bat *r2, bat *l, bat *r, bat *sl, bat *sr, lng
*estimate);
+str ALGsubleftjoin(bat *r1, bat *r2, bat *l, bat *r, bat *sl, bat *sr, lng
*estimate);
+str ALGsubouterjoin(bat *r1, bat *r2, bat *l, bat *r, bat *sl, bat *sr, lng
*estimate);
str ALGsubsample(int *result, int *bid, int *param);
str ALGsubselect1(bat *result, bat *bid, const void *low, const void *high,
const bit *li, const bit *hi, const bit *anti);
str ALGsubselect2(bat *result, bat *bid, bat *sid, const void *low, const void
*high, const bit *li, const bit *hi, const bit *anti);
@@ -845,8 +830,7 @@ str ALGsubsort23(bat *result, bat *norde
str ALGsubsort31(bat *result, bat *bid, bat *order, bat *group, bit *reverse,
bit *stable);
str ALGsubsort32(bat *result, bat *norder, bat *bid, bat *order, bat *group,
bit *reverse, bit *stable);
str ALGsubsort33(bat *result, bat *norder, bat *ngroup, bat *bid, bat *order,
bat *group, bit *reverse, bit *stable);
-str ALGsubthetajoin(bat *r1, bat *r2, bat *l, bat *r, str *op);
-str ALGsubthetajoin4(bat *r1, bat *r2, bat *l, bat *r, bat *sl, bat *sr, str
*op);
+str ALGsubthetajoin(bat *r1, bat *r2, bat *l, bat *r, bat *sl, bat *sr, str
*op, lng *estimate);
str ALGsunion(int *result, int *lid, int *rid);
str ALGsunique(int *result, int *bid);
str ALGtdiff(int *result, int *lid, int *rid);
@@ -932,8 +916,6 @@ str BATXMLstr2xml(int *x, int *s);
str BATXMLxml2str(int *ret, int *bid);
str BATXMLxmltext(int *ret, int *bid);
str BATXMLxquery(int *x, int *s, str *expr);
-ptr BATmax(BAT *b, ptr aggr);
-ptr BATmin(BAT *b, ptr aggr);
str BKCaccbuild(int *ret, int *bid, str *acc, ptr *param);
str BKCaccbuild_std(int *ret, int *bid, int *acc);
str BKCappend_force_wrap(int *r, int *bid, int *uid, bit *force);
@@ -1505,7 +1487,9 @@ str JSONpath(json *ret, json *js, str *e
str JSONprelude(int *ret);
str JSONrenderarray(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
str JSONrenderobject(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
+str JSONresultSet(str *res, bat *u, bat *rev, bat *js);
str JSONstr2json(json *ret, str *j);
+str JSONtext(json *ret, json *js, str *expr);
int JSONtoString(str *s, int *len, json src);
str JSONunnest(int *key, int *val, json *j);
str JSONunnestGrouped(int *grp, int *key, int *val, json *j);
@@ -1806,6 +1790,7 @@ int OPTgroupsImplementation(Client cntxt
int OPTinlineImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr p);
int OPTisAlias(InstrPtr p);
int OPTjoinPathImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr p);
+int OPTjsonImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
pci);
str OPTlegAdvice(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
int OPTlegAdviceInternal(MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
str OPTmacro(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
@@ -2033,31 +2018,27 @@ str QOTshowPlan(Client cntxt, MalBlkPtr
void QOTstatisticsExit(void);
void QOTupdateStatistics(str nme, int prop, lng val);
QueryQueue QRYqueue;
+void RECYCLEdump(stream *s);
+void RECYCLEdumpDataTrans(stream *s);
str RECYCLEdumpQPatWrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
pci);
+void RECYCLEdumpRecyclerPool(stream *s);
str RECYCLEdumpWrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
-int RECYCLEentry(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
-str RECYCLEepilogue(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
-void RECYCLEexit(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p, lng
ticks);
-str RECYCLEgetAdmission(int *p);
-str RECYCLEgetCache(int *p);
-bte RECYCLEgetQryCat(int qidx);
-str RECYCLEgetReuse(int *p);
+lng RECYCLEentry(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p, int
pc);
+void RECYCLEexit(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p, int
pc, lng ticks);
void RECYCLEinit(void);
-void RECYCLEinitQPat(int sz);
+void RECYCLEinitRecyclePool(int sz);
int RECYCLEinterest(InstrPtr p);
-str RECYCLElog(int *d, str *nm);
str RECYCLEmonitor(int *d, int *p);
int RECYCLEnewQryStat(MalBlkPtr mb);
-str RECYCLEprelude(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
-void RECYCLEreset(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
-str RECYCLEresetCMD(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
-str RECYCLEsetAdmission(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
+str RECYCLEreset(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p, int
pc);
+str RECYCLErunningStat(Client cntxt, MalBlkPtr mb);
str RECYCLEsetCache(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
-str RECYCLEsetReuse(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
void RECYCLEshutdown(Client cntxt);
str RECYCLEshutdownWrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
-str RECYCLEstart(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
-str RECYCLEstop(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
+str RECYCLEstart(Client cntxt, MalBlkPtr mb);
+str RECYCLEstartWrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
+str RECYCLEstop(Client cntxt, MalBlkPtr mb);
+str RECYCLEstopWrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
str RMTbatload(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
str RMTbincopyfrom(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
str RMTbincopyto(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
@@ -2399,7 +2380,6 @@ str activateCounter(str name);
str addOptimizerPipe(Client cntxt, MalBlkPtr mb, str name);
str addPipeDefinition(Client cntxt, str name, str pipe);
void addtoMalBlkHistory(MalBlkPtr mb, str marker);
-int admissionPolicy;
str affectedRowsRef;
str aggrRef;
str alarmRef;
@@ -2495,6 +2475,7 @@ str crossRef;
int cstToken(Client cntxt, ValPtr val);
str datacellRef;
str datacyclotronRef;
+int dataflowConflict(InstrPtr p);
str dataflowRef;
int date_fromstr(str buf, int *len, date **d);
int date_tostr(str *buf, int *len, date *val);
@@ -2711,6 +2692,7 @@ int isUpdateInstruction(InstrPtr p);
str iteratorRef;
str joinPathRef;
str joinRef;
+str jsonRef;
str kdifferenceRef;
int keepProp;
str kunionRef;
@@ -2786,7 +2768,6 @@ str mark_grpRef;
str matRef;
str materializeRef;
str materializeRef;
-aggrFun maxAggr;
str maxRef;
str max_no_nilRef;
void mdbClrBreakRequest(Client cntxt, str name);
@@ -2807,7 +2788,6 @@ str mdbTrapClient(Client cntxt, MalBlkPt
int memoryclaims;
lng memorypool;
str mergecandRef;
-aggrFun minAggr;
str minRef;
str min_no_nilRef;
str minusRef;
@@ -2979,7 +2959,6 @@ str queryRef;
str querylogRef;
str rankRef;
str rank_grpRef;
-int rcachePolicy;
int readConsole(Client cntxt);
MalStkPtr reallocGlobalStack(MalStkPtr s, int cnt);
MalStkPtr reallocStack(MalStkPtr s, int cnt);
@@ -2988,8 +2967,6 @@ double recycleAlpha;
MalBlkPtr recycleBlk;
int recycleCacheLimit;
int recycleMaxInterest;
-lng recycleMemory;
-QryPatPtr recycleQPat;
str recycleRef;
lng recycleSearchTime;
lng recycleTime;
@@ -3017,7 +2994,6 @@ void resetVarName(MalBlkPtr mb, int i);
void resizeMalBlk(MalBlkPtr mb, int maxstmt, int maxvar);
int resolveType(int dsttype, int srctype);
str resultSetRef;
-int reusePolicy;
str reuseRef;
malType reverseBatType(malType v);
str reverseRef;
diff --git a/configure.ag b/configure.ag
--- a/configure.ag
+++ b/configure.ag
@@ -2564,6 +2564,7 @@ AC_CHECK_FUNCS([\
localtime_r \
lockf \
madvise \
+ mremap \
nl_langinfo \
_NSGetExecutablePath \
pipe \
diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -1732,55 +1732,69 @@ BATgroupsize(BAT *b, BAT *g, BAT *e, BAT
#define AGGR_CMP(TYPE, OP) \
do { \
const TYPE *vals = (const TYPE *) Tloc(b, BUNfirst(b)); \
- for (;;) { \
+ if (ngrp == cnt) { \
+ /* single element groups */ \
if (cand) { \
- if (cand == candend) \
- break; \
- i = *cand++ - b->hseqbase; \
- if (i >= end) \
- break; \
+ while (cand < candend) { \
+ i = *cand++ - b->hseqbase; \
+ if (i >= end) \
+ break; \
+ if (!skip_nils || \
+ vals[i] != TYPE##_nil) { \
+ oids[i] = i + b->hseqbase; \
+ nils--; \
+ } \
+ } \
} else { \
- i = start++; \
- if (i == end) \
- break; \
+ for (i = start; i < end; i++) { \
+ if (!skip_nils || \
+ vals[i] != TYPE##_nil) { \
+ oids[i] = i + b->hseqbase; \
+ nils--; \
+ } \
+ } \
} \
- if (gids == NULL || \
- (gids[i] >= min && gids[i] <= max)) { \
- if (gids) \
- gid = gids[i] - min; \
- else \
- gid = (oid) i; \
- if (!skip_nils || vals[i] != TYPE##_nil) { \
- if (oids[gid] == oid_nil) { \
- oids[gid] = i + b->hseqbase; \
- nils--; \
- } else if (vals[oids[gid] -
b->hseqbase] != TYPE##_nil && \
- (vals[i] == TYPE##_nil || \
- OP(vals[i], vals[oids[gid]
- b->hseqbase]))) \
- oids[gid] = i + b->hseqbase; \
+ } else { \
+ gid = 0; /* in case gids == NULL */ \
+ for (;;) { \
+ if (cand) { \
+ if (cand == candend) \
+ break; \
+ i = *cand++ - b->hseqbase; \
+ if (i >= end) \
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list