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

Reply via email to