Changeset: 5d1ca685c286 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5d1ca685c286
Added Files:
monetdb5/mal/Tests/malids.malC
monetdb5/mal/Tests/malids.stable.err
monetdb5/mal/Tests/malids.stable.out
monetdb5/modules/kernel/Tests/select.malC
monetdb5/modules/kernel/Tests/select.stable.err
monetdb5/modules/kernel/Tests/select.stable.out
sql/test/BugTracker-2017/Tests/real-power.Bug-6228.sql
sql/test/BugTracker-2017/Tests/real-power.Bug-6228.stable.err
sql/test/BugTracker-2017/Tests/real-power.Bug-6228.stable.out
Removed Files:
monetdb5/mal/Tests/tst273.stable.err
monetdb5/mal/Tests/tst273.stable.out
monetdb5/optimizer/Tests/flowgraph.malC
monetdb5/optimizer/Tests/flowgraph.stable.err
monetdb5/optimizer/Tests/flowgraph.stable.out
Modified Files:
clients/Tests/MAL-signatures.stable.out
clients/Tests/MAL-signatures.stable.out.int128
clients/Tests/exports.stable.out
gdk/gdk_logger.c
gdk/gdk_project.c
gdk/gdk_select.c
geom/monetdb5/geom.c
geom/monetdb5/geomBulk.c
geom/monetdb5/geom_upgrade.c
monetdb5/mal/Tests/All
monetdb5/mal/Tests/run
monetdb5/mal/mal.h
monetdb5/mal/mal_authorize.c
monetdb5/mal/mal_builder.c
monetdb5/mal/mal_builder.h
monetdb5/mal/mal_client.c
monetdb5/mal/mal_dataflow.c
monetdb5/mal/mal_debugger.c
monetdb5/mal/mal_function.c
monetdb5/mal/mal_function.h
monetdb5/mal/mal_import.c
monetdb5/mal/mal_instruction.c
monetdb5/mal/mal_instruction.h
monetdb5/mal/mal_parser.c
monetdb5/mal/mal_profiler.c
monetdb5/mal/mal_runtime.c
monetdb5/mal/mal_session.c
monetdb5/modules/kernel/Tests/All
monetdb5/modules/kernel/aggr.c
monetdb5/modules/mal/Tests/orderidx00.malC
monetdb5/modules/mal/Tests/orderidx01.malC
monetdb5/modules/mal/Tests/orderidx02.malC
monetdb5/modules/mal/Tests/orderidx04.malC
monetdb5/modules/mal/language.mal
monetdb5/modules/mal/manifold.c
monetdb5/modules/mal/mdb.c
monetdb5/modules/mal/mdb.h
monetdb5/modules/mal/mdb.mal
monetdb5/modules/mal/oltp.mal
monetdb5/modules/mal/orderidx.c
monetdb5/modules/mal/remote.mal
monetdb5/optimizer/Tests/All
monetdb5/optimizer/opt_commonTerms.c
monetdb5/optimizer/opt_dataflow.c
monetdb5/optimizer/opt_deadcode.c
monetdb5/optimizer/opt_garbageCollector.c
monetdb5/optimizer/opt_macro.c
monetdb5/optimizer/opt_prelude.c
monetdb5/optimizer/opt_prelude.h
monetdb5/optimizer/opt_profiler.c
monetdb5/optimizer/opt_reorder.c
monetdb5/optimizer/opt_support.c
monetdb5/optimizer/opt_support.h
monetdb5/optimizer/opt_wrapper.c
monetdb5/optimizer/optimizer.mal
monetdb5/scheduler/run_adder.c
monetdb5/tools/Tests/mserver5--help.stable.err
monetdb5/tools/Tests/mserver5--help.stable.err.Windows
sql/backends/monet5/Tests/All
sql/backends/monet5/Tests/pyloader06.stable.out
sql/backends/monet5/Tests/pyloader07.stable.out
sql/backends/monet5/UDF/pyapi/convert_loops.h
sql/backends/monet5/UDF/pyapi/emit.c
sql/backends/monet5/generator/generator.c
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql.c
sql/backends/monet5/sql_execute.c
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_optimizer.c
sql/backends/monet5/sql_scenario.c
sql/backends/monet5/sql_statement.c
sql/backends/monet5/sql_statistics.c
sql/backends/monet5/sqlcatalog.mal
sql/backends/monet5/vaults/netcdf/netcdf.c
sql/common/sql_hash.c
sql/common/sql_list.c
sql/server/rel_exp.c
sql/server/rel_optimizer.c
sql/server/rel_rel.c
sql/storage/bat/bat_storage.c
sql/storage/bat/bat_utils.c
sql/storage/bat/res_table.c
sql/storage/sql_catalog.c
sql/test/BugTracker-2009/Tests/segfault_when_quitting_debugger.SF-2538837.stable.out
sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out
sql/test/BugTracker-2014/Tests/querylog.Bug-3607.stable.out
sql/test/BugTracker-2015/Tests/useless_casts.Bug-3756.stable.out
sql/test/BugTracker-2016/Tests/decimal_vs_integer.Bug-3941.stable.out
sql/test/BugTracker-2017/Tests/All
sql/test/BugTracker/Tests/explain.SF-1739353.stable.out
sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
sql/test/emptydb-upgrade-chain/Tests/check.stable.out.32bit
sql/test/emptydb-upgrade/Tests/check.stable.out.32bit
sql/test/emptydb/Tests/check.stable.out.32bit
tools/mserver/mserver5.c
Branch: mosaic
Log Message:
merge with default
diffs (truncated from 8295 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
@@ -1388,7 +1388,6 @@ str MDBsetDebug(int *ret, int *flg);
str MDBsetDebugStr(int *ret, str *nme);
str MDBsetTrace(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
str MDBsetVarTrace(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
-str MDBshowFlowGraph(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
str MDBstart(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
str MDBstartFactory(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
str MDBstop(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
@@ -2122,12 +2121,10 @@ str compileOptimizer(Client cntxt, str n
str compileString(Symbol *fcn, Client c, str s);
str compressRef;
str connectRef;
-str constraintsRef;
str convertConstant(malType type, ValPtr vr);
InstrPtr copyInstruction(InstrPtr p);
MalBlkPtr copyMalBlk(MalBlkPtr mb);
str copyRef;
-int copyVariable(MalBlkPtr dst, VarPtr v);
str copy_fromRef;
str countRef;
str count_no_nilRef;
@@ -2278,7 +2275,7 @@ str groupdoneRef;
int hasCommonResults(InstrPtr p, InstrPtr q);
int hasSameArguments(MalBlkPtr mb, InstrPtr p, InstrPtr q);
int hasSameSignature(MalBlkPtr mb, InstrPtr p, InstrPtr q, int stop);
-int hasSideEffects(InstrPtr p, int strict);
+int hasSideEffects(MalBlkPtr mb, InstrPtr p, int strict);
str hashRef;
int have_hge;
str hgeRef;
@@ -2297,7 +2294,6 @@ int initQlog(void);
int initTrace(void);
int inlineMALblock(MalBlkPtr mb, int pc, MalBlkPtr mc);
str inplaceRef;
-void insertInstruction(MalBlkPtr mb, InstrPtr p, int pc);
void insertSymbol(Module scope, Symbol prg);
str instruction2str(MalBlkPtr mb, MalStkPtr stl, InstrPtr p, int hidden);
str instructionCall(MalBlkPtr mb, InstrPtr p, str s, str base, size_t len);
@@ -2308,15 +2304,12 @@ str ioRef;
str io_stderr(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
str io_stdin(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
str io_stdout(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
-int isAllScalar(MalBlkPtr mb, InstrPtr p);
int isBlocking(InstrPtr p);
int isDelta(InstrPtr q);
-int isDependent(InstrPtr p, InstrPtr q);
int isExceptionVariable(str nme);
int isFragmentGroup(InstrPtr q);
int isFragmentGroup2(InstrPtr q);
int isIdentifier(str s);
-int isInvariant(MalBlkPtr mb, int pcf, int pcl, int varid);
int isLikeOp(InstrPtr q);
int isLoopBarrier(MalBlkPtr mb, int pc);
int isMapOp(InstrPtr q);
@@ -2328,7 +2321,6 @@ int isNotUsedIn(InstrPtr p, int start, i
int isOptimizerEnabled(MalBlkPtr mb, str opt);
int isOptimizerPipe(str name);
int isOrderby(InstrPtr q);
-int isProcedure(MalBlkPtr mb, InstrPtr p);
int isSample(InstrPtr q);
int isSealedFunction(InstrPtr q);
int isSelect(InstrPtr q);
@@ -2378,6 +2370,7 @@ MT_Lock mal_delayLock;
void mal_exit(void);
void mal_factory_reset(void) __attribute__((__visibility__("hidden")));
int mal_init(void);
+void mal_instruction_reset(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")));
@@ -2457,8 +2450,8 @@ InstrPtr newFcnCall(MalBlkPtr mb, char *
Symbol newFunction(str mod, str nme, int kind);
MalStkPtr newGlobalStack(int size);
InstrPtr newInstruction(MalBlkPtr mb, str modnme, str fcnnme);
-MalBlkPtr newMalBlk(int maxvars, int maxstmts);
-int newMalBlkStmt(MalBlkPtr mb, int maxstmts);
+MalBlkPtr newMalBlk(int elements);
+int newMalBlkStmt(MalBlkPtr mb, int elements);
Module newModule(Module scope, str nme);
Plant newPlant(MalBlkPtr mb);
InstrPtr newRaiseStmt(MalBlkPtr mb, str nme);
@@ -2500,7 +2493,7 @@ str plusRef;
str postludeRef;
str preludeRef;
MalStkPtr prepareMALstack(MalBlkPtr mb, int size);
-void prepareMalBlk(MalBlkPtr mb, str s);
+int prepareMalBlk(MalBlkPtr mb, str s);
void printFunction(stream *fd, MalBlkPtr mb, MalStkPtr stk, int flg);
void printInstruction(stream *fd, MalBlkPtr mb, MalStkPtr stk, InstrPtr p, int
flg);
str printRef;
@@ -2522,7 +2515,7 @@ InstrPtr pushBit(MalBlkPtr mb, InstrPtr
InstrPtr pushBte(MalBlkPtr mb, InstrPtr q, bte val);
InstrPtr pushDbl(MalBlkPtr mb, InstrPtr q, dbl val);
InstrPtr pushEmptyBAT(MalBlkPtr mb, InstrPtr q, int tpe);
-void pushEndInstruction(MalBlkPtr mb);
+InstrPtr pushEndInstruction(MalBlkPtr mb);
InstrPtr pushFlt(MalBlkPtr mb, InstrPtr q, flt val);
InstrPtr pushHge(MalBlkPtr mb, InstrPtr q, hge val);
void pushInstruction(MalBlkPtr mb, InstrPtr p);
@@ -2566,7 +2559,7 @@ str replaceRef;
str replicatorRef;
void resetMalBlk(MalBlkPtr mb, int stop);
void resetScenario(Client c);
-void resizeMalBlk(MalBlkPtr mb, int maxstmt, int maxvar);
+int resizeMalBlk(MalBlkPtr mb, int elements);
int resolveType(int dsttype, int srctype);
str resultSetRef;
str reuseRef;
@@ -2602,7 +2595,6 @@ void setHeartbeat(int delay);
void setPolymorphic(InstrPtr p, int tpe, int force);
void setReturnArgument(InstrPtr p, int varid);
str setScenario(Client c, str nme);
-void setVarType(MalBlkPtr mb, int i, int tpe);
str setVariableRef;
void setVariableScope(MalBlkPtr mb);
str setWriteModeRef;
@@ -2613,7 +2605,6 @@ void showAllScenarios(stream *f);
void showCurrentScenario(void);
void showErrors(Client cntxt);
void showException(stream *out, enum malexception, const char *, _In_z_
_Printf_format_string_ const char *, ...) __attribute__((__format__(__printf__,
4, 5)));
-void showFlowGraph(MalBlkPtr mb, MalStkPtr stk, str fname);
void showMalBlkHistory(stream *out, MalBlkPtr mb);
void showOptimizerHistory(void);
void showOptimizerStep(str fnme, int i, int flg);
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -1227,18 +1227,27 @@ bm_subcommit(logger *lg, BAT *list_bid,
BAT *bids, *nmes, *tids;
tids = bm_tids(catalog_bid, dcatalog);
- bids = logbat_new(TYPE_int, BATSIZE, PERSISTENT);
- nmes = logbat_new(TYPE_str, BATSIZE, PERSISTENT);
- if (tids == NULL || bids == NULL || nmes == NULL) {
- if (tids)
- BBPunfix(tids->batCacheid);
- BBPreclaim(bids);
- BBPreclaim(nmes);
+ if (tids == NULL) {
GDKfree(n);
return GDK_FAIL;
}
- BATappend(bids, catalog_bid, tids, TRUE);
- BATappend(nmes, catalog_nme, tids, TRUE);
+ bids = logbat_new(TYPE_int, BATcount(tids), PERSISTENT);
+ nmes = logbat_new(TYPE_str, BATcount(tids), PERSISTENT);
+ if (bids == NULL || nmes == NULL) {
+ logbat_destroy(tids);
+ logbat_destroy(bids);
+ logbat_destroy(nmes);
+ GDKfree(n);
+ return GDK_FAIL;
+ }
+ if (BATappend(bids, catalog_bid, tids, TRUE) != GDK_SUCCEED ||
+ BATappend(nmes, catalog_nme, tids, TRUE) != GDK_SUCCEED) {
+ logbat_destroy(tids);
+ logbat_destroy(bids);
+ logbat_destroy(nmes);
+ GDKfree(n);
+ return GDK_FAIL;
+ }
logbat_destroy(tids);
BATclear(dcatalog, TRUE);
@@ -1589,6 +1598,8 @@ logger_load(int debug, const char *fn, c
logger_fatal("Logger_new: inconsistent
database, snapshots_tid does not exist", 0, 0, 0);
} else {
lg->dsnapshots = logbat_new(TYPE_oid, 1, PERSISTENT);
+ if (lg->dsnapshots == NULL)
+ logger_fatal("Logger_new: cannot create
dsnapshot bat", 0, 0, 0);
snprintf(bak, sizeof(bak), "%s_dsnapshots", fn);
if (BBPrename(lg->dsnapshots->batCacheid, bak) < 0)
logger_fatal("Logger_new: BBPrename to %s
failed", bak, 0, 0);
@@ -2504,6 +2515,9 @@ bm_commit(logger *lg)
BAT *n = logbat_new(TYPE_str, BATcount(lg->freed), TRANSIENT);
gdk_return res;
+ if (n == NULL)
+ return LOG_ERR;
+
/* subcommit the freed bats */
if (BATcount(lg->freed)) {
diff --git a/gdk/gdk_project.c b/gdk/gdk_project.c
--- a/gdk/gdk_project.c
+++ b/gdk/gdk_project.c
@@ -747,6 +747,7 @@ BATprojectchain(BAT **bats)
return bn;
bunins_failed:
+ GDKfree(ba);
BBPreclaim(bn);
return NULL;
}
diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -1275,14 +1275,13 @@ BATselect(BAT *b, BAT *s, const void *tl
equi = th == NULL || (lval && ATOMcmp(t, tl, th) == 0); /* point
select? */
if (equi) {
assert(lval);
- hi = li;
+ if (th == NULL)
+ hi = li;
th = tl;
hval = 1;
} else {
hval = ATOMcmp(t, th, nil) != 0;
}
- if (!equi && !lval && !hval && lnil)
- anti = !anti;
if (anti) {
if (lval != hval) {
/* one of the end points is nil and the other
@@ -1857,7 +1856,7 @@ BATthetaselect(BAT *b, BAT *s, const voi
nil = ATOMnilptr(b->ttype);
if (ATOMcmp(b->ttype, val, nil) == 0)
return newempty();
- if (op[0] == '=' && ((op[1] == '=' && op[2] == 0) || op[2] == 0)) {
+ if (op[0] == '=' && ((op[1] == '=' && op[2] == 0) || op[1] == 0)) {
/* "=" or "==" */
return BATselect(b, s, val, NULL, 1, 1, 0);
}
diff --git a/geom/monetdb5/geom.c b/geom/monetdb5/geom.c
--- a/geom/monetdb5/geom.c
+++ b/geom/monetdb5/geom.c
@@ -464,7 +464,7 @@ wkbTransform(wkb **transformedWKB, wkb *
ret = createException(MAL, "geom.Transform", "Unknown geometry
type");
}
- if (transformedGeosGeometry) {
+ if (ret == MAL_SUCCEED && transformedGeosGeometry) {
/* set the new srid */
GEOSSetSRID(transformedGeosGeometry, *srid_dst);
/* get the wkb */
@@ -2670,7 +2670,7 @@ wkbMLineStringToPolygon(wkb **geomWKB, s
}
//all remaining should be internal
- internalGeometries = GDKmalloc((itemsNum - 1) * sizeof(GEOSGeom
*));
+ internalGeometries = GDKmalloc((itemsNum - 1) *
sizeof(GEOSGeom));
if (internalGeometries == NULL) {
GEOSGeom_destroy(linearRingExternalGeometry);
ret = createException(MAL, "geom.MLineStringToPolygon",
MAL_MALLOC_FAIL);
@@ -2730,8 +2730,8 @@ wkbMLineStringToPolygon(wkb **geomWKB, s
GEOSGeom_destroy(finalGeometry);
- throw(MAL, "geom.MLineStringToPolygon", "The provided
MultiLineString does not create a valid Polygon");
-
+ ret = createException(MAL, "geom.MLineStringToPolygon",
"The provided MultiLineString does not create a valid Polygon");
+ goto bailout;
}
GEOSSetSRID(finalGeometry, *srid);
@@ -3047,6 +3047,7 @@ wkbMakePolygon(wkb **out, wkb **external
GEOSGeom geosGeometry, externalGeometry, linearRingGeometry;
bit closed = 0;
GEOSCoordSeq coordSeq_copy;
+ str err;
if (wkb_isnil(*external) || *srid == int_nil) {
if ((*out = wkbNULLcopy()) == NULL)
@@ -3065,7 +3066,10 @@ wkbMakePolygon(wkb **out, wkb **external
throw(MAL, "geom.Polygon", "Geometries should be LineString");
}
//check whether the linestring is closed
- wkbIsClosed(&closed, external);
+ if ((err = wkbIsClosed(&closed, external)) != MAL_SUCCEED) {
+ GEOSGeom_destroy(externalGeometry);
+ return err;
+ }
if (!closed) {
*out = NULL;
GEOSGeom_destroy(externalGeometry);
@@ -3111,13 +3115,14 @@ str
wkbMakeLine(wkb **out, wkb **geom1WKB, wkb **geom2WKB)
{
GEOSGeom outGeometry, geom1Geometry, geom2Geometry;
- GEOSCoordSeq outCoordSeq;
+ GEOSCoordSeq outCoordSeq = NULL;
const GEOSCoordSequence *geom1CoordSeq = NULL, *geom2CoordSeq = NULL;
unsigned int i = 0, geom1Size = 0, geom2Size = 0;
unsigned geom1Dimension = 0, geom2Dimension = 0;
double x, y, z;
str err = MAL_SUCCEED;
+ *out = NULL;
if (wkb_isnil(*geom1WKB) || wkb_isnil(*geom2WKB)) {
if ((*out = wkbNULLcopy()) == NULL)
throw(MAL, "geom.MakeLine", MAL_MALLOC_FAIL);
@@ -3139,78 +3144,93 @@ wkbMakeLine(wkb **out, wkb **geom1WKB, w
//make sure the geometries are of the same srid
if (GEOSGetSRID(geom1Geometry) != GEOSGetSRID(geom2Geometry)) {
err = createException(MAL, "geom.MakeLine", "Geometries of
different SRID");
+ goto bailout;
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list