Changeset: 4438e1e6e0f1 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4438e1e6e0f1
Modified Files:
        geom/sql/functions/Tests/ST_IsSimple.stable.out
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql_upgrades.c
        sql/rel.txt
        sql/server/rel_select.c
        
sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.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/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:

Merged with linear-hashing


diffs (truncated from 1700 to 300 lines):

diff --git a/geom/sql/functions/Tests/ST_IsSimple.stable.out 
b/geom/sql/functions/Tests/ST_IsSimple.stable.out
--- a/geom/sql/functions/Tests/ST_IsSimple.stable.out
+++ b/geom/sql/functions/Tests/ST_IsSimple.stable.out
@@ -28,7 +28,7 @@ stdout of test 'ST_IsSimple` in director
 % %1 # name
 % boolean # type
 % 5 # length
-[ true ]
+[ false        ]
 #SELECT ST_IsSimple(ST_GeomFromText('LINESTRING(1 1,2 2,2 3.5,1 3,1 2,2 1)'));
 % . # table_name
 % %1 # name
@@ -43,7 +43,7 @@ stdout of test 'ST_IsSimple` in director
 % %1 # name
 % boolean # type
 % 5 # length
-[ true ]
+[ false        ]
 #drop table geo;
 #create table geo (g geometry(linestring, 4326));
 #insert into geo values(ST_GeomFromText('LINESTRING(1 1,2 2,2 3.5,1 3,1 2,2 
1)', 4326));
diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -2795,11 +2795,12 @@ sql_reorder(backend *be, stmt *order, st
 }
 
 static sql_exp*
