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

Reply via email to