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

Reply via email to