-topn_limit( sql_rel *rel )
+topn_limit(mvc *sql, sql_rel *rel)
 {
        if (rel->exps) {
                sql_exp *limit = rel->exps->h->data;
-
+               if (exp_is_null(sql, limit)) /* If the limit is NULL, ignore 
the value */
+                       return NULL;
                return limit;
        }
        return NULL;
@@ -2826,7 +2827,7 @@ rel2bin_project(backend *be, sql_rel *re
        stmt *l = NULL;
 
        if (topn) {
-               sql_exp *le = topn_limit(topn);
+               sql_exp *le = topn_limit(sql, topn);
                sql_exp *oe = topn_offset(topn);
 
                if (!le) { /* Don't push only offset */
@@ -3185,7 +3186,7 @@ rel2bin_topn(backend *be, sql_rel *rel, 
        if (!sub) 
                return NULL;
 
-       le = topn_limit(rel);
+       le = topn_limit(sql, rel);
        oe = topn_offset(rel);
 
        n = sub->op4.lval->h;
@@ -3245,13 +3246,12 @@ rel2bin_sample(backend *be, sql_rel *rel
                const char *cname = column_name(sql->sa, sc);
                const char *tname = table_name(sql->sa, sc);
 
-               sample_size = exp_bin(be, rel->exps->h->data, NULL, NULL, NULL, 
NULL, NULL, NULL);
-               if (!sample_size)
-                       sample_size = stmt_atom_lng_nil(be);
+                if (!(sample_size = exp_bin(be, rel->exps->h->data, NULL, 
NULL, NULL, NULL, NULL, NULL)))
+                       return NULL;
 
                if (rel->exps->cnt == 2) {
                        seed = exp_bin(be, rel->exps->h->next->data, NULL, 
NULL, NULL, NULL, NULL, NULL);
-                       if(!seed)
+                       if (!seed)
                                return NULL;
                }
 
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
@@ -2485,9 +2485,6 @@ sql_update_linear_hashing(Client c, mvc 
                        "update sys.functions set system = true where schema_id 
= (select id from sys.schemas where name = 'sys')"
                        " and name = 'queue' and type = %d;\n", (int) F_UNION);
        pos += snprintf(buf + pos, bufsize - pos,
-                       "update sys.functions set system = true where schema_id 
= (select id from sys.schemas where name = 'sys')"
-                       " and name in ('pause', 'resume', 'stop') and type = 
%d;\n", (int) F_PROC);
-       pos += snprintf(buf + pos, bufsize - pos,
                        "update sys._tables set system = true where schema_id = 
(select id from sys.schemas where name = 'sys')"
                        " and name = 'queue';\n");
 
diff --git a/sql/rel.txt b/sql/rel.txt
--- a/sql/rel.txt
+++ b/sql/rel.txt
@@ -62,12 +62,12 @@ GROUPBY  (card ATOM (no group by exps), 
        -> r            is list of group by expressions
 
 TOPN   (card ATOM, AGGR, or MULTI (same card as lower relation))
-       -> exps         (list) lng limit, [ lng offset ]
+       -> exps         (list) lng limit, [ lng offset ] -> if the limit is a 
NULL value, then it's ignored, ie only the offset will be used
        -> l            is relation
        -> flag         (bounds for limit can be including (1) or excluding (0) 
(ie later just returns the topN, including will return atleast N)
 
 SAMPLE (card ATOM, AGGR, or MULTI (same card as lower relation))
-       -> exps         first is either an lng for rownumbers or double between 
[0,1] for percentage. An optional second contains an int for the seed value
+       -> exps         first is either an lng for rownumbers or double between 
[0,1] for percentage. An optional second contains an int for the seed value. -> 
if the first value is a NULL, then it's ignored, ie only the offset will be used
        -> l            is relation
        -> flag         (0) no flags
 
@@ -125,20 +125,18 @@ e_cmp
                        cmp_or = 7,                     or handling             
->l/r are both lists
                        cmp_in = 8,                     in list handling        
->r is a list of values
                        cmp_notin = 9           not in list handling    ->r is 
a list of values
-                       cmp_equal_nil = 10, special equal for equi join case, 
with nil = nil, at rel_dump, it prints =*
 
-                       /* mark join cases */
-                       mark_in = 11,
-                       mark_not_in = 12,
-                       mark_exists = 13,
-                       mark_not_exists = 14,
+                       mark_in = 10,                   /* mark joins */
+                       mark_notin = 11,
+                       mark_exists = 12,
+                       mark_notexists = 13,
 
                        /* The followin cmp_* are only used within stmt (not 
sql_exp) */
-                       cmp_all = 15,                   /* special case for 
crossproducts */
-                       cmp_project = 16,               /* special case for 
projection joins */
-                       cmp_joined = 17,                /* special case already 
joined */
-                       cmp_left = 18,                  /* special case equi 
join, keep left order */
-                       cmp_left_project = 19   /* last step of outer join */
+                       cmp_all = 14,                   /* special case for 
crossproducts */
+                       cmp_project = 15,               /* special case for 
projection joins */
+                       cmp_joined = 16,                /* special case already 
joined */
+                       cmp_left = 17,                  /* special case equi 
join, keep left order */
+                       cmp_left_project = 18   /* last step of outer join */
                )
 
 e_func
diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -5307,14 +5307,14 @@ rel_having_limits_nodes(sql_query *query
                                sql_subfunc *zero_or_one = 
sql_bind_func(sql->sa, sql->session->schema, "zero_or_one", exp_subtype(l), 
NULL, F_AGGR);
                                l = exp_aggr1(sql->sa, l, zero_or_one, 0, 0, 
CARD_ATOM, has_nil(l));
                        }
-                       append(exps, l);
+                       list_append(exps, l);
                } else
-                       append(exps, NULL);
+                       list_append(exps, exp_atom(sql->sa, 
atom_null_value(sql->sa, lng)));
                if (sn->offset) {
                        sql_exp *o = rel_value_exp( query, NULL, sn->offset, 0, 
ek);
                        if (!o || !(o=rel_check_type(sql, lng, NULL, o, 
type_equal)))
                                return NULL;
-                       append(exps, o);
+                       list_append(exps, o);
                }
                rel = rel_topn(sql->sa, rel, exps);
        }
@@ -5328,16 +5328,16 @@ rel_having_limits_nodes(sql_query *query
                                return NULL;
                        if (!exp_subtype(s) && rel_set_type_param(sql, 
sql_bind_localtype("lng"), NULL, s, 0) < 0)
                                return NULL;
-                       append(exps, s);
-               } else if (sn->seed)
+                       list_append(exps, s);
+               } else {
+                       assert(sn->seed);
                        return sql_error(sql, 02, SQLSTATE(42000) "SEED: cannot 
have SEED without SAMPLE");
-               else
-                       append(exps, NULL);
+               }
                if (sn->seed) {
                        sql_exp *e = rel_value_exp(query, NULL, sn->seed, 0, 
ek);
                        if (!e || !(e=rel_check_type(sql, 
sql_bind_localtype("int"), NULL, e, type_equal)))
                                return NULL;
-                       append(exps, e);
+                       list_append(exps, e);
                }
                rel = rel_sample(sql->sa, rel, exps);
        }
diff --git 
a/sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out 
b/sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
--- a/sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
+++ b/sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
@@ -44,7 +44,7 @@ top N (
 | project (
 | | table(sys.oblo) [ "oblo"."a" ] COUNT 
 | ) [ "oblo"."a" ]
-) [ bigint "2" ]
+) [ bigint "NULL", bigint "2" ]
 #PLAN select * from oblo LIMIT 2;
 % .plan # table_name
 % rel # name
@@ -96,7 +96,7 @@ top N (
 | | | table(sys.oblo) [ "oblo"."a" ] COUNT 
 | | ) [ "oblo"."a" ]
 | ) [ "oblo"."a" ] [ "oblo"."a" ASC ]
-) [ bigint "2" ]
+) [ bigint "NULL", bigint "2" ]
 #PLAN select * from oblo ORDER BY a LIMIT 2;
 % .plan # table_name
 % rel # name
diff --git a/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128 
b/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
--- a/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
+++ b/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
@@ -5942,16 +5942,24 @@ returns table(
 "memorylimit" int)
  external name sql.sessions;
 create view sys.sessions as select * from sys.sessions();
+grant execute on procedure sys.settimeout(bigint) to public;
+grant execute on procedure sys.settimeout(bigint,bigint) to public;
+grant execute on procedure sys.setsession(bigint) to public;
 create procedure sys.setoptimizer("optimizer" string)
  external name clients.setoptimizer;
+grant execute on procedure sys.setoptimizer(string) to public;
 create procedure sys.setquerytimeout("query" int)
  external name clients.setquerytimeout;
+grant execute on procedure sys.setquerytimeout(int) to public;
 create procedure sys.setsessiontimeout("timeout" int)
  external name clients.setsessiontimeout;
+grant execute on procedure sys.setsessiontimeout(int) to public;
 create procedure sys.setworkerlimit("limit" int)
  external name clients.setworkerlimit;
+grant execute on procedure sys.setworkerlimit(int) to public;
 create procedure sys.setmemorylimit("limit" int)
  external name clients.setmemorylimit;
+grant execute on procedure sys.setmemorylimit(int) to public;
 create procedure sys.setoptimizer("sessionid" int, "optimizer" string)
  external name clients.setoptimizer;
 create procedure sys.setquerytimeout("sessionid" int, "query" int)
@@ -5998,10 +6006,24 @@ create function sys.debug(flag string) r
 create function sys.debugflags()
  returns table(flag string, val bool)
  external name mdb."getDebugFlags";
+create procedure sys."sleep"(msecs tinyint)
+ external name "alarm"."sleep";
+grant execute on procedure sys."sleep"(tinyint) to public;
+create procedure sys."sleep"(msecs smallint)
+ external name "alarm"."sleep";
+grant execute on procedure sys."sleep"(smallint) to public;
 create procedure sys."sleep"(msecs int)
  external name "alarm"."sleep";
-create function sys."sleep"(msecs int) returns integer
+ grant execute on procedure sys."sleep"(int) to public;
+create function sys."sleep"(msecs tinyint) returns tinyint
  external name "alarm"."sleep";
+grant execute on function sys."sleep"(tinyint) to public;
+create function sys."sleep"(msecs smallint) returns smallint
+ external name "alarm"."sleep";
+grant execute on function sys."sleep"(smallint) to public;
+create function sys."sleep"(msecs int) returns int
+ external name "alarm"."sleep";
+ grant execute on function sys."sleep"(int) to public;
 update sys.functions set system = true where schema_id = (select id from 
sys.schemas where name = 'sys') and name in ('debug', 'debugflags', 'sleep');
 drop view sys.queue;
 drop function sys.queue;
@@ -6020,18 +6042,12 @@ returns table(
 grant execute on function sys.queue to public;
 create view sys.queue as select * from sys.queue();
 grant select on sys.queue to public;
-create procedure sys.pause(tag tinyint)
-external name sql.sysmon_pause;
-create procedure sys.resume(tag tinyint)
-external name sql.sysmon_resume;
-create procedure sys.stop(tag tinyint)
-external name sql.sysmon_stop;
-create procedure sys.pause(tag smallint)
-external name sql.sysmon_pause;
-create procedure sys.resume(tag smallint)
-external name sql.sysmon_resume;
-create procedure sys.stop(tag smallint)
-external name sql.sysmon_stop;
+drop procedure sys.pause(int);
+drop procedure sys.resume(int);
+drop procedure sys.stop(int);
+grant execute on procedure sys.pause(bigint) to public;
+grant execute on procedure sys.resume(bigint) to public;
+grant execute on procedure sys.stop(bigint) to public;
 update sys.functions set system = true where schema_id = (select id from 
sys.schemas where name = 'sys') and name = 'queue' and type = 5;
 update sys.functions set system = true where schema_id = (select id from 
sys.schemas where name = 'sys') and name in ('pause', 'resume', 'stop') and 
type = 2;
 update sys._tables set system = true where schema_id = (select id from 
sys.schemas where name = 'sys') and name = 'queue';
diff --git 
a/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.powerpc64.int128 
b/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.powerpc64.int128
--- 
a/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.powerpc64.int128
+++ 
b/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.powerpc64.int128
@@ -5942,16 +5942,24 @@ returns table(
 "memorylimit" int)
  external name sql.sessions;
 create view sys.sessions as select * from sys.sessions();
+grant execute on procedure sys.settimeout(bigint) to public;
+grant execute on procedure sys.settimeout(bigint,bigint) to public;
+grant execute on procedure sys.setsession(bigint) to public;
 create procedure sys.setoptimizer("optimizer" string)
  external name clients.setoptimizer;
+grant execute on procedure sys.setoptimizer(string) to public;
 create procedure sys.setquerytimeout("query" int)
  external name clients.setquerytimeout;
+grant execute on procedure sys.setquerytimeout(int) to public;
 create procedure sys.setsessiontimeout("timeout" int)
  external name clients.setsessiontimeout;
+grant execute on procedure sys.setsessiontimeout(int) to public;
 create procedure sys.setworkerlimit("limit" int)
  external name clients.setworkerlimit;
+grant execute on procedure sys.setworkerlimit(int) to public;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to