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