Changeset: 1d35e5a884e9 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1d35e5a884e9
Added Files:
        sql/test/sciql2sql/Tests/structural_joins.sql
Modified Files:
        sql/test/sciql2sql/Tests/All
        sql/test/sciql2sql/Tests/create_unbound_array.sql
        sql/test/sciql2sql/Tests/create_unbound_step_array.sql
        sql/test/sciql2sql/Tests/create_unbound_step_array.stable.out
        sql/test/sciql2sql/Tests/select_vector_array.sql
Branch: SciQL-2
Log Message:

Structural join tests.


diffs (209 lines):

diff --git a/sql/test/sciql2sql/Tests/All b/sql/test/sciql2sql/Tests/All
--- a/sql/test/sciql2sql/Tests/All
+++ b/sql/test/sciql2sql/Tests/All
@@ -22,6 +22,9 @@ slice_2d_array
 # selection with array type result 
 select_vector_array
 
+# all kind of array joins
+structural_joins
+
 # tiling based on dimensional attributes
 vector_fixed_tiles
 #
diff --git a/sql/test/sciql2sql/Tests/create_unbound_array.sql 
b/sql/test/sciql2sql/Tests/create_unbound_array.sql
--- a/sql/test/sciql2sql/Tests/create_unbound_array.sql
+++ b/sql/test/sciql2sql/Tests/create_unbound_array.sql
@@ -3,7 +3,7 @@ CREATE ARRAY array1Dunbound(x INTEGER DI
 SELECT * FROM array1Dunbound;
 DROP ARRAY array1Dunbound;
 
--- relational equivalent , step size can be cast as constraint
+-- relational equivalent 
 CREATE TABLE array1Dunbound(x INTEGER, v INTEGER DEFAULT 1);
 SELECT * FROM array1Dunbound;
 DROP ARRAY array1Dunbound;
diff --git a/sql/test/sciql2sql/Tests/create_unbound_step_array.sql 
b/sql/test/sciql2sql/Tests/create_unbound_step_array.sql
--- a/sql/test/sciql2sql/Tests/create_unbound_step_array.sql
+++ b/sql/test/sciql2sql/Tests/create_unbound_step_array.sql
@@ -10,9 +10,10 @@ CREATE TABLE array1Dintval(idx INTEGER R
 CREATE VIEW array1Dint 
 AS SELECT x,v FROM array1Dintdim, array1Dintval WHERE array1Dintdim.idx = 
array1Dintval.idx;
 
-INSERT INTO array1Dintdim VALUES (0,0),(1,4);
+-- the boundaries are known and can be initialized
+INSERT INTO array1Dintdim VALUES (0,0),(1,3);
 INSERT INTO array1Dintval VALUES (0,1),(1,1);
-SELECT * FROM array1Dintdim;
+SELECT * FROM array1Dint;
 
 DROP VIEW array1Dint;
 DROP TABLE array1Dintval;
diff --git a/sql/test/sciql2sql/Tests/create_unbound_step_array.stable.out 
b/sql/test/sciql2sql/Tests/create_unbound_step_array.stable.out
--- a/sql/test/sciql2sql/Tests/create_unbound_step_array.stable.out
+++ b/sql/test/sciql2sql/Tests/create_unbound_step_array.stable.out
@@ -40,33 +40,16 @@ Ready.
 [ 2    ]
 #INSERT INTO array1Dintval VALUES (0,1),(1,1);
 [ 2    ]
-#SELECT * FROM array1Dintdim;
-% sys.array1dintdim,   sys.array1dintdim # table_name
-% idx, x # name
-% int, int # type
-% 1,   1 # length
-[ 0,   0       ]
-[ 1,   4       ]
-#DROP VIEW array1Dint;
-#DROP TABLE array1Dintval;
-#DROP TABLE array1Dintdim;
-#CREATE TABLE array1Dint(x INTEGER, v INTEGER DEFAULT 1);
-#INSERT INTO array1Dint VALUES
-#(0,1),
-#(1,1),
-#(2,1),
-#(3,1);
-[ 4    ]
 #SELECT * FROM array1Dint;
 % sys.array1dint,      sys.array1dint # table_name
 % x,   v # name
 % int, int # type
 % 1,   1 # length
 [ 0,   1       ]
-[ 1,   1       ]
-[ 2,   1       ]
-[ 3,   1       ]
-#DROP TABLE array1Dint;
+[ 4,   1       ]
+#DROP VIEW array1Dint;
+#DROP TABLE array1Dintval;
+#DROP TABLE array1Dintdim;
 #CREATE ARRAY array1Dint(x INTEGER DIMENSION[0:*:*], v INTEGER DEFAULT 1);
 #SELECT * FROM array1Dint;
 % sys.array1dint,      sys.array1dint # table_name
diff --git a/sql/test/sciql2sql/Tests/select_vector_array.sql 
b/sql/test/sciql2sql/Tests/select_vector_array.sql
--- a/sql/test/sciql2sql/Tests/select_vector_array.sql
+++ b/sql/test/sciql2sql/Tests/select_vector_array.sql
@@ -22,7 +22,7 @@ SELECT x, v+w FROM vector;
 SELECT [x+2], v+w FROM array1D;
 
 -- relational equivalent
-SELECT x, v+w FROM vector;
+SELECT x+2, v+w FROM vector;
 
 -- extend array with constant y
 SELECT [x],[0], v+w FROM array1D;
@@ -40,7 +40,11 @@ CREATE TEMPORARY ARRAY tmp( v INTEGER DI
 INSERT INTO tmp SELECT v,x,w FROM vector;
 -- which arbitrary drops elements.
 -- To mimick this all but one row of a group should be deleted.
--- TBD
+CREATE FUNCTION ord() RETURNS TABLE (v integer, x integer, w integer)
+BEGIN
+       RETURN SELECT row_number() as id, v,x,w FROM vector ORDER BY v,x,w;
+END;
+SELECT v, min(id) FROM ord() GROUP BY v;
 -- In a strongly typed setting, a coercion error should be raised when 
 SELECT (SELECT count(*) FROM vector)  = (SELECT count(*)
        FROM vector
diff --git a/sql/test/sciql2sql/Tests/structural_joins.sql 
b/sql/test/sciql2sql/Tests/structural_joins.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/sciql2sql/Tests/structural_joins.sql
@@ -0,0 +1,97 @@
+-- structural joins over 4x4 and 2x2
+CREATE ARRAY image(x INTEGER DIMENSION[4], y INTEGER DIMENSION[4], gray 
INTEGER DEFAULT 0);
+INSERT INTO image values 
+( 0,   0,      2 ),
+( 0,   1,      2 ),
+( 0,   2,      2 ),
+( 0,   3,      2 ),
+( 1,   0,      2 ),
+( 1,   1,      2 ),
+( 1,   2,      2 ),
+( 1,   3,      2 ),
+( 2,   0,      2 ),
+( 2,   1,      2 ),
+( 2,   2,      2 ),
+( 2,   3,      2 ),
+( 3,   0,      2 ),
+( 3,   1,      2 ),
+( 3,   2,      2 ),
+( 3,   3,      2 );
+SELECT * from image;
+
+CREATE ARRAY patch(x INTEGER DIMENSION[2], y INTEGER DIMENSION[2], gray 
INTEGER DEFAULT 0);
+( 0,   0,      4 ),
+( 0,   1,      4 ),
+( 1,   0,      4 ),
+( 1,   1,      4 ),
+( 2,   0,      4 ),
+( 2,   3,      4 ),
+( 3,   0,      4 ),
+( 3,   1,      4 );
+SELECT * FROM patch;
+
+-- relational equivalent 
+CREATE TABLE imageR(x INTEGER CHECK(x >=0 and x < 4), y INTEGER CHECK( y>=0 
and y<4), gray INTEGER DEFAULT 0);
+INSERT INTO imageR VALUES 
+( 0,   0,      2 ),
+( 0,   1,      2 ),
+( 0,   2,      2 ),
+( 0,   3,      2 ),
+( 1,   0,      2 ),
+( 1,   1,      2 ),
+( 1,   2,      2 ),
+( 1,   3,      2 ),
+( 2,   0,      2 ),
+( 2,   1,      2 ),
+( 2,   2,      2 ),
+( 2,   3,      2 ),
+( 3,   0,      2 ),
+( 3,   1,      2 ),
+( 3,   2,      2 ),
+( 3,   3,      2 );
+
+CREATE TABLE patchR(x INTEGER CHECK(x >=0 and x < 2), y INTEGER CHECK( y>=0 
and y<2), gray INTEGER DEFAULT 0);
+INSERT INTO patchR VALUES
+( 0,   0,      4 ),
+( 0,   1,      4 ),
+( 1,   0,      4 ),
+( 1,   1,      4 ),
+( 2,   0,      4 ),
+( 2,   3,      4 ),
+( 3,   0,      4 ),
+( 3,   1,      4 );
+
+-- straightforward matrix addition returning an 4x4 ARRAY
+-- Underlying semantics is to use a natural join the dimensions
+SELECT [A.x], [A.y], (A.gray + B.gray)
+FROM image[x][y] A JOIN image[x][y] B;
+
+-- relational equivalent
+SELECT A.x,A.y, A.gray+B.gray
+FROM imageR A join imageR B ON A.x= B.x and A.y=B.y;
+
+-- addition of the patch with the image returning a 2x2 ARRAY
+SELECT [A.x], [A.y], (A.gray + B.gray)
+FROM image A[x][y] JOIN patch[x+1][y+2] B;
+
+-- relational equivalent
+SELECT A.x,A.y, A.gray+B.gray
+FROM imageR A join patchR B ON A.x= B.x+1 and A.y=B.y+2;
+
+-- simple window based aggregation
+SELECT [x], [y], avg(gray)
+FROM image
+GROUP BY image[x:x+3][y:y+3];
+
+SELECT x AS XOFF, y AS YOFF, (
+    SELECT avg(A.gray + B.gray)
+    FROM imageR A,  patchR B
+    WHERE A.x - R.x = B.x AND A.y- R.y = B.y )
+FROM imageR R;
+
+DROP ARRAY image;
+DROP ARRAY patch;
+
+DROP TABLE imageR;
+DROP TABLE patchR;
+
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to