Changeset: efd0930c1c01 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/efd0930c1c01
Modified Files:
        sql/server/rel_dump.c
Branch: default
Log Message:

Implements break for expressions list (by default is off)

If you want to have it enabled change the expbrk arg of exps_print() in
rel_print_rel() to 1 for the operator that you are interested in


diffs (192 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
@@ -110,7 +110,7 @@ dump_sql_subtype(allocator *sa, sql_subt
        return sa_strdup(sa, buf);
 }
 
-static void exps_print(mvc *sql, stream *fout, list *exps, int depth, list 
*refs, int alias, int brackets, int decorate);
+static void exps_print(mvc *sql, stream *fout, list *exps, int depth, list 
*refs, int alias, int brackets, int decorate, int expbrk);
 
 static void rel_print_rel(mvc *sql, stream  *fout, sql_rel *rel, int depth, 
list *refs, int decorate);
 
@@ -153,14 +153,14 @@ exp_print(mvc *sql, stream *fout, sql_ex
                } else if (e->flag & PSM_WHILE) {
                        mnstr_printf(fout, "while ");
                        exp_print(sql, fout, e->l, depth, refs, 0, 0, decorate);
-                       exps_print(sql, fout, e->r, depth, refs, 0, 0, 
decorate);
+                       exps_print(sql, fout, e->r, depth, refs, 0, 0, 
decorate, 0);
                        alias = 0;
                } else if (e->flag & PSM_IF) {
                        mnstr_printf(fout, "if ");
                        exp_print(sql, fout, e->l, depth, refs, 0, 0, decorate);
-                       exps_print(sql, fout, e->r, depth, refs, 0, 0, 
decorate);
+                       exps_print(sql, fout, e->r, depth, refs, 0, 0, 
decorate, 0);
                        if (e->f)
-                               exps_print(sql, fout, e->f, depth, refs, 0, 0, 
decorate);
+                               exps_print(sql, fout, e->f, depth, refs, 0, 0, 
decorate, 0);
                        alias = 0;
                } else if (e->flag & PSM_REL) {
                        rel_print_rel(sql, fout, e->l, depth+10, refs, 1);
@@ -209,7 +209,7 @@ exp_print(mvc *sql, stream *fout, sql_ex
                                mnstr_printf(fout, "\"%s\"", 
dump_escape_ident(sql->ta, vname->name));
                        } else if (e->f) {      /* values list */
                                list *l = e->f;
-                               exps_print(sql, fout, l, depth, refs, 0, 0, 
decorate);
+                               exps_print(sql, fout, l, depth, refs, 0, 0, 
decorate, 0);
                        } else { /* numbered arguments */
                                mnstr_printf(fout, "A%u", e->flag);
                        }
@@ -220,11 +220,11 @@ exp_print(mvc *sql, stream *fout, sql_ex
                mnstr_printf(fout, "\"%s\".\"%s\"",
                                f->func->s?dump_escape_ident(sql->ta, 
f->func->s->base.name):"sys",
                                dump_escape_ident(sql->ta, f->func->base.name));
-               exps_print(sql, fout, e->l, depth, refs, 0, 1, decorate);
+               exps_print(sql, fout, e->l, depth, refs, 0, 1, decorate, 0);
                if (e->r) { /* list of optional lists */
                        list *l = e->r;
                        for(node *n = l->h; n; n = n->next)
-                               exps_print(sql, fout, n->data, depth, refs, 0, 
1, decorate);
+                               exps_print(sql, fout, n->data, depth, refs, 0, 
1, decorate, 0);
                }
                if (e->flag && is_compare_func(f))
                        mnstr_printf(fout, " %s", e->flag==1?"ANY":"ALL");
@@ -241,7 +241,7 @@ exp_print(mvc *sql, stream *fout, sql_ex
                if (zero_if_empty(e))
                        mnstr_printf(fout, " zero if empty ");
                if (e->l)
-                       exps_print(sql, fout, e->l, depth, refs, 0, 1, 
decorate);
+                       exps_print(sql, fout, e->l, depth, refs, 0, 1, 
decorate, 0);
                else
                        mnstr_printf(fout, "()");
        } break;
@@ -268,23 +268,23 @@ exp_print(mvc *sql, stream *fout, sql_ex
                        if (is_anti(e))
                                mnstr_printf(fout, " !");
                        cmp_print(sql, fout, e->flag);
-                       exps_print(sql, fout, e->r, depth, refs, 0, 1, 
decorate);
+                       exps_print(sql, fout, e->r, depth, refs, 0, 1, 
decorate, 0);
                } else if (e->flag == cmp_or) {
-                       exps_print(sql, fout, e->l, depth, refs, 0, 1, 
decorate);
+                       exps_print(sql, fout, e->l, depth, refs, 0, 1, 
decorate, 0);
                        if (is_anti(e))
                                mnstr_printf(fout, " !");
                        cmp_print(sql, fout, e->flag);
-                       exps_print(sql, fout, e->r, depth, refs, 0, 1, 
decorate);
+                       exps_print(sql, fout, e->r, depth, refs, 0, 1, 
decorate, 0);
                } else if (e->flag == cmp_filter) {
                        sql_subfunc *f = e->f;
 
-                       exps_print(sql, fout, e->l, depth, refs, 0, 1, 
decorate);
+                       exps_print(sql, fout, e->l, depth, refs, 0, 1, 
decorate, 0);
                        if (is_anti(e))
                                mnstr_printf(fout, " !");
                        mnstr_printf(fout, " FILTER \"%s\".\"%s\"",
                                        f->func->s?dump_escape_ident(sql->ta, 
f->func->s->base.name):"sys",
                                        dump_escape_ident(sql->ta, 
f->func->base.name));
-                       exps_print(sql, fout, e->r, depth, refs, 0, 1, 
decorate);
+                       exps_print(sql, fout, e->r, depth, refs, 0, 1, 
decorate, 0);
                } else if (e->f) {
                        mnstr_printf(fout, "(");
                        exp_print(sql, fout, e->r, depth+1, refs, 0, 0, 
decorate);
@@ -416,7 +416,7 @@ cleanup:
 }
 
 static void
-exps_print(mvc *sql, stream *fout, list *exps, int depth, list *refs, int 
alias, int brackets, int decorate)
+exps_print(mvc *sql, stream *fout, list *exps, int depth, list *refs, int 
alias, int brackets, int decorate, int expbrk)
 {
        node *en;
 
@@ -425,12 +425,18 @@ exps_print(mvc *sql, stream *fout, list 
        else
                mnstr_printf(fout, " [ ");
        if (exps)
-               for (en = exps->h; en; en = en->next)
+               for (en = exps->h; en; en = en->next){
                        exp_print(sql, fout, en->data, depth+1, refs, 
(en->next!=NULL), alias, decorate);
+                       /* break for each entry of the expression list */
+                       if (expbrk && en->next!=NULL)
+                               print_indent(sql, fout, depth+2, decorate);
+               }
+       if (expbrk)
+               print_indent(sql, fout, depth+1, decorate);
        if (brackets)
                mnstr_printf(fout, ")");
        else
-               mnstr_printf(fout, " ]");
+               mnstr_printf(fout, expbrk?"]":" ]");
 }
 
 static int
@@ -488,7 +494,7 @@ rel_print_rel(mvc *sql, stream  *fout, s
                                isReplicaTable(t)?"REPLICA":"table",
                                dump_escape_ident(sql->ta, tname));
                if (rel->exps)
-                       exps_print(sql, fout, rel->exps, depth, refs, 1, 0, 
decorate);
+                       exps_print(sql, fout, rel->exps, depth, refs, 1, 0, 
decorate, 0);
                else
                        rel_base_dump_exps(fout, rel);
        }       break;
@@ -506,7 +512,7 @@ rel_print_rel(mvc *sql, stream  *fout, s
                print_indent(sql, fout, depth, decorate);
                mnstr_printf(fout, ")");
                if (rel->exps)
-                       exps_print(sql, fout, rel->exps, depth, refs, 1, 0, 
decorate);
+                       exps_print(sql, fout, rel->exps, depth, refs, 1, 0, 
decorate, 0);
                break;
        case op_ddl:
                mnstr_printf(fout, "ddl");
@@ -515,7 +521,7 @@ rel_print_rel(mvc *sql, stream  *fout, s
                if (rel->r)
                        rel_print_rel(sql, fout, rel->r, depth+1, refs, 
decorate);
                if (rel->exps && (rel->flag == ddl_psm || rel->flag == 
ddl_exception || rel->flag == ddl_list))
-                       exps_print(sql, fout, rel->exps, depth, refs, 1, 0, 
decorate);
+                       exps_print(sql, fout, rel->exps, depth, refs, 1, 0, 
decorate, 0);
                break;
        case op_join:
        case op_left:
@@ -574,9 +580,9 @@ rel_print_rel(mvc *sql, stream  *fout, s
                }
                print_indent(sql, fout, depth, decorate);
                mnstr_printf(fout, ")");
-               exps_print(sql, fout, rel->exps, depth, refs, 1, 0, decorate);
+               exps_print(sql, fout, rel->exps, depth, refs, 1, 0, decorate, 
0);
                if (is_join(rel->op) && rel->attr) /* group joins */
-                       exps_print(sql, fout, rel->attr, depth, refs, 1, 0, 
decorate);
+                       exps_print(sql, fout, rel->attr, depth, refs, 1, 0, 
decorate, 0);
                break;
        case op_munion:
                r = "munion";
@@ -599,7 +605,7 @@ rel_print_rel(mvc *sql, stream  *fout, s
                }
                print_indent(sql, fout, depth, decorate);
                mnstr_printf(fout, ")");
-               exps_print(sql, fout, rel->exps, depth, refs, 1, 0, decorate);
+               exps_print(sql, fout, rel->exps, depth, refs, 1, 0, decorate, 
0);
                break;
        case op_project:
        case op_select:
@@ -630,10 +636,10 @@ rel_print_rel(mvc *sql, stream  *fout, s
                        mnstr_printf(fout, ")");
                }
                if (rel->op == op_groupby)  /* group by columns */
-                       exps_print(sql, fout, rel->r, depth, refs, 1, 0, 
decorate);
-               exps_print(sql, fout, rel->exps, depth, refs, 1, 0, decorate);
+                       exps_print(sql, fout, rel->r, depth, refs, 1, 0, 
decorate, 0);
+               exps_print(sql, fout, rel->exps, depth, refs, 1, 0, decorate, 
0);
                if (rel->r && rel->op == op_project) /* order by columns */
-                       exps_print(sql, fout, rel->r, depth, refs, 1, 0, 
decorate);
+                       exps_print(sql, fout, rel->r, depth, refs, 1, 0, 
decorate, 0);
                break;
        case op_insert:
        case op_update:
@@ -677,7 +683,7 @@ rel_print_rel(mvc *sql, stream  *fout, s
                print_indent(sql, fout, depth, decorate);
                mnstr_printf(fout, ")");
                if (rel->op != op_truncate && rel->op != op_merge && rel->exps)
-                       exps_print(sql, fout, rel->exps, depth, refs, 1, 0, 
decorate);
+                       exps_print(sql, fout, rel->exps, depth, refs, 1, 0, 
decorate, 0);
        }       break;
        default:
                assert(0);
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to