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

Reply via email to