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]