Changeset: 2837102a706c for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2837102a706c
Modified Files:
sql/test/sciql/Tests/sciql00.sql
sql/test/sciql/Tests/sciql01.sql
sql/test/sciql/Tests/sciql02.sql
sql/test/sciql/Tests/sciql03.sql
sql/test/sciql/Tests/sciql04.sql
sql/test/sciql/Tests/sciql08.sql
sql/test/sciql/Tests/sciql09.sql
sql/test/sciql/Tests/sciql10.sql
sql/test/sciql/Tests/sciql12.sql
sql/test/sciql/Tests/sciql13.sql
sql/test/sciql/Tests/sciql14.sql
sql/test/sciql/Tests/sciql15.sql
sql/test/sciql/Tests/sciql17.sql
sql/test/sciql/Tests/sciql18.sql
sql/test/sciql/Tests/sciql19.sql
sql/test/sciql/Tests/sciql20.sql
sql/test/sciql/Tests/sciql21.sql
sql/test/sciql/Tests/sciql22.sql
sql/test/sciql/Tests/sciql23.sql
sql/test/sciql/Tests/sciql24.sql
sql/test/sciql/Tests/sciql25.sql
sql/test/sciql/Tests/sciql26.sql
sql/test/sciql/Tests/sciql27.sql
sql/test/sciql/Tests/sciql28.sql
sql/test/sciql/Tests/sciql29.sql
sql/test/sciql/Tests/sciql30.sql
sql/test/sciql/Tests/sciql30.stable.err
sql/test/sciql/Tests/sciql30.stable.out
sql/test/sciql/Tests/sciql31.sql
sql/test/sciql/Tests/sciql31.stable.err
sql/test/sciql/Tests/sciql31.stable.out
Branch: sciql
Log Message:
Synced the queries with the latest version of the sciql paper,
i.e., the version published in the array db 2011 workshop.
diffs (truncated from 694 to 300 lines):
diff --git a/sql/test/sciql/Tests/sciql00.sql b/sql/test/sciql/Tests/sciql00.sql
--- a/sql/test/sciql/Tests/sciql00.sql
+++ b/sql/test/sciql/Tests/sciql00.sql
@@ -2,3 +2,4 @@
CREATE ARRAY A2 ( x integer DIMENSION[0:4:1], v float DEFAULT 0.0);
CREATE SEQUENCE range AS integer START WITH 0 INCREMENT BY 1 MAXVALUE 3;
CREATE ARRAY A3 ( x integer DIMENSION [range], v float DEFAULT 0.0);
+
diff --git a/sql/test/sciql/Tests/sciql01.sql b/sql/test/sciql/Tests/sciql01.sql
--- a/sql/test/sciql/Tests/sciql01.sql
+++ b/sql/test/sciql/Tests/sciql01.sql
@@ -1,9 +1,5 @@
CREATE ARRAY matrix ( x integer DIMENSION[4], y integer DIMENSION[4], v float
DEFAULT 0.0 );
-CREATE ARRAY grid( x integer DIMENSION[4] CHECK(mod(x,2) = 0), y integer
DIMENSION[4], v float DEFAULT 0.0);
-CREATE ARRAY diagonal( x integer DIMENSION[4], y integer DIMENSION[4] CHECK(x
= y), v float );
+CREATE ARRAY stripes( x integer DIMENSION[4], y integer DIMENSION[4]
CHECK(mod(y,2) = 1), v float DEFAULT 0.0);
+CREATE ARRAY diagonal( x integer DIMENSION[4], y integer DIMENSION[4] CHECK(x
= y), v float DEFAULT 0.0);
CREATE ARRAY sparse( x integer DIMENSION[4], y integer DIMENSION[4], v float
DEFAULT 0.0 CHECK(v>=0.0));
-
-CREATE ARRAY stripes( x integer DIMENSION[4], y integer DIMENSION[4], v float
DEFAULT 0.0 );
-CREATE ARRAY stripes2( x integer DIMENSION, y integer DIMENSION, v float
DEFAULT 0.0 );
-CREATE ARRAY stripes3( x integer DIMENSION[4], y integer DIMENSION, v float
DEFAULT 0.0 );
diff --git a/sql/test/sciql/Tests/sciql02.sql b/sql/test/sciql/Tests/sciql02.sql
--- a/sql/test/sciql/Tests/sciql02.sql
+++ b/sql/test/sciql/Tests/sciql02.sql
@@ -1,6 +1,6 @@
-CREATE TABLE experiment(
- run date DIMENSION[ TIMESTAMP '2010-01-01':*: INTERVAL'1' day],
- payload float ARRAY[4][4] DEFAULT 0.0 );
+CREATE ARRAY experiment(
+ run date DIMENSION[TIMESTAMP '2010-01-01':*: INTERVAL '1' MINUTE],
+ payload FLOAT DEFAULT 0.0 );
CREATE ARRAY timeseries (
tick TIMESTAMP DIMENSION,
diff --git a/sql/test/sciql/Tests/sciql03.sql b/sql/test/sciql/Tests/sciql03.sql
--- a/sql/test/sciql/Tests/sciql03.sql
+++ b/sql/test/sciql/Tests/sciql03.sql
@@ -1,7 +1,12 @@
-UPDATE stripes SET v = x + y;
+UPDATE matrix SET v = CASE
+ WHEN x>y THEN x + y
+ WHEN x<y THEN x - y
+ ELSE 0 END;
+
+UPDATE diagonal SET v = x +y;
+
+UPDATE stripes SET v = MOD(RAND(),16);
+
+-- not in the paper
UPDATE stripes SET x = x+1; -- what does it mean
-- consider stripes
with free dimensions too
-UPDATE grid
-SET v = CASE WHEN x > y THEN x + y WHEN X<y THEN x - y ELSE 0 END;
-UPDATE diagonal SET v = x +y;
-UPDATE sparse SET v = mod(rand(),16);
diff --git a/sql/test/sciql/Tests/sciql04.sql b/sql/test/sciql/Tests/sciql04.sql
--- a/sql/test/sciql/Tests/sciql04.sql
+++ b/sql/test/sciql/Tests/sciql04.sql
@@ -1,6 +1,7 @@
-INSERT INTO grid VALUES(1,1,25);
-
DELETE FROM matrix WHERE x = 2;
INSERT INTO matrix SELECT x-1, y, v FROM matrix WHERE x > 2;
INSERT INTO matrix SELECT x, y, 0 FROM matrix WHERE x = 3;
INSERT INTO matrix(v) SELECT v FROM stripes;
+
+-- not in the paper
+INSERT INTO stripes VALUES(1,1,25);
diff --git a/sql/test/sciql/Tests/sciql08.sql b/sql/test/sciql/Tests/sciql08.sql
--- a/sql/test/sciql/Tests/sciql08.sql
+++ b/sql/test/sciql/Tests/sciql08.sql
@@ -1,2 +1,3 @@
SELECT matrix[1][1].v;
+SELECT matrix[*][1:3].v;
SELECT sparse[0:2][0:2].v;
diff --git a/sql/test/sciql/Tests/sciql09.sql b/sql/test/sciql/Tests/sciql09.sql
--- a/sql/test/sciql/Tests/sciql09.sql
+++ b/sql/test/sciql/Tests/sciql09.sql
@@ -1,5 +1,8 @@
-SET vector[0:2].v = (expr1,expr2);
-SET vector[x].v = CASE WHEN vector[x].v < 0 THEN 0
- WHEN vector[x].v >10 THEN 10 * x END ;
+-- FIXME: does this query update all 'v'-s in a row/column?
+UPDATE matrix SET matrix[0:2].v = v * 1.19;
-
+-- FIXME: the query does not match its description in the paper, nl., the CASE
statement doesn't cover all value cases.
+UPDATE matrix SET matrix[x].v = CASE
+ WHEN matrix[x].v < 0 THEN x
+ WHEN matrix[x].v >10 THEN 10 * x END;
+
diff --git a/sql/test/sciql/Tests/sciql10.sql b/sql/test/sciql/Tests/sciql10.sql
--- a/sql/test/sciql/Tests/sciql10.sql
+++ b/sql/test/sciql/Tests/sciql10.sql
@@ -1,16 +1,22 @@
-CREATE ARRAY vmatrix (
- x INTEGER DIMENSION[-1:4],
- y INTEGER DIMENSION[-1:4],
- w FLOAT DEFAULT 0) AS SELECT y, x, v FROM matrix;
+CREATE VIEW ARRAY vmatrix (
+ x INTEGER DIMENSION[-1:5:1],
+ y INTEGER DIMENSION[-1:5:1],
+ w FLOAT DEFAULT 0) AS
+SELECT y, x, v FROM matrix;
-CREATE ARRAY vector (
- x INTEGER DIMENSION[-1:4],
- w FLOAT DEFAULT 0);
-SELECT (A.v+B.v)/2 FROM vector AS A JOIN
- (SELECT x+1 AS x, w FROM vector) AS B ON A.x = B.x;
+CREATE VIEW ARRAY vector (
+ x INTEGER DIMENSION[-1:5:1],
+ w FLOAT DEFAULT 0) AS
+SELECT A.x, (A.v+B.v)/2
+FROM matrix AS A JOIN
+ (SELECT x+1 AS x, v FROM matrix) AS B ON A.x = B.x;
-CREATE ARRAY vmatrix ( x INTEGER DIMENSION[-1:4],
- y INTEGER DIMENSION[-1:4],
+CREATE VIEW ARRAY vmatrix2 (
+ x INTEGER DIMENSION[-1:5:1],
+ y INTEGER DIMENSION[-1:5:1],
w FLOAT DEFAULT 0) AS
+SELECT x, y, v FROM matrix WHERE x < 2
+UNION
SELECT x-1, y, v FROM matrix WHERE x > 2
-UNION SELECT x, y, 0 FROM matrix WHERE x =3;
+UNION
+SELECT x, y, 0 FROM matrix WHERE x =3;
diff --git a/sql/test/sciql/Tests/sciql12.sql b/sql/test/sciql/Tests/sciql12.sql
--- a/sql/test/sciql/Tests/sciql12.sql
+++ b/sql/test/sciql/Tests/sciql12.sql
@@ -1,3 +1,7 @@
SELECT [x], [y], avg(v) FROM matrix GROUP BY matrix[x:x+2][y:y+2];
SELECT [x], [y], avg(v) FROM matrix GROUP BY DISTINCT matrix[x:x+2][y:y+2];
-SELECT [x], [y], avg(v) FROM matrix GROUP BY matrix[x-1:x+1][y-1:y+1];
+SELECT [x], [y], avg(v) FROM matrix
+WHERE x > 0 AND y > 0
+GROUP BY DISTINCT matrix[x][y], matrix[x-1][y], matrix[x+1][y],
matrix[x][y-1], matrix[x][y+1];
+
+SELECT [x], [y], avg(v) FROM matrix GROUP BY vmatrix[x-1:x+1][y-1:y+1];
diff --git a/sql/test/sciql/Tests/sciql13.sql b/sql/test/sciql/Tests/sciql13.sql
--- a/sql/test/sciql/Tests/sciql13.sql
+++ b/sql/test/sciql/Tests/sciql13.sql
@@ -1,1 +1,1 @@
-SELECT [x],sum(v) FROM matrix GROUP BY DISTINCT matrix[x][y: *];
+SELECT [x], sum(v) FROM matrix GROUP BY matrix[x][*];
diff --git a/sql/test/sciql/Tests/sciql14.sql b/sql/test/sciql/Tests/sciql14.sql
--- a/sql/test/sciql/Tests/sciql14.sql
+++ b/sql/test/sciql/Tests/sciql14.sql
@@ -1,3 +1,3 @@
-SELECT x, y, (matrix[x-1][y].v + matrix[x+1][y].v + matrix[x][y-1].v +
matrix[x][y+1].v + matrix[x][y].v)/5
-FROM matrix[0:5][0:5]
-GROUP BY matrix[x][y], matrix[x-1][y], matrix[x+1][y], matrix[x][y-1],
matrix[x][y+1];
+SELECT [x], [y], AVG(v)
+FROM vmatrix[0:4][0:4]
+GROUP BY vmatrix[x][y], vmatrix[x-1][y], vmatrix[x+1][y], vmatrix[x][y-1],
vmatrix[x][y+1];
diff --git a/sql/test/sciql/Tests/sciql15.sql b/sql/test/sciql/Tests/sciql15.sql
--- a/sql/test/sciql/Tests/sciql15.sql
+++ b/sql/test/sciql/Tests/sciql15.sql
@@ -1,2 +1,5 @@
--- SELECT distance(A, ?V), A.* FROM matrix AS A GROUP BY matrix[x][*] AS A;
-SELECT distance(A, A), A.* FROM matrix AS A GROUP BY matrix[x][*];
+SELECT x, distance(matrix, ?V) AS dist
+FROM matrix
+GROUP BY matrix[x][*];
+ORDER BY dist
+LIMIT 10;
diff --git a/sql/test/sciql/Tests/sciql17.sql b/sql/test/sciql/Tests/sciql17.sql
--- a/sql/test/sciql/Tests/sciql17.sql
+++ b/sql/test/sciql/Tests/sciql17.sql
@@ -1,5 +1,8 @@
ALTER ARRAY matrix ADD r float DEFAULT sqrt( power(x,2) + power(y,2));
+
+-- FIXME: 1) where does 'r' come from?
+-- 2) in CASE: what is x = 0 and y <> 0?
ALTER ARRAY matrix ADD theta float
DEFAULT (CASE WHEN x=0 AND y=0 THEN 0
WHEN x> 0 THEN arcsin( CAST( x AS float) / r)
- WHEN x< 0 THEN -arcsin( CAST( x AS float) / r) + PI() END);
+ WHEN x< 0 THEN -arcsin( CAST( x AS float) / r) + PI() END);
diff --git a/sql/test/sciql/Tests/sciql18.sql b/sql/test/sciql/Tests/sciql18.sql
--- a/sql/test/sciql/Tests/sciql18.sql
+++ b/sql/test/sciql/Tests/sciql18.sql
@@ -1,4 +1,17 @@
-CREATE ARRAY tmp(x integer DIMENSION, y integer DIMENSION, v float);
-INSERT INTO tmp SELECT x, y, avg(v)
+CREATE ARRAY tmp(
+ x integer DIMENSION,
+ y integer DIMENSION,
+ v float) AS
+SELECT x/2, y/2, avg(v)
FROM matrix
-GROUP BY DISTINCT matrix[x:x+2][y:y+2];
+GROUP BY DISTINCT matrix[x:x+2][y:y+2]
+WITH DATA;
+
+CREATE ARRAY tmp2(
+ x integer DIMENSION[2],
+ y integer DIMENSION[2],
+ v float);
+INSERT INTO tmp2(v)
+ SELECT avg(v) FROM matrix
+ GROUP BY DISTINCT matrix[x:x+2][y:y+2];
+
diff --git a/sql/test/sciql/Tests/sciql19.sql b/sql/test/sciql/Tests/sciql19.sql
--- a/sql/test/sciql/Tests/sciql19.sql
+++ b/sql/test/sciql/Tests/sciql19.sql
@@ -1,18 +1,20 @@
-CREATE SEQUENCE rng AS integer START WITH 0 INCREMENT BY 1 MAXVALUE 7;
+CREATE SEQUENCE whiterange AS integer START WITH 0 INCREMENT BY 2 MAXVALUE 62;
+CREATE SEQUENCE blackrange AS integer START WITH 1 INCREMENT BY 2 MAXVALUE 63;
CREATE ARRAY white (
- i integer DIMENSION[rng],
- j integer DIMENSION[rng],
+ i integer DIMENSION[whiterange],
color char(5) DEFAULT 'white'
);
-CREATE ARRAY black (LIKE white);
-CREATE ARRAY chessboard(
- i integer DIMENSION[rng],
- j integer DIMENSION[rng],
- white char(5));
-INSERT INTO chessboard
-SELECT [i], [j], color FROM white
- WHERE ( i * 8 + j) / 2 = 0
-UNION
-SELECT [i], [j], color FROM black
- WHERE ( i * 8 + j) / 2 ;
+CREATE ARRAY black (
+ i integer DIMENSION[blackrange],
+ color char(5) DEFAULT 'black'
+);
+
+CREATE ARRAY zippe r(
+ i integer DIMENSION[64],
+ color char(5));
+INSERT INTO zipper
+ SELECT i, color FROM white
+ UNION
+ SELECT i, color FROM black
+
diff --git a/sql/test/sciql/Tests/sciql20.sql b/sql/test/sciql/Tests/sciql20.sql
--- a/sql/test/sciql/Tests/sciql20.sql
+++ b/sql/test/sciql/Tests/sciql20.sql
@@ -1,7 +1,12 @@
CREATE SEQUENCE seq AS integer START WITH 0 INCREMENT BY 1 MAXVALUE 10;
-CREATE FUNCTION random(n integer)
-RETURNS ARRAY( i integer DIMENSION[seq], v float)
- RETURN SELECT seq, rand() FROM SEQUENCES seq;
-CREATE FUNCTION transpose ( a ARRAY( i integer DIMENSION, j integer DIMENSION,
v float))
+
+-- FIXME: we can't select from a sequence...
+CREATE FUNCTION random ()
+ RETURNS ARRAY( i integer DIMENSION, v float)
+BEGIN RETURN SELECT [seq], rand() FROM SEQUENCES seq; END;
+
+CREATE FUNCTION transpose (
+ a ARRAY (i integer DIMENSION,
+ j integer DIMENSION, v float))
RETURNS ARRAY( i integer DIMENSION, j integer DIMENSION, v float)
-BEGIN RETURN SELECT [i],[j], a[j][i].v FROM a; END;
+BEGIN RETURN SELECT [j],[i], a[i][j].v FROM a; END;
diff --git a/sql/test/sciql/Tests/sciql21.sql b/sql/test/sciql/Tests/sciql21.sql
--- a/sql/test/sciql/Tests/sciql21.sql
+++ b/sql/test/sciql/Tests/sciql21.sql
@@ -1,3 +1,5 @@
-CREATE FUNCTION markov( a ARRAY( x int DIMENSION, y int DIMENSION, f float),
steps integer)
+CREATE FUNCTION markov(
+ input ARRAY( x int DIMENSION, y int DIMENSION, f float),
+ steps integer)
RETURNS ARRAY( x int DIMENSION, y int DIMENSION, f float)
EXTERNAL NAME ’markov.loop’;
diff --git a/sql/test/sciql/Tests/sciql22.sql b/sql/test/sciql/Tests/sciql22.sql
--- a/sql/test/sciql/Tests/sciql22.sql
+++ b/sql/test/sciql/Tests/sciql22.sql
@@ -1,2 +1,47 @@
CREATE ARRAY landsat ( channel integer DIMENSION[7], x integer
DIMENSION[1024], y integer DIMENSION[1024], v integer);
UPDATE landsat SET v = noise(v,delta) WHERE channel = 6 and mod(x,6) = 1;
+
+CREATE FUNCTION tvi (b3 REAL, b4 REAL) RETURNS REAL
+RETURN POWER( ((b4 - b3)/ (b4 + b3) + 0.5), 0.5);
+
+CREATE FUNCTION conv (
+ a ARRAY(i INTEGER DIMENSION[3], j INTEGER DIMENSION[3], v FLOAT))
+RETURNS FLOAT
+BEGIN
+ DECLARE s1 FLOAT, s2 FLOAT, z FLOAT;
+ SET s1 = (a[0][0].v + a[0][2].v +
+ a[2][0].v + a[2][2].v)/4.0;
+ SET s2 = (a[0][1].v + a[1][0].v +
+ a[1][2].v + a[2][1].v)/4.0;
+ SET z = 2 * ABS(s1 - s2);
+ IF ((ABS(a[1][1].v - s1)> z) or (ABS(a[1][1].v - s2)> z))
+ THEN RETURN s2;
+ ELSE RETURN a[1][1].v;
+ END IF;
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list