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 checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list