Changeset: 2ae0e44bf9bd for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2ae0e44bf9bd
Added Files:
        sql/test/miscellaneous/Tests/select_groupby.sql
        sql/test/miscellaneous/Tests/select_groupby.stable.err
        sql/test/miscellaneous/Tests/select_groupby.stable.out
Modified Files:
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        clients/Tests/exports.stable.out
        clients/mapiclient/dump.c
        clients/mapiclient/msqldump.c
        gdk/gdk_analytic_bounds.c
        geom/monetdb5/geom.c
        geom/monetdb5/geom_upgrade.c
        monetdb5/mal/mal_builder.c
        monetdb5/mal/mal_builder.h
        monetdb5/mal/mal_instruction.c
        monetdb5/mal/mal_instruction.h
        monetdb5/mal/mal_runtime.c
        monetdb5/modules/mal/Tests/inspect05.stable.out.int128
        monetdb5/modules/mal/Tests/mat.malC
        monetdb5/modules/mal/Tests/mat.stable.out
        monetdb5/modules/mal/manual.c
        monetdb5/modules/mal/mat.c
        monetdb5/modules/mal/mat.mal
        monetdb5/modules/mal/tokenizer.c
        sql/backends/monet5/UDF/udf/Tests/udf-fuse.stable.out
        sql/backends/monet5/UDF/udf/Tests/udf-reverse.stable.out
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_scenario.c
        sql/backends/monet5/sql_statement.c
        sql/backends/monet5/sql_upgrades.c
        sql/backends/monet5/sql_upgrades.h
        sql/backends/monet5/vaults/fits/fits.c
        sql/backends/monet5/vaults/shp/shp.c
        sql/scripts/26_sysmon.sql
        sql/scripts/99_system.sql
        sql/server/rel_exp.c
        sql/server/rel_optimizer.c
        sql/server/rel_psm.c
        sql/server/rel_rel.c
        sql/server/rel_updates.c
        sql/test/BugConstraints/Tests/check_constraint.SF-1714829.stable.err
        
sql/test/BugDay_2005-12-19_2.9.3/Tests/default_next_value_for_non_ex_seq.SF.1246631.stable.err
        
sql/test/BugTracker-2009/Tests/segfault_when_quitting_debugger.SF-2538837.stable.out
        
sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
        
sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out
        sql/test/BugTracker-2014/Tests/current_timestamp.Bug-3427.stable.err
        sql/test/BugTracker-2014/Tests/current_timestamp.Bug-3427.stable.out
        sql/test/BugTracker-2014/Tests/manifold.Bug-3556.stable.out
        sql/test/BugTracker-2017/Tests/side-effect.Bug-6397.stable.out
        
sql/test/BugTracker-2019/Tests/duplicates-not-eliminated-long-CASE-stmt.Bug-6697.stable.out
        
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-0join-query.stable.out
        
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-0join-view.stable.out
        
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-1join-query.stable.out
        
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-1join-view.stable.out
        
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-2join-query.stable.out
        
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-2join-view.stable.out
        sql/test/Tests/comment-dump.stable.out
        sql/test/Triggers/Tests/trigger_owner.stable.err
        sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.powerpc64.int128
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.32bit
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64.int128
        sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out.32bit
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
        sql/test/miscellaneous/Tests/All
        sql/test/pg_regress/Tests/alter_table.stable.err
        sql/test/pg_regress/Tests/alter_table.stable.out
        sql/test/remote/Tests/partition_elim.stable.out
        sql/test/sys-schema/Tests/systemfunctions.stable.out
        sql/test/sys-schema/Tests/systemfunctions.stable.out.int128
        sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.32bit
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade/Tests/upgrade.stable.out
        sql/test/testdb-upgrade/Tests/upgrade.stable.out.32bit
        sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
Branch: grouping-analytics
Log Message:

Merge with default


