Changeset: 499f338930e8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/499f338930e8
Modified Files:
        sql/backends/monet5/UDF/pyapi3/Tests/pyloader3_01.test
        sql/scripts/39_analytics.sql
        sql/scripts/39_analytics_hge.sql
        sql/server/rel_select.c
        
sql/test/BugDay_2005-10-06_2.9.3/Tests/CrashMe_SQL_server_crash-2.SF-921673.test
        sql/test/Dependencies/Tests/dependency_owner_schema_3.test
        sql/test/bugs/Tests/innerjoin_multiple-bug-sf-943661.test
        sql/test/emptydb/Tests/check.stable.out
        sql/test/emptydb/Tests/check.stable.out.int128
        sql/test/sys-schema/Tests/check_ForeignKey_referential_integrity.test
        sql/test/sys-schema/Tests/check_Not_Nullable_columns.test
Branch: ordered-set-aggregates
Log Message:

approved output

handle order_required cases ie: select  quantile( one , 0.5 ) FROM tempa WHERE 
two > 2; and select quantile ( 0.5 order by one ) ; select quantile ( 0.5 ) 
within group (order by one);


diffs (truncated from 520 to 300 lines):

diff --git a/sql/backends/monet5/UDF/pyapi3/Tests/pyloader3_01.test 
b/sql/backends/monet5/UDF/pyapi3/Tests/pyloader3_01.test
--- a/sql/backends/monet5/UDF/pyapi3/Tests/pyloader3_01.test
+++ b/sql/backends/monet5/UDF/pyapi3/Tests/pyloader3_01.test
@@ -86,7 +86,7 @@ DROP LOADER myfunc2
 statement ok
 DROP LOADER myfunc3
 
-query ITTTIIIIIIII rowsort
+query ITTTIIIIIIIII rowsort
 SELECT * FROM functions WHERE name='myfunc'
 ----
 
