Changeset: c53058ae47b7 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/c53058ae47b7
Modified Files:
        clients/Tests/MAL-signatures-hge.test
        gdk/gdk_bbp.c
        gdk/gdk_join.c
        gdk/gdk_logger.c
        geom/ChangeLog
        geom/lib/libgeom.h
        geom/monetdb5/geom.c
        geom/monetdb5/geom.h
        geom/monetdb5/geom_atoms.c
        geom/monetdb5/geom_atoms.h
        geom/sql/39_spatial_ref_sys.sql
        geom/sql/40_geom.sql
        sql/backends/monet5/sql_upgrades.c
        sql/common/sql_types.c
        sql/server/sql_parser.y
        sql/storage/bat/bat_logger.c
        sql/storage/store.c
        
sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out
        sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/emptydb-previous-upgrade-hge/Tests/upgrade.stable.out.int128
        sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out
        sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.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.int128
        sql/test/emptydb/Tests/check.stable.out.int128
        
sql/test/testdb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        sql/test/testdb-previous-upgrade-chain/Tests/upgrade.stable.out
        sql/test/testdb-previous-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/testdb-previous-upgrade-hge/Tests/dump.stable.out
        sql/test/testdb-previous-upgrade-hge/Tests/upgrade.stable.out.int128
        sql/test/testdb-previous-upgrade/Tests/dump.stable.out
        sql/test/testdb-previous-upgrade/Tests/upgrade.stable.out
        sql/test/testdb-previous-upgrade/Tests/upgrade.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.int128
        sql/test/testdb-upgrade-hge/Tests/dump.stable.out
        sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade/Tests/dump.stable.out
        sql/test/testdb-upgrade/Tests/upgrade.stable.out
        sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
Branch: default
Log Message:

Removed type geometryA.


diffs (truncated from 1505 to 300 lines):

