[prev in list] [next in list] [prev in thread] [next in thread]
List: monetdb-checkins
Subject: MonetDB: default - Back when I fixed empty inputs for correlatio...
From: Pedro_Ferreira <commits+pedro.ferreira=monetdbsolutions.com () mon
Date: 2020-07-31 20:13:23
Message-ID: hg.4fadf3710d0f.1596226403.7569853552567025292 () monetdb-vm0 ! spin-off ! cwi ! nl
[Download RAW message or body]
Changeset: 4fadf3710d0f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4fadf3710d0f
Modified Files:
sql/backends/monet5/sql_rank.c
sql/test/analytics/Tests/analytics15.sql
sql/test/analytics/Tests/analytics15.stable.out
sql/test/subquery/Tests/subquery6.sql
sql/test/subquery/Tests/subquery6.stable.out
Branch: default
Log Message:
Back when I fixed empty inputs for correlation and group_concat, I forgot the scalar \
version of window functions.
diffs (truncated from 434 to 300 lines):
diff --git a/sql/backends/monet5/sql_rank.c b/sql/backends/monet5/sql_rank.c
--- a/sql/backends/monet5/sql_rank.c
+++ b/sql/backends/monet5/sql_rank.c
@@ -1716,7 +1716,7 @@ SQLvar_pop(Client cntxt, MalBlkPtr mb, M
static str
do_covariance_and_correlation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr \
pci, const char* op, const char* err,
- gdk_return (*func)(BAT *, BAT *, BAT *, BAT *, BAT *, int), BUN minimum, \
dbl single_case) + gdk_return (*func)(BAT *, BAT *, BAT *, BAT *, BAT *, \
int), BUN minimum, dbl defaultv, dbl single_case) {
BAT *r = NULL, *b = NULL, *c = NULL, *s = NULL, *e = NULL;
int tp1, tp2;
@@ -1780,7 +1780,7 @@ do_covariance_and_correlation(Client cnt
const void *restrict nil = ATOMnilptr(tp1);
int (*cmp) (const void *, const void *) = ATOMcompare(tp1);
ValRecord *input2 = &(stk)->stk[(pci)->argv[2]];
- dbl *restrict rb = (dbl*) Tloc(r, 0), res = VALisnil(input2) ? dbl_nil : \
single_case; + dbl *restrict rb = (dbl*) Tloc(r, 0), res = VALisnil(input2) ? \
dbl_nil : defaultv; lng *restrict start = (lng*) Tloc(s, 0), *restrict end = (lng*) \
Tloc(e, 0); bool has_nils = is_dbl_nil(res);
@@ -1827,7 +1827,7 @@ do_covariance_and_correlation(Client cnt
#endif
case TYPE_flt:
case TYPE_dbl:
- *res = (VALisnil(input1) || VALisnil(input2)) ? dbl_nil : 0;
+ *res = (VALisnil(input1) || VALisnil(input2)) ? dbl_nil : single_case;
break;
default:
throw(SQL, op, SQLSTATE(42000) "%s not available for %s", op, ATOMname(tp1));
@@ -1840,21 +1840,21 @@ str
SQLcovar_samp(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
return do_covariance_and_correlation(cntxt, mb, stk, pci, "sql.covariance", \
SQLSTATE(42000) "covariance(:any_1,:any_1,:lng,:lng)",
- GDKanalytical_covariance_samp, 1, 0.0f);
+ GDKanalytical_covariance_samp, 1, 0.0f, dbl_nil);
}
str
SQLcovar_pop(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
return do_covariance_and_correlation(cntxt, mb, stk, pci, "sql.covariancep", \
SQLSTATE(42000) "covariancep(:any_1,:any_1,:lng,:lng)",
- GDKanalytical_covariance_pop, 0, 0.0f);
+ GDKanalytical_covariance_pop, 0, 0.0f, 0.0f);
}
str
SQLcorr(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
return do_covariance_and_correlation(cntxt, mb, stk, pci, "sql.corr", \
SQLSTATE(42000) "corr(:any_1,:any_1,:lng,:lng)",
- GDKanalytical_correlation, 0, dbl_nil);
+ GDKanalytical_correlation, 0, dbl_nil, dbl_nil);
}
str
@@ -1922,9 +1922,11 @@ SQLstrgroup_concat(Client cntxt, MalBlkP
str *res = (str*) getArgReference(stk, pci, 0);
str in = *getArgReference_str(stk, pci, 1);
- if (pci->argc == 5) {
+ if (strNil(in)) {
+ *res = GDKstrdup(str_nil);
+ } else if (pci->argc == 5) {
str sep = *getArgReference_str(stk, pci, 2);
- size_t l1 = strNil(in) ? 0 : strlen(in), l2 = strNil(sep) ? 0 : strlen(sep);
+ size_t l1 = strlen(in), l2 = strNil(sep) ? 0 : strlen(sep);
if ((*res = GDKmalloc(l1+l2+1))) {
if (l1)
@@ -1934,7 +1936,7 @@ SQLstrgroup_concat(Client cntxt, MalBlkP
(*res)[l1+l2] = '\0';
}
} else {
- *res = strNil(in) ? GDKstrdup("") : GDKstrdup(in);
+ *res = GDKstrdup(in);
}
if (!*res)
throw(SQL, "sql.strgroup_concat", SQLSTATE(HY013) MAL_MALLOC_FAIL);
diff --git a/sql/test/analytics/Tests/analytics15.sql \
b/sql/test/analytics/Tests/analytics15.sql
--- a/sql/test/analytics/Tests/analytics15.sql
+++ b/sql/test/analytics/Tests/analytics15.sql
@@ -138,4 +138,8 @@ select corr(NULL, 2) over (),
corr(NULL, aa) over (),
corr(NULL, NULL) over () from analytics;
+select covar_pop(1,1) over (), covar_samp(1,1) over (), corr(1,1) over (), \
covar_pop(1,null) over (), covar_samp(1,null) over (), corr(1,null) over (); +
+select covar_pop(1,1) over (), covar_samp(1,1) over (), corr(1,1) over (), \
covar_pop(1,null) over (), covar_samp(1,null) over (), corr(1,null) over () from \
analytics; +
rollback;
diff --git a/sql/test/analytics/Tests/analytics15.stable.out \
b/sql/test/analytics/Tests/analytics15.stable.out
--- a/sql/test/analytics/Tests/analytics15.stable.out
+++ b/sql/test/analytics/Tests/analytics15.stable.out
@@ -71,8 +71,8 @@ stdout of test 'analytics15` in director
# covar_samp(aa, aa) over (partition by bb order by bb asc),
# covar_samp(aa, aa) over (partition by bb order by bb desc),
# covar_samp(aa, aa) over (order by bb desc) from analytics;
-% sys.%3, sys.%6, sys.%11, sys.%14 # table_name
-% %3, %6, %11, %14 # name
+% sys.%7, sys.%16, sys.%25, sys.%34 # table_name
+% %7, %16, %25, %34 # name
% double, double, double, double # type
% 24, 24, 24, 24 # length
[ NULL, NULL, NULL, NULL ]
@@ -89,8 +89,8 @@ stdout of test 'analytics15` in director
# covar_samp(bb, bb) over (partition by bb order by bb asc),
# covar_samp(bb, bb) over (partition by bb order by bb desc),
# covar_samp(bb, bb) over (order by bb desc) from analytics;
-% sys.%3, sys.%6, sys.%11, sys.%14 # table_name
-% %3, %6, %11, %14 # name
+% sys.%7, sys.%16, sys.%25, sys.%34 # table_name
+% %7, %16, %25, %34 # name
% double, double, double, double # type
% 24, 24, 24, 24 # length
[ NULL, NULL, NULL, NULL ]
@@ -107,8 +107,8 @@ stdout of test 'analytics15` in director
# corr(bb, bb) over (partition by bb order by bb asc),
# corr(bb, bb) over (partition by bb order by bb desc),
# corr(bb, bb) over (order by bb desc) from analytics;
-% sys.%3, sys.%6, sys.%11, sys.%14 # table_name
-% %3, %6, %11, %14 # name
+% sys.%7, sys.%16, sys.%25, sys.%34 # table_name
+% %7, %16, %25, %34 # name
% double, double, double, double # type
% 24, 24, 24, 24 # length
[ NULL, NULL, NULL, NULL ]
@@ -125,8 +125,8 @@ stdout of test 'analytics15` in director
# covar_pop(aa, aa) over (partition by bb order by bb asc),
# covar_pop(aa, aa) over (partition by bb order by bb desc),
# covar_pop(aa, aa) over (order by bb desc) from analytics;
-% sys.%3, sys.%6, sys.%11, sys.%14 # table_name
-% %3, %6, %11, %14 # name
+% sys.%7, sys.%16, sys.%25, sys.%34 # table_name
+% %7, %16, %25, %34 # name
% double, double, double, double # type
% 24, 24, 24, 24 # length
[ NULL, NULL, NULL, NULL ]
@@ -143,8 +143,8 @@ stdout of test 'analytics15` in director
# covar_pop(bb, bb) over (partition by bb order by bb asc),
# covar_pop(bb, bb) over (partition by bb order by bb desc),
# covar_pop(bb, bb) over (order by bb desc) from analytics;
-% sys.%3, sys.%6, sys.%11, sys.%14 # table_name
-% %3, %6, %11, %14 # name
+% sys.%7, sys.%16, sys.%25, sys.%34 # table_name
+% %7, %16, %25, %34 # name
% double, double, double, double # type
% 24, 24, 24, 24 # length
[ 0, 0, 0, 0 ]
@@ -161,8 +161,8 @@ stdout of test 'analytics15` in director
# corr(bb, bb) over (partition by bb order by bb asc),
# corr(bb, bb) over (partition by bb order by bb desc),
# corr(bb, bb) over (order by bb desc) from analytics;
-% sys.%3, sys.%6, sys.%11, sys.%14 # table_name
-% %3, %6, %11, %14 # name
+% sys.%7, sys.%16, sys.%25, sys.%34 # table_name
+% %7, %16, %25, %34 # name
% double, double, double, double # type
% 24, 24, 24, 24 # length
[ NULL, NULL, NULL, NULL ]
@@ -179,8 +179,8 @@ stdout of test 'analytics15` in director
# covar_samp(aa, bb) over (partition by bb order by bb asc),
# covar_samp(aa, bb) over (partition by bb order by bb desc),
# covar_samp(aa, bb) over (order by bb desc) from analytics;
-% sys.%3, sys.%6, sys.%11, sys.%14 # table_name
-% %3, %6, %11, %14 # name
+% sys.%7, sys.%16, sys.%25, sys.%34 # table_name
+% %7, %16, %25, %34 # name
% double, double, double, double # type
% 24, 24, 24, 24 # length
[ NULL, NULL, NULL, NULL ]
@@ -197,8 +197,8 @@ stdout of test 'analytics15` in director
# covar_samp(bb, aa) over (partition by bb order by bb asc),
# covar_samp(bb, aa) over (partition by bb order by bb desc),
# covar_samp(bb, aa) over (order by bb desc) from analytics;
-% sys.%3, sys.%6, sys.%11, sys.%14 # table_name
-% %3, %6, %11, %14 # name
+% sys.%7, sys.%16, sys.%25, sys.%34 # table_name
+% %7, %16, %25, %34 # name
% double, double, double, double # type
% 24, 24, 24, 24 # length
[ NULL, NULL, NULL, NULL ]
@@ -215,8 +215,8 @@ stdout of test 'analytics15` in director
# corr(bb, aa) over (partition by bb order by bb asc),
# corr(bb, aa) over (partition by bb order by bb desc),
# corr(bb, aa) over (order by bb desc) from analytics;
-% sys.%3, sys.%6, sys.%11, sys.%14 # table_name
-% %3, %6, %11, %14 # name
+% sys.%7, sys.%16, sys.%25, sys.%34 # table_name
+% %7, %16, %25, %34 # name
% double, double, double, double # type
% 24, 24, 24, 24 # length
[ NULL, NULL, NULL, NULL ]
@@ -233,8 +233,8 @@ stdout of test 'analytics15` in director
# covar_pop(aa, bb) over (partition by bb order by bb asc),
# covar_pop(aa, bb) over (partition by bb order by bb desc),
# covar_pop(aa, bb) over (order by bb desc) from analytics;
-% sys.%3, sys.%6, sys.%11, sys.%14 # table_name
-% %3, %6, %11, %14 # name
+% sys.%7, sys.%16, sys.%25, sys.%34 # table_name
+% %7, %16, %25, %34 # name
% double, double, double, double # type
% 24, 24, 24, 24 # length
[ NULL, NULL, NULL, NULL ]
@@ -251,8 +251,8 @@ stdout of test 'analytics15` in director
# covar_pop(bb, aa) over (partition by bb order by bb asc),
# covar_pop(bb, aa) over (partition by bb order by bb desc),
# covar_pop(bb, aa) over (order by bb desc) from analytics;
-% sys.%3, sys.%6, sys.%11, sys.%14 # table_name
-% %3, %6, %11, %14 # name
+% sys.%7, sys.%16, sys.%25, sys.%34 # table_name
+% %7, %16, %25, %34 # name
% double, double, double, double # type
% 24, 24, 24, 24 # length
[ NULL, NULL, NULL, NULL ]
@@ -269,8 +269,8 @@ stdout of test 'analytics15` in director
# corr(bb, aa) over (partition by bb order by bb asc),
# corr(bb, aa) over (partition by bb order by bb desc),
# corr(bb, aa) over (order by bb desc) from analytics;
-% sys.%3, sys.%6, sys.%11, sys.%14 # table_name
-% %3, %6, %11, %14 # name
+% sys.%7, sys.%16, sys.%25, sys.%34 # table_name
+% %7, %16, %25, %34 # name
% double, double, double, double # type
% 24, 24, 24, 24 # length
[ NULL, NULL, NULL, NULL ]
@@ -287,8 +287,8 @@ stdout of test 'analytics15` in director
# covar_pop(aa, 1) over (partition by bb order by bb asc),
# covar_pop(aa, 1) over (partition by bb order by bb desc),
# covar_pop(aa, 1) over (order by bb desc) from analytics;
-% sys.%3, sys.%6, sys.%11, sys.%14 # table_name
-% %3, %6, %11, %14 # name
+% sys.%10, sys.%20, sys.%30, sys.%40 # table_name
+% %10, %20, %30, %40 # name
% double, double, double, double # type
% 24, 24, 24, 24 # length
[ NULL, NULL, NULL, NULL ]
@@ -305,8 +305,8 @@ stdout of test 'analytics15` in director
# covar_pop(bb, -100) over (partition by bb order by bb asc),
# covar_pop(bb, -100) over (partition by bb order by bb desc),
# covar_pop(bb, -100) over (order by bb desc) from analytics;
-% sys.%3, sys.%6, sys.%11, sys.%14 # table_name
-% %3, %6, %11, %14 # name
+% sys.%10, sys.%20, sys.%30, sys.%40 # table_name
+% %10, %20, %30, %40 # name
% double, double, double, double # type
% 24, 24, 24, 24 # length
[ 0, 0, 0, 0 ]
@@ -323,8 +323,8 @@ stdout of test 'analytics15` in director
# corr(bb, -100) over (partition by bb order by bb asc),
# corr(bb, -100) over (partition by bb order by bb desc),
# corr(bb, -100) over (order by bb desc) from analytics;
-% sys.%3, sys.%6, sys.%11, sys.%14 # table_name
-% %3, %6, %11, %14 # name
+% sys.%10, sys.%20, sys.%30, sys.%40 # table_name
+% %10, %20, %30, %40 # name
% double, double, double, double # type
% 24, 24, 24, 24 # length
[ NULL, NULL, NULL, NULL ]
@@ -341,8 +341,8 @@ stdout of test 'analytics15` in director
# covar_samp(aa, 1) over (partition by bb order by bb asc),
# covar_samp(aa, 1) over (partition by bb order by bb desc),
# covar_samp(aa, 1) over (order by bb desc) from analytics;
-% sys.%3, sys.%6, sys.%11, sys.%14 # table_name
-% %3, %6, %11, %14 # name
+% sys.%10, sys.%20, sys.%30, sys.%40 # table_name
+% %10, %20, %30, %40 # name
% double, double, double, double # type
% 24, 24, 24, 24 # length
[ NULL, NULL, NULL, NULL ]
@@ -359,8 +359,8 @@ stdout of test 'analytics15` in director
# covar_samp(bb, -100) over (partition by bb order by bb asc),
# covar_samp(bb, -100) over (partition by bb order by bb desc),
# covar_samp(bb, -100) over (order by bb desc) from analytics;
-% sys.%3, sys.%6, sys.%11, sys.%14 # table_name
-% %3, %6, %11, %14 # name
+% sys.%10, sys.%20, sys.%30, sys.%40 # table_name
+% %10, %20, %30, %40 # name
% double, double, double, double # type
% 24, 24, 24, 24 # length
[ NULL, NULL, NULL, NULL ]
@@ -377,8 +377,8 @@ stdout of test 'analytics15` in director
# corr(bb, -100) over (partition by bb order by bb asc),
# corr(bb, -100) over (partition by bb order by bb desc),
# corr(bb, -100) over (order by bb desc) from analytics;
-% sys.%3, sys.%6, sys.%11, sys.%14 # table_name
-% %3, %6, %11, %14 # name
+% sys.%10, sys.%20, sys.%30, sys.%40 # table_name
+% %10, %20, %30, %40 # name
% double, double, double, double # type
% 24, 24, 24, 24 # length
[ NULL, NULL, NULL, NULL ]
@@ -397,8 +397,8 @@ stdout of test 'analytics15` in director
# covar_pop(bb, aa) over (),
# covar_pop(aa, 1) over (),
# covar_pop(aa, 1) over () from analytics;
-% sys., sys., sys., sys., sys., sys. # table_name
-% %1, %2, %3, %4, %5, %6 # name
+% sys.%7, sys.%16, sys.%25, sys.%34, sys.%44, sys.%54 # table_name
+% %7, %16, %25, %34, %44, %54 # name
% double, double, double, double, double, double # type
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic