Changeset: 0c5be55fdb18 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0c5be55fdb18
Modified Files:
        sql/server/rel_dump.c
        sql/storage/store.c
        sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out
        
sql/test/BugTracker-2009/Tests/use_order_column_first.SF-2686008.stable.out
        
sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
        
sql/test/BugTracker-2010/Tests/ORDER_BY_over_UNION_EXCEPT_INTERSECT.Bug-2606.stable.out
        sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out
        sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out.int128
        sql/test/BugTracker-2013/Tests/rangejoin_optimizer.Bug-3411.stable.out
        sql/test/BugTracker-2015/Tests/crash.Bug-3736.stable.out
        sql/test/BugTracker-2015/Tests/large_join.Bug-3809.stable.out
        
sql/test/BugTracker-2015/Tests/quantile_function_resolution.Bug-3773.stable.out
        sql/test/BugTracker-2015/Tests/schema_view.Bug-3708.stable.out
        
sql/test/BugTracker-2016/Tests/memory-consumption-query-PLAN-25joins.Bug-3972.stable.out
        sql/test/BugTracker-2016/Tests/merge_project.Bug-3955.stable.out
        sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
        sql/test/Tests/order_by_complex_exp.stable.out
        sql/test/leaks/Tests/check1.stable.out.int128
        sql/test/mergetables/Tests/part-elim.stable.out
Branch: Dec2016
Log Message:

Merged changes


diffs (truncated from 1986 to 300 lines):

diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c
--- a/sql/server/rel_dump.c
+++ b/sql/server/rel_dump.c
@@ -157,8 +157,8 @@ exp_print(mvc *sql, stream *fout, sql_ex
        }       break;
        case e_column: 
                if (e->l)
-                       mnstr_printf(fout, "%s.", (char*)e->l);
-               mnstr_printf(fout, "%s", (char*)e->r);
+                       mnstr_printf(fout, "\"%s\".", (char*)e->l);
+               mnstr_printf(fout, "\"%s\"", (char*)e->r);
                if (e->rname && e->name && e->l && e->r &&
                        strcmp(e->rname, e->l) == 0 &&
                        strcmp(e->name, e->r) == 0) 
