Changeset: a7b9801c95bd for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a7b9801c95bd
Modified Files:
        gdk/gdk_storage.c
        sql/backends/monet5/sql_upgrades.c
        sql/server/rel_optimizer.c
        sql/server/rel_select.c
        sql/server/rel_select.h
        sql/storage/store.c
        
sql/test/BugTracker-2016/Tests/LEFT-JOIN_with_OR_conditions_triggers_assertion.Bug-3908.stable.out
        
sql/test/BugTracker-2016/Tests/incorrect_column_name_in_OR_condition_of_LEFT-JOIN_crashes_mserver.Bug-3909.stable.err
Branch: no-wrd
Log Message:

Merge with default branch.


diffs (truncated from 794 to 300 lines):

diff --git a/gdk/gdk_storage.c b/gdk/gdk_storage.c
--- a/gdk/gdk_storage.c
+++ b/gdk/gdk_storage.c
@@ -711,7 +711,13 @@ BATsave(BAT *bd)
        BAT *b = bd;
 
        BATcheck(b, "BATsave", GDK_FAIL);
-       CHECKDEBUG BATassertProps(b);
+       /* there is a possibility that BATsave gets called with a
+        * pointer to a BAT that has *no* fixes (refs == 0), and so
+        * the heaps may not be in core, in which case BATmirror()
+        * would not find the mirror (this can happen when BATsave
+        * gets called during a (sub)commit after the BAT had been
+        * trimmed) */
+       CHECKDEBUG if (BATmirror(b)) BATassertProps(b);
 
        /* views cannot be saved, but make an exception for
         * force-remapped views */
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
@@ -18,505 +18,6 @@
 #include <unistd.h>
 #include "sql_upgrades.h"
 
