Changeset: e4bfae33a5be for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e4bfae33a5be
Modified Files:
        sql/backends/monet5/sql_result.c
Branch: monetdbe-proxy
Log Message:

Simplify mvc_export_prepare.


diffs (198 lines):

diff --git a/sql/backends/monet5/sql_result.c b/sql/backends/monet5/sql_result.c
--- a/sql/backends/monet5/sql_result.c
+++ b/sql/backends/monet5/sql_result.c
@@ -932,97 +932,96 @@ mvc_export_prepare(mvc *c, stream *out, 
        sql_rel *r = q->rel;
 
        (void)c;
-       if(!out)
+       if(!out || GDKembedded())
                return 0;
 
-       if (!GDKembedded()) {
-               if (r && (is_topn(r->op) || is_sample(r->op)))
-                       r = r->l;
-               if (r && is_project(r->op) && r->exps) {
-                       unsigned int max2 = 10, max3 = 10;      /* to help 
calculate widths */
-                       nrows += list_length(r->exps);
-
-                       for (n = r->exps->h; n; n = n->next) {
-                               const char *name;
-                               sql_exp *e = n->data;
-                               size_t slen;
+       if (r && (is_topn(r->op) || is_sample(r->op)))
+               r = r->l;
+       if (r && is_project(r->op) && r->exps) {
+               unsigned int max2 = 10, max3 = 10;      /* to help calculate 
widths */
+               nrows += list_length(r->exps);
 
-                               t = exp_subtype(e);
-                               slen = strlen(t->type->sqlname);
-                               if (slen > len1)
-                                       len1 = slen;
-                               while (t->digits >= max2) {
-                                       len2++;
-                                       max2 *= 10;
-                               }
-                               while (t->scale >= max3) {
-                                       len3++;
-                                       max3 *= 10;
-                               }
-                               name = exp_relname(e);
-                               if (!name && e->type == e_column && e->l)
-                                       name = e->l;
-                               slen = name ? strlen(name) : 0;
-                               if (slen > len5)
-                                       len5 = slen;
-                               name = exp_name(e);
-                               if (!name && e->type == e_column && e->r)
-                                       name = e->r;
-                               slen = name ? strlen(name) : 0;
-                               if (slen > len6)
-                                       len6 = slen;
-                       }
-               }
-
-               /* calculate column widths */
-               if (q->f->ops) {
-                       unsigned int max2 = 10, max3 = 10;      /* to help 
calculate widths */
+               for (n = r->exps->h; n; n = n->next) {
+                       const char *name;
+                       sql_exp *e = n->data;
+                       size_t slen;
 
-                       for (n = q->f->ops->h; n; n = n->next) {
-                               size_t slen;
-
-                               a = n->data;
-                               t = &a->type;
-                               slen = strlen(t->type->sqlname);
-                               if (slen > len1)
-                                       len1 = slen;
-                               while (t->digits >= max2) {
-                                       len2++;
-                                       max2 *= 10;
-                               }
-                               while (t->scale >= max3) {
-                                       len3++;
-                                       max3 *= 10;
-                               }
+                       t = exp_subtype(e);
+                       slen = strlen(t->type->sqlname);
+                       if (slen > len1)
+                               len1 = slen;
+                       while (t->digits >= max2) {
+                               len2++;
+                               max2 *= 10;
+                       }
+                       while (t->scale >= max3) {
+                               len3++;
+                               max3 *= 10;
                        }
+                       name = exp_relname(e);
+                       if (!name && e->type == e_column && e->l)
+                               name = e->l;
+                       slen = name ? strlen(name) : 0;
+                       if (slen > len5)
+                               len5 = slen;
+                       name = exp_name(e);
+                       if (!name && e->type == e_column && e->r)
+                               name = e->r;
+                       slen = name ? strlen(name) : 0;
+                       if (slen > len6)
+                               len6 = slen;
                }
+       }
 
-               /* write header, query type: Q_PREPARE */
-               if (mnstr_printf(out, "&5 %d %d 6 %d\n" /* TODO: add type here: 
r(esult) or u(pdate) */
-                               "%% 
.prepare,\t.prepare,\t.prepare,\t.prepare,\t.prepare,\t.prepare # table_name\n" 
"%% type,\tdigits,\tscale,\tschema,\ttable,\tcolumn # name\n" "%% 
varchar,\tint,\tint,\tstr,\tstr,\tstr # type\n" "%% %zu,\t%d,\t%d,\t"
-                               "%zu,\t%zu,\t%zu # length\n", q->id, nrows, 
nrows, len1, len2, len3, len4, len5, len6) < 0) {
-                       return -1;
-               }
+       /* calculate column widths */
+       if (q->f->ops) {
+               unsigned int max2 = 10, max3 = 10;      /* to help calculate 
widths */
 
-               if (r && is_project(r->op) && r->exps) {
-                       for (n = r->exps->h; n; n = n->next) {
-                               const char *name, *rname, *schema = NULL;
-                               sql_exp *e = n->data;
+               for (n = q->f->ops->h; n; n = n->next) {
+                       size_t slen;
 
-                               t = exp_subtype(e);
-                               name = exp_name(e);
-                               if (!name && e->type == e_column && e->r)
-                                       name = e->r;
-                               rname = exp_relname(e);
-                               if (!rname && e->type == e_column && e->l)
-                                       rname = e->l;
-
-                               if (mnstr_printf(out, "[ 
\"%s\",\t%u,\t%u,\t\"%s\",\t\"%s\",\t\"%s\"\t]\n", t->type->sqlname, t->digits, 
t->scale, schema ? schema : "", rname ? rname : "", name ? name : "") < 0) {
-                                       return -1;
-                               }
+                       a = n->data;
+                       t = &a->type;
+                       slen = strlen(t->type->sqlname);
+                       if (slen > len1)
+                               len1 = slen;
+                       while (t->digits >= max2) {
+                               len2++;
+                               max2 *= 10;
+                       }
+                       while (t->scale >= max3) {
+                               len3++;
+                               max3 *= 10;
                        }
                }
        }
+
+       /* write header, query type: Q_PREPARE */
+       if (mnstr_printf(out, "&5 %d %d 6 %d\n" /* TODO: add type here: 
r(esult) or u(pdate) */
+                       "%% 
.prepare,\t.prepare,\t.prepare,\t.prepare,\t.prepare,\t.prepare # table_name\n" 
"%% type,\tdigits,\tscale,\tschema,\ttable,\tcolumn # name\n" "%% 
varchar,\tint,\tint,\tstr,\tstr,\tstr # type\n" "%% %zu,\t%d,\t%d,\t"
+                       "%zu,\t%zu,\t%zu # length\n", q->id, nrows, nrows, 
len1, len2, len3, len4, len5, len6) < 0) {
+               return -1;
+       }
+
+       if (r && is_project(r->op) && r->exps) {
+               for (n = r->exps->h; n; n = n->next) {
+                       const char *name, *rname, *schema = NULL;
+                       sql_exp *e = n->data;
+
+                       t = exp_subtype(e);
+                       name = exp_name(e);
+                       if (!name && e->type == e_column && e->r)
+                               name = e->r;
+                       rname = exp_relname(e);
+                       if (!rname && e->type == e_column && e->l)
+                               rname = e->l;
+
+                       if (mnstr_printf(out, "[ 
\"%s\",\t%u,\t%u,\t\"%s\",\t\"%s\",\t\"%s\"\t]\n", t->type->sqlname, t->digits, 
t->scale, schema ? schema : "", rname ? rname : "", name ? name : "") < 0) {
+                               return -1;
+                       }
+               }
+       }
+
        if (q->f->ops) {
                int i;
 
@@ -1030,16 +1029,11 @@ mvc_export_prepare(mvc *c, stream *out, 
                        a = n->data;
                        t = &a->type;
 
-                       if (t) {
-                               if (!GDKembedded() && mnstr_printf(out, "[ 
\"%s\",\t%u,\t%u,\tNULL,\tNULL,\tNULL\t]\n", t->type->sqlname, t->digits, 
t->scale) < 0) {
-                                       return -1;
-                               }
-                       } else {
+                       if (!t || mnstr_printf(out, "[ 
\"%s\",\t%u,\t%u,\tNULL,\tNULL,\tNULL\t]\n", t->type->sqlname, t->digits, 
t->scale) < 0)
                                return -1;
-                       }
                }
        }
-       if (!GDKembedded() && mvc_export_warning(out, w) != 1)
+       if (mvc_export_warning(out, w) != 1)
                return -1;
        return 0;
 }
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to