diff --git a/sql/scripts/39_analytics.sql b/sql/scripts/39_analytics.sql
--- a/sql/scripts/39_analytics.sql
+++ b/sql/scripts/39_analytics.sql
@@ -293,53 +293,53 @@ create aggregate median(val INTERVAL MON
 GRANT EXECUTE ON AGGREGATE median(INTERVAL MONTH) TO PUBLIC;
 
 
-create aggregate quantile(val TINYINT, q DOUBLE) returns TINYINT
+create aggregate quantile(val TINYINT, q DOUBLE) returns TINYINT ORDERED
        external name "aggr"."quantile";
 GRANT EXECUTE ON AGGREGATE quantile(TINYINT, DOUBLE) TO PUBLIC;
-create aggregate quantile(val SMALLINT, q DOUBLE) returns SMALLINT
+create aggregate quantile(val SMALLINT, q DOUBLE) returns SMALLINT ORDERED
        external name "aggr"."quantile";
 GRANT EXECUTE ON AGGREGATE quantile(SMALLINT, DOUBLE) TO PUBLIC;
-create aggregate quantile(val INTEGER, q DOUBLE) returns INTEGER
+create aggregate quantile(val INTEGER, q DOUBLE) returns INTEGER ORDERED
        external name "aggr"."quantile";
 GRANT EXECUTE ON AGGREGATE quantile(INTEGER, DOUBLE) TO PUBLIC;
-create aggregate quantile(val BIGINT, q DOUBLE) returns BIGINT
+create aggregate quantile(val BIGINT, q DOUBLE) returns BIGINT ORDERED
        external name "aggr"."quantile";
 GRANT EXECUTE ON AGGREGATE quantile(BIGINT, DOUBLE) TO PUBLIC;
-create aggregate quantile(val DECIMAL(2), q DOUBLE) returns DECIMAL(2)
+create aggregate quantile(val DECIMAL(2), q DOUBLE) returns DECIMAL(2) ORDERED
        external name "aggr"."quantile";
 GRANT EXECUTE ON AGGREGATE quantile(DECIMAL(2), DOUBLE) TO PUBLIC;
-create aggregate quantile(val DECIMAL(4), q DOUBLE) returns DECIMAL(4)
+create aggregate quantile(val DECIMAL(4), q DOUBLE) returns DECIMAL(4) ORDERED
        external name "aggr"."quantile";
 GRANT EXECUTE ON AGGREGATE quantile(DECIMAL(4), DOUBLE) TO PUBLIC;
-create aggregate quantile(val DECIMAL(9), q DOUBLE) returns DECIMAL(9)
+create aggregate quantile(val DECIMAL(9), q DOUBLE) returns DECIMAL(9) ORDERED
        external name "aggr"."quantile";
 GRANT EXECUTE ON AGGREGATE quantile(DECIMAL(9), DOUBLE) TO PUBLIC;
-create aggregate quantile(val DECIMAL(18), q DOUBLE) returns DECIMAL(18)
+create aggregate quantile(val DECIMAL(18), q DOUBLE) returns DECIMAL(18) 
ORDERED
        external name "aggr"."quantile";
 GRANT EXECUTE ON AGGREGATE quantile(DECIMAL(18), DOUBLE) TO PUBLIC;
-create aggregate quantile(val REAL, q DOUBLE) returns REAL
+create aggregate quantile(val REAL, q DOUBLE) returns REAL ORDERED
        external name "aggr"."quantile";
 GRANT EXECUTE ON AGGREGATE quantile(REAL, DOUBLE) TO PUBLIC;
-create aggregate quantile(val DOUBLE, q DOUBLE) returns DOUBLE
+create aggregate quantile(val DOUBLE, q DOUBLE) returns DOUBLE ORDERED
        external name "aggr"."quantile";
 GRANT EXECUTE ON AGGREGATE quantile(DOUBLE, DOUBLE) TO PUBLIC;
 
-create aggregate quantile(val DATE, q DOUBLE) returns DATE
+create aggregate quantile(val DATE, q DOUBLE) returns DATE ORDERED
        external name "aggr"."quantile";
 GRANT EXECUTE ON AGGREGATE quantile(DATE, DOUBLE) TO PUBLIC;
-create aggregate quantile(val TIME, q DOUBLE) returns TIME
+create aggregate quantile(val TIME, q DOUBLE) returns TIME ORDERED
        external name "aggr"."quantile";
 GRANT EXECUTE ON AGGREGATE quantile(TIME, DOUBLE) TO PUBLIC;
-create aggregate quantile(val TIMESTAMP, q DOUBLE) returns TIMESTAMP
+create aggregate quantile(val TIMESTAMP, q DOUBLE) returns TIMESTAMP ORDERED
        external name "aggr"."quantile";
 GRANT EXECUTE ON AGGREGATE quantile(TIMESTAMP, DOUBLE) TO PUBLIC;
-create aggregate quantile(val INTERVAL SECOND, q DOUBLE) returns INTERVAL 
SECOND
+create aggregate quantile(val INTERVAL SECOND, q DOUBLE) returns INTERVAL 
SECOND ORDERED
        external name "aggr"."quantile";
 GRANT EXECUTE ON AGGREGATE quantile(INTERVAL SECOND, DOUBLE) TO PUBLIC;
-create aggregate quantile(val INTERVAL DAY, q DOUBLE) returns INTERVAL DAY
+create aggregate quantile(val INTERVAL DAY, q DOUBLE) returns INTERVAL DAY 
ORDERED
        external name "aggr"."quantile";
 GRANT EXECUTE ON AGGREGATE quantile(INTERVAL DAY, DOUBLE) TO PUBLIC;
-create aggregate quantile(val INTERVAL MONTH, q DOUBLE) returns INTERVAL MONTH
+create aggregate quantile(val INTERVAL MONTH, q DOUBLE) returns INTERVAL MONTH 
ORDERED
        external name "aggr"."quantile";
 GRANT EXECUTE ON AGGREGATE quantile(INTERVAL MONTH, DOUBLE) TO PUBLIC;
 
@@ -376,34 +376,34 @@ create aggregate median_avg(val DOUBLE) 
 GRANT EXECUTE ON AGGREGATE median_avg(DOUBLE) TO PUBLIC;
 
 
-create aggregate quantile_avg(val TINYINT, q DOUBLE) returns DOUBLE
+create aggregate quantile_avg(val TINYINT, q DOUBLE) returns DOUBLE ORDERED
        external name "aggr"."quantile_avg";
 GRANT EXECUTE ON AGGREGATE quantile_avg(TINYINT, DOUBLE) TO PUBLIC;
-create aggregate quantile_avg(val SMALLINT, q DOUBLE) returns DOUBLE
+create aggregate quantile_avg(val SMALLINT, q DOUBLE) returns DOUBLE ORDERED
        external name "aggr"."quantile_avg";
 GRANT EXECUTE ON AGGREGATE quantile_avg(SMALLINT, DOUBLE) TO PUBLIC;
-create aggregate quantile_avg(val INTEGER, q DOUBLE) returns DOUBLE
+create aggregate quantile_avg(val INTEGER, q DOUBLE) returns DOUBLE ORDERED
        external name "aggr"."quantile_avg";
 GRANT EXECUTE ON AGGREGATE quantile_avg(INTEGER, DOUBLE) TO PUBLIC;
-create aggregate quantile_avg(val BIGINT, q DOUBLE) returns DOUBLE
+create aggregate quantile_avg(val BIGINT, q DOUBLE) returns DOUBLE ORDERED
        external name "aggr"."quantile_avg";
 GRANT EXECUTE ON AGGREGATE quantile_avg(BIGINT, DOUBLE) TO PUBLIC;
-create aggregate quantile_avg(val DECIMAL(2), q DOUBLE) returns DOUBLE
+create aggregate quantile_avg(val DECIMAL(2), q DOUBLE) returns DOUBLE ORDERED
        external name "aggr"."quantile_avg";
 GRANT EXECUTE ON AGGREGATE quantile_avg(DECIMAL(2), DOUBLE) TO PUBLIC;
-create aggregate quantile_avg(val DECIMAL(4), q DOUBLE) returns DOUBLE
+create aggregate quantile_avg(val DECIMAL(4), q DOUBLE) returns DOUBLE ORDERED
        external name "aggr"."quantile_avg";
 GRANT EXECUTE ON AGGREGATE quantile_avg(DECIMAL(4), DOUBLE) TO PUBLIC;
-create aggregate quantile_avg(val DECIMAL(9), q DOUBLE) returns DOUBLE
+create aggregate quantile_avg(val DECIMAL(9), q DOUBLE) returns DOUBLE ORDERED
        external name "aggr"."quantile_avg";
 GRANT EXECUTE ON AGGREGATE quantile_avg(DECIMAL(9), DOUBLE) TO PUBLIC;
-create aggregate quantile_avg(val DECIMAL(18), q DOUBLE) returns DOUBLE
+create aggregate quantile_avg(val DECIMAL(18), q DOUBLE) returns DOUBLE ORDERED
        external name "aggr"."quantile_avg";
 GRANT EXECUTE ON AGGREGATE quantile_avg(DECIMAL(18), DOUBLE) TO PUBLIC;
-create aggregate quantile_avg(val REAL, q DOUBLE) returns DOUBLE
+create aggregate quantile_avg(val REAL, q DOUBLE) returns DOUBLE ORDERED
        external name "aggr"."quantile_avg";
 GRANT EXECUTE ON AGGREGATE quantile_avg(REAL, DOUBLE) TO PUBLIC;
-create aggregate quantile_avg(val DOUBLE, q DOUBLE) returns DOUBLE
+create aggregate quantile_avg(val DOUBLE, q DOUBLE) returns DOUBLE ORDERED
        external name "aggr"."quantile_avg";
 GRANT EXECUTE ON AGGREGATE quantile_avg(DOUBLE, DOUBLE) TO PUBLIC;
 
diff --git a/sql/scripts/39_analytics_hge.sql b/sql/scripts/39_analytics_hge.sql
--- a/sql/scripts/39_analytics_hge.sql
+++ b/sql/scripts/39_analytics_hge.sql
@@ -58,31 +58,31 @@ create aggregate median(val DECIMAL(38))
        external name "aggr"."median";
 GRANT EXECUTE ON AGGREGATE median(DECIMAL(38)) TO PUBLIC;
 
-create aggregate quantile(val HUGEINT, q DOUBLE) returns HUGEINT
+create aggregate quantile(val HUGEINT, q DOUBLE) returns HUGEINT ORDERED
        external name "aggr"."quantile";
 GRANT EXECUTE ON AGGREGATE quantile(HUGEINT, DOUBLE) TO PUBLIC;
 
-create aggregate quantile(val DECIMAL(38), q DOUBLE) returns DECIMAL(38)
+create aggregate quantile(val DECIMAL(38), q DOUBLE) returns DECIMAL(38) 
ORDERED
        external name "aggr"."quantile";
 GRANT EXECUTE ON AGGREGATE quantile(DECIMAL(38), DOUBLE) TO PUBLIC;
 
-create aggregate median_avg(val HUGEINT) returns DOUBLE
+create aggregate median_avg(val HUGEINT) returns DOUBLE ORDERED
        external name "aggr"."median_avg";
 GRANT EXECUTE ON AGGREGATE median_avg(HUGEINT) TO PUBLIC;
 
-create aggregate median_avg(val DECIMAL(38)) returns DOUBLE
+create aggregate median_avg(val DECIMAL(38)) returns DOUBLE ORDERED
        external name "aggr"."median_avg";
 GRANT EXECUTE ON AGGREGATE median_avg(DECIMAL(38)) TO PUBLIC;
 
-create aggregate quantile_avg(val HUGEINT, q DOUBLE) returns DOUBLE
+create aggregate quantile_avg(val HUGEINT, q DOUBLE) returns DOUBLE ORDERED
        external name "aggr"."quantile_avg";
 GRANT EXECUTE ON AGGREGATE quantile_avg(HUGEINT, DOUBLE) TO PUBLIC;
 
-create aggregate quantile_avg(val DECIMAL(38), q DOUBLE) returns DOUBLE
+create aggregate quantile_avg(val DECIMAL(38), q DOUBLE) returns DOUBLE ORDERED
        external name "aggr"."quantile_avg";
 GRANT EXECUTE ON AGGREGATE quantile_avg(DECIMAL(38), DOUBLE) TO PUBLIC;
 
-create aggregate corr(e1 HUGEINT, e2 HUGEINT) returns DOUBLE
+create aggregate corr(e1 HUGEINT, e2 HUGEINT) returns DOUBLE ORDERED
        external name "aggr"."corr";
 GRANT EXECUTE ON AGGREGATE corr(HUGEINT, HUGEINT) TO PUBLIC;
 create window corr(e1 HUGEINT, e2 HUGEINT) returns DOUBLE
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
@@ -3717,6 +3717,7 @@ static sql_exp *
                return NULL;
 
        list *obe = NULL;
+       bool handled_order = true;
        if (args && args->data.sym && args->data.sym->token != SQL_ORDERBY)
                        return NULL;
        if (args && args->data.sym) { /* handle order by */
@@ -3725,6 +3726,7 @@ static sql_exp *
                obe = rel_order_by(query, &gl, args->data.sym, 0, f);
                if (!obe)
                        return NULL;
+               handled_order = false;
        }
 
        if (all_freevar) {
@@ -3797,8 +3799,22 @@ static sql_exp *
 #endif
                                                        );
                a = sql_bind_func_result(sql, sname, aname, F_AGGR, true, tpe, 
1, exp_subtype(exps->h->data));
-       } else
+       } else {
                a = sql_bind_func_(sql, sname, aname, exp_types(sql->sa, exps), 
F_AGGR, false, false);
+               if (!a && obe && list_length(obe) == 1) { /* try to find 
aggregation function with requires order by column */
+                       list *nexps = append(sa_list(sql->sa), obe->h->data);
+                       nexps = list_merge(nexps, exps, (fdup) NULL);
+                       a = sql_bind_func_(sql, sname, aname, 
exp_types(sql->sa, nexps), F_AGGR, false, false);
+                       if (a && a->func->order_required) {
+                               /* reset error */
+                               handled_order = true;
+                               sql->session->status = 0;
+                               sql->errstr[0] = '\0';
+                               exps = nexps;
+                               obe = NULL;
+                       }
+               }
+       }
 
        if (a) {
                found = true;
@@ -3812,7 +3828,7 @@ static sql_exp *
                bool hasnil = have_nil(exps) || (strcmp(aname, "count") != 0 && 
(!groupby || list_empty(groupby->r))); /* for global case, the aggregate may 
return NULL */
                sql_exp *e = exp_aggr(sql->sa, exps, a, distinct, no_nil, 
groupby?groupby->card:CARD_ATOM, hasnil);
 
-               if (!obe && a->func->order_required) {
+               if (!obe && a->func->order_required && !handled_order) {
                        /* TODO preper error on missing order by */
                        return NULL;
                }
diff --git 
a/sql/test/BugDay_2005-10-06_2.9.3/Tests/CrashMe_SQL_server_crash-2.SF-921673.test
 
b/sql/test/BugDay_2005-10-06_2.9.3/Tests/CrashMe_SQL_server_crash-2.SF-921673.test
--- 
a/sql/test/BugDay_2005-10-06_2.9.3/Tests/CrashMe_SQL_server_crash-2.SF-921673.test
+++ 
b/sql/test/BugDay_2005-10-06_2.9.3/Tests/CrashMe_SQL_server_crash-2.SF-921673.test
@@ -27,5 +27,5 @@ WHERE columns.table_id = tables.id
     'objects', 'keys', 'modules', 'sequences')
 ORDER BY TABLE_SCHEM, TABLE_NAME, ORDINAL_POSITION
 ----
-1159 values hashing to 3c2bbe6a5854a6cce3e3b47236e91c82
+1178 values hashing to c15a1143f6d74788897aec600a462b9d
 
diff --git a/sql/test/Dependencies/Tests/dependency_owner_schema_3.test 
b/sql/test/Dependencies/Tests/dependency_owner_schema_3.test
--- a/sql/test/Dependencies/Tests/dependency_owner_schema_3.test
+++ b/sql/test/Dependencies/Tests/dependency_owner_schema_3.test
@@ -886,7 +886,7 @@ DEP_FUNC
 query TTT rowsort
 SELECT distinct c.name, v.name, 'DEP_VIEW' from sys.columns as c, sys.tables 
as v, sys.dependencies as dep where c.id = dep.id AND v.id = dep.depend_id AND 
dep.depend_type = 5 AND v.type in (1, 11, 21, 31) order by c.name, v.name
 ----
-1845 values hashing to f9a2dad1816ec201e57ce394ef9b0abd
+1851 values hashing to 43c843369c24d9e12a0cc728ce11aa67
 
 query TTT rowsort
 SELECT c.name, k.name, 'DEP_KEY' from sys.columns as c,  sys.objects as kc, 
sys.keys as k where kc."name" = c.name AND kc.id = k.id AND k.table_id = 
c.table_id AND k.rkey = -1 order by c.name, k.name
diff --git a/sql/test/bugs/Tests/innerjoin_multiple-bug-sf-943661.test 
b/sql/test/bugs/Tests/innerjoin_multiple-bug-sf-943661.test
--- a/sql/test/bugs/Tests/innerjoin_multiple-bug-sf-943661.test
+++ b/sql/test/bugs/Tests/innerjoin_multiple-bug-sf-943661.test
@@ -11,7 +11,7 @@ select schemas.name, tables.name, column
                        'objects', 'keys', 'modules', 'sequences')
  order by schemas.name, tables.name, columns.name
 ----