-static str
-sql_update_feb2013(Client c)
-{
-       char *buf = GDKmalloc(4096), *err = NULL;
-       size_t bufsize = 4096, pos = 0;
-
-       /* sys.stddev_samp functions */
-       pos += snprintf(buf + pos, bufsize - pos,
-                       "create aggregate sys.stddev_samp(val TINYINT) returns 
DOUBLE external name \"aggr\".\"stdev\";\n"
-                       "create aggregate sys.stddev_samp(val SMALLINT) returns 
DOUBLE external name \"aggr\".\"stdev\";\n"
-                       "create aggregate sys.stddev_samp(val INTEGER) returns 
DOUBLE external name \"aggr\".\"stdev\";\n"
-                       "create aggregate sys.stddev_samp(val BIGINT) returns 
DOUBLE external name \"aggr\".\"stdev\";\n"
-                       "create aggregate sys.stddev_samp(val REAL) returns 
DOUBLE external name \"aggr\".\"stdev\";\n"
-                       "create aggregate sys.stddev_samp(val DOUBLE) returns 
DOUBLE external name \"aggr\".\"stdev\";\n");
-
-       pos += snprintf(buf + pos, bufsize - pos,
-                       "create aggregate sys.stddev_samp(val DATE) returns 
DOUBLE external name \"aggr\".\"stdev\";\n"
-                       "create aggregate sys.stddev_samp(val TIME) returns 
DOUBLE external name \"aggr\".\"stdev\";\n"
-                       "create aggregate sys.stddev_samp(val TIMESTAMP) 
returns DOUBLE external name \"aggr\".\"stdev\";\n");
-
-       pos += snprintf(buf + pos, bufsize - pos,
-                       "create aggregate sys.stddev_pop(val TINYINT) returns 
DOUBLE external name \"aggr\".\"stdevp\";\n"
-                       "create aggregate sys.stddev_pop(val SMALLINT) returns 
DOUBLE external name \"aggr\".\"stdevp\";\n"
-                       "create aggregate sys.stddev_pop(val INTEGER) returns 
DOUBLE external name \"aggr\".\"stdevp\";\n"
-                       "create aggregate sys.stddev_pop(val BIGINT) returns 
DOUBLE external name \"aggr\".\"stdevp\";\n"
-                       "create aggregate sys.stddev_pop(val REAL) returns 
DOUBLE external name \"aggr\".\"stdevp\";\n"
-                       "create aggregate sys.stddev_pop(val DOUBLE) returns 
DOUBLE external name \"aggr\".\"stdevp\";\n");
-
-       pos += snprintf(buf + pos, bufsize - pos,
-                       "create aggregate sys.stddev_pop(val DATE) returns 
DOUBLE external name \"aggr\".\"stdevp\";\n"
-                       "create aggregate sys.stddev_pop(val TIME) returns 
DOUBLE external name \"aggr\".\"stdevp\";\n"
-                       "create aggregate sys.stddev_pop(val TIMESTAMP) returns 
DOUBLE external name \"aggr\".\"stdevp\";\n");
-
-       pos += snprintf(buf + pos, bufsize - pos,
-                       "create aggregate sys.var_samp(val TINYINT) returns 
DOUBLE external name \"aggr\".\"variance\";\n"
-                       "create aggregate sys.var_samp(val SMALLINT) returns 
DOUBLE external name \"aggr\".\"variance\";\n"
-                       "create aggregate sys.var_samp(val INTEGER) returns 
DOUBLE external name \"aggr\".\"variance\";\n"
-                       "create aggregate sys.var_samp(val BIGINT) returns 
DOUBLE external name \"aggr\".\"variance\";\n"
-                       "create aggregate sys.var_samp(val REAL) returns DOUBLE 
external name \"aggr\".\"variance\";\n"
-                       "create aggregate sys.var_samp(val DOUBLE) returns 
DOUBLE external name \"aggr\".\"variance\";\n");
-
-       pos += snprintf(buf + pos, bufsize - pos,
-                       "create aggregate sys.var_samp(val DATE) returns DOUBLE 
external name \"aggr\".\"variance\";\n"
-                       "create aggregate sys.var_samp(val TIME) returns DOUBLE 
external name \"aggr\".\"variance\";\n"
-                       "create aggregate sys.var_samp(val TIMESTAMP) returns 
DOUBLE external name \"aggr\".\"variance\";\n");
-
-       pos += snprintf(buf + pos, bufsize - pos,
-                       "create aggregate sys.var_pop(val TINYINT) returns 
DOUBLE external name \"aggr\".\"variancep\";\n"
-                       "create aggregate sys.var_pop(val SMALLINT) returns 
DOUBLE external name \"aggr\".\"variancep\";\n"
-                       "create aggregate sys.var_pop(val INTEGER) returns 
DOUBLE external name \"aggr\".\"variancep\";\n"
-                       "create aggregate sys.var_pop(val BIGINT) returns 
DOUBLE external name \"aggr\".\"variancep\";\n"
-                       "create aggregate sys.var_pop(val REAL) returns DOUBLE 
external name \"aggr\".\"variancep\";\n"
-                       "create aggregate sys.var_pop(val DOUBLE) returns 
DOUBLE external name \"aggr\".\"variancep\";\n");
-
-       pos += snprintf(buf + pos, bufsize - pos,
-                       "create aggregate sys.var_pop(val DATE) returns DOUBLE 
external name \"aggr\".\"variancep\";\n"
-                       "create aggregate sys.var_pop(val TIME) returns DOUBLE 
external name \"aggr\".\"variancep\";\n"
-                       "create aggregate sys.var_pop(val TIMESTAMP) returns 
DOUBLE external name \"aggr\".\"variancep\";\n");
-
-       pos += snprintf(buf + pos, bufsize - pos,
-                       "insert into sys.systemfunctions (select f.id from 
sys.functions f, sys.schemas s where f.name in ('stddev_samp', 'stddev_pop', 
'var_samp', 'var_pop') and f.type = %d and f.schema_id = s.id and s.name = 
'sys');\n", F_AGGR);
-
-       assert(pos < 4096);
-
-       printf("Running database upgrade commands:\n%s\n", buf);
-       err = SQLstatementIntern(c, &buf, "update", 1, 0, NULL);
-       GDKfree(buf);
-       return err;             /* usually MAL_SUCCEED */
-}
-
-
-static str
-sql_update_feb2013_sp1(Client c)
-{
-       size_t bufsize = 10240, pos = 0;
-       char *buf = GDKmalloc(bufsize), *err = NULL;
-
-       /* sys.stddev functions */
-       pos += snprintf(buf + pos, bufsize - pos,
-                       "drop filter function sys.\"like\"(string, string, 
string);\n"
-                       "drop filter function sys.\"ilike\"(string, string, 
string);\n"
-                       "create filter function sys.\"like\"(val string, pat 
string, esc string) external name algebra.likesubselect;\n"
-                       "create filter function sys.\"ilike\"(val string, pat 
string, esc string) external name algebra.ilikesubselect;\n");
-
-       pos += snprintf(buf + pos, bufsize - pos,
-                       "drop function sys.storage;\n");
-
-       /* 75_storagemodel.sql */
-       pos += snprintf(buf + pos, bufsize - pos,
-                       "create function sys.storage()\n"
-                       "returns table (\"schema\" string, \"table\" string, 
\"column\" string, \"type\" string, location string, \"count\" bigint, 
typewidth int, columnsize bigint, heapsize bigint, indices bigint, sorted 
boolean)\n"
-                       "external name sql.storage;\n"
-
-                       "create table sys.storagemodelinput(\n"
-                       "  \"schema\" string,\n"
-                       "  \"table\" string,\n"
-                       "  \"column\" string,\n"
-                       "  \"type\" string,\n"
-                       "  \"typewidth\" int,\n"
-                       "  \"count\" bigint,\n"
-                       "  \"distinct\" bigint,\n"
-                       "  \"atomwidth\" int,\n"
-                       "  \"reference\" boolean,\n"
-                       "  \"sorted\" boolean\n"
-                       ");\n"
-                       "update sys._tables\n"
-                       "  set system = true\n"
-                       "  where name = 'storagemodelinput'\n"
-                       "    and schema_id = (select id from sys.schemas where 
name = 'sys');\n"
-
-                       "create procedure sys.storagemodelinit()\n"
-                       "begin\n"
-                       "  delete from sys.storagemodelinput;\n"
-                       "  insert into sys.storagemodelinput\n"
-                       "  select X.\"schema\", X.\"table\", X.\"column\", 
X.\"type\", X.typewidth, X.count, 0, X.typewidth, false, X.sorted from 
sys.storage() X;\n"
-                       "  update sys.storagemodelinput\n"
-                       "  set reference = true\n"
-                       "  where concat(concat(\"schema\",\"table\"), 
\"column\") in (\n"
-                       "    SELECT concat( concat(\"fkschema\".\"name\", 
\"fktable\".\"name\"), \"fkkeycol\".\"name\" )\n"
-                       "    FROM  \"sys\".\"keys\" AS \"fkkey\",\n"
-                       "        \"sys\".\"objects\" AS \"fkkeycol\",\n"
-                       "        \"sys\".\"tables\" AS \"fktable\",\n"
-                       "        \"sys\".\"schemas\" AS \"fkschema\"\n"
-                       "    WHERE   \"fktable\".\"id\" = 
\"fkkey\".\"table_id\"\n"
-                       "      AND \"fkkey\".\"id\" = \"fkkeycol\".\"id\"\n"
-                       "      AND \"fkschema\".\"id\" = 
\"fktable\".\"schema_id\"\n"
-                       "      AND \"fkkey\".\"rkey\" > -1);\n"
-                       "  update sys.storagemodelinput\n"
-                       "  set \"distinct\" = \"count\"\n"
-                       "  where \"type\" = 'varchar' or \"type\"='clob';\n"
-                       "end;\n"
-
-                       "create function sys.columnsize(nme string, i bigint, d 
bigint)\n"
-                       "returns bigint\n"
-                       "begin\n"
-                       "  case\n"
-                       "  when nme = 'boolean' then return i;\n"
-                       "  when nme = 'char' then return 2*i;\n"
-                       "  when nme = 'smallint' then return 2 * i;\n"
-                       "  when nme = 'int'      then return 4 * i;\n"
-                       "  when nme = 'bigint'   then return 8 * i;\n"
-                       "  when nme = 'timestamp' then return 8 * i;\n"
-                       "  when  nme = 'varchar' then\n"
-                       "    case\n"
-                       "    when cast(d as bigint) << 8 then return i;\n"
-                       "    when cast(d as bigint) << 16 then return 2 * i;\n"
-                       "    when cast(d as bigint) << 32 then return 4 * i;\n"
-                       "    else return 8 * i;\n"
-                       "    end case;\n"
-                       "  else return 8 * i;\n"
-                       "  end case;\n"
-                       "end;\n"
-
-                       "create function sys.heapsize(tpe string, i bigint, w 
int)\n"
-                       "returns bigint\n"
-                       "begin\n"
-                       "  if  tpe <> 'varchar' and tpe <> 'clob'\n"
-                       "  then\n"
-                       "    return 0;\n"
-                       "  end if;\n"
-                       "  return 10240 + i * w;\n"
-                       "end;\n"
-
-                       "create function sys.indexsize(b boolean, i bigint)\n"
-                       "returns bigint\n"
-                       "begin\n"
-
-                       "  if  b = true\n"
-                       "  then\n"
-                       "    return 8 * i;\n"
-                       "  end if;\n"
-                       "  return 0;\n"
-                       "end;\n"
-
-                       "create function sys.storagemodel()\n"
-                       "returns table (\n"
-                       "  \"schema\" string,\n"
-                       "  \"table\" string,\n"
-                       "  \"column\" string,\n"
-                       "  \"type\" string,\n"
-                       "  \"count\" bigint,\n"
-                       "  columnsize bigint,\n"
-                       "  heapsize bigint,\n"
-                       "  indices bigint,\n"
-                       "  sorted boolean)\n"
-                       "begin\n"
-                       "  return select I.\"schema\", I.\"table\", 
I.\"column\", I.\"type\", I.\"count\",\n"
-                       "  columnsize(I.\"type\", I.count, I.\"distinct\"),\n"
-                       "  heapsize(I.\"type\", I.\"distinct\", 
I.\"atomwidth\"),\n"
-                       "  indexsize(I.\"reference\", I.\"count\"),\n"
-                       "  I.sorted\n"
-                       "  from sys.storagemodelinput I;\n"
-                       "end;\n"
-
-                       "create view sys.tablestoragemodel\n"
-                       "as select \"schema\",\"table\",max(count) as 
\"count\",\n"
-                       "  sum(columnsize) as columnsize,\n"
-                       "  sum(heapsize) as heapsize,\n"
-                       "  sum(indices) as indices,\n"
-                       "  sum(case when sorted = false then 8 * count else 0 
end) as auxiliary\n"
-                       "from sys.storagemodel() group by 
\"schema\",\"table\";\n"
-                       "update sys._tables\n"
-                       "  set system = true\n"
-                       "  where name = 'tablestoragemodel'\n"
-                       "    and schema_id = (select id from sys.schemas where 
name = 'sys');\n");
-
-       pos += snprintf(buf + pos, bufsize - pos,
-                       "insert into sys.systemfunctions (select f.id from 
sys.functions f, sys.schemas s where f.name in ('like', 'ilike') and f.type = 
%d and f.schema_id = s.id and s.name = 'sys');\n",
-                       F_FILT);
-       pos += snprintf(buf + pos, bufsize - pos,
-                       "insert into sys.systemfunctions (select f.id from 
sys.functions f, sys.schemas s where f.name in ('storage', 'columnsize', 
'heapsize', 'indexsize', 'storagemodel') and f.type = %d and f.schema_id = s.id 
and s.name = 'sys');\n",
-                       F_FUNC);
-       pos += snprintf(buf + pos, bufsize - pos,
-                       "insert into sys.systemfunctions (select f.id from 
sys.functions f, sys.schemas s where f.name = 'storagemodelinit' and f.type = 
%d and f.schema_id = s.id and s.name = 'sys');\n",
-                       F_PROC);
-
-       assert(pos < bufsize);
-
-       printf("Running database upgrade commands:\n%s\n", buf);
-       err = SQLstatementIntern(c, &buf, "update", 1, 0, NULL);
-       GDKfree(buf);
-       return err;             /* usually MAL_SUCCEED */
-}
-
-static str
-sql_update_feb2013_sp3(Client c)
-{
-       size_t bufsize = 4096, pos = 0;
-       char *buf = GDKmalloc(bufsize), *err = NULL;
-
-       /* aggregates on type WRD */
-       pos += snprintf(buf + pos, bufsize - pos,
-                       "create aggregate sys.stddev_samp(val WRD) returns 
DOUBLE external name \"aggr\".\"stdev\";\n"
-                       "create aggregate sys.stddev_pop(val WRD) returns 
DOUBLE external name \"aggr\".\"stdevp\";\n"
-                       "create aggregate sys.var_samp(val WRD) returns DOUBLE 
external name \"aggr\".\"variance\";\n"
-                       "create aggregate sys.var_pop(val WRD) returns DOUBLE 
external name \"aggr\".\"variancep\";\n"
-                       "create aggregate sys.median(val WRD) returns WRD 
external name \"aggr\".\"median\";\n"
-                       "create aggregate sys.corr(e1 WRD, e2 WRD) returns WRD 
external name \"aggr\".\"corr\";\n");
-
-       pos += snprintf(buf + pos, bufsize - pos,
-                       "insert into sys.systemfunctions (select f.id from 
sys.functions f, sys.schemas s where f.name in ('stddev_samp', 'stddev_pop', 
'var_samp', 'var_pop', 'median', 'corr') and f.type = %d and f.schema_id = s.id 
and s.name = 'sys');\n",
-                       F_AGGR);
-
-       assert(pos < 4096);
-
-       printf("Running database upgrade commands:\n%s\n", buf);
-       err = SQLstatementIntern(c, &buf, "update", 1, 0, NULL);
-       GDKfree(buf);
-       return err;             /* usually MAL_SUCCEED */
-}
-
-static str
-sql_update_jan2014(Client c)
-{
-       size_t bufsize = 25000, pos = 0;
-       char *buf = GDKmalloc(bufsize), *err = NULL;
-       ValRecord *schvar = stack_get_var(((backend *) c->sqlcontext)->mvc, 
"current_schema");
-       char *schema = NULL;
-
-       if (schvar)
-               schema = strdup(schvar->val.sval);
-
-       pos += snprintf(buf + pos, bufsize - pos, "set schema \"sys\";\n");
-
-       /* replaced 15_history.sql by 15_querylog.sql */
-       pos += snprintf(buf + pos, bufsize - pos,
-                       "drop procedure sys.resetHistory;\n"
-                       "drop procedure sys.keepCall;\n"
-                       "drop procedure sys.keepQuery;\n");
-       {
-               char *msg;
-               mvc *sql = NULL;
-
-               if ((msg = getSQLContext(c, c->curprg->def, &sql, NULL)) != 
MAL_SUCCEED) {
-                       GDKfree(msg);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to