diffs (truncated from 5061 to 300 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
@@ -660,6 +660,7 @@ stdout of test 'MAL-signatures` in direc
 [ "bat",       "orderidx",     "pattern bat.orderidx(bv:bat[:any_1]):void ",   
"OIDXcreate;",  "Introduces the OID index arrangement of ordered values"        
]
 [ "bat",       "orderidx",     "pattern bat.orderidx(bv:bat[:any_1], 
pieces:int):void ",       "OIDXcreate;",  "Introduces the OID index arrangement 
of ordered values"        ]
 [ "bat",       "orderidx",     "pattern bat.orderidx(bv:bat[:any_1], 
l:bat[:any_1]...):void ", "OIDXmerge;",   "Consolidates the OID index 
arrangement"        ]
+[ "bat",       "pack", "pattern bat.pack(X_0:any_2...):bat[:any_2] ",  
"MATpackValues;",       "Materialize the values into a BAT. Avoiding a clash 
with mat.pack() in mergetable"     ]
 [ "bat",       "partition",    "pattern bat.partition(b:bat[:any_1], 
pieces:int, n:int):bat[:any_1] ", "CMDBATpartition2;",    "Create the n-th 
slice over the BAT broken into several pieces."        ]
 [ "bat",       "partition",    "pattern 
bat.partition(b:bat[:any_1]):bat[:any_1]... ", "CMDBATpartition;",     "Create 
a serie of slices over the BAT argument. The BUNs are distributed evenly."      
]
 [ "bat",       "replace",      "command bat.replace(b:bat[:any_1], 
rid:bat[:oid], val:bat[:any_1]):bat[:any_1] ",      "BKCbat_inplace;",      
"Perform replace for all BUNs of the second BAT into the first."        ]
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
@@ -766,6 +766,7 @@ stdout of test 'MAL-signatures` in direc
 [ "bat",       "orderidx",     "pattern bat.orderidx(bv:bat[:any_1]):void ",   
"OIDXcreate;",  "Introduces the OID index arrangement of ordered values"        
]
 [ "bat",       "orderidx",     "pattern bat.orderidx(bv:bat[:any_1], 
pieces:int):void ",       "OIDXcreate;",  "Introduces the OID index arrangement 
of ordered values"        ]
 [ "bat",       "orderidx",     "pattern bat.orderidx(bv:bat[:any_1], 
l:bat[:any_1]...):void ", "OIDXmerge;",   "Consolidates the OID index 
arrangement"        ]
+[ "bat",       "pack", "pattern bat.pack(X_0:any_2...):bat[:any_2] ",  
"MATpackValues;",       "Materialize the values into a BAT. Avoiding a clash 
with mat.pack() in mergetable"     ]
 [ "bat",       "partition",    "pattern bat.partition(b:bat[:any_1], 
pieces:int, n:int):bat[:any_1] ", "CMDBATpartition2;",    "Create the n-th 
slice over the BAT broken into several pieces."        ]
 [ "bat",       "partition",    "pattern 
bat.partition(b:bat[:any_1]):bat[:any_1]... ", "CMDBATpartition;",     "Create 
a serie of slices over the BAT argument. The BUNs are distributed evenly."      
]
 [ "bat",       "replace",      "command bat.replace(b:bat[:any_1], 
rid:bat[:oid], val:bat[:any_1]):bat[:any_1] ",      "BKCbat_inplace;",      
"Perform replace for all BUNs of the second BAT into the first."        ]
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -2418,6 +2418,7 @@ InstrPtr newFcnCall(MalBlkPtr mb, char *
 Symbol newFunction(str mod, str nme, int kind);
 MalStkPtr newGlobalStack(int size);
 InstrPtr newInstruction(MalBlkPtr mb, str modnme, str fcnnme);
+InstrPtr newInstructionArgs(MalBlkPtr mb, str modnme, str fcnnme, int args);
 MalBlkPtr newMalBlk(int elements);
 int newMalBlkStmt(MalBlkPtr mb, int elements);
 Plant newPlant(MalBlkPtr mb);
@@ -2425,6 +2426,7 @@ InstrPtr newRaiseStmt(MalBlkPtr mb, str 
 str newRef;
 InstrPtr newReturnStmt(MalBlkPtr mb);
 InstrPtr newStmt(MalBlkPtr mb, const char *module, const char *name);
+InstrPtr newStmtArgs(MalBlkPtr mb, const char *module, const char *name, int 
args);
 Symbol newSymbol(str nme, int kind);
 int newTmpVariable(MalBlkPtr mb, malType type);
 int newTypeVariable(MalBlkPtr mb, malType type);
diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c
--- a/clients/mapiclient/dump.c
+++ b/clients/mapiclient/dump.c
@@ -2575,8 +2575,7 @@ dump_database(Mapi mid, stream *toConsol
                goto bailout;
 
        /* start a transaction for the dump */
-       if (!describe)
-               mnstr_printf(toConsole, "%s;\n", start_trx);
+       mnstr_printf(toConsole, "%s;\n", start_trx);
 
        if ((hdl = mapi_query(mid, start_trx)) == NULL || mapi_error(mid))
                goto bailout;
@@ -3095,8 +3094,7 @@ dump_database(Mapi mid, stream *toConsol
        mapi_close_handle(hdl);
 
        /* finally commit the whole transaction */
-       if (!describe)
-               mnstr_printf(toConsole, "COMMIT;\n");
+       mnstr_printf(toConsole, "COMMIT;\n");
        if (sname)
                free(sname);
        if (query)
diff --git a/clients/mapiclient/msqldump.c b/clients/mapiclient/msqldump.c
--- a/clients/mapiclient/msqldump.c
+++ b/clients/mapiclient/msqldump.c
@@ -226,11 +226,15 @@ main(int argc, char **argv)
                dump_version(mid, out, "-- server:");
                mnstr_printf(out, "-- %s\n", buf);
        }
-       if (functions)
+       if (functions) {
+               mnstr_printf(out, "START TRANSACTION;\n");
                c = dump_functions(mid, out, true, NULL, NULL, NULL);
-       else if (table)
+               mnstr_printf(out, "COMMIT;\n");
+       } else if (table) {
+               mnstr_printf(out, "START TRANSACTION;\n");
                c = dump_table(mid, NULL, table, out, describe, true, 
useinserts, false);
-       else
+               mnstr_printf(out, "COMMIT;\n");
+       } else
                c = dump_database(mid, out, describe, useinserts);
        mnstr_flush(out);
 
diff --git a/gdk/gdk_analytic_bounds.c b/gdk/gdk_analytic_bounds.c
--- a/gdk/gdk_analytic_bounds.c
+++ b/gdk/gdk_analytic_bounds.c
@@ -94,7 +94,7 @@
        do {                                                            \
                lng m = k - 1;                                          \
                for (; k < i; k++, rb++) {                              \
-                       TPE2 rlimit = (TPE2) LIMIT;                     \
+                       TPE2 rlimit = LIMIT;                    \
                        TPE1 v = bp[k];                                 \
                        if (is_##TPE1##_nil(v)) {                       \
                                for (j = k; ; j--) {                    \
@@ -125,7 +125,7 @@
 #define ANALYTICAL_WINDOW_BOUNDS_FIXED_GROUPS_FOLLOWING(TPE1, LIMIT, TPE2) \
        do {                                                            \
                for (; k < i; k++, rb++) {                              \
-                       TPE2 rlimit = (TPE2) LIMIT;                     \
+                       TPE2 rlimit = LIMIT;                    \
                        TPE1 v = bp[k];                                 \
                        if (is_##TPE1##_nil(v)) {                       \
                                for (j = k + 1; j < i; j++) {           \
@@ -168,7 +168,7 @@
                }                                                       \
        } while (0)
 
-#define ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE_PRECEDING(LIMIT)       \
+#define ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE_PRECEDING(LIMIT, TPE)  \
        do {                                                            \
                lng m = k - 1;                                          \
                for (; k < i; k++, rb++) {                              \
@@ -188,7 +188,7 @@
                                        next = BUNtail(bpi, (BUN) j);   \
                                        if (atomcmp(next, nil) == 0)    \
                                                break;                  \
-                                       if (ABSOLUTE(atomcmp(v, next)) > (int) 
LIMIT) \
+                                       if (ABSOLUTE((TPE) atomcmp(v, next)) > 
(TPE) LIMIT) \
                                                break;                  \
                                }                                       \
                        }                                               \
@@ -197,7 +197,7 @@
                }                                                       \
        } while (0)
 
-#define ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE_FOLLOWING(LIMIT)       \
+#define ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE_FOLLOWING(LIMIT, TPE)  \
        do {                                                            \
                for (; k < i; k++, rb++) {                              \
                        void *v = BUNtail(bpi, (BUN) k);                \
@@ -211,7 +211,7 @@
                                        void *next = BUNtail(bpi, (BUN) j); \
                                        if (atomcmp(next, nil) == 0)    \
                                                break;                  \
-                                       if (ABSOLUTE(atomcmp(v, next)) > (int) 
LIMIT) \
+                                       if (ABSOLUTE((TPE) atomcmp(v, next)) > 
(TPE) LIMIT) \
                                                break;                  \
                                }                                       \
                        }                                               \
@@ -219,11 +219,11 @@
                }                                                       \
        } while (0)
 
-#define ANALYTICAL_WINDOW_BOUNDS_VARSIZED_GROUPS_PRECEDING(LIMIT)      \
+#define ANALYTICAL_WINDOW_BOUNDS_VARSIZED_GROUPS_PRECEDING(LIMIT, TPE) \
        do {                                                            \
                lng m = k - 1;                                          \
                for (; k < i; k++, rb++) {                              \
-                       lng rlimit = (lng) LIMIT;                       \
+                       TPE rlimit = LIMIT;                     \
                        void *v = BUNtail(bpi, (BUN) k);                \
                        if (atomcmp(v, nil) == 0) {                     \
                                for (j = k; ; j--) {                    \
@@ -253,10 +253,10 @@
                }                                                       \
        } while (0)
 
-#define ANALYTICAL_WINDOW_BOUNDS_VARSIZED_GROUPS_FOLLOWING(LIMIT)      \
+#define ANALYTICAL_WINDOW_BOUNDS_VARSIZED_GROUPS_FOLLOWING(LIMIT, TPE) \
        do {                                                            \
                for (; k < i; k++, rb++) {                              \
-                       lng rlimit = (lng) LIMIT;                       \
+                       TPE rlimit = LIMIT;                     \
                        void *v = BUNtail(bpi, (BUN) k);                \
                        if (atomcmp(v, nil) == 0) {                     \
                                for (j = k + 1; j < i; j++) {           \
@@ -300,10 +300,12 @@
                }                                                       \
        } while (0)
 
-#define ANALYTICAL_WINDOW_BOUNDS_BRANCHES_RANGE_NUM(IMP, LIMIT)                
\
+#define ANALYTICAL_WINDOW_BOUNDS_BRANCHES_RANGE_NUM(IMP, LIMIT, CAST) \
        do {                                                            \
                switch (tp1) {                                          \
                case TYPE_bit:                                          \
+               case TYPE_flt:                                          \
+               case TYPE_dbl:                                          \
                        goto type_not_supported;                        \
                case TYPE_bte:                                          \
                        ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(bte, 
ANALYTICAL_WINDOW_BOUNDS_FIXED_RANGE##IMP, LIMIT, lng); \
@@ -324,15 +326,15 @@
                                for (; np < nend; np++) {               \
                                        if (*np) {                      \
                                                i += (np - pnp);        \
-                                               
ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE##IMP(LIMIT); \
+                                               
ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE##IMP(LIMIT, CAST); \
                                                pnp = np;               \
                                        }                               \
                                }                                       \
                                i += (np - pnp);                        \
-                               
ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE##IMP(LIMIT); \
+                               
ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE##IMP(LIMIT, CAST); \
                        } else {                                        \
                                i += (lng) cnt;                         \
-                               
ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE##IMP(LIMIT); \
+                               
ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE##IMP(LIMIT, CAST); \
                        }                                               \
                }                                                       \
                }                                                       \
@@ -364,43 +366,25 @@
 #define ANALYTICAL_WINDOW_BOUNDS_BRANCHES_RANGE_HGE(IMP, LIMIT)                
\
        do {                                                            \
                switch (tp1) {                                          \
-                       case TYPE_hge:                                  \
-                               ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(hge, 
ANALYTICAL_WINDOW_BOUNDS_FIXED_RANGE##IMP, LIMIT, hge); \
-                               break;                                  \
-                       default:                                        \
-                               goto type_not_supported;                \
-               }                                                       \
-       } while (0)
-#endif
-
-#ifdef HAVE_HGE
-#define ANALYTICAL_WINDOW_BOUNDS_GROUPS_HGE(IMP, LIMIT)                        
\
-       case TYPE_hge:                                                  \
-               ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(hge, 
ANALYTICAL_WINDOW_BOUNDS_FIXED_GROUPS##IMP, LIMIT, hge); \
-               break;
-#else
-#define ANALYTICAL_WINDOW_BOUNDS_GROUPS_HGE(IMP, LIMIT)
-#endif
-
-#define ANALYTICAL_WINDOW_BOUNDS_BRANCHES_GROUPS(IMP, LIMIT)           \
-       do {                                                            \
-               switch (tp1) {                                          \
                case TYPE_bit:                                          \
-                       ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(bit, 
ANALYTICAL_WINDOW_BOUNDS_FIXED_GROUPS##IMP, LIMIT, bit); \
-                       break;                                          \
+               case TYPE_flt:                                          \
+               case TYPE_dbl:                                          \
+                       goto type_not_supported;                \
                case TYPE_bte:                                          \
-                       ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(bte, 
ANALYTICAL_WINDOW_BOUNDS_FIXED_GROUPS##IMP, LIMIT, bte); \
+                       ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(bte, 
ANALYTICAL_WINDOW_BOUNDS_FIXED_RANGE##IMP, LIMIT, hge); \
                        break;                                          \
                case TYPE_sht:                                          \
-                       ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(sht, 
ANALYTICAL_WINDOW_BOUNDS_FIXED_GROUPS##IMP, LIMIT, sht); \
+                       ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(sht, 
ANALYTICAL_WINDOW_BOUNDS_FIXED_RANGE##IMP, LIMIT, hge); \
                        break;                                          \
                case TYPE_int:                                          \
-                       ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(int, 
ANALYTICAL_WINDOW_BOUNDS_FIXED_GROUPS##IMP, LIMIT, int); \
+                       ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(int, 
ANALYTICAL_WINDOW_BOUNDS_FIXED_RANGE##IMP, LIMIT, hge); \
                        break;                                          \
                case TYPE_lng:                                          \
-                       ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(lng, 
ANALYTICAL_WINDOW_BOUNDS_FIXED_GROUPS##IMP, LIMIT, lng); \
+                       ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(lng, 
ANALYTICAL_WINDOW_BOUNDS_FIXED_RANGE##IMP, LIMIT, hge); \
                        break;                                          \
-                       ANALYTICAL_WINDOW_BOUNDS_GROUPS_HGE(IMP, LIMIT); \
+               case TYPE_hge:                                  \
+                       ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(hge, 
ANALYTICAL_WINDOW_BOUNDS_FIXED_RANGE##IMP, LIMIT, hge); \
+                       break;                                  \
                default: {                                              \
                        if (p) {                                        \
                                pnp = np = (bit*)Tloc(p, 0);            \
@@ -408,15 +392,65 @@
                                for (; np < nend; np++) {               \
                                        if (*np) {                      \
                                                i += (np - pnp);        \
-                                               
ANALYTICAL_WINDOW_BOUNDS_VARSIZED_GROUPS##IMP(LIMIT); \
+                                               
ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE##IMP(LIMIT, hge); \
                                                pnp = np;               \
                                        }                               \
                                }                                       \
                                i += (np - pnp);                        \
-                               
ANALYTICAL_WINDOW_BOUNDS_VARSIZED_GROUPS##IMP(LIMIT); \
+                               
ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE##IMP(LIMIT, hge); \
                        } else {                                        \
                                i += (lng) cnt;                         \
-                               
ANALYTICAL_WINDOW_BOUNDS_VARSIZED_GROUPS##IMP(LIMIT); \
+                               
ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE##IMP(LIMIT, hge); \
+                       }                                               \
+               }                                                       \
+               }                                                       \
+       } while (0)
+#endif
+
+#ifdef HAVE_HGE
+#define ANALYTICAL_WINDOW_BOUNDS_GROUPS_HGE(IMP, LIMIT, TPE)                   
\
+       case TYPE_hge:                                                  \
+               ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(hge, 
ANALYTICAL_WINDOW_BOUNDS_FIXED_GROUPS##IMP, LIMIT, TPE); \
+               break;
+#else
+#define ANALYTICAL_WINDOW_BOUNDS_GROUPS_HGE(IMP, LIMIT, TPE)
+#endif
+
+#define ANALYTICAL_WINDOW_BOUNDS_BRANCHES_GROUPS(IMP, LIMIT, TPE)              
\
+       do {                                                            \
+               switch (tp1) {                                          \
+               case TYPE_bit:                                          \
+                       ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(bit, 
ANALYTICAL_WINDOW_BOUNDS_FIXED_GROUPS##IMP, LIMIT, TPE); \
+                       break;                                          \
+               case TYPE_bte:                                          \
+                       ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(bte, 
ANALYTICAL_WINDOW_BOUNDS_FIXED_GROUPS##IMP, LIMIT, TPE); \
+                       break;                                          \
+               case TYPE_sht:                                          \
+                       ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(sht, 
ANALYTICAL_WINDOW_BOUNDS_FIXED_GROUPS##IMP, LIMIT, TPE); \
+                       break;                                          \
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to