-435 values hashing to bb81bada51b1bbe50f43e6f3cc184250
+438 values hashing to 2bd7ef18b01fbee6f139b64003828536
 
 query TTT rowsort
 select s.name, t.name, c.name from
@@ -26,5 +26,5 @@ select s.name, t.name, c.name from
                        'objects', 'keys', 'modules', 'sequences')
  order by s.name, t.name, c.name
 ----
-435 values hashing to bb81bada51b1bbe50f43e6f3cc184250
+438 values hashing to 2bd7ef18b01fbee6f139b64003828536
 
diff --git a/sql/test/emptydb/Tests/check.stable.out 
b/sql/test/emptydb/Tests/check.stable.out
--- a/sql/test/emptydb/Tests/check.stable.out
+++ b/sql/test/emptydb/Tests/check.stable.out
@@ -1337,6 +1337,7 @@ select 'null in fkeys.delete_action', de
 [ "sys._columns",      "sys",  "functions",    "schema_id",    "int",  31,     
0,      NULL,   true,   9,      NULL,   NULL    ]
 [ "sys._columns",      "sys",  "functions",    "system",       "boolean",      
1,      0,      NULL,   true,   10,     NULL,   NULL    ]
 [ "sys._columns",      "sys",  "functions",    "semantics",    "boolean",      
1,      0,      NULL,   true,   11,     NULL,   NULL    ]
+[ "sys._columns",      "sys",  "functions",    "order_specification",  
"tinyint",      1,      0,      NULL,   true,   12,     NULL,   NULL    ]
 [ "sys._columns",      "sys",  "geometry_columns",     "f_table_catalog",      
"varchar",      1,      0,      NULL,   true,   0,      NULL,   NULL    ]
 [ "sys._columns",      "sys",  "geometry_columns",     "f_table_schema",       
"varchar",      1024,   0,      NULL,   true,   1,      NULL,   NULL    ]
 [ "sys._columns",      "sys",  "geometry_columns",     "f_table_name", 
"varchar",      1024,   0,      NULL,   true,   2,      NULL,   NULL    ]
@@ -2000,8 +2001,8 @@ select 'null in fkeys.delete_action', de
 [ "sys.functions",     "sys",  "getroboturl",  "SYSTEM",       "create 
function getroboturl(theurl url) returns string external name 
url.\"getRobotURL\";",    "url",  "MAL",  "Scalar function",      false,  
false,  false,  true,   NULL,   "result",       "varchar",      0,      0,      
"out",  "theurl",       "url",  0,      0,      "in",   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL    ]
 [ "sys.functions",     "sys",  "getuser",      "SYSTEM",       "create 
function getuser(theurl url) returns string external name url.\"getUser\";",    
"url",  "MAL",  "Scalar function",      false,  false,  false,  true,   NULL,   
"result",       "varchar",      0,      0,      "out",  "theurl",       "url",  
0,      0,      "in",   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL    ]
 [ "sys.functions",     "sys",  "greatest",     "SYSTEM",       "max_no_nil",   
"calc", "Internal C",   "Scalar function",      false,  false,  false,  true,   
NULL,   "res_0",        "any",  0,      0,      "out",  "arg_1",        "any",  
0,      0,      "in",   "arg_2",        "any",  0,      0,      "in",   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL    ]
-[ "sys.functions",     "sys",  "group_concat", "SYSTEM",       "create 
aggregate sys.group_concat(str string) returns string external name 
\"aggr\".\"str_group_concat\";",    "aggr", "MAL",  "Aggregate function",   
false,  false,  false,  true,   NULL,   "result",       "varchar",      0,      
0,      "out",  "str",  "varchar",      0,      0,      "in",   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL    ]
-[ "sys.functions",     "sys",  "group_concat", "SYSTEM",       "create 
aggregate sys.group_concat(str string, sep string) returns string external name 
\"aggr\".\"str_group_concat\";",        "aggr", "MAL",  "Aggregate function",   
false,  false,  false,  true,   NULL,   "result",       "varchar",      0,      
0,      "out",  "str",  "varchar",      0,      0,      "in",   "sep",  
"varchar",      0,      0,      "in",   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL    
]
+[ "sys.functions",     "sys",  "group_concat", "SYSTEM",       "create 
aggregate sys.group_concat(str string) returns string with order external name 
\"aggr\".\"str_group_concat\";", "aggr", "MAL",  "Aggregate function",   false, 
 false,  false,  true,   NULL,   "result",       "varchar",      0,      0,     
 "out",  "str",  "varchar",      0,      0,      "in",   NULL,   NULL,   NULL,  
 NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,  
 NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,  
 NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,  
 NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,  
 NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,  
 NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,  
 NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL    ]
