Changeset: b50e087abea1 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b50e087abea1
Added Files:
        sql/server/cmp_exp_eval.h
        sql/server/rel_out2inner_join.txt
        sql/server/rel_outer_join_optimizer.h
Modified Files:
        sql/backends/monet5/UDF/pyapi3/Tests/pyloader3_01.stable.out
        sql/backends/monet5/sql_upgrades.c
        sql/common/sql_types.c
        sql/include/sql_catalog.h
        sql/server/rel_exp.c
        sql/storage/bat/bat_logger.c
        sql/storage/store.c
        
sql/test/BugDay_2005-10-06_2.9.3/Tests/CrashMe_SQL_server_crash-2.SF-921673.stable.out
        sql/test/BugTracker-2009/Tests/join_topn.SF-2654133.stable.out
        sql/test/bugs/Tests/innerjoin_multiple-bug-sf-943661.stable.out
        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/emptydb/Tests/check.stable.out
        sql/test/emptydb/Tests/check.stable.out.32bit
        sql/test/emptydb/Tests/check.stable.out.int128
        
sql/test/sys-schema/Tests/check_ForeignKey_referential_integrity.stable.out
        sql/test/sys-schema/Tests/check_Not_Nullable_columns.stable.out
        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: default
Log Message:

Merge out2in branch into default.


diffs (truncated from 210045 to 300 lines):

diff --git a/sql/backends/monet5/UDF/pyapi3/Tests/pyloader3_01.stable.out 
b/sql/backends/monet5/UDF/pyapi3/Tests/pyloader3_01.stable.out
--- a/sql/backends/monet5/UDF/pyapi3/Tests/pyloader3_01.stable.out
+++ b/sql/backends/monet5/UDF/pyapi3/Tests/pyloader3_01.stable.out
@@ -65,10 +65,10 @@ stdout of test 'pyloader3_01` in directo
 #DROP LOADER myfunc2;
 #DROP LOADER myfunc3;
 #SELECT * FROM functions WHERE name='myfunc';
-% sys.functions,       sys.functions,  sys.functions,  sys.functions,  
sys.functions,  sys.functions,  sys.functions,  sys.functions,  sys.functions,  
sys.functions,  sys.functions # table_name
-% id,  name,   func,   mod,    language,       type,   side_effect,    varres, 
vararg, schema_id,      system # name
-% int, varchar,        varchar,        varchar,        int,    int,    
boolean,        boolean,        boolean,        int,    boolean # type
-% 1,   0,      0,      0,      1,      1,      5,      5,      5,      1,      
5 # length
+% sys.functions,       sys.functions,  sys.functions,  sys.functions,  
sys.functions,  sys.functions,  sys.functions,  sys.functions,  sys.functions,  
sys.functions,  sys.functions,  sys.functions # table_name
+% id,  name,   func,   mod,    language,       type,   side_effect,    varres, 
vararg, schema_id,      system, semantics # name
+% int, varchar,        varchar,        varchar,        int,    int,    
boolean,        boolean,        boolean,        int,    boolean,        boolean 
# type
+% 1,   0,      0,      0,      1,      1,      5,      5,      5,      1,      
5,      5 # length
 #ROLLBACK;
 
 # 13:26:39 >  
