[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