Changeset: 52449fcd07bf for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=52449fcd07bf Modified Files: clients/Tests/MAL-signatures.stable.out clients/Tests/MAL-signatures.stable.out.int128 clients/Tests/exports.stable.out gdk/gdk_utils.c geom/lib/libgeom.c geom/lib/libgeom.h geom/monetdb5/geom.c monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.err.Windows monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows monetdb5/mal/mal_function.c monetdb5/mal/mal_instruction.c monetdb5/mal/mal_instruction.h sql/backends/monet5/sql.c sql/backends/monet5/sql.mal sql/backends/monet5/vaults/fits/fits.c sql/common/sql_types.c sql/server/rel_updates.c sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.err.Windows sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out.Windows sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128 sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.powerpc64.int128 sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.32bit sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128 sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64 sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64.int128 sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128 sql/test/emptydb-upgrade/Tests/upgrade.stable.out sql/test/emptydb-upgrade/Tests/upgrade.stable.out.32bit sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128 sql/test/emptydb/Tests/check.stable.out sql/test/emptydb/Tests/check.stable.out.32bit sql/test/emptydb/Tests/check.stable.out.int128 sql/test/pg_regress/Tests/numeric_big.stable.err sql/test/pg_regress/Tests/numeric_big.stable.err.int128 sql/test/sys-schema/Tests/systemfunctions.stable.out sql/test/sys-schema/Tests/systemfunctions.stable.out.int128 sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128 sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.32bit sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128 sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128 sql/test/testdb-upgrade/Tests/upgrade.stable.out sql/test/testdb-upgrade/Tests/upgrade.stable.out.32bit sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128 Branch: statistics-analytics Log Message:
Merged with default diffs (truncated from 8983 to 300 lines): diff --git a/clients/Tests/MAL-signatures.stable.out b/clients/Tests/MAL-signatures.stable.out --- a/clients/Tests/MAL-signatures.stable.out +++ b/clients/Tests/MAL-signatures.stable.out @@ -11804,7 +11804,7 @@ stdout of test 'MAL-signatures` in direc [ "sql", "bind_idxbat", "pattern sql.bind_idxbat(mvc:int, schema:str, table:str, index:str, access:int, part_nr:int, nr_parts:int):bat[:any_1] ", "mvc_bind_idxbat_wrap;", "Bind the 'schema.table.index' BAT with access kind:\n\t0 - base table\n\t1 - inserts\n\t2 - updates" ] [ "sql", "clear_table", "unsafe pattern sql.clear_table(sname:str, tname:str):lng ", "mvc_clear_table_wrap;", "Clear the table sname.tname." ] [ "sql", "commit", "pattern sql.commit():void ", "SQLcommit;", "Trigger the commit operation for a MAL block" ] -[ "sql", "copy_from", "unsafe pattern sql.copy_from(t:ptr, sep:str, rsep:str, ssep:str, ns:str, fname:str, nr:lng, offset:lng, locked:int, best:int, fwf:str, onclient:int):bat[:any]... ", "mvc_import_table_wrap;", "Import a table from bstream s with the \n\tgiven tuple and seperators (sep/rsep)" ] +[ "sql", "copy_from", "unsafe pattern sql.copy_from(sname:str, tname:str, sep:str, rsep:str, ssep:str, ns:str, fname:str, nr:lng, offset:lng, locked:int, best:int, fwf:str, onclient:int):bat[:any]... ", "mvc_import_table_wrap;", "Import a table from bstream s with the \n\tgiven tuple and seperators (sep/rsep)" ] [ "sql", "copy_rejects", "pattern sql.copy_rejects() (rowid:bat[:lng], fldid:bat[:int], msg:bat[:str], inp:bat[:str]) ", "COPYrejects;", "" ] [ "sql", "copy_rejects_clear", "pattern sql.copy_rejects_clear():void ", "COPYrejects_clear;", "" ] [ "sql", "corr", "pattern sql.corr(b:bte, c:bte, s:lng, e:lng):dbl ", "SQLcorr;", "return the correlation value of groups" ] diff --git a/clients/Tests/MAL-signatures.stable.out.int128 b/clients/Tests/MAL-signatures.stable.out.int128 --- a/clients/Tests/MAL-signatures.stable.out.int128 +++ b/clients/Tests/MAL-signatures.stable.out.int128 @@ -16227,7 +16227,7 @@ stdout of test 'MAL-signatures` in direc [ "sql", "bind_idxbat", "pattern sql.bind_idxbat(mvc:int, schema:str, table:str, index:str, access:int, part_nr:int, nr_parts:int):bat[:any_1] ", "mvc_bind_idxbat_wrap;", "Bind the 'schema.table.index' BAT with access kind:\n\t0 - base table\n\t1 - inserts\n\t2 - updates" ] [ "sql", "clear_table", "unsafe pattern sql.clear_table(sname:str, tname:str):lng ", "mvc_clear_table_wrap;", "Clear the table sname.tname." ] [ "sql", "commit", "pattern sql.commit():void ", "SQLcommit;", "Trigger the commit operation for a MAL block" ] -[ "sql", "copy_from", "unsafe pattern sql.copy_from(t:ptr, sep:str, rsep:str, ssep:str, ns:str, fname:str, nr:lng, offset:lng, locked:int, best:int, fwf:str, onclient:int):bat[:any]... ", "mvc_import_table_wrap;", "Import a table from bstream s with the \n\tgiven tuple and seperators (sep/rsep)" ] +[ "sql", "copy_from", "unsafe pattern sql.copy_from(sname:str, tname:str, sep:str, rsep:str, ssep:str, ns:str, fname:str, nr:lng, offset:lng, locked:int, best:int, fwf:str, onclient:int):bat[:any]... ", "mvc_import_table_wrap;", "Import a table from bstream s with the \n\tgiven tuple and seperators (sep/rsep)" ] [ "sql", "copy_rejects", "pattern sql.copy_rejects() (rowid:bat[:lng], fldid:bat[:int], msg:bat[:str], inp:bat[:str]) ", "COPYrejects;", "" ] [ "sql", "copy_rejects_clear", "pattern sql.copy_rejects_clear():void ", "COPYrejects_clear;", "" ] [ "sql", "corr", "pattern sql.corr(b:bte, c:bte, s:lng, e:lng):dbl ", "SQLcorr;", "return the correlation value of groups" ] 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 @@ -2632,6 +2632,7 @@ void setReturnArgument(InstrPtr p, int v str setScenario(Client c, str nme); str setVariableRef; void setVariableScope(MalBlkPtr mb); +void setVariableType(MalBlkPtr mb, const int idx, malType type); str setWriteModeRef; void setprofilerlimit(int limit); str shortStmtRendering(MalBlkPtr mb, MalStkPtr stl, InstrPtr p); diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c --- a/gdk/gdk_utils.c +++ b/gdk/gdk_utils.c @@ -404,9 +404,48 @@ MT_init(void) #ifdef __linux__ /* limit values to whatever cgroups gives us */ FILE *fc; + char buf[1024]; + char cgr1[1024] = "/sys/fs/cgroup/memory"; + char cgr2[1024] = "/sys/fs/cgroup"; + fc = fopen("/proc/self/mountinfo", "r"); + if (fc != NULL) { + while (fgets(buf, (int) sizeof(buf), fc) != NULL) { + char *p, *cgr; + if ((p = strstr(buf, " - cgroup ")) != NULL && + strstr(p, "memory") != NULL) + cgr = cgr1; + else if (strstr(buf, " - cgroup2 ") != NULL) + cgr = cgr2; + else + continue; + /* buf point at mount ID */ + p = strchr(buf, ' '); + if (p++ == NULL) + break; + /* p points at parent ID */ + p = strchr(p, ' '); + if (p++ == NULL) + break; + /* p points at major:minor */ + p = strchr(p, ' '); + if (p++ == NULL) + break; + /* p points at root */ + p = strchr(p, ' '); + if (p++ == NULL) + break; + /* p points at mount point */ + char *dir = p; + p = strchr(p, ' '); + if (p == NULL) + break; + *p = 0; + strcpy(cgr, dir); + } + fclose(fc); + } fc = fopen("/proc/self/cgroup", "r"); if (fc != NULL) { - char buf[1024]; /* each line is of the form: * hierarchy-ID:controller-list:cgroup-path * @@ -440,8 +479,7 @@ MT_init(void) if (strncmp(buf, "0::", 3) == 0) { /* cgroup v2 entry */ l = strconcat_len(pth, sizeof(pth), - "/sys/fs/cgroup", - buf + 3, "/", NULL); + cgr2, buf + 3, "/", NULL); /* hard limit */ strcpy(pth + l, "memory.max"); f = fopen(pth, "r"); @@ -489,8 +527,7 @@ MT_init(void) if (strstr(q, "memory") == NULL) continue; l = strconcat_len(pth, sizeof(pth), - "/sys/fs/cgroup/", q, - p, "/", NULL); + cgr1, p, "/", NULL); /* limit of memory usage */ strcpy(pth + l, "memory.limit_in_bytes"); f = fopen(pth, "r"); diff --git a/geom/lib/libgeom.c b/geom/lib/libgeom.c --- a/geom/lib/libgeom.c +++ b/geom/lib/libgeom.c @@ -106,17 +106,24 @@ getMbrGeos(mbr *res, const GEOSGeom geos */ GEOSGeom -wkb2geos(const wkb *geomWKB) +wkb2geos(GEOSContextHandle_t handle, const wkb *geomWKB) { GEOSGeom geosGeometry; if (is_wkb_nil(geomWKB)) return NULL; - geosGeometry = GEOSGeomFromWKB_buf((unsigned char *) geomWKB->data, geomWKB->len); + if (handle) + geosGeometry = GEOSGeomFromWKB_buf_r(handle, (unsigned char *) geomWKB->data, geomWKB->len); + else + geosGeometry = GEOSGeomFromWKB_buf((unsigned char *) geomWKB->data, geomWKB->len); - if (geosGeometry != NULL) - GEOSSetSRID(geosGeometry, geomWKB->srid); + if (geosGeometry != NULL) { + if (handle) + GEOSSetSRID_r(handle, geosGeometry, geomWKB->srid); + else + GEOSSetSRID(geosGeometry, geomWKB->srid); + } return geosGeometry; } diff --git a/geom/lib/libgeom.h b/geom/lib/libgeom.h --- a/geom/lib/libgeom.h +++ b/geom/lib/libgeom.h @@ -139,7 +139,7 @@ libgeom_export void libgeom_exit(void); libgeom_export bool is_wkb_nil(const wkb *wkbp); libgeom_export int getMbrGeos(mbr *mbr, const GEOSGeom geosGeometry); libgeom_export int getMbrGeom(mbr *res, wkb *geom); -libgeom_export GEOSGeom wkb2geos(const wkb *geomWKB); +libgeom_export GEOSGeom wkb2geos(GEOSContextHandle_t handle, const wkb *geomWKB); //libgeom_export str geomerty_2_geometry(wkb *res, wkb **geom, int* columnType, int* columnSRID, int* valueSRID); diff --git a/geom/monetdb5/geom.c b/geom/monetdb5/geom.c --- a/geom/monetdb5/geom.c +++ b/geom/monetdb5/geom.c @@ -16,7 +16,7 @@ int TYPE_mbr; -static wkb *geos2wkb(const GEOSGeometry *geosGeometry); +static wkb *geos2wkb(GEOSContextHandle_t handle, const GEOSGeometry *geosGeometry); static inline int geometryHasZ(int info) @@ -438,7 +438,7 @@ wkbTransform(wkb **transformedWKB, wkb * } /* get the geosGeometry from the wkb */ - geosGeometry = wkb2geos(*geomWKB); + geosGeometry = wkb2geos(NULL, (*geomWKB)); /* get the type of the geometry */ geometryType = GEOSGeomTypeId(geosGeometry) + 1; @@ -469,7 +469,7 @@ wkbTransform(wkb **transformedWKB, wkb * /* set the new srid */ GEOSSetSRID(transformedGeosGeometry, *srid_dst); /* get the wkb */ - if ((*transformedWKB = geos2wkb(transformedGeosGeometry)) == NULL) + if ((*transformedWKB = geos2wkb(NULL, transformedGeosGeometry)) == NULL) ret = createException(MAL, "geom.Transform", SQLSTATE(38000) "Geos operation geos2wkb failed"); /* destroy the geos geometries */ GEOSGeom_destroy(transformedGeosGeometry); @@ -776,7 +776,7 @@ wkbForceDim(wkb **outWKB, wkb **geomWKB, return MAL_SUCCEED; } - geosGeometry = wkb2geos(*geomWKB); + geosGeometry = wkb2geos(NULL, (*geomWKB)); if (geosGeometry == NULL) { *outWKB = NULL; throw(MAL, "geom.ForceDim", SQLSTATE(38000) "Geos operation wkb2geos failed"); @@ -790,7 +790,7 @@ wkbForceDim(wkb **outWKB, wkb **geomWKB, GEOSSetSRID(outGeometry, GEOSGetSRID(geosGeometry)); - *outWKB = geos2wkb(outGeometry); + *outWKB = geos2wkb(NULL, outGeometry); GEOSGeom_destroy(geosGeometry); GEOSGeom_destroy(outGeometry); @@ -1156,7 +1156,7 @@ wkbSegmentize(wkb **outWKB, wkb **geomWK return MAL_SUCCEED; } - geosGeometry = wkb2geos(*geomWKB); + geosGeometry = wkb2geos(NULL, (*geomWKB)); if (geosGeometry == NULL) { *outWKB = NULL; throw(MAL, "geom.Segmentize", SQLSTATE(38000) "Geos operation wkb2geos failed"); @@ -1170,7 +1170,7 @@ wkbSegmentize(wkb **outWKB, wkb **geomWK GEOSSetSRID(outGeometry, GEOSGetSRID(geosGeometry)); - *outWKB = geos2wkb(outGeometry); + *outWKB = geos2wkb(NULL, outGeometry); GEOSGeom_destroy(geosGeometry); GEOSGeom_destroy(outGeometry); @@ -1474,7 +1474,7 @@ wkbTranslate(wkb **outWKB, wkb **geomWKB return MAL_SUCCEED; } - geosGeometry = wkb2geos(*geomWKB); + geosGeometry = wkb2geos(NULL, (*geomWKB)); if (geosGeometry == NULL) { *outWKB = NULL; throw(MAL, "geom.Translate", SQLSTATE(38000) "Geos operation wkb2geos failed"); @@ -1488,7 +1488,7 @@ wkbTranslate(wkb **outWKB, wkb **geomWKB GEOSSetSRID(outGeometry, GEOSGetSRID(geosGeometry)); - *outWKB = geos2wkb(outGeometry); + *outWKB = geos2wkb(NULL, outGeometry); GEOSGeom_destroy(geosGeometry); GEOSGeom_destroy(outGeometry); @@ -1514,7 +1514,7 @@ wkbDelaunayTriangles(wkb **outWKB, wkb * return MAL_SUCCEED; } - geosGeometry = wkb2geos(*geomWKB); + geosGeometry = wkb2geos(NULL, (*geomWKB)); outGeometry = GEOSDelaunayTriangulation(geosGeometry, *tolerance, *flag); GEOSGeom_destroy(geosGeometry); if (outGeometry == NULL) { @@ -1522,7 +1522,7 @@ wkbDelaunayTriangles(wkb **outWKB, wkb * throw(MAL, "geom.DelaunayTriangles", SQLSTATE(38000) "Geos operation GEOSDelaunayTriangulation failed"); } - *outWKB = geos2wkb(outGeometry); + *outWKB = geos2wkb(NULL, outGeometry); GEOSGeom_destroy(outGeometry); if (*outWKB == NULL) @@ -1542,7 +1542,7 @@ wkbPointOnSurface(wkb **resWKB, wkb **ge return MAL_SUCCEED; } - geosGeometry = wkb2geos(*geomWKB); + geosGeometry = wkb2geos(NULL, (*geomWKB)); if (geosGeometry == NULL) { *resWKB = NULL; throw(MAL, "geom.PointOnSurface", SQLSTATE(38000) "Geos operation wkb2geos failed"); @@ -1557,7 +1557,7 @@ wkbPointOnSurface(wkb **resWKB, wkb **ge //set the srid of the point the same as the srid of the input geometry GEOSSetSRID(resGeosGeometry, GEOSGetSRID(geosGeometry)); - *resWKB = geos2wkb(resGeosGeometry); + *resWKB = geos2wkb(NULL, resGeosGeometry); GEOSGeom_destroy(geosGeometry); GEOSGeom_destroy(resGeosGeometry); @@ -1573,7 +1573,7 @@ dumpGeometriesSingle(BAT *idBAT, BAT *ge { char *newPath = NULL; size_t pathLength = strlen(path); - wkb *singleWKB = geos2wkb(geosGeometry); + wkb *singleWKB = geos2wkb(NULL, geosGeometry); str err = MAL_SUCCEED; if (singleWKB == NULL) @@ -1709,7 +1709,7 @@ wkbDump(bat *idBAT_id, bat *geomBAT_id, return MAL_SUCCEED; } - geosGeometry = wkb2geos(*geomWKB); + geosGeometry = wkb2geos(NULL, (*geomWKB)); //count the number of geometries geometriesNum = GEOSGetNumGeometries(geosGeometry); @@ -1743,7 +1743,7 @@ dumpPointsPoint(BAT *idBAT, BAT *geomBAT { char *newPath = NULL; size_t pathLength = strlen(path); - wkb *pointWKB = geos2wkb(geosGeometry); + wkb *pointWKB = geos2wkb(NULL, geosGeometry); int lvlDigitsNum = 10; //MAX_UNIT = 4,294,967,295 str err = MAL_SUCCEED; @@ -1776,7 +1776,7 @@ dumpPointsLineString(BAT *idBAT, BAT *ge _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list