diff --git a/sql/backends/monet5/sql_upgrades.c 
b/sql/backends/monet5/sql_upgrades.c
--- a/sql/backends/monet5/sql_upgrades.c
+++ b/sql/backends/monet5/sql_upgrades.c
@@ -80,13 +80,14 @@ sql_fix_system_tables(Client c, mvc *sql
                        pos += snprintf(buf + pos, bufsize - pos,
                                        "insert into sys.functions values"
                                        " (%d, '%s', '%s', '%s', %d, %d, false,"
-                                       " %s, %s, %d, %s);\n",
+                                       " %s, %s, %d, %s, %s);\n",
                                        func->base.id, func->base.name, 
func->imp,
                                        func->mod, (int) FUNC_LANG_INT, (int) 
func->type,
                                        func->varres ? "true" : "false",
                                        func->vararg ? "true" : "false",
                                        func->s ? func->s->base.id : s->base.id,
-                                       func->system ? "true" : "false");
+                                       func->system ? "true" : "false",
+                                       func->semantics ? "true" : "false");
                        arg = func->res->h->data;
                        pos += snprintf(buf + pos, bufsize - pos,
                                        "insert into sys.args values"
@@ -109,7 +110,7 @@ sql_fix_system_tables(Client c, mvc *sql
                        pos += snprintf(buf + pos, bufsize - pos,
                                        "insert into sys.functions values"
                                        " (%d, '%s', '%s', '%s',"
-                                       " %d, %d, %s, %s, %s, %d, %s);\n",
+                                       " %d, %d, %s, %s, %s, %d, %s, %s);\n",
                                        func->base.id, func->base.name,
                                        func->imp, func->mod, (int) 
FUNC_LANG_INT,
                                        (int) func->type,
@@ -117,7 +118,8 @@ sql_fix_system_tables(Client c, mvc *sql
                                        func->varres ? "true" : "false",
                                        func->vararg ? "true" : "false",
                                        func->s ? func->s->base.id : s->base.id,
-                                       func->system ? "true" : "false");
+                                       func->system ? "true" : "false",
+                                       func->semantics ? "true" : "false");
                        if (func->res) {
                                for (m = func->res->h; m; m = m->next, 
number++) {
                                        arg = m->data;
@@ -2783,6 +2785,19 @@ sql_update_jun2020_bam(Client c, mvc *m,
 }
 
 static str
+sql_update_semantics(Client c)
+{
+       char* update_query =
+       "update sys.functions set semantics = false where type <> 6 and func 
not ilike '%CREATE FUNCTION%' and name in 
('length','octet_length','>','>=','<','<=','min','max','sql_min','sql_max','least','greatest','sum','prod','mod','and',\n"
+       
"'or','xor','not','sql_mul','sql_div','sql_sub','sql_add','bit_and','bit_or','bit_xor','bit_not','left_shift','right_shift','abs','sign','scale_up','scale_down','round','power','floor','ceil','ceiling','sin','cos','tan','asin',\n"
+       
"'acos','atan','sinh','cot','cosh','tanh','sqrt','exp','log','ln','log10','log2','pi','curdate','current_date','curtime','current_time','current_timestamp','localtime','localtimestamp','local_timezone','century','decade','year',\n"
+       
"'quarter','month','day','dayofyear','weekofyear','dayofweek','dayofmonth','week','hour','minute','second','strings','locate','charindex','splitpart','substring','substr','truncate','concat','ascii','code','right','left','upper',\n"
+       
"'ucase','lower','lcase','trim','ltrim','rtrim','lpad','rpad','insert','replace','repeat','space','char_length','character_length','soundex','qgramnormalize');";
+
+       return SQLstatementIntern(c, &update_query, "update", true, false, 
NULL);
+}
+
+static str
 sql_update_default(Client c, mvc *sql, const char *prev_schema)
 {
        size_t bufsize = 1024, pos = 0;
@@ -2851,6 +2866,12 @@ sql_update_default(Client c, mvc *sql, c
        }
        res_table_destroy(output);
        GDKfree(buf);
+
+       if (err)
+               return err;
+
+       err = sql_update_semantics(c);
+
        return err;             /* usually MAL_SUCCEED */
 }
 
diff --git a/sql/common/sql_types.c b/sql/common/sql_types.c
--- a/sql/common/sql_types.c
+++ b/sql/common/sql_types.c
@@ -1019,7 +1019,7 @@ sql_create_arg(sql_allocator *sa, const 
 }
 
 static sql_func *
-sql_create_func_(sql_allocator *sa, const char *name, const char *mod, const 
char *imp, sql_ftype type, bit side_effect, 
+sql_create_func_(sql_allocator *sa, const char *name, const char *mod, const 
char *imp, sql_ftype type, bit semantics, bit side_effect, 
                                 int fix_scale, unsigned int res_scale, 
sql_type *res, int nargs, va_list valist)
 {
        list *ops = sa_list(sa);
@@ -1033,6 +1033,7 @@ sql_create_func_(sql_allocator *sa, cons
        if (res)
                fres = create_arg(sa, NULL, sql_create_subtype(sa, res, 0, 0), 
ARG_OUT);
        base_init(sa, &t->base, store_next_oid(), 0, name);
+       
        t->imp = sa_strdup(sa, imp);
        t->mod = sa_strdup(sa, mod);
        t->ops = ops;
@@ -1046,6 +1047,7 @@ sql_create_func_(sql_allocator *sa, cons
        t->nr = list_length(funcs);
        t->sql = 0;
        t->lang = FUNC_LANG_INT;
+       t->semantics = semantics;
        t->side_effect = side_effect;
        t->fix_scale = fix_scale;
        t->s = NULL;
@@ -1065,32 +1067,32 @@ sql_create_procedure(sql_allocator *sa, 
        va_list valist;
 
        va_start(valist, nargs);
-       res = sql_create_func_(sa, name, mod, imp, F_PROC, side_effect, 
SCALE_NONE, 0, NULL, nargs, valist);
+       res = sql_create_func_(sa, name, mod, imp, F_PROC, TRUE, side_effect, 
SCALE_NONE, 0, NULL, nargs, valist);
        va_end(valist);
        return res;
 }
 
 static sql_func *
-sql_create_func(sql_allocator *sa, const char *name, const char *mod, const 
char *imp, bit side_effect, int fix_scale,
+sql_create_func(sql_allocator *sa, const char *name, const char *mod, const 
char *imp, bit semantics, bit side_effect, int fix_scale,
                                unsigned int res_scale, sql_type *fres, int 
nargs, ...)
 {
        sql_func *res;
        va_list valist;
 
        va_start(valist, nargs);
-       res = sql_create_func_(sa, name, mod, imp, F_FUNC, side_effect, 
fix_scale, res_scale, fres, nargs, valist);
+       res = sql_create_func_(sa, name, mod, imp, F_FUNC, semantics, 
side_effect, fix_scale, res_scale, fres, nargs, valist);
        va_end(valist);
        return res;
 }
 
 static sql_func *
-sql_create_aggr(sql_allocator *sa, const char *name, const char *mod, const 
char *imp, sql_type *fres, int nargs, ...)
+sql_create_aggr(sql_allocator *sa, const char *name, const char *mod, const 
char *imp, bit semantics, sql_type *fres, int nargs, ...)
 {
        sql_func *res;
        va_list valist;
 
        va_start(valist, nargs);
-       res = sql_create_func_(sa, name, mod, imp, F_AGGR, FALSE, SCALE_NONE, 
0, fres, nargs, valist);
+       res = sql_create_func_(sa, name, mod, imp, F_AGGR, semantics, FALSE, 
SCALE_NONE, 0, fres, nargs, valist);
        va_end(valist);
        return res;
 }
@@ -1103,7 +1105,7 @@ sql_create_union(sql_allocator *sa, cons
        va_list valist;
 
        va_start(valist, nargs);
-       res = sql_create_func_(sa, name, mod, imp, F_UNION, side_effect, 
fix_scale, res_scale, fres, nargs, valist);
+       res = sql_create_func_(sa, name, mod, imp, F_UNION, TRUE, side_effect, 
fix_scale, res_scale, fres, nargs, valist);
        va_end(valist);
        return res;
 }
@@ -1115,7 +1117,7 @@ sql_create_analytic(sql_allocator *sa, c
        va_list valist;
 
        va_start(valist, nargs);
-       res = sql_create_func_(sa, name, mod, imp, F_ANALYTIC, FALSE, 
fix_scale, 0, fres, nargs, valist);
+       res = sql_create_func_(sa, name, mod, imp, F_ANALYTIC, TRUE, FALSE, 
fix_scale, 0, fres, nargs, valist);
        va_end(valist);
        return res;
 }
@@ -1219,8 +1221,8 @@ sqltypeinit( sql_allocator *sa)
 
        BLOB = *t++ = sql_create_type(sa, "BLOB", 0, 0, 0, EC_BLOB, "blob");
 
-       sql_create_func(sa, "length", "blob", "nitems", FALSE, SCALE_NONE, 0, 
INT, 1, BLOB);
-       sql_create_func(sa, "octet_length", "blob", "nitems", FALSE, 
SCALE_NONE, 0, INT, 1, BLOB);
+       sql_create_func(sa, "length", "blob", "nitems", FALSE, FALSE, 
SCALE_NONE, 0, INT, 1, BLOB);
+       sql_create_func(sa, "octet_length", "blob", "nitems", FALSE, FALSE, 
SCALE_NONE, 0, INT, 1, BLOB);
 
        if (geomcatalogfix_get() != NULL) {
                // the geom module is loaded 
@@ -1231,36 +1233,36 @@ sqltypeinit( sql_allocator *sa)
                MBR = *t++ = sql_create_type(sa, "MBR", 0, SCALE_NONE, 0, 
EC_EXTERNAL, "mbr");
                
                /* mbr operator functions */
-               sql_create_func(sa, "mbr_overlap", "geom", "mbrOverlaps", 
FALSE, SCALE_FIX, 0, BIT, 2, GEOM, GEOM);
-               sql_create_func(sa, "mbr_overlap", "geom", "mbrOverlaps", 
FALSE, SCALE_FIX, 0, BIT, 2, MBR, MBR);
-               sql_create_func(sa, "mbr_above", "geom", "mbrAbove", FALSE, 
SCALE_FIX, 0, BIT, 2, GEOM, GEOM);
-               sql_create_func(sa, "mbr_above", "geom", "mbrAbove", FALSE, 
SCALE_FIX, 0, BIT, 2, MBR, MBR);
-               sql_create_func(sa, "mbr_below", "geom", "mbrBelow", FALSE, 
SCALE_FIX, 0, BIT, 2, GEOM, GEOM);
-               sql_create_func(sa, "mbr_below", "geom", "mbrBelow", FALSE, 
SCALE_FIX, 0, BIT, 2, MBR, MBR);
-               sql_create_func(sa, "mbr_right", "geom", "mbrRight", FALSE, 
SCALE_FIX, 0, BIT, 2, GEOM, GEOM);
-               sql_create_func(sa, "mbr_right", "geom", "mbrRight", FALSE, 
SCALE_FIX, 0, BIT, 2, MBR, MBR);
-               sql_create_func(sa, "mbr_left", "geom", "mbrLeft", FALSE, 
SCALE_FIX, 0, BIT, 2, GEOM, GEOM);
-               sql_create_func(sa, "mbr_left", "geom", "mbrLeft", FALSE, 
SCALE_FIX, 0, BIT, 2, MBR, MBR);
-               sql_create_func(sa, "mbr_overlap_or_above", "geom", 
"mbrOverlapOrAbove", FALSE, SCALE_FIX, 0, BIT, 2, GEOM, GEOM);
-               sql_create_func(sa, "mbr_overlap_or_above", "geom", 
"mbrOverlapOrAbove", FALSE, SCALE_FIX, 0, BIT, 2, MBR, MBR);
-               sql_create_func(sa, "mbr_overlap_or_below", "geom", 
"mbrOverlapOrBelow", FALSE, SCALE_FIX, 0, BIT, 2, GEOM, GEOM);
-               sql_create_func(sa, "mbr_overlap_or_below", "geom", 
"mbrOverlapOrBelow", FALSE, SCALE_FIX, 0, BIT, 2, MBR, MBR);
-               sql_create_func(sa, "mbr_overlap_or_right", "geom", 
"mbrOverlapOrRight", FALSE, SCALE_FIX, 0, BIT, 2, GEOM, GEOM);
-               sql_create_func(sa, "mbr_overlap_or_right", "geom", 
"mbrOverlapOrRight", FALSE, SCALE_FIX, 0, BIT, 2, MBR, MBR);
-               sql_create_func(sa, "mbr_overlap_or_left", "geom", 
"mbrOverlapOrLeft", FALSE, SCALE_FIX, 0, BIT, 2, GEOM, GEOM);
-               sql_create_func(sa, "mbr_overlap_or_left", "geom", 
"mbrOverlapOrLeft", FALSE, SCALE_FIX, 0, BIT, 2, MBR, MBR);
-               sql_create_func(sa, "mbr_contains", "geom", "mbrContains", 
FALSE, SCALE_FIX, 0, BIT, 2, GEOM, GEOM);
-               sql_create_func(sa, "mbr_contains", "geom", "mbrContains", 
FALSE, SCALE_FIX, 0, BIT, 2, MBR, MBR);
-               sql_create_func(sa, "mbr_contained", "geom", "mbrContained", 
FALSE, SCALE_FIX, 0, BIT, 2, GEOM, GEOM);
-               sql_create_func(sa, "mbr_contained", "geom", "mbrContained", 
FALSE, SCALE_FIX, 0, BIT, 2, MBR, MBR);
-               sql_create_func(sa, "mbr_equal", "geom", "mbrEqual", FALSE, 
SCALE_FIX, 0, BIT, 2, GEOM, GEOM);
-               sql_create_func(sa, "mbr_equal", "geom", "mbrEqual", FALSE, 
SCALE_FIX, 0, BIT, 2, MBR, MBR);
-               sql_create_func(sa, "mbr_distance", "geom", "mbrDistance", 
FALSE, SCALE_FIX, 0, DBL, 2, GEOM, GEOM);
-               sql_create_func(sa, "mbr_distance", "geom", "mbrDistance", 
FALSE, SCALE_FIX, 0, DBL, 2, MBR, MBR);
-               sql_create_func(sa, "left_shift", "geom", "mbrLeft", FALSE, 
SCALE_FIX, 0, BIT, 2, GEOM, GEOM);
-               sql_create_func(sa, "left_shift", "geom", "mbrLeft", FALSE, 
SCALE_FIX, 0, BIT, 2, MBR, MBR);
-               sql_create_func(sa, "right_shift", "geom", "mbrRight", FALSE, 
SCALE_FIX, 0, BIT, 2, GEOM, GEOM);
-               sql_create_func(sa, "right_shift", "geom", "mbrRight", FALSE, 
SCALE_FIX, 0, BIT, 2, MBR, MBR);
+               sql_create_func(sa, "mbr_overlap", "geom", "mbrOverlaps", TRUE, 
FALSE, SCALE_FIX, 0, BIT, 2, GEOM, GEOM);
+               sql_create_func(sa, "mbr_overlap", "geom", "mbrOverlaps", TRUE, 
FALSE, SCALE_FIX, 0, BIT, 2, MBR, MBR);
+               sql_create_func(sa, "mbr_above", "geom", "mbrAbove", TRUE, 
FALSE, SCALE_FIX, 0, BIT, 2, GEOM, GEOM);
+               sql_create_func(sa, "mbr_above", "geom", "mbrAbove", TRUE, 
FALSE, SCALE_FIX, 0, BIT, 2, MBR, MBR);
+               sql_create_func(sa, "mbr_below", "geom", "mbrBelow", TRUE, 
FALSE, SCALE_FIX, 0, BIT, 2, GEOM, GEOM);
+               sql_create_func(sa, "mbr_below", "geom", "mbrBelow", TRUE, 
FALSE, SCALE_FIX, 0, BIT, 2, MBR, MBR);
+               sql_create_func(sa, "mbr_right", "geom", "mbrRight", TRUE, 
FALSE, SCALE_FIX, 0, BIT, 2, GEOM, GEOM);
+               sql_create_func(sa, "mbr_right", "geom", "mbrRight", TRUE, 
FALSE, SCALE_FIX, 0, BIT, 2, MBR, MBR);
+               sql_create_func(sa, "mbr_left", "geom", "mbrLeft", TRUE, FALSE, 
SCALE_FIX, 0, BIT, 2, GEOM, GEOM);
+               sql_create_func(sa, "mbr_left", "geom", "mbrLeft", TRUE, FALSE, 
SCALE_FIX, 0, BIT, 2, MBR, MBR);
+               sql_create_func(sa, "mbr_overlap_or_above", "geom", 
"mbrOverlapOrAbove", TRUE, FALSE, SCALE_FIX, 0, BIT, 2, GEOM, GEOM);
+               sql_create_func(sa, "mbr_overlap_or_above", "geom", 
"mbrOverlapOrAbove", TRUE, FALSE, SCALE_FIX, 0, BIT, 2, MBR, MBR);
+               sql_create_func(sa, "mbr_overlap_or_below", "geom", 
"mbrOverlapOrBelow", TRUE, FALSE, SCALE_FIX, 0, BIT, 2, GEOM, GEOM);
+               sql_create_func(sa, "mbr_overlap_or_below", "geom", 
"mbrOverlapOrBelow", TRUE, FALSE, SCALE_FIX, 0, BIT, 2, MBR, MBR);
+               sql_create_func(sa, "mbr_overlap_or_right", "geom", 
"mbrOverlapOrRight", TRUE, FALSE, SCALE_FIX, 0, BIT, 2, GEOM, GEOM);
+               sql_create_func(sa, "mbr_overlap_or_right", "geom", 
"mbrOverlapOrRight", TRUE, FALSE, SCALE_FIX, 0, BIT, 2, MBR, MBR);
+               sql_create_func(sa, "mbr_overlap_or_left", "geom", 
"mbrOverlapOrLeft", TRUE, FALSE, SCALE_FIX, 0, BIT, 2, GEOM, GEOM);
+               sql_create_func(sa, "mbr_overlap_or_left", "geom", 
"mbrOverlapOrLeft", TRUE, FALSE, SCALE_FIX, 0, BIT, 2, MBR, MBR);
+               sql_create_func(sa, "mbr_contains", "geom", "mbrContains", 
TRUE, FALSE, SCALE_FIX, 0, BIT, 2, GEOM, GEOM);
+               sql_create_func(sa, "mbr_contains", "geom", "mbrContains", 
TRUE, FALSE, SCALE_FIX, 0, BIT, 2, MBR, MBR);
+               sql_create_func(sa, "mbr_contained", "geom", "mbrContained", 
TRUE, FALSE, SCALE_FIX, 0, BIT, 2, GEOM, GEOM);
+               sql_create_func(sa, "mbr_contained", "geom", "mbrContained", 
TRUE, FALSE, SCALE_FIX, 0, BIT, 2, MBR, MBR);
+               sql_create_func(sa, "mbr_equal", "geom", "mbrEqual", TRUE, 
FALSE, SCALE_FIX, 0, BIT, 2, GEOM, GEOM);
+               sql_create_func(sa, "mbr_equal", "geom", "mbrEqual", TRUE, 
FALSE, SCALE_FIX, 0, BIT, 2, MBR, MBR);
+               sql_create_func(sa, "mbr_distance", "geom", "mbrDistance", 
TRUE, FALSE, SCALE_FIX, 0, DBL, 2, GEOM, GEOM);
+               sql_create_func(sa, "mbr_distance", "geom", "mbrDistance", 
TRUE, FALSE, SCALE_FIX, 0, DBL, 2, MBR, MBR);
+               sql_create_func(sa, "left_shift", "geom", "mbrLeft", TRUE, 
FALSE, SCALE_FIX, 0, BIT, 2, GEOM, GEOM);
+               sql_create_func(sa, "left_shift", "geom", "mbrLeft", TRUE, 
FALSE, SCALE_FIX, 0, BIT, 2, MBR, MBR);
+               sql_create_func(sa, "right_shift", "geom", "mbrRight", TRUE, 
FALSE, SCALE_FIX, 0, BIT, 2, GEOM, GEOM);
+               sql_create_func(sa, "right_shift", "geom", "mbrRight", TRUE, 
FALSE, SCALE_FIX, 0, BIT, 2, MBR, MBR);
        }
 
        end = t;
@@ -1268,139 +1270,139 @@ sqltypeinit( sql_allocator *sa)
 
 //     sql_create_func(sa, "st_pointfromtext", "geom", "st_pointformtext", 
FALSE, SCALE_NONE, 0, OID, 1, OID);
        /* The grouping aggregate doesn't have a backend implementation. It 
gets replaced at rel_unnest */
-       sql_create_aggr(sa, "grouping", "", "", BTE, 1, ANY);
-       sql_create_aggr(sa, "grouping", "", "", SHT, 1, ANY);
-       sql_create_aggr(sa, "grouping", "", "", INT, 1, ANY);
-       sql_create_aggr(sa, "grouping", "", "", LNG, 1, ANY);
+       sql_create_aggr(sa, "grouping", "", "", TRUE, BTE, 1, ANY);
+       sql_create_aggr(sa, "grouping", "", "", TRUE, SHT, 1, ANY);
+       sql_create_aggr(sa, "grouping", "", "", TRUE, INT, 1, ANY);
+       sql_create_aggr(sa, "grouping", "", "", TRUE, LNG, 1, ANY);
 #ifdef HAVE_HGE
-       sql_create_aggr(sa, "grouping", "", "", HGE, 1, ANY);
+       sql_create_aggr(sa, "grouping", "", "", TRUE, HGE, 1, ANY);
 #endif
 
-       sql_create_aggr(sa, "not_unique", "sql", "not_unique", BIT, 1, OID);
+       sql_create_aggr(sa, "not_unique", "sql", "not_unique", TRUE, BIT, 1, 
OID);
        /* well to be precise it does reduce and map */
 
        /* functions needed for all types */
-       sql_create_func(sa, "hash", "mkey", "hash", FALSE, SCALE_FIX, 0, LNG, 
1, ANY);
-       sql_create_func(sa, "rotate_xor_hash", "calc", "rotate_xor_hash", 
FALSE, SCALE_NONE, 0, LNG, 3, LNG, INT, ANY);
-       sql_create_func(sa, "=", "calc", "=", FALSE, SCALE_FIX, 0, BIT, 2, ANY, 
ANY);
-       sql_create_func(sa, "<>", "calc", "!=", FALSE, SCALE_FIX, 0, BIT, 2, 
ANY, ANY);
-       sql_create_func(sa, "isnull", "calc", "isnil", FALSE, SCALE_FIX, 0, 
BIT, 1, ANY);
-       sql_create_func(sa, ">", "calc", ">", FALSE, SCALE_FIX, 0, BIT, 2, ANY, 
ANY);
-       sql_create_func(sa, ">=", "calc", ">=", FALSE, SCALE_FIX, 0, BIT, 2, 
ANY, ANY);
-       sql_create_func(sa, "<", "calc", "<", FALSE, SCALE_FIX, 0, BIT, 2, ANY, 
ANY);
-       sql_create_func(sa, "<=", "calc", "<=", FALSE, SCALE_FIX, 0, BIT, 2, 
ANY, ANY);
-       sql_create_func(sa, "between", "calc", "between", FALSE, SCALE_FIX, 0, 
BIT, 8, ANY, ANY, ANY, BIT, BIT, BIT, BIT, BIT);
-       sql_create_aggr(sa, "zero_or_one", "sql", "zero_or_one", ANY, 1, ANY);
-       sql_create_aggr(sa, "all", "sql", "all", ANY, 1, ANY);
-       sql_create_aggr(sa, "null", "sql", "null", BIT, 1, ANY);
-       sql_create_func(sa, "any", "sql", "any", FALSE, SCALE_NONE, 0, BIT, 3, 
BIT, BIT, BIT);
-       sql_create_func(sa, "all", "sql", "all", FALSE, SCALE_NONE, 0, BIT, 3, 
BIT, BIT, BIT);
-       sql_create_aggr(sa, "anyequal", "aggr", "anyequal", BIT, 1, ANY); /* 
needs 3 arguments (l,r,nil)(ugh) */
-       sql_create_aggr(sa, "allnotequal", "aggr", "allnotequal", BIT, 1, ANY); 
/* needs 3 arguments (l,r,nil)(ugh) */
-       sql_create_func(sa, "sql_anyequal", "aggr", "anyequal", FALSE, 
SCALE_NONE, 0, BIT, 2, ANY, ANY);
-       sql_create_func(sa, "sql_not_anyequal", "aggr", "not_anyequal", FALSE, 
SCALE_NONE, 0, BIT, 2, ANY, ANY);
-       sql_create_aggr(sa, "exist", "aggr", "exist", BIT, 1, ANY);
-       sql_create_aggr(sa, "not_exist", "aggr", "not_exist", BIT, 1, ANY);
-       sql_create_func(sa, "sql_exists", "aggr", "exist", FALSE, SCALE_NONE, 
0, BIT, 1, ANY);
-       sql_create_func(sa, "sql_not_exists", "aggr", "not_exist", FALSE, 
SCALE_NONE, 0, BIT, 1, ANY);
+       sql_create_func(sa, "hash", "mkey", "hash", TRUE, FALSE, SCALE_FIX, 0, 
LNG, 1, ANY);
+       sql_create_func(sa, "rotate_xor_hash", "calc", "rotate_xor_hash", TRUE, 
FALSE, SCALE_NONE, 0, LNG, 3, LNG, INT, ANY);
+       sql_create_func(sa, "=", "calc", "=", TRUE, FALSE, SCALE_FIX, 0, BIT, 
2, ANY, ANY);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to