@@ -224,8 +224,8 @@ exp_print(mvc *sql, stream *fout, sql_ex
        if (e->name && alias) {
                mnstr_printf(fout, " as ");
                if (e->rname)
-                       mnstr_printf(fout, "%s.", e->rname);
-               mnstr_printf(fout, "%s", e->name);
+                       mnstr_printf(fout, "\"%s\".", e->rname);
+               mnstr_printf(fout, "\"%s\"", e->name);
        }
        if (comma)
                mnstr_printf(fout, ", ");
@@ -588,13 +588,22 @@ skipWS( char *r, int *pos)
 static void
 skipIdent( char *r, int *pos)
 {
-       while(r[*pos] && (isalnum(r[*pos]) || r[*pos] == '_' || r[*pos] == '%'))
+       if (r[*pos] == '"') {
                (*pos)++;
+               while(r[*pos] && r[*pos] != '"')
+                       (*pos)++;
+               (*pos)++;
+       } else {
+               while(r[*pos] && (isalnum(r[*pos]) || r[*pos] == '_' || r[*pos] 
== '%'))
+                       (*pos)++;
+       }
 }
 
 static void
 skipIdentOrSymbol( char *r, int *pos)
 {
+       if (r[*pos] == '"') 
+               return skipIdent(r, pos);
        while(r[*pos] && (isalnum(r[*pos]) || 
                          r[*pos] == '_' || r[*pos] == '%' ||
                          r[*pos] == '<' || r[*pos] == '>' || 
@@ -720,30 +729,32 @@ static sql_exp*
 exp_read(mvc *sql, sql_rel *lrel, sql_rel *rrel, list *pexps, char *r, int 
*pos, int grp) 
 {
        int f = -1;
-       int not = 1, old, d=0, s=0, unique = 0, no_nils = 0;
+       int not = 1, old, d=0, s=0, unique = 0, no_nils = 0, quote = 0;
        char *tname, *cname = NULL, *e, *b = r + *pos, *st;
        sql_exp *exp = NULL;
        list *exps = NULL;
        sql_subtype *tpe;
 
+       quote = (r[*pos] == '"');
+       b += quote;
        skipIdent(r, pos);
-       e = r+*pos;
+       e = r+*pos-quote;
        skipWS(r, pos);
        switch(r[*pos]) {
-       /* ident */
        case '.': 
                *e = 0;
                (*pos)++;
                tname = b;
-               cname = r + *pos;
+               cname = r + *pos + quote;
                skipIdentOrSymbol(r, pos);
-               e = r+*pos;
-               skipWS(r, pos);
+               e = r+*pos - quote;
                old = *e;
                *e = 0;
                
                tname = sa_strdup(sql->sa, tname);
                cname = sa_strdup(sql->sa, cname);
+               *e = old;
+               skipWS(r, pos);
                if (pexps)
                        exp = exps_bind_column2(pexps, tname, cname);
                if (!exp && lrel) { 
@@ -753,7 +764,6 @@ exp_read(mvc *sql, sql_rel *lrel, sql_re
                } else if (!exp) {
                        exp = exp_column(sql->sa, tname, cname, NULL, 
CARD_ATOM, 1, (strchr(cname,'%') != NULL));
                }
-               *e = old;
                break;
        /* atom */
        case '(': 
@@ -942,30 +952,25 @@ exp_read(mvc *sql, sql_rel *lrel, sql_re
 
        /* as alias */
        if (strncmp(r+*pos, "as", 2) == 0) {
-               int old;
                (*pos)+=2;
                skipWS(r, pos);
 
-               tname = r+*pos;
+               tname = r+*pos+1;
                skipIdent(r, pos);
                if (r[*pos] != '.') {
-                       old = r[*pos];
-                       r[*pos] = 0;
+                       r[*pos-1] = 0;
                        cname = tname;
                        exp_setname(sql->sa, exp, NULL, cname);
-                       r[*pos] = old;
                        skipWS(r, pos);
                } else {
-                       r[*pos] = 0;
+                       r[*pos-1] = 0;
                        (*pos)++;
-                       cname = r+*pos;
+                       cname = r+*pos+1;
                        skipIdent(r, pos);
-                       e = r+*pos;
+                       e = r+*pos-1;
                        skipWS(r, pos);
-                       old = *e;
                        *e = 0;
                        exp_setname(sql->sa, exp, tname, cname);
-                       *e = old;
                }
        }
        skipWS(r, pos);
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -3406,6 +3406,7 @@ reset_table(sql_trans *tr, sql_table *ft
 
                ft->base.wtime = ft->base.rtime = 0;
                ft->cleared = 0;
+               ft->access = pft->access;
                ok = reset_changeset( tr, &ft->columns, &pft->columns, 
&ft->base, (resetf) &reset_column, (dupfunc) &column_dup);
                if (ok == LOG_OK)
                        ok = reset_changeset( tr, &ft->idxs, &pft->idxs, 
&ft->base, (resetf) &reset_idx, (dupfunc) &idx_dup);
@@ -3413,6 +3414,7 @@ reset_table(sql_trans *tr, sql_table *ft
                        ok = reset_changeset( tr, &ft->keys, &pft->keys, 
&ft->base, (resetf) NULL, (dupfunc) &key_dup);
                if (ok == LOG_OK)
                        ok = reset_changeset( tr, &ft->triggers, 
&pft->triggers, &ft->base, (resetf) NULL, (dupfunc) &trigger_dup);
+               /* TODO reset_tables of tables */
                return ok;
        }
        return LOG_OK;
diff --git 
a/sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out 
b/sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out
--- a/sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out
+++ b/sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out
@@ -28,12 +28,12 @@ Ready.
 % .plan # table_name
 % rel # name
 % clob # type
-% 196 # length
+% 200 # length
 insert(
-| table(sys.cm_tmp) [ cm_tmp.i, cm_tmp.%TID% NOT NULL ]
+| table(sys.cm_tmp) [ "cm_tmp"."i", "cm_tmp"."%TID%" NOT NULL ]
 | union (
-| | table sys.copyfrom(table(cm_tmp), varchar "|", varchar "\n", varchar 
"NULL", varchar "null", varchar "/file1", bigint "-1", bigint "0", int "0", int 
"0", varchar "NULL"),  [ cm_tmp.i ] COUNT ,
-| | table sys.copyfrom(table(cm_tmp), varchar "|", varchar "\n", varchar 
"NULL", varchar "null", varchar "/file2", bigint "-1", bigint "0", int "0", int 
"0", varchar "NULL"),  [ cm_tmp.i ] COUNT 
+| | table sys.copyfrom(table(cm_tmp), varchar "|", varchar "\n", varchar 
"NULL", varchar "null", varchar "/file1", bigint "-1", bigint "0", int "0", int 
"0", varchar "NULL"),  [ "cm_tmp"."i" ] COUNT ,
+| | table sys.copyfrom(table(cm_tmp), varchar "|", varchar "\n", varchar 
"NULL", varchar "null", varchar "/file2", bigint "-1", bigint "0", int "0", int 
"0", varchar "NULL"),  [ "cm_tmp"."i" ] COUNT 
 | ) [ int "NULL" ]
 )
 
diff --git 
a/sql/test/BugTracker-2009/Tests/use_order_column_first.SF-2686008.stable.out 
b/sql/test/BugTracker-2009/Tests/use_order_column_first.SF-2686008.stable.out
--- 
a/sql/test/BugTracker-2009/Tests/use_order_column_first.SF-2686008.stable.out
+++ 
b/sql/test/BugTracker-2009/Tests/use_order_column_first.SF-2686008.stable.out
@@ -81,21 +81,24 @@ Ready.
 % .plan # table_name
 % rel # name
 % clob # type
-% 51 # length
+% 65 # length
 project (
 | group by (
-| | table(sys.sorted) [ sorted.a, sorted.b ] COUNT 
-| ) [ sorted.a, sorted.b ] [ sorted.a, sorted.b ]
-) [ sorted.a, sorted.b ]
+| | table(sys.sorted) [ "sorted"."a", "sorted"."b" ] COUNT 
+| ) [ "sorted"."a", "sorted"."b" ] [ "sorted"."a", "sorted"."b" ]
+) [ "sorted"."a", "sorted"."b" ]
+#plan select a,b from sorted group by b,a;
 % .plan # table_name
 % rel # name
 % clob # type
-% 51 # length
+% 65 # length
 project (
 | group by (
-| | table(sys.sorted) [ sorted.a, sorted.b ] COUNT 
-| ) [ sorted.b, sorted.a ] [ sorted.b, sorted.a ]
-) [ sorted.a, sorted.b ]
+| | table(sys.sorted) [ "sorted"."a", "sorted"."b" ] COUNT 
+| ) [ "sorted"."b", "sorted"."a" ] [ "sorted"."b", "sorted"."a" ]
+) [ "sorted"."a", "sorted"."b" ]
+#drop table unsorted;
+#drop table sorted;
 
 # 13:59:55 >  
 # 13:59:55 >  Done.
diff --git 
a/sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out 
b/sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
--- a/sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
+++ b/sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
@@ -32,97 +32,97 @@ Ready.
 % .plan # table_name
 % rel # name
 % clob # type
-% 35 # length
+% 39 # length
 project (
-| table(sys.oblo) [ oblo.a ] COUNT 
-) [ oblo.a ]
+| table(sys.oblo) [ "oblo"."a" ] COUNT 
+) [ "oblo"."a" ]
 #PLAN select * from oblo OFFSET 2;
 % .plan # table_name
 % rel # name
 % clob # type
-% 37 # length
+% 41 # length
 top N (
 | project (
-| | table(sys.oblo) [ oblo.a ] COUNT 
-| ) [ oblo.a ]
+| | table(sys.oblo) [ "oblo"."a" ] COUNT 
+| ) [ "oblo"."a" ]
 ) [ bigint "2" ]
 #PLAN select * from oblo LIMIT 2;
 % .plan # table_name
 % rel # name
 % clob # type
-% 37 # length
+% 41 # length
 top N (
 | project (
-| | table(sys.oblo) [ oblo.a ] COUNT 
-| ) [ oblo.a ]
+| | table(sys.oblo) [ "oblo"."a" ] COUNT 
+| ) [ "oblo"."a" ]
 ) [ bigint "2" ]
 #PLAN select * from oblo LIMIT 1 OFFSET 2;
 % .plan # table_name
 % rel # name
 % clob # type
-% 37 # length
+% 41 # length
 top N (
 | project (
-| | table(sys.oblo) [ oblo.a ] COUNT 
-| ) [ oblo.a ]
+| | table(sys.oblo) [ "oblo"."a" ] COUNT 
+| ) [ "oblo"."a" ]
 ) [ bigint "1", bigint "2" ]
 #PLAN select * from oblo LIMIT 2 OFFSET 1;
 % .plan # table_name
 % rel # name
 % clob # type
-% 37 # length
+% 41 # length
 top N (
 | project (
-| | table(sys.oblo) [ oblo.a ] COUNT 
-| ) [ oblo.a ]
+| | table(sys.oblo) [ "oblo"."a" ] COUNT 
+| ) [ "oblo"."a" ]
 ) [ bigint "2", bigint "1" ]
 #PLAN select * from oblo ORDER BY a;
 % .plan # table_name
 % rel # name
 % clob # type
-% 35 # length
+% 39 # length
 project (
-| table(sys.oblo) [ oblo.a ] COUNT 
-) [ oblo.a ] [ oblo.a ASC ]
+| table(sys.oblo) [ "oblo"."a" ] COUNT 
+) [ "oblo"."a" ] [ "oblo"."a" ASC ]
 #PLAN select * from oblo ORDER BY a OFFSET 2;
 % .plan # table_name
 % rel # name
 % clob # type
-% 37 # length
+% 41 # length
 top N (
 | project (
-| | table(sys.oblo) [ oblo.a ] COUNT 
-| ) [ oblo.a ] [ oblo.a ASC ]
+| | table(sys.oblo) [ "oblo"."a" ] COUNT 
+| ) [ "oblo"."a" ] [ "oblo"."a" ASC ]
 ) [ bigint "2" ]
 #PLAN select * from oblo ORDER BY a LIMIT 2;
 % .plan # table_name
 % rel # name
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to