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 checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list