Changeset: a1b9a9d7c06d for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a1b9a9d7c06d
Modified Files:
        sql/backends/monet5/sql_upgrades.c
        sql/storage/bat/bat_logger.c
Branch: geo
Log Message:

* Upgrade catalog to report the new geometry types
* Upgrade old geometry BATs to utilize the new structures


diffs (truncated from 375 to 300 lines):

diff --git a/sql/backends/monet5/sql_upgrades.c 
b/sql/backends/monet5/sql_upgrades.c
--- a/sql/backends/monet5/sql_upgrades.c
+++ b/sql/backends/monet5/sql_upgrades.c
@@ -1618,7 +1618,7 @@ sql_update_jul2015(Client c)
 static str
 sql_update_dec2015(Client c)
 {
-       size_t bufsize = 10240, pos = 0;
+       size_t bufsize = 4096000, pos = 0;
        char *buf = GDKmalloc(bufsize), *err = NULL;
        mvc *sql = ((backend*) c->sqlcontext)->mvc;
        ValRecord *schvar = stack_get_var(sql, "current_schema");
@@ -1629,6 +1629,7 @@ sql_update_dec2015(Client c)
        pos += snprintf(buf + pos, bufsize - pos, "set schema \"sys\";\n");
 
 /* insert upgrade code here */
+#if 0
        pos += snprintf(buf + pos, bufsize - pos, "drop procedure 
profiler_openstream(host string, port int);");
        pos += snprintf(buf + pos, bufsize - pos, "drop procedure 
profiler_stethoscope(ticks int);");
        pos += snprintf(buf + pos, bufsize - pos, "create schema profiler;"
@@ -1637,65 +1638,64 @@ sql_update_dec2015(Client c)
                "create procedure profiler.setheartbeat(beat int) external name 
profiler.setheartbeat;"
                "create procedure profiler.setpoolsize(poolsize int) external 
name profiler.setpoolsize;"
                "create procedure profiler.setstream(host string, port int) 
external name profiler.setstream;");
-
+#endif
        /* drop the previous geometry types */
        /* drop old types */
        /** Keep only the geometry type **/
        /** pos += snprintf(buf + pos, bufsize - pos, "DROP TYPE Geometry;"); 
**/
-       pos += snprintf(buf + pos, bufsize - pos, "DROP TYPE Point;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP TYPE Curve;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP TYPE LineString;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP TYPE Surface;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP TYPE Polygon;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP TYPE MultiPoint;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP TYPE MultiCurve;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP TYPE MultiLineString;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP TYPE MultiSurface;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP TYPE MultiPolygon;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP TYPE GeomCollection;");
+       pos += snprintf(buf + pos, bufsize - pos, "drop type \"point\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop type \"curve\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop type \"linestring\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop type \"surface\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop type \"polygon\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop type \"multipoint\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop type \"multicurve\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop type 
\"multilinestring\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop type 
\"multisurface\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop type 
\"multipolygon\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop type 
\"geomcollection\";");
 
        /* drop old functions */
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION mbr;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION mbroverlaps;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION 
GeomFromText;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION 
PointFromText;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION 
LineFromText;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION 
PolyFromText;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION 
MPointFromText;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION 
MLineFromText;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION 
MPolyFromText;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION 
GeomCollectionFromText;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION 
PolygonFromText;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION AsText;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION X;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION Y;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION Point;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION Dimension;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION 
GeometryTypeId;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION SRID;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION Envelope;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION IsEmpty;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION IsSimple;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION Boundary;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION Equals;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION Disjoint;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION 
\"Intersect\";");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION Touches;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION Crosses;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION Within;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION Contains;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION Contains;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION Overlaps;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION Relate;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION Area;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION Length;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION Distance;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION Buffer;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION ConvexHull;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION 
Intersection;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION \"Union\";");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION Difference;");
-       pos += snprintf(buf + pos, bufsize - pos, "DROP FUNCTION 
SymDifference;");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function \"mbr\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function 
\"mbroverlaps\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function 
\"geomfromtext\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function 
\"pointfromtext\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function 
\"linefromtext\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function 
\"polyfromtext\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function 
\"mpointfromtext\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function 
\"mlinefromtext\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function 
\"mpolyfromtext\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function 
\"geomcollectionfromtext\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function 
\"polygonfromtext\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function \"astext\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function \"x\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function \"y\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function \"point\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function 
\"dimension\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function 
\"geometrytypeid\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function \"srid\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function 
\"envelope\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function \"isempty\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function 
\"issimple\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function 
\"boundary\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function \"equals\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function 
\"disjoint\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function 
\"Intersect\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function \"touches\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function \"crosses\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function \"within\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop all function 
\"contains\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function 
\"overlaps\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function \"relate\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function \"area\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function \"length\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function 
\"distance\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function \"buffer\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function 
\"convexhull\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function 
\"intersection\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function \"Union\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function 
\"difference\";");
+       pos += snprintf(buf + pos, bufsize - pos, "drop function 
\"symdifference\";");
 
        /* create the new geometry types */
        pos += snprintf(buf + pos, bufsize - pos, "CREATE FUNCTION Has_Z(info 
integer) RETURNS integer EXTERNAL NAME geom.\"hasZ\";");
@@ -1769,16 +1769,16 @@ sql_update_dec2015(Client c)
        pos += snprintf(buf + pos, bufsize - pos, "CREATE FUNCTION 
ST_SetExteriorRing(geom Geometry) RETURNS Geometry external name 
geom.\"MakePolygon\";");
        pos += snprintf(buf + pos, bufsize - pos, "CREATE FUNCTION 
ST_NumInteriorRing(geom Geometry) RETURNS integer EXTERNAL NAME 
geom.\"NumInteriorRings\";");
        pos += snprintf(buf + pos, bufsize - pos, "CREATE FUNCTION 
ST_InteriorRingN(geom Geometry, positionNum integer) RETURNS Geometry EXTERNAL 
NAME geom.\"InteriorRingN\";");
-       pos += snprintf(buf + pos, bufsize - pos, "CREATE FUNCTION 
ST_InteriorRings(geom Geometry) RETURNS GeometryA EXTERNAL NAME 
geom.\"InteriorRings\";");
+//     pos += snprintf(buf + pos, bufsize - pos, "CREATE FUNCTION 
ST_InteriorRings(geom Geometry) RETURNS GeometryA EXTERNAL NAME 
geom.\"InteriorRings\";");
        pos += snprintf(buf + pos, bufsize - pos, "CREATE FUNCTION 
ST_NumGeometries(geom Geometry) RETURNS integer EXTERNAL NAME 
geom.\"NumGeometries\";");
        pos += snprintf(buf + pos, bufsize - pos, "CREATE FUNCTION 
ST_GeometryN(geom Geometry, positionNum integer) RETURNS Geometry EXTERNAL NAME 
geom.\"GeometryN\";");
-       pos += snprintf(buf + pos, bufsize - pos, "CREATE FUNCTION 
ST_NumPatches(geom Geometry) RETURNS integer");
+       pos += snprintf(buf + pos, bufsize - pos, "CREATE FUNCTION 
ST_NumPatches(geom Geometry) RETURNS integer ");
+       pos += snprintf(buf + pos, bufsize - pos, "BEGIN ");
+       pos += snprintf(buf + pos, bufsize - pos, " RETURN SELECT 
ST_NumGeometries(geom);");
+       pos += snprintf(buf + pos, bufsize - pos, "END;");
+       pos += snprintf(buf + pos, bufsize - pos, "CREATE FUNCTION 
ST_PatchN(geom Geometry, patchNum integer) RETURNS Geometry ");
        pos += snprintf(buf + pos, bufsize - pos, "BEGIN");
-       pos += snprintf(buf + pos, bufsize - pos, "     RETURN SELECT 
ST_NumGeometries(geom);");
-       pos += snprintf(buf + pos, bufsize - pos, "END;");
-       pos += snprintf(buf + pos, bufsize - pos, "CREATE FUNCTION 
ST_PatchN(geom Geometry, patchNum integer) RETURNS Geometry");
-       pos += snprintf(buf + pos, bufsize - pos, "BEGIN");
-       pos += snprintf(buf + pos, bufsize - pos, "     RETURN SELECT 
ST_GeometryN(geom, patchNum);");
+       pos += snprintf(buf + pos, bufsize - pos, " RETURN SELECT 
ST_GeometryN(geom, patchNum);");
        pos += snprintf(buf + pos, bufsize - pos, "END; ");
        pos += snprintf(buf + pos, bufsize - pos, "CREATE FUNCTION 
ST_GeomFromText(wkt string, srid integer) RETURNS Geometry EXTERNAL NAME 
geom.\"GeomFromText\";");
        pos += snprintf(buf + pos, bufsize - pos, "CREATE FUNCTION 
ST_PointFromText(wkt string, srid integer) RETURNS Geometry EXTERNAL NAME 
geom.\"PointFromText\"; ");
@@ -1832,26 +1832,26 @@ sql_update_dec2015(Client c)
        pos += snprintf(buf + pos, bufsize - pos, "CREATE FUNCTION 
ST_Segmentize(geom Geometry, sz double) RETURNS Geometry EXTERNAL NAME 
geom.\"Segmentize\";");
        pos += snprintf(buf + pos, bufsize - pos, "CREATE FUNCTION 
getProj4(srid_in integer) RETURNS string ");
        pos += snprintf(buf + pos, bufsize - pos, "BEGIN");
-       pos += snprintf(buf + pos, bufsize - pos, "     RETURN SELECT proj4text 
FROM spatial_ref_sys WHERE srid=srid_in; ");
+       pos += snprintf(buf + pos, bufsize - pos, " RETURN SELECT proj4text 
FROM spatial_ref_sys WHERE srid=srid_in; ");
        pos += snprintf(buf + pos, bufsize - pos, "END;");
        pos += snprintf(buf + pos, bufsize - pos, "CREATE FUNCTION 
InternalTransform(geom Geometry, srid_src integer, srid_dest integer, proj4_src 
string, proj4_dest string) RETURNS Geometry EXTERNAL NAME geom.\"Transform\";");
-       pos += snprintf(buf + pos, bufsize - pos, "CREATE FUNCTION 
ST_Transform(geom Geometry, srid integer) RETURNS Geometry");
+       pos += snprintf(buf + pos, bufsize - pos, "CREATE FUNCTION 
ST_Transform(geom Geometry, srid integer) RETURNS Geometry ");
        pos += snprintf(buf + pos, bufsize - pos, "BEGIN");
-       pos += snprintf(buf + pos, bufsize - pos, "     DECLARE srid_src 
integer;");
-       pos += snprintf(buf + pos, bufsize - pos, "     DECLARE proj4_src 
string;");
-       pos += snprintf(buf + pos, bufsize - pos, "     DECLARE proj4_dest 
string;");
-       pos += snprintf(buf + pos, bufsize - pos, "     SELECT st_srid(geom) 
INTO srid_src;");
-       pos += snprintf(buf + pos, bufsize - pos, "     SELECT 
getProj4(srid_src) INTO proj4_src;");
-       pos += snprintf(buf + pos, bufsize - pos, "     SELECT getProj4(srid) 
INTO proj4_dest;");
-       pos += snprintf(buf + pos, bufsize - pos, "     IF proj4_src IS NULL 
THEN");
-       pos += snprintf(buf + pos, bufsize - pos, "             RETURN SELECT 
InternalTransform(geom, srid_src, srid, 'null', proj4_dest); ");
-       pos += snprintf(buf + pos, bufsize - pos, "     ELSE");
-       pos += snprintf(buf + pos, bufsize - pos, "             IF proj4_dest 
IS NULL THEN");
-       pos += snprintf(buf + pos, bufsize - pos, "                     RETURN 
SELECT InternalTransform(geom, srid_src, srid, proj4_src, 'null'); ");
-       pos += snprintf(buf + pos, bufsize - pos, "             ELSE");
-       pos += snprintf(buf + pos, bufsize - pos, "                     RETURN 
SELECT InternalTransform(geom, srid_src, srid, proj4_src, proj4_dest);");
-       pos += snprintf(buf + pos, bufsize - pos, "             END IF; ");
-       pos += snprintf(buf + pos, bufsize - pos, "     END IF;");
+       pos += snprintf(buf + pos, bufsize - pos, " DECLARE srid_src integer;");
+       pos += snprintf(buf + pos, bufsize - pos, " DECLARE proj4_src string;");
+       pos += snprintf(buf + pos, bufsize - pos, " DECLARE proj4_dest 
string;");
+       pos += snprintf(buf + pos, bufsize - pos, " SELECT st_srid(geom) INTO 
srid_src;");
+       pos += snprintf(buf + pos, bufsize - pos, " SELECT getProj4(srid_src) 
INTO proj4_src;");
+       pos += snprintf(buf + pos, bufsize - pos, " SELECT getProj4(srid) INTO 
proj4_dest;");
+       pos += snprintf(buf + pos, bufsize - pos, " IF proj4_src IS NULL THEN");
+       pos += snprintf(buf + pos, bufsize - pos, "  RETURN SELECT 
InternalTransform(geom, srid_src, srid, 'null', proj4_dest); ");
+       pos += snprintf(buf + pos, bufsize - pos, " ELSE");
+       pos += snprintf(buf + pos, bufsize - pos, "  IF proj4_dest IS NULL 
THEN");
+       pos += snprintf(buf + pos, bufsize - pos, "   RETURN SELECT 
InternalTransform(geom, srid_src, srid, proj4_src, 'null'); ");
+       pos += snprintf(buf + pos, bufsize - pos, "  ELSE");
+       pos += snprintf(buf + pos, bufsize - pos, "   RETURN SELECT 
InternalTransform(geom, srid_src, srid, proj4_src, proj4_dest);");
+       pos += snprintf(buf + pos, bufsize - pos, "  END IF;");
+       pos += snprintf(buf + pos, bufsize - pos, " END IF;");
        pos += snprintf(buf + pos, bufsize - pos, "END;");
        pos += snprintf(buf + pos, bufsize - pos, "CREATE FUNCTION 
ST_Translate(geom Geometry, dx double, dy double) RETURNS Geometry EXTERNAL 
NAME geom.\"Translate\";");
        pos += snprintf(buf + pos, bufsize - pos, "CREATE FUNCTION 
ST_Translate(geom Geometry, dx double, dy double, dz double) RETURNS Geometry 
EXTERNAL NAME geom.\"Translate\";");
@@ -1866,8 +1866,9 @@ sql_update_dec2015(Client c)
        pos += snprintf(buf + pos, bufsize - pos, "CREATE FUNCTION ST_Dump(geom 
Geometry) RETURNS TABLE(id string, polygonWKB Geometry) EXTERNAL NAME 
geom.\"Dump\";");
        pos += snprintf(buf + pos, bufsize - pos, "CREATE FUNCTION 
ST_DumpPoints(geom Geometry) RETURNS TABLE(path string, pointG Geometry) 
EXTERNAL NAME geom.\"DumpPoints\";");
        pos += snprintf(buf + pos, bufsize - pos, "CREATE FUNCTION Contains(a 
Geometry, x double, y double) RETURNS BOOLEAN external name 
geom.\"Contains\";");
-
-       /* populate the spatial_ref_sys table */
+       pos += snprintf(buf + pos, bufsize - pos, "UPDATE _tables set system = 
true where name='spatial_ref_sys';");
+       pos += snprintf(buf + pos, bufsize - pos, "UPDATE _tables set system = 
true where name='geometry_columns';");
+/* populate the spatial_ref_sys table */
        pos += snprintf(buf + pos, bufsize - pos, "COPY 3911 RECORDS INTO 
spatial_ref_sys FROM STDIN USING DELIMITERS ',';");
        pos += snprintf(buf + pos, bufsize - pos, 
"3819,EPSG,3819,GEOGCS[\"HD1909\"\\,DATUM[\"Hungarian_Datum_1909\"\\,SPHEROID[\"Bessel
 
1841\"\\,6377397.155\\,299.1528128\\,AUTHORITY[\"EPSG\"\\,\"7004\"]]\\,TOWGS84[595.48\\,121.69\\,515.35\\,4.115\\,-2.9383\\,0.853\\,-3.408]\\,AUTHORITY[\"EPSG\"\\,\"1024\"]]\\,PRIMEM[\"Greenwich\"\\,0\\,AUTHORITY[\"EPSG\"\\,\"8901\"]]\\,UNIT[\"degree\"\\,0.0174532925199433\\,AUTHORITY[\"EPSG\"\\,\"9122\"]]\\,AUTHORITY[\"EPSG\"\\,\"3819\"]],+proj=longlat
 +ellps=bessel 
+towgs84=595.48\\,121.69\\,515.35\\,4.115\\,-2.9383\\,0.853\\,-3.408 +no_defs 
");
        pos += snprintf(buf + pos, bufsize - pos, 
"3821,EPSG,3821,GEOGCS[\"TWD67\"\\,DATUM[\"Taiwan_Datum_1967\"\\,SPHEROID[\"GRS 
1967 
Modified\"\\,6378160\\,298.25\\,AUTHORITY[\"EPSG\"\\,\"7050\"]]\\,AUTHORITY[\"EPSG\"\\,\"1025\"]]\\,PRIMEM[\"Greenwich\"\\,0\\,AUTHORITY[\"EPSG\"\\,\"8901\"]]\\,UNIT[\"degree\"\\,0.0174532925199433\\,AUTHORITY[\"EPSG\"\\,\"9122\"]]\\,AUTHORITY[\"EPSG\"\\,\"3821\"]],+proj=longlat
 +ellps=aust_SA +no_defs ");
@@ -5897,7 +5898,7 @@ SQLupgrades(Client c, mvc *m)
                /* if function sys.<<(geometry,geometry) does not exist, we 
need to
                 * update */
                sql_init_subtype(&tp, find_sql_type(mvc_bind_schema(m, "sys"), 
"geometry"), 0, 0);
-               if (!sql_bind_func(m->sa, mvc_bind_schema(m, "sys"), 
"left_shift", &tp, &tp, F_FUNC)) {
+               if (!sql_bind_func(m->sa, mvc_bind_schema(m, "sys"), 
"st_overlaps", &tp, &tp, F_FUNC)) {
                        if ((err = sql_update_dec2015(c)) !=NULL) {
                                fprintf(stderr, "!%s\n", err);
                                GDKfree(err);
diff --git a/sql/storage/bat/bat_logger.c b/sql/storage/bat/bat_logger.c
--- a/sql/storage/bat/bat_logger.c
+++ b/sql/storage/bat/bat_logger.c
@@ -157,8 +157,8 @@ bl_postversion( void *lg)
        if (catalog_version <= CATALOG_JUL2015) {
                /* Prexisting columns of type point, linestring, polygon etc 
                 * have to converted to geometry(0), geometry(1) etc. */
-               BAT *ct, *cnt, *cd, *cnd, *cs, *cns;
-               BATiter cti, cdi, csi;
+               BAT *ct, *cnt, *cd, *cnd, *cs, *cns, *cn, *ctid, *ti, *tn, *ts, 
*si, *sn, *g;
+               BATiter cti, cdi, csi, cni, ctidi, tsi, tni, sni, gi;
                char *s = "sys", n[64];
                BUN p,q;
 
@@ -168,6 +168,18 @@ bl_postversion( void *lg)
                cdi = bat_iterator(cd);
                cs = temp_descriptor(logger_find_bat(lg, N(n, NULL, s, 
"_columns_type_scale")));
                csi = bat_iterator(cs);
+               cn = temp_descriptor(logger_find_bat(lg, N(n, NULL, s, 
"_columns_name")));
+               cni = bat_iterator(cn);
+               ctid = temp_descriptor(logger_find_bat(lg, N(n, NULL, s, 
"_columns_table_id")));
+               ctidi = bat_iterator(ctid);
+               ti = temp_descriptor(logger_find_bat(lg, N(n, NULL, s, 
"_tables_id")));
+               tn = temp_descriptor(logger_find_bat(lg, N(n, NULL, s, 
"_tables_name")));
+               tni = bat_iterator(tn);
+               ts = temp_descriptor(logger_find_bat(lg, N(n, NULL, s, 
"_tables_schema_id")));
+               tsi = bat_iterator(ts);
+               si = temp_descriptor(logger_find_bat(lg, N(n, NULL, s, 
"schemas_id")));
+               sn = temp_descriptor(logger_find_bat(lg, N(n, NULL, s, 
"schemas_name")));
+               sni = bat_iterator(sn);
 
                cnt = BATnew(TYPE_void, TYPE_str, BATcount(ct), PERSISTENT);
                cnd = BATnew(TYPE_void, TYPE_int, BATcount(cd), PERSISTENT);
@@ -180,47 +192,98 @@ bl_postversion( void *lg)
                BATseqbase(cns, cs->hseqbase);
 
                for(p=BUNfirst(ct), q=BUNlast(ct); p<q; p++) {
+                       bool isGeom = false;
                        char *type = BUNtail(cti, p);
                        int digits = *(int*)BUNtail(cdi, p);
                        int scale = *(int*)BUNtail(csi, p);
-
+                       char* colname = BUNtail(cni, p);
+                       
                        if (strcmp(toLower(type), "point") == 0) {
                                type = "geometry";
+                               isGeom = true;
                                digits = wkbPoint;
                                scale = 0; // in the past we did not save the 
srid
                        } else if (strcmp(toLower(type), "linestring") == 0) {
                                type = "geometry";
+                               isGeom = true;
                                digits = wkbLineString;
                                scale = 0;
                        } else if (strcmp(toLower(type), "linearring") == 0) {
                                type = "geometry";
+                               isGeom = true;
                                digits = wkbLinearRing;
                                scale = 0;
                        } else if (strcmp(toLower(type), "polygon") == 0) {
                                type = "geometry";
+                               isGeom = true;
                                digits = wkbPolygon;
                                scale = 0;
                        } else if (strcmp(toLower(type), "multipoint") == 0) {
                                type = "geometry";
+                               isGeom = true;
                                digits = wkbMultiPoint;
                                scale = 0;
                        } else if (strcmp(toLower(type), "multilinestring") == 
0) {
                                type = "geometry";
+                               isGeom = true;
                                digits = wkbMultiLineString;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to