+[ "sys.functions",     "sys",  "group_concat", "SYSTEM",       "create 
aggregate sys.group_concat(str string, sep string) returns string with order 
external name \"aggr\".\"str_group_concat\";",     "aggr", "MAL",  "Aggregate 
function",   false,  false,  false,  true,   NULL,   "result",       "varchar", 
     0,      0,      "out",  "str",  "varchar",      0,      0,      "in",   
"sep",  "varchar",      0,      0,      "in",   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL    ]
 [ "sys.functions",     "sys",  "group_concat", "SYSTEM",       "create window 
sys.group_concat(str string) returns string external name 
\"sql\".\"str_group_concat\";",        "sql",  "MAL",  "Analytic function",    
false,  false,  false,  true,   NULL,   "result",       "varchar",      0,      
0,      "out",  "str",  "varchar",      0,      0,      "in",   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL    ]
 [ "sys.functions",     "sys",  "group_concat", "SYSTEM",       "create window 
sys.group_concat(str string, sep string) returns string external name 
\"sql\".\"str_group_concat\";",    "sql",  "MAL",  "Analytic function",    
false,  false,  false,  true,   NULL,   "result",       "varchar",      0,      
0,      "out",  "str",  "varchar",      0,      0,      "in",   "sep",  
"varchar",      0,      0,      "in",   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL    
]
 [ "sys.functions",     "sys",  "has_m",        "SYSTEM",       "create 
function has_m(info integer) returns integer external name geom.\"hasM\";",     
"geom", "MAL",  "Scalar function",      false,  false,  false,  true,   NULL,   
"result",       "int",  31,     0,      "out",  "info", "int",  31,     0,      
"in",   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL    ]
@@ -3502,6 +3503,7 @@ select 'null in fkeys.delete_action', de
 [ "column used by view",       "sys",  "functions",    "language",     
"information_schema",   "parameters",   "VIEW"  ]
 [ "column used by view",       "sys",  "functions",    "mod",  
"information_schema",   "parameters",   "VIEW"  ]
 [ "column used by view",       "sys",  "functions",    "name", 
"information_schema",   "parameters",   "VIEW"  ]
+[ "column used by view",       "sys",  "functions",    "order_specification",  
"information_schema",   "parameters",   "VIEW"  ]
 [ "column used by view",       "sys",  "functions",    "schema_id",    
"information_schema",   "parameters",   "VIEW"  ]
 [ "column used by view",       "sys",  "functions",    "semantics",    
"information_schema",   "parameters",   "VIEW"  ]
 [ "column used by view",       "sys",  "functions",    "side_effect",  
"information_schema",   "parameters",   "VIEW"  ]
@@ -4232,6 +4234,7 @@ select 'null in fkeys.delete_action', de
 [ "column used by view",       "sys",  "functions",    "language",     "sys",  
"fully_qualified_functions",    "VIEW"  ]
 [ "column used by view",       "sys",  "functions",    "mod",  "sys",  
"fully_qualified_functions",    "VIEW"  ]
 [ "column used by view",       "sys",  "functions",    "name", "sys",  
"fully_qualified_functions",    "VIEW"  ]
+[ "column used by view",       "sys",  "functions",    "order_specification",  
"sys",  "fully_qualified_functions",    "VIEW"  ]
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to