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