Changeset: 8344bd1a2c0f for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8344bd1a2c0f
Added Files:
sql/test/BugTracker-2009/Tests/alter_table_drop_constraint.SF-2803477_cleanup.reqtests
sql/test/BugTracker-2009/Tests/mclient-lsql-D.reqtests
Modified Files:
clients/Tests/SQL-dump.sql
clients/Tests/SQL-dump.stable.out
clients/Tests/SQL-dump_nogeom.stable.out
gdk/gdk_join.c
gdk/gdk_posix.c
gdk/gdk_storage.c
gdk/gdk_utils.c
monetdb5/modules/mal/mal_io.c
sql/backends/monet5/gsl/73_gsl.mal
sql/backends/monet5/sql_scenario.c
sql/server/rel_exp.c
sql/server/rel_exp.h
sql/server/rel_optimizer.c
Branch: default
Log Message:
Merge with Jan2014 branch.
diffs (truncated from 698 to 300 lines):
diff --git a/clients/Tests/SQL-dump.sql b/clients/Tests/SQL-dump.sql
--- a/clients/Tests/SQL-dump.sql
+++ b/clients/Tests/SQL-dump.sql
@@ -42,6 +42,7 @@
\dSv sys.querylog_catalog
\dSv sys.querylog_history
\dSv sys.queue
+\dSv sys.sessions
\dSv sys.storage
\dSv sys.storagemodel
\dSv sys.tables
@@ -49,6 +50,7 @@
\dSv sys.tracelog
\dSv sys.users
+-- select distinct name from sys.functions where sql = true order by name;
\dSf sys.Intersect
\dSf sys.Union
\dSf sys.abbrev
@@ -165,6 +167,7 @@
\dSf sys.pointfromtext
\dSf sys.polyfromtext
\dSf sys.polygonfromtext
+\dSf sys.quantile
\dSf sys.querycache
\dSf sys.querylog
\dSf sys.querylog_calls
@@ -178,9 +181,12 @@
\dSf sys.resume
\dSf sys.reuse
\dSf sys.reverse
+\dSf sys.sessions
\dSf sys.setmasklen
+\dSf sys.setsession
\dSf sys.settimeout
\dSf sys.shrink
+\dSf sys.shutdown
\dSf sys.srid
\dSf sys.stddev_pop
\dSf sys.stddev_samp
diff --git a/clients/Tests/SQL-dump.stable.out
b/clients/Tests/SQL-dump.stable.out
--- a/clients/Tests/SQL-dump.stable.out
+++ b/clients/Tests/SQL-dump.stable.out
@@ -423,6 +423,7 @@ select qd.*, ql."start",ql."stop", ql.ar
from sys.querylog_catalog() qd, sys.querylog_calls() ql
where qd.id = ql.id and qd.owner = user;
create view sys.queue as select * from sys.queue();
+create view sys.sessions as select * from sys.sessions();
create view sys.storage as select * from sys.storage();
create view sys.storagemodel as select * from sys.storagemodel();
SELECT * FROM (SELECT p.*, 0 AS "temporary" FROM "sys"."_tables" AS p UNION
ALL SELECT t.*, 1 AS "temporary" FROM "tmp"."_tables" AS t) AS tables where
tables.type <> 2;
@@ -984,6 +985,28 @@ create function pointfromtext(wkt string
create function polyfromtext(wkt string, srid smallint) returns polygon
external name geom."PolyFromText";
-- alias
create function polygonfromtext(wkt string, srid smallint) returns polygon
external name geom."PolyFromText";
+create aggregate quantile(val tinyint, q double) returns tinyint
+ external name "aggr"."quantile";
+create aggregate quantile(val smallint, q double) returns smallint
+ external name "aggr"."quantile";
+create aggregate quantile(val integer, q double) returns integer
+ external name "aggr"."quantile";
+create aggregate quantile(val wrd, q double) returns wrd
+ external name "aggr"."quantile";
+create aggregate quantile(val bigint, q double) returns bigint
+ external name "aggr"."quantile";
+create aggregate quantile(val decimal, q double) returns decimal
+ external name "aggr"."quantile";
+create aggregate quantile(val real, q double) returns real
+ external name "aggr"."quantile";
+create aggregate quantile(val double, q double) returns double
+ external name "aggr"."quantile";
+create aggregate quantile(val date, q double) returns date
+ external name "aggr"."quantile";
+create aggregate quantile(val time, q double) returns time
+ external name "aggr"."quantile";
+create aggregate quantile(val timestamp, q double) returns timestamp
+ external name "aggr"."quantile";
-- SQL QUERY CACHE
-- The SQL query cache returns a table with the query plans kept
@@ -1130,8 +1153,13 @@ All Rights Reserved.
-- Reverse a string
create function reverse(src string)
returns string external name udf.reverse;
+create function sys.sessions()
+returns table("user" string, "login" timestamp, "sessiontimeout" bigint,
"lastcommand" timestamp, "querytimeout" bigint, "active" bool)
+external name sql.sessions;
create function "setmasklen" (p inet, mask int) returns inet
external name inet."setmasklen";
+create procedure sys.setsession("timeout" bigint)
+ external name sql.setsession;
-- control the query and session time out
create procedure sys.settimeout("query" bigint)
external name sql.settimeout;
@@ -1162,6 +1190,10 @@ create procedure sys.settimeout("query"
create procedure shrink(sys string, tab string)
external name sql.shrink;
+create procedure sys.shutdown(delay tinyint)
+external name sql.shutdown;
+create procedure sys.shutdown(delay tinyint, force bool)
+external name sql.shutdown;
create function srid(g geometry) returns integer external name geom."SRID";
create aggregate stddev_pop(val tinyint) returns double
external name "aggr"."stdevp";
diff --git a/clients/Tests/SQL-dump_nogeom.stable.out
b/clients/Tests/SQL-dump_nogeom.stable.out
--- a/clients/Tests/SQL-dump_nogeom.stable.out
+++ b/clients/Tests/SQL-dump_nogeom.stable.out
@@ -383,6 +383,7 @@ select qd.*, ql."start",ql."stop", ql.ar
from sys.querylog_catalog() qd, sys.querylog_calls() ql
where qd.id = ql.id and qd.owner = user;
create view sys.queue as select * from sys.queue();
+create view sys.sessions as select * from sys.sessions();
create view sys.storage as select * from sys.storage();
create view sys.storagemodel as select * from sys.storagemodel();
SELECT * FROM (SELECT p.*, 0 AS "temporary" FROM "sys"."_tables" AS p UNION
ALL SELECT t.*, 1 AS "temporary" FROM "tmp"."_tables" AS t) AS tables where
tables.type <> 2;
@@ -897,6 +898,28 @@ create procedure sys.pause(tag int)
external name sql.sysmon_pause;
create procedure sys.pause(tag bigint)
external name sql.sysmon_pause;
+create aggregate quantile(val tinyint, q double) returns tinyint
+ external name "aggr"."quantile";
+create aggregate quantile(val smallint, q double) returns smallint
+ external name "aggr"."quantile";
+create aggregate quantile(val integer, q double) returns integer
+ external name "aggr"."quantile";
+create aggregate quantile(val wrd, q double) returns wrd
+ external name "aggr"."quantile";
+create aggregate quantile(val bigint, q double) returns bigint
+ external name "aggr"."quantile";
+create aggregate quantile(val decimal, q double) returns decimal
+ external name "aggr"."quantile";
+create aggregate quantile(val real, q double) returns real
+ external name "aggr"."quantile";
+create aggregate quantile(val double, q double) returns double
+ external name "aggr"."quantile";
+create aggregate quantile(val date, q double) returns date
+ external name "aggr"."quantile";
+create aggregate quantile(val time, q double) returns time
+ external name "aggr"."quantile";
+create aggregate quantile(val timestamp, q double) returns timestamp
+ external name "aggr"."quantile";
-- SQL QUERY CACHE
-- The SQL query cache returns a table with the query plans kept
@@ -1042,8 +1065,13 @@ All Rights Reserved.
-- Reverse a string
create function reverse(src string)
returns string external name udf.reverse;
+create function sys.sessions()
+returns table("user" string, "login" timestamp, "sessiontimeout" bigint,
"lastcommand" timestamp, "querytimeout" bigint, "active" bool)
+external name sql.sessions;
create function "setmasklen" (p inet, mask int) returns inet
external name inet."setmasklen";
+create procedure sys.setsession("timeout" bigint)
+ external name sql.setsession;
-- control the query and session time out
create procedure sys.settimeout("query" bigint)
external name sql.settimeout;
@@ -1074,6 +1102,10 @@ create procedure sys.settimeout("query"
create procedure shrink(sys string, tab string)
external name sql.shrink;
+create procedure sys.shutdown(delay tinyint)
+external name sql.shutdown;
+create procedure sys.shutdown(delay tinyint, force bool)
+external name sql.shutdown;
create aggregate stddev_pop(val tinyint) returns double
external name "aggr"."stdevp";
create aggregate stddev_pop(val smallint) returns double
diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -1036,6 +1036,13 @@ mergejoin(BAT *r1, BAT *r2, BAT *l, BAT
* value */
nr = 1;
}
+ if (lcand &&
+ nl > 1 &&
+ lcand[-1] != lcand[-1 - nl] + nl) {
+ /* not all values in the range are
+ * candidates */
+ lskipped = 1;
+ }
}
/* make space: nl values in l match nr values in r, so
* we need to add nl * nr values in the results */
diff --git a/gdk/gdk_posix.c b/gdk/gdk_posix.c
--- a/gdk/gdk_posix.c
+++ b/gdk/gdk_posix.c
@@ -359,7 +359,7 @@ void *
MT_mmap(const char *path, int mode, size_t len)
{
int fd = open(path, O_CREAT | ((mode & MMAP_WRITE) ? O_RDWR :
O_RDONLY), MONETDB_MODE);
- void *ret = (void *) -1L;
+ void *ret = MAP_FAILED;
if (fd >= 0) {
ret = mmap(NULL,
@@ -370,7 +370,7 @@ MT_mmap(const char *path, int mode, size
0);
close(fd);
}
- return ret;
+ return ret == MAP_FAILED ? NULL : ret;
}
int
@@ -721,7 +721,7 @@ MT_mmap(const char *path, int mode, size
if (h1 == INVALID_HANDLE_VALUE) {
GDKsyserror("MT_mmap: CreateFile('%s', %lu, %lu, &sa,
%lu, %lu, NULL) failed\n",
path, mode0, mode1, (DWORD) OPEN_ALWAYS,
mode2);
- return (void *) -1;
+ return NULL;
}
}
@@ -732,14 +732,14 @@ MT_mmap(const char *path, int mode, size
(DWORD) (((__int64) len >> 32) &
LL_CONSTANT(0xFFFFFFFF)),
(DWORD) (len & LL_CONSTANT(0xFFFFFFFF)));
CloseHandle(h1);
- return (void *) -1;
+ return NULL;
}
CloseHandle(h1);
ret = MapViewOfFileEx(h2, mode4, (DWORD) 0, (DWORD) 0, len, NULL);
CloseHandle(h2);
- return ret ? ret : (void *) -1;
+ return ret;
}
int
@@ -772,7 +772,7 @@ MT_mremap(const char *path, int mode, vo
if (path && !(mode & MMAP_COPY))
MT_munmap(old_address, old_size);
p = MT_mmap(path, mode, *new_size);
- if ((path == NULL || (mode & MMAP_COPY)) && p != (void *) -1) {
+ if (p != NULL && (path == NULL || (mode & MMAP_COPY))) {
memcpy(p, old_address, old_size);
MT_munmap(old_address, old_size);
}
diff --git a/gdk/gdk_storage.c b/gdk/gdk_storage.c
--- a/gdk/gdk_storage.c
+++ b/gdk/gdk_storage.c
@@ -429,10 +429,7 @@ GDKload(const char *nme, const char *ext
if (mode == STORE_PRIV)
mod |= MMAP_COPY;
- ret = (char *) GDKmmap(path, mod, maxsize);
- if (ret == (char *) -1L) {
- ret = NULL;
- }
+ ret = GDKmmap(path, mod, maxsize);
IODEBUG THRprintf(GDKstdout, "#mmap(NULL, 0, maxsize "
SZFMT ", mod %d, path %s, 0) = " PTRFMT "\n", maxsize, mod, path,
PTRFMTCAST(void *)ret);
}
}
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -871,23 +871,23 @@ GDKmmap(const char *path, int mode, size
{
void *ret = MT_mmap(path, mode, len);
- if (ret == (void *) -1L) {
+ if (ret == NULL) {
GDKmemfail("GDKmmap", len);
ret = MT_mmap(path, mode, len);
- if (ret != (void *) -1L) {
+ if (ret != NULL) {
THRprintf(GDKstdout, "#GDKmmap: recovery ok.
Continuing..\n");
}
}
#ifndef GDKMALLOC_DEBUG
ALLOCDEBUG fprintf(stderr, "#GDKmmap " SZFMT " " PTRFMT "\n", len,
PTRFMTCAST ret);
#endif
- if (ret != (void *) -1L) {
+ if (ret != NULL) {
/* since mmap directly have content we say it's zero-ed
* memory */
VALGRIND_MALLOCLIKE_BLOCK(ret, len, 0, 1);
meminc(len, "GDKmmap");
}
- return (void *) ret;
+ return ret;
}
#undef GDKmunmap
diff --git a/monetdb5/modules/mal/mal_io.c b/monetdb5/modules/mal/mal_io.c
--- a/monetdb5/modules/mal/mal_io.c
+++ b/monetdb5/modules/mal/mal_io.c
@@ -763,7 +763,7 @@ IOimport(int *ret, int *bid, str *fnme)
}
#endif
base = cur = (char *) MT_mmap(*fnme, MMAP_SEQUENTIAL, (size_t)
st.st_size);
- if (cur == (char *) -1) {
+ if (cur == NULL) {
BBPunfix(b->batCacheid);
throw(MAL, "io.mport", OPERATION_FAILED "MT_mmap()");
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list