Changeset: 5a8901292ca7 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5a8901292ca7 Modified Files: sql/scripts/29_array.sql sql/server/rel_select.c Branch: SciQL-2 Log Message:
allow array slicing and tiling for 4 dimensions diffs (161 lines): diff --git a/sql/scripts/29_array.sql b/sql/scripts/29_array.sql --- a/sql/scripts/29_array.sql +++ b/sql/scripts/29_array.sql @@ -267,6 +267,41 @@ create function array_count(val bigint, create function array_count(val real, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int) returns bigint external name "array".cnt; create function array_count(val double, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int) returns bigint external name "array".cnt; +create function array_avg(val tinyint, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int, dim4 tinyint, offsets4 tinyint, size4 int) returns double external name "array".avg; +create function array_avg(val smallint, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int, dim4 tinyint, offsets4 tinyint, size4 int) returns double external name "array".avg; +create function array_avg(val int, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int, dim4 tinyint, offsets4 tinyint, size4 int) returns double external name "array".avg; +create function array_avg(val bigint, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int, dim4 tinyint, offsets4 tinyint, size4 int) returns double external name "array".avg; +create function array_avg(val real, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int, dim4 tinyint, offsets4 tinyint, size4 int) returns double external name "array".avg; +create function array_avg(val double, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int, dim4 tinyint, offsets4 tinyint, size4 int) returns double external name "array".avg; + +create function array_sum(val tinyint, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int, dim4 tinyint, offsets4 tinyint, size4 int) returns bigint external name "array".sum; +create function array_sum(val smallint, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int, dim4 tinyint, offsets4 tinyint, size4 int) returns bigint external name "array".sum; +create function array_sum(val int, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int, dim4 tinyint, offsets4 tinyint, size4 int) returns bigint external name "array".sum; +create function array_sum(val bigint, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int, dim4 tinyint, offsets4 tinyint, size4 int) returns bigint external name "array".sum; +create function array_sum(val real, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int, dim4 tinyint, offsets4 tinyint, size4 int) returns double external name "array".sum; +create function array_sum(val double, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int, dim4 tinyint, offsets4 tinyint, size4 int) returns double external name "array".sum; + +create function array_min(val tinyint, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int, dim4 tinyint, offsets4 tinyint, size4 int) returns tinyint external name "array".min; +create function array_min(val smallint, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int, dim4 tinyint, offsets4 tinyint, size4 int) returns smallint external name "array".min; +create function array_min(val int, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int, dim4 tinyint, offsets4 tinyint, size4 int) returns int external name "array".min; +create function array_min(val bigint, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int, dim4 tinyint, offsets4 tinyint, size4 int) returns bigint external name "array".min; +create function array_min(val real, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int, dim4 tinyint, offsets4 tinyint, size4 int) returns real external name "array".min; +create function array_min(val double, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int, dim4 tinyint, offsets4 tinyint, size4 int) returns double external name "array".min; + +create function array_max(val tinyint, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int, dim4 tinyint, offsets4 tinyint, size4 int) returns tinyint external name "array".max; +create function array_max(val smallint, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int, dim4 tinyint, offsets4 tinyint, size4 int) returns smallint external name "array".max; +create function array_max(val int, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int, dim4 tinyint, offsets4 tinyint, size4 int) returns int external name "array".max; +create function array_max(val bigint, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int, dim4 tinyint, offsets4 tinyint, size4 int) returns bigint external name "array".max; +create function array_max(val real, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int, dim4 tinyint, offsets4 tinyint, size4 int) returns real external name "array".max; +create function array_max(val double, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int, dim4 tinyint, offsets4 tinyint, size4 int) returns double external name "array".max; + +create function array_count(val tinyint, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int, dim4 tinyint, offsets4 tinyint, size4 int) returns bigint external name "array".cnt; +create function array_count(val smallint, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int, dim4 tinyint, offsets4 tinyint, size4 int) returns bigint external name "array".cnt; +create function array_count(val int, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int, dim4 tinyint, offsets4 tinyint, size4 int) returns bigint external name "array".cnt; +create function array_count(val bigint, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int, dim4 tinyint, offsets4 tinyint, size4 int) returns bigint external name "array".cnt; +create function array_count(val real, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int, dim4 tinyint, offsets4 tinyint, size4 int) returns bigint external name "array".cnt; +create function array_count(val double, dim1 tinyint, offsets1 tinyint, size1 int, dim2 tinyint, offsets2 tinyint, size2 int, dim3 tinyint, offsets3 tinyint, size3 int, dim4 tinyint, offsets4 tinyint, size4 int) returns bigint external name "array".cnt; + create function array_avg(val tinyint, dim1 smallint, offsets1 smallint, size1 int) returns double external name "array".avg; create function array_avg(val smallint, dim1 smallint, offsets1 smallint, size1 int) returns double external name "array".avg; create function array_avg(val int, dim1 smallint, offsets1 smallint, size1 int) returns double external name "array".avg; @@ -372,6 +407,41 @@ create function array_count(val bigint, create function array_count(val real, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int) returns bigint external name "array".cnt; create function array_count(val double, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int) returns bigint external name "array".cnt; +create function array_avg(val tinyint, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int, dim4 smallint, offsets4 smallint, size4 int) returns double external name "array".avg; +create function array_avg(val smallint, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int, dim4 smallint, offsets4 smallint, size4 int) returns double external name "array".avg; +create function array_avg(val int, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int, dim4 smallint, offsets4 smallint, size4 int) returns double external name "array".avg; +create function array_avg(val bigint, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int, dim4 smallint, offsets4 smallint, size4 int) returns double external name "array".avg; +create function array_avg(val real, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int, dim4 smallint, offsets4 smallint, size4 int) returns double external name "array".avg; +create function array_avg(val double, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int, dim4 smallint, offsets4 smallint, size4 int) returns double external name "array".avg; + +create function array_sum(val tinyint, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int, dim4 smallint, offsets4 smallint, size4 int) returns bigint external name "array".sum; +create function array_sum(val smallint, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int, dim4 smallint, offsets4 smallint, size4 int) returns bigint external name "array".sum; +create function array_sum(val int, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int, dim4 smallint, offsets4 smallint, size4 int) returns bigint external name "array".sum; +create function array_sum(val bigint, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int, dim4 smallint, offsets4 smallint, size4 int) returns bigint external name "array".sum; +create function array_sum(val real, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int, dim4 smallint, offsets4 smallint, size4 int) returns double external name "array".sum; +create function array_sum(val double, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int, dim4 smallint, offsets4 smallint, size4 int) returns double external name "array".sum; + +create function array_min(val tinyint, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int, dim4 smallint, offsets4 smallint, size4 int) returns tinyint external name "array".min; +create function array_min(val smallint, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int, dim4 smallint, offsets4 smallint, size4 int) returns smallint external name "array".min; +create function array_min(val int, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int, dim4 smallint, offsets4 smallint, size4 int) returns int external name "array".min; +create function array_min(val bigint, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int, dim4 smallint, offsets4 smallint, size4 int) returns bigint external name "array".min; +create function array_min(val real, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int, dim4 smallint, offsets4 smallint, size4 int) returns real external name "array".min; +create function array_min(val double, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int, dim4 smallint, offsets4 smallint, size4 int) returns double external name "array".min; + +create function array_max(val tinyint, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int, dim4 smallint, offsets4 smallint, size4 int) returns tinyint external name "array".max; +create function array_max(val smallint, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int, dim4 smallint, offsets4 smallint, size4 int) returns smallint external name "array".max; +create function array_max(val int, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int, dim4 smallint, offsets4 smallint, size4 int) returns int external name "array".max; +create function array_max(val bigint, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int, dim4 smallint, offsets4 smallint, size4 int) returns bigint external name "array".max; +create function array_max(val real, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int, dim4 smallint, offsets4 smallint, size4 int) returns real external name "array".max; +create function array_max(val double, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int, dim4 smallint, offsets4 smallint, size4 int) returns double external name "array".max; + +create function array_count(val tinyint, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int, dim4 smallint, offsets4 smallint, size4 int) returns bigint external name "array".cnt; +create function array_count(val smallint, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int, dim4 smallint, offsets4 smallint, size4 int) returns bigint external name "array".cnt; +create function array_count(val int, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int, dim4 smallint, offsets4 smallint, size4 int) returns bigint external name "array".cnt; +create function array_count(val bigint, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int, dim4 smallint, offsets4 smallint, size4 int) returns bigint external name "array".cnt; +create function array_count(val real, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int, dim4 smallint, offsets4 smallint, size4 int) returns bigint external name "array".cnt; +create function array_count(val double, dim1 smallint, offsets1 smallint, size1 int, dim2 smallint, offsets2 smallint, size2 int, dim3 smallint, offsets3 smallint, size3 int, dim4 smallint, offsets4 smallint, size4 int) returns bigint external name "array".cnt; + create function array_avg(val tinyint, dim1 int, offsets1 int, size1 int) returns double external name "array".avg; create function array_avg(val smallint, dim1 int, offsets1 int, size1 int) returns double external name "array".avg; create function array_avg(val int, dim1 int, offsets1 int, size1 int) returns double external name "array".avg; @@ -477,7 +547,43 @@ create function array_count(val bigint, create function array_count(val real, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int) returns bigint external name "array".cnt; create function array_count(val double, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int) returns bigint external name "array".cnt; +create function array_avg(val tinyint, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int, dim4 int, offsets4 int, size4 int) returns double external name "array".avg; +create function array_avg(val smallint, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int, dim4 int, offsets4 int, size4 int) returns double external name "array".avg; +create function array_avg(val int, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int, dim4 int, offsets4 int, size4 int) returns double external name "array".avg; +create function array_avg(val bigint, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int, dim4 int, offsets4 int, size4 int) returns double external name "array".avg; +create function array_avg(val real, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int, dim4 int, offsets4 int, size4 int) returns double external name "array".avg; +create function array_avg(val double, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int, dim4 int, offsets4 int, size4 int) returns double external name "array".avg; + +create function array_sum(val tinyint, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int, dim4 int, offsets4 int, size4 int) returns bigint external name "array".sum; +create function array_sum(val smallint, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int, dim4 int, offsets4 int, size4 int) returns bigint external name "array".sum; +create function array_sum(val int, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int, dim4 int, offsets4 int, size4 int) returns bigint external name "array".sum; +create function array_sum(val bigint, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int, dim4 int, offsets4 int, size4 int) returns bigint external name "array".sum; +create function array_sum(val real, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int, dim4 int, offsets4 int, size4 int) returns double external name "array".sum; +create function array_sum(val double, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int, dim4 int, offsets4 int, size4 int) returns double external name "array".sum; + +create function array_min(val tinyint, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int, dim4 int, offsets4 int, size4 int) returns tinyint external name "array".min; +create function array_min(val smallint, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int, dim4 int, offsets4 int, size4 int) returns smallint external name "array".min; +create function array_min(val int, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int, dim4 int, offsets4 int, size4 int) returns int external name "array".min; +create function array_min(val bigint, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int, dim4 int, offsets4 int, size4 int) returns bigint external name "array".min; +create function array_min(val real, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int, dim4 int, offsets4 int, size4 int) returns real external name "array".min; +create function array_min(val double, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int, dim4 int, offsets4 int, size4 int) returns double external name "array".min; + +create function array_max(val tinyint, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int, dim4 int, offsets4 int, size4 int) returns tinyint external name "array".max; +create function array_max(val smallint, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int, dim4 int, offsets4 int, size4 int) returns smallint external name "array".max; +create function array_max(val int, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int, dim4 int, offsets4 int, size4 int) returns int external name "array".max; +create function array_max(val bigint, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int, dim4 int, offsets4 int, size4 int) returns bigint external name "array".max; +create function array_max(val real, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int, dim4 int, offsets4 int, size4 int) returns real external name "array".max; +create function array_max(val double, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int, dim4 int, offsets4 int, size4 int) returns double external name "array".max; + +create function array_count(val tinyint, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int, dim4 int, offsets4 int, size4 int) returns bigint external name "array".cnt; +create function array_count(val smallint, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int, dim4 int, offsets4 int, size4 int) returns bigint external name "array".cnt; +create function array_count(val int, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int, dim4 int, offsets4 int, size4 int) returns bigint external name "array".cnt; +create function array_count(val bigint, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int, dim4 int, offsets4 int, size4 int) returns bigint external name "array".cnt; +create function array_count(val real, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int, dim4 int, offsets4 int, size4 int) returns bigint external name "array".cnt; +create function array_count(val double, dim1 int, offsets1 int, size1 int, dim2 int, offsets2 int, size2 int, dim3 int, offsets3 int, size3 int, dim4 int, offsets4 int, size4 int) returns bigint external name "array".cnt; + create filter function array_slice(dim1_strt bigint, dim1_step bigint, dim1_stop bigint, slice1_strt bigint, slice1_step bigint, slice1_stop bigint) external name "array".slice; create filter function array_slice(dim1_strt bigint, dim1_step bigint, dim1_stop bigint, slice1_strt bigint, slice1_step bigint, slice1_stop bigint, dim2_strt bigint, dim2_step bigint, dim2_stop bigint, slice2_strt bigint, slice2_step bigint, slice2_stop bigint) external name "array".slice; create filter function array_slice(dim1_strt bigint, dim1_step bigint, dim1_stop bigint, slice1_strt bigint, slice1_step bigint, slice1_stop bigint, dim2_strt bigint, dim2_step bigint, dim2_stop bigint, slice2_strt bigint, slice2_step bigint, slice2_stop bigint, dim3_strt bigint, dim3_step bigint, dim3_stop bigint, slice3_strt bigint, slice3_step bigint, slice3_stop bigint) external name "array".slice; +create filter function array_slice(dim1_strt bigint, dim1_step bigint, dim1_stop bigint, slice1_strt bigint, slice1_step bigint, slice1_stop bigint, dim2_strt bigint, dim2_step bigint, dim2_stop bigint, slice2_strt bigint, slice2_step bigint, slice2_stop bigint, dim3_strt bigint, dim3_step bigint, dim3_stop bigint, slice3_strt bigint, slice3_step bigint, slice3_stop bigint, dim4_strt bigint, dim4_step bigint, dim4_stop bigint, slice4_strt bigint, slice4_step bigint, slice4_stop bigint) external name "array".slice; diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c --- a/sql/server/rel_select.c +++ b/sql/server/rel_select.c @@ -619,6 +619,8 @@ static sql_exp * return sql_error(sql, 02, "Dimension %s not found in table %s", cname, tname); } +#define ARRAY_SLICING_MAX_DIMS 4 + static sql_rel * rel_arrayslice(mvc *sql, sql_table *t, char *tname, symbol *dimref) { @@ -644,7 +646,7 @@ rel_arrayslice(mvc *sql, sql_table *t, c if (dlist_length(idx_exp->data.lval) == 3) realSlice = 1; } - if (realSlice && t->valence > 3) + if (realSlice && t->valence > ARRAY_SLICING_MAX_DIMS) return sql_error(sql, 02, "array slicing with step size over arrays with more than three dimensions not supported yet"); /* If none of the slicing ranges has a step size, translate the slicing into [range|point] selections */ @@ -2244,7 +2246,7 @@ static int return 1; } -#define ARRAY_TILING_MAX_DIMS 3 +#define ARRAY_TILING_MAX_DIMS 4 static list * rel_arraytiling(mvc *sql, sql_rel **rel, symbol *tile_def, int f, str *aname, int oneRange) _______________________________________________ checkin-list mailing list checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list