Changeset: e615032ad1cc for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e615032ad1cc
Modified Files:
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_optimizer.c
        sql/backends/monet5/sql_upgrades.c
        sql/server/rel_exp.c
        sql/server/rel_exp.h
        sql/server/rel_optimizer.c
        sql/server/rel_planner.c
        sql/server/rel_schema.c
        sql/server/sql_atom.c
        sql/server/sql_atom.h
        sql/server/sql_mvc.c
        sql/server/sql_mvc.h
        sql/test/mergetables/Tests/part-elim.sql
Branch: default
Log Message:

store values of parameters also using atom's. Use these within the
optimizer to lookup values.


diffs (truncated from 643 to 300 lines):

diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -1570,6 +1570,7 @@ getVariable(Client cntxt, MalBlkPtr mb, 
        mvc *m = NULL;
        str msg;
        str varname = *getArgReference_str(stk, pci, 2);
+       atom *a;
        ValRecord *dst, *src;
 
        if ((msg = getSQLContext(cntxt, mb, &m, NULL)) != NULL)
@@ -1578,12 +1579,13 @@ getVariable(Client cntxt, MalBlkPtr mb, 
                return msg;
        if (mtype < 0 || mtype >= 255)
                throw(SQL, "sql.getVariable", "failed");
-       src = stack_get_var(m, varname);
-       if (!src) {
+       a = stack_get_var(m, varname);
+       if (!a) {
                char buf[BUFSIZ];
                snprintf(buf, BUFSIZ, "variable '%s' unknown", varname);
                throw(SQL, "sql.getVariable", "%s", buf);
        }
+       src = &a->data;
        dst = &stk->stk[getArg(pci, 0)];
        VALcopy(dst, src);
        return MAL_SUCCEED;
diff --git a/sql/backends/monet5/sql_optimizer.c 
b/sql/backends/monet5/sql_optimizer.c
--- a/sql/backends/monet5/sql_optimizer.c
+++ b/sql/backends/monet5/sql_optimizer.c
@@ -83,11 +83,11 @@ SQLgetSpace(mvc *m, MalBlkPtr mb)
 str
 getSQLoptimizer(mvc *m)
 {
-       ValRecord *val = stack_get_var(m, "optimizer");
+       char *opt = stack_get_string(m, "optimizer");
        char *pipe = "default_pipe";
 
-       if (val && val->val.sval)
-               pipe = val->val.sval;
+       if (opt)
+               pipe = opt;
        return pipe;
 }
 
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
@@ -219,14 +219,10 @@ sql_update_oct2014(Client c, mvc *sql)
 {
        size_t bufsize = 8192*2, pos = 0;
        char *buf = GDKmalloc(bufsize), *err = NULL;
-       ValRecord *schvar = stack_get_var(sql, "current_schema");
-       char *schema = NULL;
+       char *schema = stack_get_string(sql, "current_schema");
        sql_table *t;
        sql_schema *s;
 
-       if (schvar)
-               schema = strdup(schvar->val.sval);
-
        pos += snprintf(buf + pos, bufsize - pos, "set schema \"sys\";\n");
 
        /* cleanup columns of dropped views */
@@ -488,10 +484,8 @@ sql_update_oct2014(Client c, mvc *sql)
                        "insert into sys.systemfunctions (select f.id from 
sys.functions f, sys.schemas s where f.name in ('bbp', 'db_users', 'env', 
'generate_series', 'storage', 'storagemodel', 'var') and f.type = %d and 
f.schema_id = s.id and s.name = 'sys');\n",
                        F_UNION);
 
-       if (schema) {
+       if (schema) 
                pos += snprintf(buf + pos, bufsize - pos, "set schema 
\"%s\";\n", schema);
-               free(schema);
-       }
 
        assert(pos < bufsize);
 
@@ -508,11 +502,7 @@ sql_update_oct2014_sp1(Client c, mvc *sq
 {
        size_t bufsize = 8192*2, pos = 0;
        char *buf = GDKmalloc(bufsize), *err = NULL;
-       ValRecord *schvar = stack_get_var(sql, "current_schema");
-       char *schema = NULL;
-
-       if (schvar)
-               schema = strdup(schvar->val.sval);
+       char *schema = stack_get_string(sql, "current_schema");
 
        pos += snprintf(buf + pos, bufsize - pos,
                        "set schema \"sys\";\n"
@@ -539,10 +529,8 @@ sql_update_oct2014_sp1(Client c, mvc *sq
                        "drop table upgradeOct2014_changes;\n"
                        "drop table upgradeOct2014;\n");
 
-       if (schema) {
+       if (schema) 
                pos += snprintf(buf + pos, bufsize - pos, "set schema 
\"%s\";\n", schema);
-               free(schema);
-       }
        assert(pos < bufsize);
 
        printf("Running database upgrade commands:\n%s\n", buf);
@@ -556,11 +544,7 @@ sql_update_oct2014_sp2(Client c, mvc *sq
 {
        size_t bufsize = 8192, pos = 0;
        char *buf = GDKmalloc(bufsize), *err = NULL;
-       ValRecord *schvar = stack_get_var(sql, "current_schema");
-       char *schema = NULL;
-
-       if (schvar)
-               schema = strdup(schvar->val.sval);
+       char *schema = stack_get_string(sql, "current_schema");
 
        pos += snprintf(buf + pos, bufsize - pos,
                        "set schema \"sys\";\n"
@@ -575,10 +559,8 @@ sql_update_oct2014_sp2(Client c, mvc *sq
                        "from sys.storagemodel() group by 
\"schema\",\"table\";\n"
                        "update _tables set system = true where name = 
'tablestoragemodel' and schema_id = (select id from schemas where name = 
'sys');\n");
 
-       if (schema) {
+       if (schema) 
                pos += snprintf(buf + pos, bufsize - pos, "set schema 
\"%s\";\n", schema);
-               free(schema);
-       }
        assert(pos < bufsize);
 
        {
@@ -603,11 +585,7 @@ sql_update_oct2014_sp3(Client c, mvc *sq
 {
        size_t bufsize = 8192, pos = 0;
        char *buf = GDKmalloc(bufsize), *err = NULL;
-       ValRecord *schvar = stack_get_var(sql, "current_schema");
-       char *schema = NULL;
-
-       if (schvar)
-               schema = strdup(schvar->val.sval);
+       char *schema = stack_get_string(sql, "current_schema");
 
        pos += snprintf(buf + pos, bufsize - pos,
                        "set schema \"sys\";\n"
@@ -617,10 +595,8 @@ sql_update_oct2014_sp3(Client c, mvc *sq
                        "CREATE FUNCTION \"right_shift_assign\"(i1 inet, i2 
inet) RETURNS boolean EXTERNAL NAME inet.\">>=\";\n"
                        "insert into sys.systemfunctions (select id from 
sys.functions where name in ('left_shift', 'right_shift', 'left_shift_assign', 
'right_shift_assign') and schema_id = (select id from sys.schemas where name = 
'sys') and id not in (select function_id from sys.systemfunctions));\n");
 
-       if (schema) {
+       if (schema) 
                pos += snprintf(buf + pos, bufsize - pos, "set schema 
\"%s\";\n", schema);
-               free(schema);
-       }
        assert(pos < bufsize);
 
        printf("Running database upgrade commands:\n%s\n", buf);
@@ -635,11 +611,7 @@ sql_update_hugeint(Client c, mvc *sql)
 {
        size_t bufsize = 8192, pos = 0;
        char *buf = GDKmalloc(bufsize), *err = NULL;
-       ValRecord *schvar = stack_get_var(sql, "current_schema");
-       char *schema = NULL;
-
-       if (schvar)
-               schema = strdup(schvar->val.sval);
+       char *schema = stack_get_string(sql, "current_schema");
 
        pos += snprintf(buf + pos, bufsize - pos, "set schema \"sys\";\n");
 
@@ -720,10 +692,8 @@ sql_update_hugeint(Client c, mvc *sql)
                }
        }
 
-       if (schema) {
+       if (schema) 
                pos += snprintf(buf + pos, bufsize - pos, "set schema 
\"%s\";\n", schema);
-               free(schema);
-       }
        assert(pos < bufsize);
 
        printf("Running database upgrade commands:\n%s\n", buf);
@@ -738,11 +708,8 @@ sql_update_jul2015(Client c, mvc *sql)
 {
        size_t bufsize = 15360, pos = 0;
        char *buf = GDKmalloc(bufsize), *err = NULL;
-       ValRecord *schvar = stack_get_var(sql, "current_schema");
-       char *schema = NULL;
+       char *schema = stack_get_string(sql, "current_schema");
 
-       if (schvar)
-               schema = strdup(schvar->val.sval);
        pos += snprintf(buf + pos, bufsize - pos, "set schema \"sys\";\n");
 
        /* change to 09_like */
@@ -1143,10 +1110,8 @@ sql_update_jul2015(Client c, mvc *sql)
                        "drop procedure sys.cluster1;\n"
                        "drop procedure sys.cluster2;\n");
 
-       if (schema) {
+       if (schema) 
                pos += snprintf(buf + pos, bufsize - pos, "set schema 
\"%s\";\n", schema);
-               free(schema);
-       }
        assert(pos < bufsize);
 
        printf("Running database upgrade commands:\n%s\n", buf);
@@ -1160,14 +1125,11 @@ sql_update_epoch(Client c, mvc *m)
 {
        size_t bufsize = 1000, pos = 0;
        char *buf = GDKmalloc(bufsize), *err = NULL;
-       ValRecord *schvar = stack_get_var(m, "current_schema");
-       char *schema = NULL;
+       char *schema = stack_get_string(m, "current_schema");
        sql_subtype tp;
        int n = 0;
        sql_schema *s = mvc_bind_schema(m, "sys");
 
-       if (schvar)
-               schema = strdup(schvar->val.sval);
        pos += snprintf(buf + pos, bufsize - pos, "set schema \"sys\";\n");
 
        sql_find_subtype(&tp, "bigint", 0, 0);
@@ -1197,10 +1159,8 @@ create function sys.\"epoch\"(ts TIMESTA
        pos += snprintf(buf + pos, bufsize - pos,
                        "insert into sys.systemfunctions (select id from 
sys.functions where name = 'epoch' and schema_id = (select id from sys.schemas 
where name = 'sys') and id not in (select function_id from 
sys.systemfunctions));\n");
 
-       if (schema) {
+       if (schema) 
                pos += snprintf(buf + pos, bufsize - pos, "set schema 
\"%s\";\n", schema);
-               free(schema);
-       }
 
        assert(pos < bufsize);
        if (n) {
@@ -1216,14 +1176,11 @@ sql_update_jun2016(Client c, mvc *sql)
 {
        size_t bufsize = 1000000, pos = 0;
        char *buf = GDKmalloc(bufsize), *err = NULL;
-       ValRecord *schvar = stack_get_var(sql, "current_schema");
-       char *schema = NULL;
+       char *schema = stack_get_string(sql, "current_schema");
        node *n;
        sql_schema *s;
 
        s = mvc_bind_schema(sql, "sys");
-       if (schvar)
-               schema = strdup(schvar->val.sval);
        pos += snprintf(buf + pos, bufsize - pos, "set schema \"sys\";\n");
 
        pos += snprintf(buf + pos, bufsize - pos, "delete from sys.dependencies 
where id < 2000;\n");
@@ -1473,10 +1430,8 @@ sql_update_jun2016(Client c, mvc *sql)
        pos += snprintf(buf + pos, bufsize - pos,
                        "delete from sys.systemfunctions where function_id not 
in (select id from sys.functions);\n");
 
-       if (schema) {
+       if (schema) 
                pos += snprintf(buf + pos, bufsize - pos, "set schema 
\"%s\";\n", schema);
-               free(schema);
-       }
 
        assert(pos < bufsize);
        printf("Running database upgrade commands:\n%s\n", buf);
@@ -1491,8 +1446,7 @@ sql_update_geom(Client c, mvc *sql, int 
        size_t bufsize, pos = 0;
        char *buf, *err = NULL;
        char *geomupgrade;
-       ValRecord *schvar = stack_get_var(sql, "current_schema");
-       char *schema = NULL;
+       char *schema = stack_get_string(sql, "current_schema");
        geomsqlfix_fptr fixfunc;
        node *n;
        sql_schema *s = mvc_bind_schema(sql, "sys");
@@ -1500,9 +1454,6 @@ sql_update_geom(Client c, mvc *sql, int 
        if ((fixfunc = geomsqlfix_get()) == NULL)
                return NULL;
 
-       if (schvar)
-               schema = strdup(schvar->val.sval);
-
        geomupgrade = (*fixfunc)(olddb);
        bufsize = strlen(geomupgrade) + 512;
        buf = GDKmalloc(bufsize);
@@ -1521,10 +1472,8 @@ sql_update_geom(Client c, mvc *sql, int 
                        pos += snprintf(buf + pos, bufsize - pos, "insert into 
sys.types values (%d, '%s', '%s', %u, %u, %d, %d, %d);\n", t->base.id, 
t->base.name, t->sqlname, t->digits, t->scale, t->radix, t->eclass, t->s ? 
t->s->base.id : s->base.id);
        }
 
-       if (schema) {
+       if (schema) 
                pos += snprintf(buf + pos, bufsize - pos, "set schema 
\"%s\";\n", schema);
-               free(schema);
-       }
 
        assert(pos < bufsize);
        printf("Running database upgrade commands:\n%s\n", buf);
@@ -1538,13 +1487,10 @@ sql_update_default(Client c, mvc *sql)
 {
        size_t bufsize = 10240, pos = 0;
        char *buf = GDKmalloc(bufsize), *err = NULL;
-       ValRecord *schvar = stack_get_var(sql, "current_schema");
-       char *schema = NULL;
+       char *schema = stack_get_string(sql, "current_schema");
        sql_schema *s;
 
        s = mvc_bind_schema(sql, "sys");
-       if (schvar)
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to