MonetDB: analytics - Merge with default.

2018-09-17 Thread Pedro Ferreira
Changeset: e0b8002b6702 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e0b8002b6702
Modified Files:
sql/server/sql_parser.y
Branch: analytics
Log Message:

Merge with default.


diffs (23 lines):

diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y
--- a/sql/server/sql_parser.y
+++ b/sql/server/sql_parser.y
@@ -6392,6 +6392,7 @@ char *token2string(int token)
TR(MODE);
SQL(INSERT);
SQL(DELETE);
+   SQL(TRUNCATE);
SQL(UPDATE);
SQL(CROSS);
SQL(JOIN);
@@ -6463,6 +6464,11 @@ char *token2string(int token)
SQL(XMLTEXT);
SQL(XMLVALIDATE);
SQL(XMLNAMESPACES);
+   SQL(MERGE_PARTITION);
+   SQL(PARTITION_LIST);
+   SQL(PARTITION_RANGE);
+   SQL(PARTITION_COLUMN);
+   SQL(PARTITION_EXPRESSION);
SQL(PRECEDING);
SQL(FOLLOWING);
SQL(CURRENT_ROW);
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: analytics - Supporting non-centered window bounds for r...

2018-09-17 Thread Pedro Ferreira
Changeset: eb6ac1a71b82 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=eb6ac1a71b82
Added Files:
sql/test/analytics/Tests/analytics04.sql
sql/test/analytics/Tests/analytics04.stable.err
sql/test/analytics/Tests/analytics04.stable.out
Modified Files:
gdk/gdk_analytic.c
gdk/gdk_analytic.h
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql_rank.c
sql/backends/monet5/sql_rank.h
sql/backends/monet5/sql_rank.mal
sql/backends/monet5/sql_rank.mal.sh
sql/backends/monet5/sql_rank_hge.mal
sql/backends/monet5/sql_rank_hge.mal.sh
sql/common/sql_types.c
sql/server/rel_select.c
sql/server/sql_parser.h
sql/server/sql_parser.y
sql/test/analytics/Tests/All
sql/test/analytics/Tests/analytics03.stable.err
Branch: analytics
Log Message:

Supporting non-centered window bounds for rows bounds at least. Cleaned macros 
according to the change.

I have to test range and groups yet.


diffs (truncated from 1759 to 300 lines):

diff --git a/gdk/gdk_analytic.c b/gdk/gdk_analytic.c
--- a/gdk/gdk_analytic.c
+++ b/gdk/gdk_analytic.c
@@ -102,44 +102,44 @@ GDKanalyticaldiff(BAT *r, BAT *b, BAT *p
 
 #undef ANALYTICAL_DIFF_IMP
 
-#define ANALYTICAL_WINDOW_BOUNDS_FIXED_ROWS_START(TPE, BOUNDF) \
+#define ANALYTICAL_WINDOW_BOUNDS_FIXED_ROWS_PRECEDING(TPE, BOUNDF) \
do { \
TPE *bl = pbp;   \
for(; pbpbl; bs--, curval++) {  \
+   for(bs=pbp-1; bs>bl; bs--, curval--) {  \
TPE calc;   \
SUB_WITH_CHECK(TPE, v, TPE, *bs, TPE, calc, 
GDK_##TPE##_max, goto calc_overflow); \
if (ABSOLUTE(calc) > rlimit)\
@@ -149,11 +149,11 @@ GDKanalyticaldiff(BAT *r, BAT *b, BAT *p
}   \
} while(0);
 
-#define ANALYTICAL_WINDOW_BOUNDS_FIXED_RANGE_END(TPE, BOUNDF) \
+#define ANALYTICAL_WINDOW_BOUNDS_FIXED_RANGE_FOLLOWING(TPE, BOUNDF) \
do {  \
TPE *bs, v, rlimit;   \
for(; pbpbl; bs--, curval++) {   \
+   for(bs=pbp-1; bs>bl; bs--, curval--) {   \
if(v != *bs) {   \
if(rlimit == 0)  \
break;  
 \
@@ -185,11 +185,11 @@ GDKanalyticaldiff(BAT *r, BAT *b, BAT *p
}\
} while(0);
 
-#define ANALYTICAL_WINDOW_BOUNDS_FIXED_GROUPS_END(TPE, BOUNDF) \
+#define ANALYTICAL_WINDOW_BOUNDS_FIXED_GROUPS_FOLLOWING(TPE, BOUNDF) \
do {   \
TPE *bs, v;\
for(; pbpj; l--, curval++) {  \
+   for(BUN l=k-1; l>j; l--, curval--) {  \
if (ABSOLUTE(atomcmp(v, BUNtail(bpi, l))) > 
BOUNDV) \
break;\
} \
@@ -311,10 +311,10 @@ GDKanalyticaldiff(BAT *r, BAT *b, BAT *p
} \
} while(0);
 
-#define ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE_END(BOUNDV) \
+#define ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE_FOLLOWING(BOUNDV) \
do {\
for(; k 
BOUNDV) \
@@ -324,7 +324,7 @@ GDKanalyticaldiff(BAT *r, BAT *b, BAT *p
}   \
} while(0);
 
-#define ANALYTICAL_WINDOW_BOUNDS_VARSIZED_GROUPS_START(BOUNDV) \
+#define ANALYTICAL_WINDOW_BOUNDS_VARSIZED_GROUPS_PRECEDING(BOUNDV) \
do {   \
BUN j; \
*rb = 0; /* the first element's window size is hardcoded to 
avoid overflow in BUN */ \
@@ -332,10 +332,10 @@ GDKanalyticaldiff(BAT *r, BAT *b, BAT *p
k++;   \
j = k - 1; \
for(; kj; l--, curval++) {   \
+   for(BUN l=k-1; l>j; l--, curval--) {   \
void *next = BUNtail(bpi, l);  \
if(atomcmp(v, next)) { \
if(rlimit == 0)\
@@ -348,10 +348,10 @@ GDKanalyticaldiff(BAT *r, BAT *b, BAT *p
}