diff --git a/clients/Tests/MAL-signatures-hge.test 
b/clients/Tests/MAL-signatures-hge.test
--- a/clients/Tests/MAL-signatures-hge.test
+++ b/clients/Tests/MAL-signatures-hge.test
@@ -45349,11 +45349,6 @@ command geom.InteriorRingN(X_0:wkb, X_1:
 wkbInteriorRingN;
 Return the Nth interior linestring ring of the polygon geometry. Return NULL 
if the geometry is not a polygon or the given N is out of range.
 geom
-InteriorRings
-command geom.InteriorRings(X_0:wkb):wkba
-wkbInteriorRings;
-Returns an 'array' with all the interior rings of the polygon
-geom
 Intersection
 command geom.Intersection(X_0:wkb, X_1:wkb):wkb
 wkbIntersection;
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -499,8 +499,10 @@ heapinit(BAT *b, const char *buf,
                return -1;
        }
 
-       if (strcmp(type, "wkba") == 0)
-               GDKwarning("type wkba (SQL name: GeometryA) is deprecated\n");
+       if (strcmp(type, "wkba") == 0) {
+               TRC_CRITICAL(GDK, "type wkba (SQL name: GeometryA) has been 
removed\n");
+               return -1;
+       }
 
        if (properties & ~0x1F81) {
                TRC_CRITICAL(GDK, "unknown properties are set: incompatible 
database on line %d of BBP.dir\n", lineno);
diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -1935,7 +1935,8 @@ mergejoin_cand(BAT **r1p, BAT **r2p, BAT
  * If max_one is set, only a single match is allowed.  This is like
  * semi, but enforces the single match.
  *
- * t0 and swapped are only for debugging (ALGOMASK set in GDKdebug).
+ * t0, swapped, and reason are only for debugging (ALGOMASK set in
+ * GDKdebug).
  */
 static gdk_return
 mergejoin(BAT **r1p, BAT **r2p, BAT **r3p, BAT *l, BAT *r,
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -1066,6 +1066,10 @@ log_read_types_file(logger *lg, FILE *fp
                        *needsnew = true;
                        continue;
                }
+               if (version < 52304 && strcmp(atom_name, "wkba") == 0) {
+                       *needsnew = true;
+                       continue;
+               }
                int i = ATOMindex(atom_name);
 
                if (id < -127 || id > 127 || i < 0) {
diff --git a/geom/ChangeLog b/geom/ChangeLog
--- a/geom/ChangeLog
+++ b/geom/ChangeLog
@@ -1,3 +1,7 @@
 # ChangeLog file for geom
 # This file is updated with Maddlog
 
+* Tue Nov 26 2024 Sjoerd Mullender <[email protected]>
+- Removed type geometryA (geometry array).  It was deprecated in the
+  Jun2023 release (11.47.X) because there was no use for the type.
+
diff --git a/geom/lib/libgeom.h b/geom/lib/libgeom.h
--- a/geom/lib/libgeom.h
+++ b/geom/lib/libgeom.h
@@ -122,11 +122,6 @@ typedef struct wkb {
        char data[];
 } wkb;
 
-typedef struct wkba {
-       int itemsNum; //the number of wkbs
-       wkb* data[]; //the wkbs
-} wkba;
-
 typedef struct {
        unsigned char type;
        mbr bbox;
diff --git a/geom/monetdb5/geom.c b/geom/monetdb5/geom.c
--- a/geom/monetdb5/geom.c
+++ b/geom/monetdb5/geom.c
@@ -5641,7 +5641,7 @@ batgeom_YMaxFromMBR_mbr(bat *ret, bat *b
 static mel_atom geom_init_atoms[] = {
  { .name="mbr", .basetype="lng", .size=sizeof(mbr), .tostr=mbrTOSTR, 
.fromstr=mbrFROMSTR, .hash=mbrHASH, .null=mbrNULL, .cmp=mbrCOMP, .read=mbrREAD, 
.write=mbrWRITE, },
  { .name="wkb", .tostr=wkbTOSTR, .fromstr=wkbFROMSTR, .hash=wkbHASH, 
.null=wkbNULL, .cmp=wkbCOMP, .read=wkbREAD, .write=wkbWRITE, .put=wkbPUT, 
.del=wkbDEL, .length=wkbLENGTH, .heap=wkbHEAP, },
- { .name="wkba", .tostr=wkbaTOSTR, .fromstr=wkbaFROMSTR, .null=wkbaNULL, 
.hash=wkbaHASH, .cmp=wkbaCOMP, .read=wkbaREAD, .write=wkbaWRITE, .put=wkbaPUT, 
.del=wkbaDEL, .length=wkbaLENGTH, .heap=wkbaHEAP, },  { .cmp=NULL }
+ { .cmp=NULL }
 };
 static mel_func geom_init_funcs[] = {
  //TODO Fill in descriptions
@@ -5709,7 +5709,6 @@ static mel_func geom_init_funcs[] = {
  command("geom", "Polygon", wkbMakePolygon, false, "Returns a Polygon created 
from the provided LineStrings", args(1,4, 
arg("",wkb),arg("",wkb),batarg("",wkb),arg("",int))),
  command("geom", "ExteriorRing", wkbExteriorRing, false, "Returns a line 
string representing the exterior ring of the POLYGON geometry. Return NULL if 
the geometry is not a polygon.", args(1,2, arg("",wkb),arg("w",wkb))),
  command("geom", "InteriorRingN", wkbInteriorRingN, false, "Return the Nth 
interior linestring ring of the polygon geometry. Return NULL if the geometry 
is not a polygon or the given N is out of range.", args(1,3, 
arg("",wkb),arg("w",wkb),arg("n",int))),
- command("geom", "InteriorRings", wkbInteriorRings, false, "Returns an 'array' 
with all the interior rings of the polygon", args(1,2, 
arg("",wkba),arg("w",wkb))),
  command("geom", "IsClosed", wkbIsClosed, false, "Returns TRUE if the 
LINESTRING's start and end points are coincident.", args(1,2, 
arg("",bit),arg("w",wkb))),
  command("geom", "IsEmpty", wkbIsEmpty, false, "Returns true if this Geometry 
is an empty geometry.", args(1,2, arg("",bit),arg("w",wkb))),
  command("geom", "IsRing", wkbIsRing, false, "Returns TRUE if this LINESTRING 
is both closed and simple.", args(1,2, arg("",bit),arg("w",wkb))),
diff --git a/geom/monetdb5/geom.h b/geom/monetdb5/geom.h
--- a/geom/monetdb5/geom.h
+++ b/geom/monetdb5/geom.h
@@ -139,8 +139,6 @@ geom_export str wkbInteriorRingN(wkb**, 
 geom_export str wkbNumRings(int*, wkb**, int*);
 geom_export str wkbNumRings_bat(bat *outBAT_id, bat *inBAT_id, int* flag);
 
-geom_export str wkbInteriorRings(wkba**, wkb**);
-
 geom_export str wkbIsClosed(bit *out, wkb **geom);
 geom_export str wkbIsClosed_bat(bat *inBAT_id, bat *outBAT_id);
 
diff --git a/geom/monetdb5/geom_atoms.c b/geom/monetdb5/geom_atoms.c
--- a/geom/monetdb5/geom_atoms.c
+++ b/geom/monetdb5/geom_atoms.c
@@ -1105,386 +1105,3 @@ mbrIntersects(bit *out, mbr** mbr1, mbr*
                (*out) = true;
        return MAL_SUCCEED;
 }
-
-/************************************************/
-/************* wkba type functions **************/
-/************************************************/
-
-/* Creates the string representation of a wkb_array */
-/* return length of resulting string. */
-ssize_t
-wkbaTOSTR(char **toStr, size_t *len, const void *FROMARRAY, bool external)
-{
-       const wkba *fromArray = FROMARRAY;
-       int items = fromArray->itemsNum, i;
-       int itemsNumDigits = (int) ceil(log10(items));
-       size_t dataSize;        //, skipBytes=0;
-       char **partialStrs;
-       char *toStrPtr = NULL, *itemsNumStr = GDKmalloc(itemsNumDigits + 1);
-
-       if (itemsNumStr == NULL)
-               return -1;
-
-       dataSize = (size_t) snprintf(itemsNumStr, itemsNumDigits + 1, "%d", 
items);
-
-       // reserve space for an array with pointers to the partial
-       // strings, i.e. for each wkbTOSTR
-       partialStrs = GDKzalloc(items * sizeof(char *));
-       if (partialStrs == NULL) {
-               GDKfree(itemsNumStr);
-               return -1;
-       }
-       //create the string version of each wkb
-       for (i = 0; i < items; i++) {
-               size_t llen = 0;
-               ssize_t ds;
-               ds = wkbTOSTR(&partialStrs[i], &llen, fromArray->data[i], 
false);
-               if (ds < 0) {
-                       GDKfree(itemsNumStr);
-                       while (i >= 0)
-                               GDKfree(partialStrs[i--]);
-                       GDKfree(partialStrs);
-                       return -1;
-               }
-               dataSize += ds;
-
-               if (strNil(partialStrs[i])) {
-                       GDKfree(itemsNumStr);
-                       while (i >= 0)
-                               GDKfree(partialStrs[i--]);
-                       GDKfree(partialStrs);
-                       if (*len < 4 || *toStr == NULL) {
-                               GDKfree(*toStr);
-                               if ((*toStr = GDKmalloc(*len = 4)) == NULL)
-                                       return -1;
-                       }
-                       if (external) {
-                               strcpy(*toStr, "nil");
-                               return 3;
-                       }
-                       strcpy(*toStr, str_nil);
-                       return 1;
-               }
-       }
-
-       //add [] around itemsNum
-       dataSize += 2;
-       //add ", " before each item
-       dataSize += 2 * sizeof(char) * items;
-
-       //copy all partial strings to a single one
-       if (*len < dataSize + 3 || *toStr == NULL) {
-               GDKfree(*toStr);
-               *toStr = GDKmalloc(*len = dataSize + 3);        /* plus quotes 
+ termination character */
-               if (*toStr == NULL) {
-                       for (i = 0; i < items; i++)
-                               GDKfree(partialStrs[i]);
-                       GDKfree(partialStrs);
-                       GDKfree(itemsNumStr);
-                       return -1;
-               }
-       }
-       toStrPtr = *toStr;
-       if (external)
-               *toStrPtr++ = '\"';
-       *toStrPtr++ = '[';
-       strcpy(toStrPtr, itemsNumStr);
-       toStrPtr += strlen(itemsNumStr);
-       *toStrPtr++ = ']';
-       for (i = 0; i < items; i++) {
-               if (i == 0)
-                       *toStrPtr++ = ':';
-               else
-                       *toStrPtr++ = ',';
-               *toStrPtr++ = ' ';
-
-               //strcpy(toStrPtr, partialStrs[i]);
-               memcpy(toStrPtr, partialStrs[i], strlen(partialStrs[i]));
-               toStrPtr += strlen(partialStrs[i]);
-               GDKfree(partialStrs[i]);
-       }
-
-       if (external)
-               *toStrPtr++ = '\"';
-       *toStrPtr = '\0';
-
-       GDKfree(partialStrs);
-       GDKfree(itemsNumStr);
-
-       return (ssize_t) (toStrPtr - *toStr);
-}
-
-static ssize_t wkbaFROMSTR_withSRID(const char *fromStr, size_t *len, wkba 
**toArray, int srid);
-
-/* return number of parsed characters. */
-ssize_t
-wkbaFROMSTR(const char *fromStr, size_t *len, void **TOARRAY, bool external)
-{
-       wkba **toArray = (wkba **) TOARRAY;
-       if (external && strncmp(fromStr, "nil", 3) == 0) {
-               size_t sz = wkba_size(~0);
-               if ((*len < sz || *toArray == NULL)
-                   && (*toArray = GDKmalloc(sz)) == NULL)
-                       return -1;
-               **toArray = wkba_nil;
-               return 3;
-       }
-       return wkbaFROMSTR_withSRID(fromStr, len, toArray, 0);
-}
-
-/* returns a pointer to a null wkba */
-const void *
-wkbaNULL(void)
-{
-       return &wkba_nil;
-}
-
-BUN
-wkbaHASH(const void *WARRAY)
-{
-       const wkba *wArray = WARRAY;
-       int j, i;
-       BUN h = 0;
-
-       for (j = 0; j < wArray->itemsNum; j++) {
-               wkb *w = wArray->data[j];
-               for (i = 0; i < (w->len - 1); i += 2) {
-                       BUN a = ((unsigned char *) w->data)[i];
-                       BUN b = ((unsigned char *) w->data)[i + 1];
-#if '\377' < 0                                 /* char is signed? */
-                       /* maybe sign extend */
-                       if (a & 0x80)
-                               a |= ~(BUN)0x7f;
-                       if (b & 0x80)
-                               b |= ~(BUN)0x7f;
-#endif
-                       h = (h << 3) ^ (h >> 11) ^ (h >> 17) ^ (b << 8) ^ a;
-               }
-       }
-       return h;
-}
-
-int
-wkbaCOMP(const void *L, const void *R)
-{
-       const wkba *l = L, *r = R;
-       int i, res = 0;
-
-       //compare the number of items
-       if (l->itemsNum != r->itemsNum)
-               return l->itemsNum - r->itemsNum;
-
-       if (l->itemsNum == ~(int) 0)
-               return (0);
-
-       //compare each wkb separately
-       for (i = 0; i < l->itemsNum; i++)
-               res += wkbCOMP(l->data[i], r->data[i]);
-
-       return res;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to