Changeset: d5319e63022c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d5319e63022c
Modified Files:
clients/Tests/MAL-signatures.stable.out
clients/Tests/MAL-signatures.stable.out.int128
sql/backends/monet5/sql.c
sql/test/subquery/Tests/subquery6.sql
sql/test/subquery/Tests/subquery6.stable.out
Branch: default
Log Message:
Make the second input argument to lead and lag function arbitrary, so it can be
bound on the backend
diffs (254 lines):
diff --git a/clients/Tests/MAL-signatures.stable.out
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -5603,29 +5603,29 @@ stdout of test 'MAL-signatures` in direc
[ "batsql", "get_value", "pattern batsql.get_value(X_1:bat[:str],
X_2:bat[:str]):bat[:lng] ", "mvc_bat_get_value;", "" ]
[ "batsql", "get_value", "pattern batsql.get_value(X_1:bat[:str],
X_2:str):bat[:lng] ", "mvc_bat_get_value;", "" ]
[ "batsql", "get_value", "pattern batsql.get_value(X_1:str,
X_2:bat[:str]):bat[:lng] ", "mvc_bat_get_value;", "" ]
-[ "batsql", "lag", "pattern batsql.lag(X_1:any_1, X_2:any_2,
X_3:bat[:any_1], X_4:any_3, X_5:any_4):bat[:any_1] ", "SQLlag;", "" ]
-[ "batsql", "lag", "pattern batsql.lag(X_1:any_1, X_2:bat[:any_2],
X_3:any_1, X_4:any_3, X_5:any_4):bat[:any_1] ", "SQLlag;", "" ]
-[ "batsql", "lag", "pattern batsql.lag(X_1:any_1, X_2:bat[:any_2],
X_3:any_3, X_4:any_4):bat[:any_1] ", "SQLlag;", "" ]
-[ "batsql", "lag", "pattern batsql.lag(X_1:any_1, X_2:bat[:any_2],
X_3:bat[:any_1], X_4:any_3, X_5:any_4):bat[:any_1] ", "SQLlag;", ""
]
-[ "batsql", "lag", "pattern batsql.lag(X_1:bat[:any_1], X_2:any_2,
X_3:any_1, X_4:any_3, X_5:any_4):bat[:any_1] ", "SQLlag;", "" ]
-[ "batsql", "lag", "pattern batsql.lag(X_1:bat[:any_1], X_2:any_2,
X_3:any_3, X_4:any_4):bat[:any_1] ", "SQLlag;", "" ]
-[ "batsql", "lag", "pattern batsql.lag(X_1:bat[:any_1], X_2:any_2,
X_3:bat[:any_1], X_4:any_3, X_5:any_4):bat[:any_1] ", "SQLlag;", ""
]
-[ "batsql", "lag", "pattern batsql.lag(X_1:bat[:any_1], X_2:any_3,
X_3:any_4):bat[:any_1] ", "SQLlag;", "" ]
-[ "batsql", "lag", "pattern batsql.lag(X_1:bat[:any_1], X_2:bat[:any_2],
X_3:any_1, X_4:any_3, X_5:any_4):bat[:any_1] ", "SQLlag;", "" ]
-[ "batsql", "lag", "pattern batsql.lag(X_1:bat[:any_1], X_2:bat[:any_2],
X_3:any_3, X_4:any_4):bat[:any_1] ", "SQLlag;", "" ]
-[ "batsql", "lag", "pattern batsql.lag(X_1:bat[:any_1], X_2:bat[:any_2],
X_3:bat[:any_1], X_4:any_3, X_5:any_4):bat[:any_1] ", "SQLlag;", ""
]
+[ "batsql", "lag", "pattern batsql.lag(X_1:any_1, X_2:any,
X_3:bat[:any_1], X_4:any_2, X_5:any_3):bat[:any_1] ", "SQLlag;", ""
]
+[ "batsql", "lag", "pattern batsql.lag(X_1:any_1, X_2:bat[:any],
X_3:any_1, X_4:any_2, X_5:any_3):bat[:any_1] ", "SQLlag;", "" ]
+[ "batsql", "lag", "pattern batsql.lag(X_1:any_1, X_2:bat[:any],
X_3:any_2, X_4:any_3):bat[:any_1] ", "SQLlag;", "" ]
+[ "batsql", "lag", "pattern batsql.lag(X_1:any_1, X_2:bat[:any],
X_3:bat[:any_1], X_4:any_2, X_5:any_3):bat[:any_1] ", "SQLlag;", ""
]
+[ "batsql", "lag", "pattern batsql.lag(X_1:bat[:any_1], X_2:any,
X_3:any_1, X_4:any_2, X_5:any_3):bat[:any_1] ", "SQLlag;", "" ]
+[ "batsql", "lag", "pattern batsql.lag(X_1:bat[:any_1], X_2:any,
X_3:any_2, X_4:any_3):bat[:any_1] ", "SQLlag;", "" ]
+[ "batsql", "lag", "pattern batsql.lag(X_1:bat[:any_1], X_2:any,
X_3:bat[:any_1], X_4:any_2, X_5:any_3):bat[:any_1] ", "SQLlag;", ""
]
+[ "batsql", "lag", "pattern batsql.lag(X_1:bat[:any_1], X_2:any_2,
X_3:any_3):bat[:any_1] ", "SQLlag;", "" ]
+[ "batsql", "lag", "pattern batsql.lag(X_1:bat[:any_1], X_2:bat[:any],
X_3:any_1, X_4:any_2, X_5:any_3):bat[:any_1] ", "SQLlag;", "" ]
+[ "batsql", "lag", "pattern batsql.lag(X_1:bat[:any_1], X_2:bat[:any],
X_3:any_2, X_4:any_3):bat[:any_1] ", "SQLlag;", "" ]
+[ "batsql", "lag", "pattern batsql.lag(X_1:bat[:any_1], X_2:bat[:any],
X_3:bat[:any_1], X_4:any_2, X_5:any_3):bat[:any_1] ", "SQLlag;", ""
]
[ "batsql", "last_value", "pattern batsql.last_value(X_1:bat[:any_1],
X_2:bat[:lng], X_3:bat[:lng]):bat[:any_1] ", "SQLlast_value;", ""
]
-[ "batsql", "lead", "pattern batsql.lead(X_1:any_1, X_2:any_2,
X_3:bat[:any_1], X_4:any_3, X_5:any_4):bat[:any_1] ", "SQLlead;", ""
]
-[ "batsql", "lead", "pattern batsql.lead(X_1:any_1, X_2:bat[:any_2],
X_3:any_1, X_4:any_3, X_5:any_4):bat[:any_1] ", "SQLlead;", "" ]
-[ "batsql", "lead", "pattern batsql.lead(X_1:any_1, X_2:bat[:any_2],
X_3:any_3, X_4:any_4):bat[:any_1] ", "SQLlead;", "" ]
-[ "batsql", "lead", "pattern batsql.lead(X_1:any_1, X_2:bat[:any_2],
X_3:bat[:any_1], X_4:any_3, X_5:any_4):bat[:any_1] ", "SQLlead;", "" ]
-[ "batsql", "lead", "pattern batsql.lead(X_1:bat[:any_1], X_2:any_2,
X_3:any_1, X_4:any_3, X_5:any_4):bat[:any_1] ", "SQLlead;", "" ]
-[ "batsql", "lead", "pattern batsql.lead(X_1:bat[:any_1], X_2:any_2,
X_3:any_3, X_4:any_4):bat[:any_1] ", "SQLlead;", "" ]
-[ "batsql", "lead", "pattern batsql.lead(X_1:bat[:any_1], X_2:any_2,
X_3:bat[:any_1], X_4:any_3, X_5:any_4):bat[:any_1] ", "SQLlead;", "" ]
-[ "batsql", "lead", "pattern batsql.lead(X_1:bat[:any_1], X_2:any_3,
X_3:any_4):bat[:any_1] ", "SQLlead;", "" ]
-[ "batsql", "lead", "pattern batsql.lead(X_1:bat[:any_1], X_2:bat[:any_2],
X_3:any_1, X_4:any_3, X_5:any_4):bat[:any_1] ", "SQLlead;", "" ]
-[ "batsql", "lead", "pattern batsql.lead(X_1:bat[:any_1], X_2:bat[:any_2],
X_3:any_3, X_4:any_4):bat[:any_1] ", "SQLlead;", "" ]
-[ "batsql", "lead", "pattern batsql.lead(X_1:bat[:any_1], X_2:bat[:any_2],
X_3:bat[:any_1], X_4:any_3, X_5:any_4):bat[:any_1] ", "SQLlead;", ""
]
+[ "batsql", "lead", "pattern batsql.lead(X_1:any_1, X_2:any,
X_3:bat[:any_1], X_4:any_2, X_5:any_3):bat[:any_1] ", "SQLlead;", "" ]
+[ "batsql", "lead", "pattern batsql.lead(X_1:any_1, X_2:bat[:any],
X_3:any_1, X_4:any_2, X_5:any_3):bat[:any_1] ", "SQLlead;", "" ]
+[ "batsql", "lead", "pattern batsql.lead(X_1:any_1, X_2:bat[:any],
X_3:any_2, X_4:any_3):bat[:any_1] ", "SQLlead;", "" ]
+[ "batsql", "lead", "pattern batsql.lead(X_1:any_1, X_2:bat[:any],
X_3:bat[:any_1], X_4:any_2, X_5:any_3):bat[:any_1] ", "SQLlead;", ""
]
+[ "batsql", "lead", "pattern batsql.lead(X_1:bat[:any_1], X_2:any,
X_3:any_1, X_4:any_2, X_5:any_3):bat[:any_1] ", "SQLlead;", "" ]
+[ "batsql", "lead", "pattern batsql.lead(X_1:bat[:any_1], X_2:any,
X_3:any_2, X_4:any_3):bat[:any_1] ", "SQLlead;", "" ]
+[ "batsql", "lead", "pattern batsql.lead(X_1:bat[:any_1], X_2:any,
X_3:bat[:any_1], X_4:any_2, X_5:any_3):bat[:any_1] ", "SQLlead;", ""
]
+[ "batsql", "lead", "pattern batsql.lead(X_1:bat[:any_1], X_2:any_2,
X_3:any_3):bat[:any_1] ", "SQLlead;", "" ]
+[ "batsql", "lead", "pattern batsql.lead(X_1:bat[:any_1], X_2:bat[:any],
X_3:any_1, X_4:any_2, X_5:any_3):bat[:any_1] ", "SQLlead;", "" ]
+[ "batsql", "lead", "pattern batsql.lead(X_1:bat[:any_1], X_2:bat[:any],
X_3:any_2, X_4:any_3):bat[:any_1] ", "SQLlead;", "" ]
+[ "batsql", "lead", "pattern batsql.lead(X_1:bat[:any_1], X_2:bat[:any],
X_3:bat[:any_1], X_4:any_2, X_5:any_3):bat[:any_1] ", "SQLlead;", ""
]
[ "batsql", "max", "pattern batsql.max(X_1:bat[:any_1], X_2:bat[:lng],
X_3:bat[:lng]):bat[:any_1] ", "SQLmax;", "" ]
[ "batsql", "min", "pattern batsql.min(X_1:bat[:any_1], X_2:bat[:lng],
X_3:bat[:lng]):bat[:any_1] ", "SQLmin;", "" ]
[ "batsql", "next_value", "unsafe pattern
batsql.next_value(X_1:bat[:str], X_2:bat[:str]):bat[:lng] ",
"mvc_bat_next_value;", "" ]
@@ -8343,13 +8343,13 @@ stdout of test 'MAL-signatures` in direc
[ "sql", "hot_snapshot", "unsafe pattern sql.hot_snapshot(X_1:str,
X_2:bit):void ", "SQLhot_snapshot_wrap;", "" ]
[ "sql", "importTable", "unsafe pattern sql.importTable(X_1:str,
X_2:str, X_3:int, X_4:str...):bat[:any]... ", "mvc_bin_import_table_wrap;",
"" ]
[ "sql", "include", "pattern sql.include(X_1:str):void ",
"SQLinclude;", "" ]
-[ "sql", "lag", "pattern sql.lag(X_1:any_1, X_2:any_2, X_3:any_1,
X_4:any_3, X_5:any_4):any_1 ", "SQLlag;", "" ]
-[ "sql", "lag", "pattern sql.lag(X_1:any_1, X_2:any_2, X_3:any_3,
X_4:any_4):any_1 ", "SQLlag;", "" ]
-[ "sql", "lag", "pattern sql.lag(X_1:any_1, X_2:any_3, X_3:any_4):any_1
", "SQLlag;", "" ]
+[ "sql", "lag", "pattern sql.lag(X_1:any_1, X_2:any, X_3:any_1,
X_4:bit, X_5:bit):any_1 ", "SQLlag;", "" ]
+[ "sql", "lag", "pattern sql.lag(X_1:any_1, X_2:any, X_3:bit,
X_4:bit):any_1 ", "SQLlag;", "" ]
+[ "sql", "lag", "pattern sql.lag(X_1:any_1, X_2:bit, X_3:bit):any_1 ",
"SQLlag;", "" ]
[ "sql", "last_value", "pattern sql.last_value(X_1:any_1, X_2:lng,
X_3:lng):any_1 ", "SQLlast_value;", "" ]
-[ "sql", "lead", "pattern sql.lead(X_1:any_1, X_2:any_2, X_3:any_1,
X_4:any_3, X_5:any_4):any_1 ", "SQLlead;", "" ]
-[ "sql", "lead", "pattern sql.lead(X_1:any_1, X_2:any_2, X_3:any_3,
X_4:any_4):any_1 ", "SQLlead;", "" ]
-[ "sql", "lead", "pattern sql.lead(X_1:any_1, X_2:any_3,
X_3:any_4):any_1 ", "SQLlead;", "" ]
+[ "sql", "lead", "pattern sql.lead(X_1:any_1, X_2:any, X_3:any_1,
X_4:bit, X_5:bit):any_1 ", "SQLlead;", "" ]
+[ "sql", "lead", "pattern sql.lead(X_1:any_1, X_2:any, X_3:bit,
X_4:bit):any_1 ", "SQLlead;", "" ]
+[ "sql", "lead", "pattern sql.lead(X_1:any_1, X_2:bit, X_3:bit):any_1 ",
"SQLlead;", "" ]
[ "sql", "logfile", "unsafe pattern sql.logfile(X_1:str):void ",
"mvc_logfile;", "" ]
[ "sql", "max", "pattern sql.max(X_1:any_1, X_2:lng, X_3:lng):any_1 ",
"SQLmax;", "" ]
[ "sql", "min", "pattern sql.min(X_1:any_1, X_2:lng, X_3:lng):any_1 ",
"SQLmin;", "" ]
diff --git a/clients/Tests/MAL-signatures.stable.out.int128
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -7815,29 +7815,29 @@ stdout of test 'MAL-signatures` in direc
[ "batsql", "get_value", "pattern batsql.get_value(X_1:bat[:str],
X_2:bat[:str]):bat[:lng] ", "mvc_bat_get_value;", "" ]
[ "batsql", "get_value", "pattern batsql.get_value(X_1:bat[:str],
X_2:str):bat[:lng] ", "mvc_bat_get_value;", "" ]
[ "batsql", "get_value", "pattern batsql.get_value(X_1:str,
X_2:bat[:str]):bat[:lng] ", "mvc_bat_get_value;", "" ]
-[ "batsql", "lag", "pattern batsql.lag(X_1:any_1, X_2:any_2,
X_3:bat[:any_1], X_4:any_3, X_5:any_4):bat[:any_1] ", "SQLlag;", "" ]
-[ "batsql", "lag", "pattern batsql.lag(X_1:any_1, X_2:bat[:any_2],
X_3:any_1, X_4:any_3, X_5:any_4):bat[:any_1] ", "SQLlag;", "" ]
-[ "batsql", "lag", "pattern batsql.lag(X_1:any_1, X_2:bat[:any_2],
X_3:any_3, X_4:any_4):bat[:any_1] ", "SQLlag;", "" ]
-[ "batsql", "lag", "pattern batsql.lag(X_1:any_1, X_2:bat[:any_2],
X_3:bat[:any_1], X_4:any_3, X_5:any_4):bat[:any_1] ", "SQLlag;", ""
]
-[ "batsql", "lag", "pattern batsql.lag(X_1:bat[:any_1], X_2:any_2,
X_3:any_1, X_4:any_3, X_5:any_4):bat[:any_1] ", "SQLlag;", "" ]
-[ "batsql", "lag", "pattern batsql.lag(X_1:bat[:any_1], X_2:any_2,
X_3:any_3, X_4:any_4):bat[:any_1] ", "SQLlag;", "" ]
-[ "batsql", "lag", "pattern batsql.lag(X_1:bat[:any_1], X_2:any_2,
X_3:bat[:any_1], X_4:any_3, X_5:any_4):bat[:any_1] ", "SQLlag;", ""
]
-[ "batsql", "lag", "pattern batsql.lag(X_1:bat[:any_1], X_2:any_3,
X_3:any_4):bat[:any_1] ", "SQLlag;", "" ]
-[ "batsql", "lag", "pattern batsql.lag(X_1:bat[:any_1], X_2:bat[:any_2],
X_3:any_1, X_4:any_3, X_5:any_4):bat[:any_1] ", "SQLlag;", "" ]
-[ "batsql", "lag", "pattern batsql.lag(X_1:bat[:any_1], X_2:bat[:any_2],
X_3:any_3, X_4:any_4):bat[:any_1] ", "SQLlag;", "" ]
-[ "batsql", "lag", "pattern batsql.lag(X_1:bat[:any_1], X_2:bat[:any_2],
X_3:bat[:any_1], X_4:any_3, X_5:any_4):bat[:any_1] ", "SQLlag;", ""
]
+[ "batsql", "lag", "pattern batsql.lag(X_1:any_1, X_2:any,
X_3:bat[:any_1], X_4:any_2, X_5:any_3):bat[:any_1] ", "SQLlag;", ""
]
+[ "batsql", "lag", "pattern batsql.lag(X_1:any_1, X_2:bat[:any],
X_3:any_1, X_4:any_2, X_5:any_3):bat[:any_1] ", "SQLlag;", "" ]
+[ "batsql", "lag", "pattern batsql.lag(X_1:any_1, X_2:bat[:any],
X_3:any_2, X_4:any_3):bat[:any_1] ", "SQLlag;", "" ]
+[ "batsql", "lag", "pattern batsql.lag(X_1:any_1, X_2:bat[:any],
X_3:bat[:any_1], X_4:any_2, X_5:any_3):bat[:any_1] ", "SQLlag;", ""
]
+[ "batsql", "lag", "pattern batsql.lag(X_1:bat[:any_1], X_2:any,
X_3:any_1, X_4:any_2, X_5:any_3):bat[:any_1] ", "SQLlag;", "" ]
+[ "batsql", "lag", "pattern batsql.lag(X_1:bat[:any_1], X_2:any,
X_3:any_2, X_4:any_3):bat[:any_1] ", "SQLlag;", "" ]
+[ "batsql", "lag", "pattern batsql.lag(X_1:bat[:any_1], X_2:any,
X_3:bat[:any_1], X_4:any_2, X_5:any_3):bat[:any_1] ", "SQLlag;", ""
]
+[ "batsql", "lag", "pattern batsql.lag(X_1:bat[:any_1], X_2:any_2,
X_3:any_3):bat[:any_1] ", "SQLlag;", "" ]
+[ "batsql", "lag", "pattern batsql.lag(X_1:bat[:any_1], X_2:bat[:any],
X_3:any_1, X_4:any_2, X_5:any_3):bat[:any_1] ", "SQLlag;", "" ]
+[ "batsql", "lag", "pattern batsql.lag(X_1:bat[:any_1], X_2:bat[:any],
X_3:any_2, X_4:any_3):bat[:any_1] ", "SQLlag;", "" ]
+[ "batsql", "lag", "pattern batsql.lag(X_1:bat[:any_1], X_2:bat[:any],
X_3:bat[:any_1], X_4:any_2, X_5:any_3):bat[:any_1] ", "SQLlag;", ""
]
[ "batsql", "last_value", "pattern batsql.last_value(X_1:bat[:any_1],
X_2:bat[:lng], X_3:bat[:lng]):bat[:any_1] ", "SQLlast_value;", ""
]
-[ "batsql", "lead", "pattern batsql.lead(X_1:any_1, X_2:any_2,
X_3:bat[:any_1], X_4:any_3, X_5:any_4):bat[:any_1] ", "SQLlead;", ""
]
-[ "batsql", "lead", "pattern batsql.lead(X_1:any_1, X_2:bat[:any_2],
X_3:any_1, X_4:any_3, X_5:any_4):bat[:any_1] ", "SQLlead;", "" ]
-[ "batsql", "lead", "pattern batsql.lead(X_1:any_1, X_2:bat[:any_2],
X_3:any_3, X_4:any_4):bat[:any_1] ", "SQLlead;", "" ]
-[ "batsql", "lead", "pattern batsql.lead(X_1:any_1, X_2:bat[:any_2],
X_3:bat[:any_1], X_4:any_3, X_5:any_4):bat[:any_1] ", "SQLlead;", "" ]
-[ "batsql", "lead", "pattern batsql.lead(X_1:bat[:any_1], X_2:any_2,
X_3:any_1, X_4:any_3, X_5:any_4):bat[:any_1] ", "SQLlead;", "" ]
-[ "batsql", "lead", "pattern batsql.lead(X_1:bat[:any_1], X_2:any_2,
X_3:any_3, X_4:any_4):bat[:any_1] ", "SQLlead;", "" ]
-[ "batsql", "lead", "pattern batsql.lead(X_1:bat[:any_1], X_2:any_2,
X_3:bat[:any_1], X_4:any_3, X_5:any_4):bat[:any_1] ", "SQLlead;", "" ]
-[ "batsql", "lead", "pattern batsql.lead(X_1:bat[:any_1], X_2:any_3,
X_3:any_4):bat[:any_1] ", "SQLlead;", "" ]
-[ "batsql", "lead", "pattern batsql.lead(X_1:bat[:any_1], X_2:bat[:any_2],
X_3:any_1, X_4:any_3, X_5:any_4):bat[:any_1] ", "SQLlead;", "" ]
-[ "batsql", "lead", "pattern batsql.lead(X_1:bat[:any_1], X_2:bat[:any_2],
X_3:any_3, X_4:any_4):bat[:any_1] ", "SQLlead;", "" ]
-[ "batsql", "lead", "pattern batsql.lead(X_1:bat[:any_1], X_2:bat[:any_2],
X_3:bat[:any_1], X_4:any_3, X_5:any_4):bat[:any_1] ", "SQLlead;", ""
]
+[ "batsql", "lead", "pattern batsql.lead(X_1:any_1, X_2:any,
X_3:bat[:any_1], X_4:any_2, X_5:any_3):bat[:any_1] ", "SQLlead;", "" ]
+[ "batsql", "lead", "pattern batsql.lead(X_1:any_1, X_2:bat[:any],
X_3:any_1, X_4:any_2, X_5:any_3):bat[:any_1] ", "SQLlead;", "" ]
+[ "batsql", "lead", "pattern batsql.lead(X_1:any_1, X_2:bat[:any],
X_3:any_2, X_4:any_3):bat[:any_1] ", "SQLlead;", "" ]
+[ "batsql", "lead", "pattern batsql.lead(X_1:any_1, X_2:bat[:any],
X_3:bat[:any_1], X_4:any_2, X_5:any_3):bat[:any_1] ", "SQLlead;", ""
]
+[ "batsql", "lead", "pattern batsql.lead(X_1:bat[:any_1], X_2:any,
X_3:any_1, X_4:any_2, X_5:any_3):bat[:any_1] ", "SQLlead;", "" ]
+[ "batsql", "lead", "pattern batsql.lead(X_1:bat[:any_1], X_2:any,
X_3:any_2, X_4:any_3):bat[:any_1] ", "SQLlead;", "" ]
+[ "batsql", "lead", "pattern batsql.lead(X_1:bat[:any_1], X_2:any,
X_3:bat[:any_1], X_4:any_2, X_5:any_3):bat[:any_1] ", "SQLlead;", ""
]
+[ "batsql", "lead", "pattern batsql.lead(X_1:bat[:any_1], X_2:any_2,
X_3:any_3):bat[:any_1] ", "SQLlead;", "" ]
+[ "batsql", "lead", "pattern batsql.lead(X_1:bat[:any_1], X_2:bat[:any],
X_3:any_1, X_4:any_2, X_5:any_3):bat[:any_1] ", "SQLlead;", "" ]
+[ "batsql", "lead", "pattern batsql.lead(X_1:bat[:any_1], X_2:bat[:any],
X_3:any_2, X_4:any_3):bat[:any_1] ", "SQLlead;", "" ]
+[ "batsql", "lead", "pattern batsql.lead(X_1:bat[:any_1], X_2:bat[:any],
X_3:bat[:any_1], X_4:any_2, X_5:any_3):bat[:any_1] ", "SQLlead;", ""
]
[ "batsql", "max", "pattern batsql.max(X_1:bat[:any_1], X_2:bat[:lng],
X_3:bat[:lng]):bat[:any_1] ", "SQLmax;", "" ]
[ "batsql", "min", "pattern batsql.min(X_1:bat[:any_1], X_2:bat[:lng],
X_3:bat[:lng]):bat[:any_1] ", "SQLmin;", "" ]
[ "batsql", "next_value", "unsafe pattern
batsql.next_value(X_1:bat[:str], X_2:bat[:str]):bat[:lng] ",
"mvc_bat_next_value;", "" ]
@@ -11245,13 +11245,13 @@ stdout of test 'MAL-signatures` in direc
[ "sql", "hot_snapshot", "unsafe pattern sql.hot_snapshot(X_1:str,
X_2:bit):void ", "SQLhot_snapshot_wrap;", "" ]
[ "sql", "importTable", "unsafe pattern sql.importTable(X_1:str,
X_2:str, X_3:int, X_4:str...):bat[:any]... ", "mvc_bin_import_table_wrap;",
"" ]
[ "sql", "include", "pattern sql.include(X_1:str):void ",
"SQLinclude;", "" ]
-[ "sql", "lag", "pattern sql.lag(X_1:any_1, X_2:any_2, X_3:any_1,
X_4:any_3, X_5:any_4):any_1 ", "SQLlag;", "" ]
-[ "sql", "lag", "pattern sql.lag(X_1:any_1, X_2:any_2, X_3:any_3,
X_4:any_4):any_1 ", "SQLlag;", "" ]
-[ "sql", "lag", "pattern sql.lag(X_1:any_1, X_2:any_3, X_3:any_4):any_1
", "SQLlag;", "" ]
+[ "sql", "lag", "pattern sql.lag(X_1:any_1, X_2:any, X_3:any_1,
X_4:bit, X_5:bit):any_1 ", "SQLlag;", "" ]
+[ "sql", "lag", "pattern sql.lag(X_1:any_1, X_2:any, X_3:bit,
X_4:bit):any_1 ", "SQLlag;", "" ]
+[ "sql", "lag", "pattern sql.lag(X_1:any_1, X_2:bit, X_3:bit):any_1 ",
"SQLlag;", "" ]
[ "sql", "last_value", "pattern sql.last_value(X_1:any_1, X_2:lng,
X_3:lng):any_1 ", "SQLlast_value;", "" ]
-[ "sql", "lead", "pattern sql.lead(X_1:any_1, X_2:any_2, X_3:any_1,
X_4:any_3, X_5:any_4):any_1 ", "SQLlead;", "" ]
-[ "sql", "lead", "pattern sql.lead(X_1:any_1, X_2:any_2, X_3:any_3,
X_4:any_4):any_1 ", "SQLlead;", "" ]
-[ "sql", "lead", "pattern sql.lead(X_1:any_1, X_2:any_3,
X_3:any_4):any_1 ", "SQLlead;", "" ]
+[ "sql", "lead", "pattern sql.lead(X_1:any_1, X_2:any, X_3:any_1,
X_4:bit, X_5:bit):any_1 ", "SQLlead;", "" ]
+[ "sql", "lead", "pattern sql.lead(X_1:any_1, X_2:any, X_3:bit,
X_4:bit):any_1 ", "SQLlead;", "" ]
+[ "sql", "lead", "pattern sql.lead(X_1:any_1, X_2:bit, X_3:bit):any_1 ",
"SQLlead;", "" ]
[ "sql", "logfile", "unsafe pattern sql.logfile(X_1:str):void ",
"mvc_logfile;", "" ]
[ "sql", "max", "pattern sql.max(X_1:any_1, X_2:lng, X_3:lng):any_1 ",
"SQLmax;", "" ]
[ "sql", "min", "pattern sql.min(X_1:any_1, X_2:lng, X_3:lng):any_1 ",
"SQLmin;", "" ]
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -5952,34 +5952,34 @@ static mel_func sql_init_funcs[] = {
pattern("batsql", "percent_rank", SQLpercent_rank, false, "return the
percentage into the total number of groups for each row", args(1,4,
batarg("",dbl),batargany("b",1),argany("p",2),argany("o",3))),
pattern("sql", "cume_dist", SQLcume_dist, false, "return the accumulated
distribution of the number of rows per group to the total number of partition
rows", args(1,4, arg("",dbl),argany("b",1),arg("p",bit),arg("o",bit))),
pattern("batsql", "cume_dist", SQLcume_dist, false, "return the accumulated
distribution of the number of rows per group to the total number of partition
rows", args(1,4, batarg("",dbl),batargany("b",1),argany("p",2),argany("o",3))),
- pattern("sql", "lag", SQLlag, false, "return the value in the previous row in
the partition or NULL if non existent", args(1,4,
argany("",1),argany("b",1),argany("p",3),argany("o",4))),
- pattern("batsql", "lag", SQLlag, false, "return the value in the previous row
in the partition or NULL if non existent", args(1,4,
batargany("",1),batargany("b",1),argany("p",3),argany("o",4))),
- pattern("sql", "lag", SQLlag, false, "return the value in the previous 'l'
row in the partition or NULL if non existent", args(1,5,
argany("",1),argany("b",1),argany("l",2),argany("p",3),argany("o",4))),
- pattern("batsql", "lag", SQLlag, false, "return the value in the previous 'l'
row in the partition or NULL if non existent", args(1,5,
batargany("",1),batargany("b",1),argany("l",2),argany("p",3),argany("o",4))),
- pattern("batsql", "lag", SQLlag, false, "return the value in the previous 'l'
row in the partition or NULL if non existent", args(1,5,
batargany("",1),argany("b",1),batargany("l",2),argany("p",3),argany("o",4))),
- pattern("batsql", "lag", SQLlag, false, "return the value in the previous 'l'
row in the partition or NULL if non existent", args(1,5,
batargany("",1),batargany("b",1),batargany("l",2),argany("p",3),argany("o",4))),
- pattern("sql", "lag", SQLlag, false, "return the value in the previous 'l'
row in the partition or 'd' if non existent", args(1,6,
argany("",1),argany("b",1),argany("l",2),argany("d",1),argany("p",3),argany("o",4))),
- pattern("batsql", "lag", SQLlag, false, "return the value in the previous 'l'
row in the partition or 'd' if non existent", args(1,6,
batargany("",1),batargany("b",1),argany("l",2),argany("d",1),argany("p",3),argany("o",4))),
- pattern("batsql", "lag", SQLlag, false, "return the value in the previous 'l'
row in the partition or 'd' if non existent", args(1,6,
batargany("",1),argany("b",1),batargany("l",2),argany("d",1),argany("p",3),argany("o",4))),
- pattern("batsql", "lag", SQLlag, false, "return the value in the previous 'l'
row in the partition or 'd' if non existent", args(1,6,
batargany("",1),batargany("b",1),batargany("l",2),argany("d",1),argany("p",3),argany("o",4))),
- pattern("batsql", "lag", SQLlag, false, "return the value in the previous 'l'
row in the partition or 'd' if non existent", args(1,6,
batargany("",1),argany("b",1),argany("l",2),batargany("d",1),argany("p",3),argany("o",4))),
- pattern("batsql", "lag", SQLlag, false, "return the value in the previous 'l'
row in the partition or 'd' if non existent", args(1,6,
batargany("",1),batargany("b",1),argany("l",2),batargany("d",1),argany("p",3),argany("o",4))),
- pattern("batsql", "lag", SQLlag, false, "return the value in the previous 'l'
row in the partition or 'd' if non existent", args(1,6,
batargany("",1),argany("b",1),batargany("l",2),batargany("d",1),argany("p",3),argany("o",4))),
- pattern("batsql", "lag", SQLlag, false, "return the value in the previous 'l'
row in the partition or 'd' if non existent", args(1,6,
batargany("",1),batargany("b",1),batargany("l",2),batargany("d",1),argany("p",3),argany("o",4))),
- pattern("sql", "lead", SQLlead, false, "return the value in the next row in
the partition or NULL if non existent", args(1,4,
argany("",1),argany("b",1),argany("p",3),argany("o",4))),
- pattern("batsql", "lead", SQLlead, false, "return the value in the next row
in the partition or NULL if non existent", args(1,4,
batargany("",1),batargany("b",1),argany("p",3),argany("o",4))),
- pattern("sql", "lead", SQLlead, false, "return the value in the next 'l' row
in the partition or NULL if non existent", args(1,5,
argany("",1),argany("b",1),argany("l",2),argany("p",3),argany("o",4))),
- pattern("batsql", "lead", SQLlead, false, "return the value in the next 'l'
row in the partition or NULL if non existent", args(1,5,
batargany("",1),batargany("b",1),argany("l",2),argany("p",3),argany("o",4))),
- pattern("batsql", "lead", SQLlead, false, "return the value in the next 'l'
row in the partition or NULL if non existent", args(1,5,
batargany("",1),argany("b",1),batargany("l",2),argany("p",3),argany("o",4))),
- pattern("batsql", "lead", SQLlead, false, "return the value in the next 'l'
row in the partition or NULL if non existent", args(1,5,
batargany("",1),batargany("b",1),batargany("l",2),argany("p",3),argany("o",4))),
- pattern("sql", "lead", SQLlead, false, "return the value in the next 'l' row
in the partition or 'd' if non existent", args(1,6,
argany("",1),argany("b",1),argany("l",2),argany("d",1),argany("p",3),argany("o",4))),
- pattern("batsql", "lead", SQLlead, false, "return the value in the next 'l'
row in the partition or 'd' if non existent", args(1,6,
batargany("",1),batargany("b",1),argany("l",2),argany("d",1),argany("p",3),argany("o",4))),
- pattern("batsql", "lead", SQLlead, false, "return the value in the next 'l'
row in the partition or 'd' if non existent", args(1,6,
batargany("",1),argany("b",1),batargany("l",2),argany("d",1),argany("p",3),argany("o",4))),
- pattern("batsql", "lead", SQLlead, false, "return the value in the next 'l'
row in the partition or 'd' if non existent", args(1,6,
batargany("",1),batargany("b",1),batargany("l",2),argany("d",1),argany("p",3),argany("o",4))),
- pattern("batsql", "lead", SQLlead, false, "return the value in the next 'l'
row in the partition or 'd' if non existent", args(1,6,
batargany("",1),argany("b",1),argany("l",2),batargany("d",1),argany("p",3),argany("o",4))),
- pattern("batsql", "lead", SQLlead, false, "return the value in the next 'l'
row in the partition or 'd' if non existent", args(1,6,
batargany("",1),batargany("b",1),argany("l",2),batargany("d",1),argany("p",3),argany("o",4))),
- pattern("batsql", "lead", SQLlead, false, "return the value in the next 'l'
row in the partition or 'd' if non existent", args(1,6,
batargany("",1),argany("b",1),batargany("l",2),batargany("d",1),argany("p",3),argany("o",4))),
- pattern("batsql", "lead", SQLlead, false, "return the value in the next 'l'
row in the partition or 'd' if non existent", args(1,6,
batargany("",1),batargany("b",1),batargany("l",2),batargany("d",1),argany("p",3),argany("o",4))),
+ pattern("sql", "lag", SQLlag, false, "return the value in the previous row in
the partition or NULL if non existent", args(1,4,
argany("",1),argany("b",1),arg("p",bit),arg("o",bit))),
+ pattern("batsql", "lag", SQLlag, false, "return the value in the previous row
in the partition or NULL if non existent", args(1,4,
batargany("",1),batargany("b",1),argany("p",2),argany("o",3))),
+ pattern("sql", "lag", SQLlag, false, "return the value in the previous 'l'
row in the partition or NULL if non existent", args(1,5,
argany("",1),argany("b",1),argany("l",0),arg("p",bit),arg("o",bit))),
+ pattern("batsql", "lag", SQLlag, false, "return the value in the previous 'l'
row in the partition or NULL if non existent", args(1,5,
batargany("",1),batargany("b",1),argany("l",0),argany("p",2),argany("o",3))),
+ pattern("batsql", "lag", SQLlag, false, "return the value in the previous 'l'
row in the partition or NULL if non existent", args(1,5,
batargany("",1),argany("b",1),batargany("l",0),argany("p",2),argany("o",3))),
+ pattern("batsql", "lag", SQLlag, false, "return the value in the previous 'l'
row in the partition or NULL if non existent", args(1,5,
batargany("",1),batargany("b",1),batargany("l",0),argany("p",2),argany("o",3))),
+ pattern("sql", "lag", SQLlag, false, "return the value in the previous 'l'
row in the partition or 'd' if non existent", args(1,6,
argany("",1),argany("b",1),argany("l",0),argany("d",1),arg("p",bit),arg("o",bit))),
+ pattern("batsql", "lag", SQLlag, false, "return the value in the previous 'l'
row in the partition or 'd' if non existent", args(1,6,
batargany("",1),batargany("b",1),argany("l",0),argany("d",1),argany("p",2),argany("o",3))),
+ pattern("batsql", "lag", SQLlag, false, "return the value in the previous 'l'
row in the partition or 'd' if non existent", args(1,6,
batargany("",1),argany("b",1),batargany("l",0),argany("d",1),argany("p",2),argany("o",3))),
+ pattern("batsql", "lag", SQLlag, false, "return the value in the previous 'l'
row in the partition or 'd' if non existent", args(1,6,
batargany("",1),batargany("b",1),batargany("l",0),argany("d",1),argany("p",2),argany("o",3))),
+ pattern("batsql", "lag", SQLlag, false, "return the value in the previous 'l'
row in the partition or 'd' if non existent", args(1,6,
batargany("",1),argany("b",1),argany("l",0),batargany("d",1),argany("p",2),argany("o",3))),
+ pattern("batsql", "lag", SQLlag, false, "return the value in the previous 'l'
row in the partition or 'd' if non existent", args(1,6,
batargany("",1),batargany("b",1),argany("l",0),batargany("d",1),argany("p",2),argany("o",3))),
+ pattern("batsql", "lag", SQLlag, false, "return the value in the previous 'l'
row in the partition or 'd' if non existent", args(1,6,
batargany("",1),argany("b",1),batargany("l",0),batargany("d",1),argany("p",2),argany("o",3))),
+ pattern("batsql", "lag", SQLlag, false, "return the value in the previous 'l'
row in the partition or 'd' if non existent", args(1,6,
batargany("",1),batargany("b",1),batargany("l",0),batargany("d",1),argany("p",2),argany("o",3))),
+ pattern("sql", "lead", SQLlead, false, "return the value in the next row in
the partition or NULL if non existent", args(1,4,
argany("",1),argany("b",1),arg("p",bit),arg("o",bit))),
+ pattern("batsql", "lead", SQLlead, false, "return the value in the next row
in the partition or NULL if non existent", args(1,4,
batargany("",1),batargany("b",1),argany("p",2),argany("o",3))),
+ pattern("sql", "lead", SQLlead, false, "return the value in the next 'l' row
in the partition or NULL if non existent", args(1,5,
argany("",1),argany("b",1),argany("l",0),arg("p",bit),arg("o",bit))),
+ pattern("batsql", "lead", SQLlead, false, "return the value in the next 'l'
row in the partition or NULL if non existent", args(1,5,
batargany("",1),batargany("b",1),argany("l",0),argany("p",2),argany("o",3))),
+ pattern("batsql", "lead", SQLlead, false, "return the value in the next 'l'
row in the partition or NULL if non existent", args(1,5,
batargany("",1),argany("b",1),batargany("l",0),argany("p",2),argany("o",3))),
+ pattern("batsql", "lead", SQLlead, false, "return the value in the next 'l'
row in the partition or NULL if non existent", args(1,5,
batargany("",1),batargany("b",1),batargany("l",0),argany("p",2),argany("o",3))),
+ pattern("sql", "lead", SQLlead, false, "return the value in the next 'l' row
in the partition or 'd' if non existent", args(1,6,
argany("",1),argany("b",1),argany("l",0),argany("d",1),arg("p",bit),arg("o",bit))),
+ pattern("batsql", "lead", SQLlead, false, "return the value in the next 'l'
row in the partition or 'd' if non existent", args(1,6,
batargany("",1),batargany("b",1),argany("l",0),argany("d",1),argany("p",2),argany("o",3))),
+ pattern("batsql", "lead", SQLlead, false, "return the value in the next 'l'
row in the partition or 'd' if non existent", args(1,6,
batargany("",1),argany("b",1),batargany("l",0),argany("d",1),argany("p",2),argany("o",3))),
+ pattern("batsql", "lead", SQLlead, false, "return the value in the next 'l'
row in the partition or 'd' if non existent", args(1,6,
batargany("",1),batargany("b",1),batargany("l",0),argany("d",1),argany("p",2),argany("o",3))),
+ pattern("batsql", "lead", SQLlead, false, "return the value in the next 'l'
row in the partition or 'd' if non existent", args(1,6,
batargany("",1),argany("b",1),argany("l",0),batargany("d",1),argany("p",2),argany("o",3))),
+ pattern("batsql", "lead", SQLlead, false, "return the value in the next 'l'
row in the partition or 'd' if non existent", args(1,6,
batargany("",1),batargany("b",1),argany("l",0),batargany("d",1),argany("p",2),argany("o",3))),
+ pattern("batsql", "lead", SQLlead, false, "return the value in the next 'l'
row in the partition or 'd' if non existent", args(1,6,
batargany("",1),argany("b",1),batargany("l",0),batargany("d",1),argany("p",2),argany("o",3))),
+ pattern("batsql", "lead", SQLlead, false, "return the value in the next 'l'
row in the partition or 'd' if non existent", args(1,6,
batargany("",1),batargany("b",1),batargany("l",0),batargany("d",1),argany("p",2),argany("o",3))),
pattern("sql", "ntile", SQLntile, false, "return the groups divided as
equally as possible", args(1,5,
argany("",1),argany("b",0),argany("n",1),arg("p",bit),arg("o",bit))),
pattern("batsql", "ntile", SQLntile, false, "return the groups divided as
equally as possible", args(1,5,
batargany("",1),batargany("b",0),argany("n",1),argany("p",2),argany("o",3))),
pattern("batsql", "ntile", SQLntile, false, "return the groups divided as
equally as possible", args(1,5,
batargany("",1),argany("b",0),batargany("n",1),argany("p",2),argany("o",3))),
diff --git a/sql/test/subquery/Tests/subquery6.sql
b/sql/test/subquery/Tests/subquery6.sql
--- a/sql/test/subquery/Tests/subquery6.sql
+++ b/sql/test/subquery/Tests/subquery6.sql
@@ -225,6 +225,12 @@ select nth_value('bug', 1) over ();
select nth_value('bug', 1) over (), max(TotalSales) from tbl_ProductSales;
-- bug 500
+select lag('bug') over (), lag('bug', 1) over (), lag('bug', 0) over (),
lag('bug', 1, 'oth') over (), lag('bug', 0, 'oth') over ();
+ -- NULL NULL bug oth bug
+
+select lead('bug') over (), lead('bug', 1) over (), lead('bug', 0) over (),
lead('bug', 1, 'oth') over (), lead('bug', 0, 'oth') over (), max(TotalSales)
from tbl_ProductSales;
+ -- NULL NULL bug oth bug 500
+
DROP TABLE tbl_ProductSales;
DROP TABLE another_T;
DROP TABLE integers;
diff --git a/sql/test/subquery/Tests/subquery6.stable.out
b/sql/test/subquery/Tests/subquery6.stable.out
--- a/sql/test/subquery/Tests/subquery6.stable.out
+++ b/sql/test/subquery/Tests/subquery6.stable.out
@@ -314,6 +314,18 @@ stdout of test 'subquery6` in directory
% char, int # type
% 3, 3 # length
[ "bug", 500 ]
+#select lag('bug') over (), lag('bug', 1) over (), lag('bug', 0) over (),
lag('bug', 1, 'oth') over (), lag('bug', 0, 'oth') over ();
+% .%4, .%11, .%16, .%24, .%32 # table_name
+% %4, %11, %16, %24, %32 # name
+% char, char, char, char, char # type
+% 0, 0, 3, 3, 3 # length
+[ NULL, NULL, "bug", "oth", "bug" ]
+#select lead('bug') over (), lead('bug', 1) over (), lead('bug', 0) over (),
lead('bug', 1, 'oth') over (), lead('bug', 0, 'oth') over (), max(TotalSales)
from tbl_ProductSales;
+% .%4, .%11, .%16, .%24, .%32, sys.%33 # table_name
+% %4, %11, %16, %24, %32, %33 # name
+% char, char, char, char, char, int # type
+% 0, 0, 3, 3, 3, 3 # length
+[ NULL, NULL, "bug", "oth", "bug", 500 ]
#DROP TABLE tbl_ProductSales;
#DROP TABLE another_T;
#DROP TABLE integers;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list