Changeset: f35d1578a7d2 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f35d1578a7d2
Added Files:
geom/sql/Tests/functions/Tests/ST_MakeBox2D.sql
geom/sql/Tests/functions/Tests/ST_MakeBox2D.stable.err
geom/sql/Tests/functions/Tests/ST_MakeBox2D.stable.out
Removed Files:
geom/sql/Tests/functions/Tests/makeBox2D.sql
geom/sql/Tests/functions/Tests/makeBox2D.stable.err
geom/sql/Tests/functions/Tests/makeBox2D.stable.out
Modified Files:
geom/monetdb5/geom.h
geom/monetdb5/geom.mal
geom/monetdb5/geomBulk.c
geom/sql/Tests/functions/Tests/All
geom/sql/Tests/functions/Tests/ST_GeomFromText.stable.err
geom/sql/Tests/functions/Tests/ST_LineFromText.stable.err
geom/sql/Tests/functions/Tests/ST_MLineFromText.stable.err
geom/sql/Tests/functions/Tests/ST_MPointFromText.stable.err
geom/sql/Tests/functions/Tests/ST_MPolygonFromText.stable.err
geom/sql/Tests/functions/Tests/ST_PointFromText.stable.err
geom/sql/Tests/functions/Tests/ST_PolygonFromText.stable.err
Branch: geo
Log Message:
ST_MakeBox2D : mTest + bulk
diffs (truncated from 1056 to 300 lines):
diff --git a/geom/monetdb5/geom.h b/geom/monetdb5/geom.h
--- a/geom/monetdb5/geom.h
+++ b/geom/monetdb5/geom.h
@@ -230,7 +230,9 @@ geom_export str wkbDumpPoints(int* idBAT
geom_export str geom_2_geom(wkb** resWKB, wkb **valueWKB, int* columnType,
int* columnSRID);
geom_export str wkbMBR(mbr **res, wkb **geom);
+
geom_export str wkbBox2D(mbr** box, wkb** point1, wkb** point2);
+geom_export str wkbBox2D_bat(int* outBAT_id, bat *aBAT_id, bat *bBAT_id);
geom_export str mbrOverlaps(bit *out, mbr **b1, mbr **b2);
geom_export str mbrOverlaps_wkb(bit *out, wkb **geom1WKB, wkb **geom2WKB);
diff --git a/geom/monetdb5/geom.mal b/geom/monetdb5/geom.mal
--- a/geom/monetdb5/geom.mal
+++ b/geom/monetdb5/geom.mal
@@ -589,6 +589,11 @@ command IsSimple(w:bat[:oid,:wkb]) :bat[
command IsRing(w:bat[:oid,:wkb]) :bat[:oid,:bit] address wkbIsRing_bat;
command IsValid(w:bat[:oid,:wkb]) :bat[:oid,:bit] address wkbIsValid_bat;
+command MakeBox2D(p1:bat[:oid,:wkb],p2:bat[:oid,:wkb]) :bat[:oid,:mbr] address
wkbBox2D_bat;
+
+
+
+
command pbsmIndexCreate(x:bat[:oid,:dbl], y:bat[:oid,:dbl], xmin:dbl,
ymin:dbl, xmax:dbl, ymax:dbl) :bat[:oid,:int] address pbsmIndexCreate_bat;
command geom.pbsmIndexLoad() address pbsmIndexLoad_bat;
diff --git a/geom/monetdb5/geomBulk.c b/geom/monetdb5/geomBulk.c
--- a/geom/monetdb5/geomBulk.c
+++ b/geom/monetdb5/geomBulk.c
@@ -326,6 +326,72 @@ str wkbIsValid_bat(bat *outBAT_id, bat *
/********* Two inputs **********/
/*******************************/
+str wkbBox2D_bat(int* outBAT_id, bat *aBAT_id, bat *bBAT_id) {
+ BAT *outBAT = NULL, *aBAT = NULL, *bBAT = NULL;
+ BATiter aBAT_iter, bBAT_iter;
+ BUN i=0;
+ str ret = MAL_SUCCEED;
+
+ //get the BATs
+ if ( (aBAT = BATdescriptor(*aBAT_id)) == NULL || (bBAT =
BATdescriptor(*bBAT_id)) == NULL ) {
+ ret = createException(MAL, "batgeom.wkbBox2D", "Problem
retrieving BATs");
+ goto clean;
+ }
+
+ //check if the BATs are dense and aligned
+ if( !BAThdense(aBAT) || !BAThdense(bBAT) ) {
+ ret = createException(MAL, "batgeom.wkbBox2D", "BATs must have
dense heads");
+ goto clean;
+ }
+ if( aBAT->hseqbase != bBAT->hseqbase || BATcount(aBAT) !=
BATcount(bBAT) ) {
+ ret = createException(MAL, "batgeom.wkbBox2D", "BATs must be
aligned");
+ goto clean;
+ }
+
+ //create a new BAT for the output
+ if ((outBAT = BATnew(TYPE_void, ATOMindex("mbr"), BATcount(aBAT),
TRANSIENT)) == NULL) {
+ ret = createException(MAL, "batgeom.wkbBox2D", "Error creating
new BAT");
+ goto clean;
+ }
+
+ //set the first idx of the output BAT equal to that of the aBAT
+ BATseqbase(outBAT, aBAT->hseqbase);
+
+ //iterator over the BATs
+ aBAT_iter = bat_iterator(aBAT);
+ bBAT_iter = bat_iterator(bBAT);
+
+ for (i = BUNfirst(aBAT); i < BATcount(aBAT); i++) {
+ str err = NULL;
+ mbr *outSingle;
+
+ wkb *aWKB = (wkb*) BUNtail(aBAT_iter, i + BUNfirst(aBAT));
+ wkb *bWKB = (wkb*) BUNtail(bBAT_iter, i + BUNfirst(bBAT));
+
+ if ((err = wkbBox2D(&outSingle, &aWKB, &bWKB)) != MAL_SUCCEED) {
+ BBPreleaseref(outBAT->batCacheid);
+
+ ret = createException(MAL, "batgeom.wkbBox2D", "%s",
err);
+ GDKfree(err);
+
+ goto clean;
+ }
+ BUNappend(outBAT,outSingle,TRUE); //add the result to the outBAT
+ GDKfree(outSingle);
+ outSingle = NULL;
+ }
+
+ BBPkeepref(*outBAT_id = outBAT->batCacheid);
+
+clean:
+ if(aBAT)
+ BBPreleaseref(aBAT->batCacheid);
+ if(bBAT)
+ BBPreleaseref(bBAT->batCacheid);
+
+ return ret;
+}
+
str wkbContains_bat(int* outBAT_id, bat *aBAT_id, bat *bBAT_id) {
BAT *outBAT = NULL, *aBAT = NULL, *bBAT = NULL;
BATiter aBAT_iter, bBAT_iter;
diff --git a/geom/sql/Tests/functions/Tests/All
b/geom/sql/Tests/functions/Tests/All
--- a/geom/sql/Tests/functions/Tests/All
+++ b/geom/sql/Tests/functions/Tests/All
@@ -45,7 +45,7 @@ ST_AsEWKT
#ST_Covers #Look at ST_Covers.sql for more details on the problem
#ST_CoveredBy #Look at ST_CoveredBy.sql for more details on the problem
-#makeBox2D
+ST_MakeBox2D
#makeEnvelope
#mbr_overlap
diff --git a/geom/sql/Tests/functions/Tests/ST_GeomFromText.stable.err
b/geom/sql/Tests/functions/Tests/ST_GeomFromText.stable.err
--- a/geom/sql/Tests/functions/Tests/ST_GeomFromText.stable.err
+++ b/geom/sql/Tests/functions/Tests/ST_GeomFromText.stable.err
@@ -29,184 +29,184 @@ stderr of test 'ST_GeomFromText` in dire
# 15:46:20 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-9662" "--port=32350"
# 15:46:20 >
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into points_tbl values (st_geomfromtext('point(0 20)', 4326));
ERROR = !column needs geometry(4, 0) and value is geometry(4, 4326)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into points_tbl values (st_geomfromtext('linestring(10 10, 20
20, 30 40)'));
ERROR = !column needs geometry(4, 0) and value is geometry(8, 0)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into points_tbl values (st_geomfromtext('point(0 20)'));
ERROR = !column needs geometry(4, 4326) and value is geometry(4, 0)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into points_tbl values (st_geomfromtext('point(0 20)', 0));
ERROR = !column needs geometry(4, 4326) and value is geometry(4, 0)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into points_tbl values (st_geomfromtext('linestring(10 10, 20
20, 30 40)', 4329));
ERROR = !column needs geometry(4, 4326) and value is geometry(8, 4329)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into points_tbl values (st_geomfromtext('point(0 20 20)',
4326));
ERROR = !column needs geometry(6, 0) and value is geometry(6, 4326)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into points_tbl values (st_geomfromtext('linestring(10 10, 20
20, 30 40)'));
ERROR = !column needs geometry(6, 0) and value is geometry(8, 0)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into points_tbl values (st_geomfromtext('point(0 20 20)'));
ERROR = !column needs geometry(6, 4326) and value is geometry(6, 0)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into points_tbl values (st_geomfromtext('point(0 20 20)', 0));
ERROR = !column needs geometry(6, 4326) and value is geometry(6, 0)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into points_tbl values (st_geomfromtext('linestring(10 10, 20
20, 30 40)', 4326));
ERROR = !column needs geometry(6, 4326) and value is geometry(8, 4326)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into lines_tbl values (st_geomfromtext('linestring(20 20, 30
30, 40 40)', 4326));
ERROR = !column needs geometry(8, 0) and value is geometry(8, 4326)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into lines_tbl values (st_geomfromtext('point(0 0)'));
ERROR = !column needs geometry(8, 0) and value is geometry(4, 0)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into lines_tbl values (st_geomfromtext('linestring(10 10, 20
20, 30 30)'));
ERROR = !column needs geometry(8, 4326) and value is geometry(8, 0)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into lines_tbl values (st_geomfromtext('linestring(30 30, 40
40, 50 50)', 0));
ERROR = !column needs geometry(8, 4326) and value is geometry(8, 0)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into lines_tbl values (st_geomfromtext('point(0 0)', 4326));
ERROR = !column needs geometry(8, 4326) and value is geometry(4, 4326)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into lines_tbl values (st_geomfromtext('linestring(20 20 20, 30
30 30, 40 40 40)', 4326));
ERROR = !column needs geometry(10, 0) and value is geometry(10, 4326)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into lines_tbl values (st_geomfromtext('point(0 0 0)'));
ERROR = !column needs geometry(10, 0) and value is geometry(6, 0)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into lines_tbl values (st_geomfromtext('linestring(10 10 10, 20
20 20, 30 30 30)'));
ERROR = !column needs geometry(10, 4326) and value is geometry(10, 0)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into lines_tbl values (st_geomfromtext('linestring(30 30 30, 40
40 40, 50 50 50)', 0));
ERROR = !column needs geometry(10, 4326) and value is geometry(10, 0)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into lines_tbl values (st_geomfromtext('point(0 0 0)', 4326));
ERROR = !column needs geometry(10, 4326) and value is geometry(6, 4326)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into polygons_tbl values (st_geomfromtext('polygon((20 20, 30
30, 40 40, 20 20))', 4326));
ERROR = !column needs geometry(16, 0) and value is geometry(16, 4326)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into polygons_tbl values (st_geomfromtext('linestring(10 10, 20
20, 30 40)'));
ERROR = !column needs geometry(16, 0) and value is geometry(8, 0)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into polygons_tbl values (st_geomfromtext('polygon((10 10, 20
20, 30 30, 10 10))'));
ERROR = !column needs geometry(16, 4326) and value is geometry(16, 0)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into polygons_tbl values (st_geomfromtext('polygon((30 30, 40
40, 50 50, 30 30))', 0));
ERROR = !column needs geometry(16, 4326) and value is geometry(16, 0)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into polygons_tbl values (st_geomfromtext('linestring(10 10, 20
20, 30 40)', 4326));
ERROR = !column needs geometry(16, 4326) and value is geometry(8, 4326)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into polygons_tbl values (st_geomfromtext('polygon((20 20 20,
30 30 30, 40 40 40, 20 20 20))', 4326));
ERROR = !column needs geometry(18, 0) and value is geometry(18, 4326)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into polygons_tbl values (st_geomfromtext('linestring(10 10 10,
20 20 20, 30 30 30)'));
ERROR = !column needs geometry(18, 0) and value is geometry(10, 0)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into polygons_tbl values (st_geomfromtext('polygon((10 10 10,
20 20 20, 30 30 30, 10 10 10))'));
ERROR = !column needs geometry(18, 4326) and value is geometry(18, 0)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into polygons_tbl values (st_geomfromtext('polygon((30 30 30,
40 40 40, 50 50 50, 30 30 30))', 0));
ERROR = !column needs geometry(18, 4326) and value is geometry(18, 0)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into polygons_tbl values (st_geomfromtext('linestring(10 10 10,
20 20 20, 30 30 30)', 4326));
ERROR = !column needs geometry(18, 4326) and value is geometry(10, 4326)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into points_tbl values (st_geomfromtext('multipoint(20 20, 30
30)', 4326));
ERROR = !column needs geometry(20, 0) and value is geometry(20, 4326)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into points_tbl values (st_geomfromtext('linestring(10 10, 20
20, 30 40)'));
ERROR = !column needs geometry(20, 0) and value is geometry(8, 0)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into points_tbl values (st_geomfromtext('multipoint(10 10, 20
20)'));
ERROR = !column needs geometry(20, 4326) and value is geometry(20, 0)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into points_tbl values (st_geomfromtext('multipoint(30 30, 40
40)', 0));
ERROR = !column needs geometry(20, 4326) and value is geometry(20, 0)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into points_tbl values (st_geomfromtext('linestring(10 10, 20
20, 30 40)', 4326));
ERROR = !column needs geometry(20, 4326) and value is geometry(8, 4326)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into points_tbl values (st_geomfromtext('multipoint(20 20 20,
30 30 30)', 4326));
ERROR = !column needs geometry(22, 0) and value is geometry(22, 4326)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into points_tbl values (st_geomfromtext('linestring(10 10 10,
20 20 20, 30 30 40)'));
ERROR = !column needs geometry(22, 0) and value is geometry(10, 0)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into points_tbl values (st_geomfromtext('multipoint(10 10 10,
20 20 20)'));
ERROR = !column needs geometry(22, 4326) and value is geometry(22, 0)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into points_tbl values (st_geomfromtext('multipoint(30 30 30,
40 40 40)', 0));
ERROR = !column needs geometry(22, 4326) and value is geometry(22, 0)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into points_tbl values (st_geomfromtext('linestring(10 10 10,
20 20 20, 30 30 30)', 4326));
ERROR = !column needs geometry(22, 4326) and value is geometry(10, 4326)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into lines_tbl values (st_geomfromtext('multilinestring((20 20,
30 30, 40 40), (50 50, 60 60, 70 70))', 4326));
ERROR = !column needs geometry(24, 0) and value is geometry(24, 4326)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into lines_tbl values (st_geomfromtext('point(0 0)'));
ERROR = !column needs geometry(24, 0) and value is geometry(4, 0)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into lines_tbl values (st_geomfromtext('multilinestring((10 10,
20 20, 30 30), (40 40, 50 50, 60 60))'));
ERROR = !column needs geometry(24, 4326) and value is geometry(24, 0)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
+MAPI = (monetdb) /var/tmp/mtest-22301/.s.monetdb.35113
QUERY = insert into lines_tbl values (st_geomfromtext('multilinestring((30 30,
40 40, 50 50), (60 60, 70 70, 80 80))', 0));
ERROR = !column needs geometry(24, 4326) and value is geometry(24, 0)
-MAPI = (monetdb) /var/tmp/mtest-16320/.s.monetdb.39577
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list