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