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

merged with aug2024


diffs (78 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
@@ -2555,21 +2555,25 @@ exp2sql_dquoted(stream *fout, const char
 
 /* only simple expressions, ie recursive no psm */
 static void
-exp2sql_print(mvc *sql, stream *fout, sql_exp *e)
+exp2sql_print(mvc *sql, stream *fout, sql_exp *e, int depth)
 {
        switch (e->type) {
                case e_func: {
                        sql_subfunc *sf = e->f;
                        list *args = e->l;
                        if (list_length(args) == 2 && is_infix(sf->func)) {
-                               exp2sql_print(sql, fout, args->h->data);
+                               if (depth)
+                                       mnstr_printf(fout, "( " );
+                               exp2sql_print(sql, fout, args->h->data, 
depth+1);
                                mnstr_printf(fout, " %s ", sf->func->base.name);
-                               exp2sql_print(sql, fout, args->h->next->data);
+                               exp2sql_print(sql, fout, args->h->next->data, 
depth+1);
+                               if (depth)
+                                       mnstr_printf(fout, " )" );
                        } else {
                                exp2sql_dquoted(fout, NULL, 
sf->func->base.name, "(");
                                if (args)
                                        for (node *n = args->h; n; n = n->next) 
{
-                                               exp2sql_print(sql, fout, 
n->data);
+                                               exp2sql_print(sql, fout, 
n->data, depth+1);
                                                if (n->next)
                                                        mnstr_printf(fout, ", 
");
                                        }
@@ -2581,7 +2585,7 @@ exp2sql_print(mvc *sql, stream *fout, sq
                        break;
                case e_convert:
                        mnstr_printf(fout, "CAST (" );
-                       exp2sql_print(sql, fout, e->l);
+                       exp2sql_print(sql, fout, e->l, depth+1);
                        mnstr_printf(fout, "AS %s)", 
sql_subtype_string(sql->sa, exp_subtype(e)));
                        break;
                case e_atom:
@@ -2609,7 +2613,7 @@ exp2sql( mvc *sql, sql_exp *exp)
        if(s == NULL)
                goto cleanup;
 
-       exp2sql_print(sql, s, exp);
+       exp2sql_print(sql, s, exp, 0);
 
        res = buffer_get_buf(b);
 
diff --git a/sql/test/subquery/Tests/subquery3.test 
b/sql/test/subquery/Tests/subquery3.test
--- a/sql/test/subquery/Tests/subquery3.test
+++ b/sql/test/subquery/Tests/subquery3.test
@@ -624,19 +624,19 @@ query I rowsort
 SELECT col1 FROM another_T WHERE (col2, col3) IN (SELECT 1,2)
 ----
 
-statement error 42000!syntax error, unexpected sqlINT, expecting SELECT or '(' 
or VALUES or WITH in: "select (1,2) in (1"
+statement error 42000!
 SELECT (1,2) IN (1,2)
 
-statement error 42000!syntax error, unexpected sqlINT, expecting SELECT or '(' 
or VALUES or WITH in: "select (1,2) in (1"
+statement error 42000!
 SELECT (1,2) IN (1)
 
 statement error 42000!Subquery has too few columns
 SELECT (col1, col2) IN (VALUES (1)) FROM another_T
 
-statement error 42000!syntax error, unexpected sqlINT, expecting SELECT or '(' 
or VALUES or WITH in: "select (col1, col2) in (1"
+statement error 42000!
 SELECT (col1, col2) IN (1) FROM another_T
 
-statement error 42000!syntax error, unexpected sqlINT, expecting SELECT or '(' 
or VALUES or WITH in: "select col1 from another_t where (col2, col3) in (1"
+statement error 42000!
 SELECT col1 FROM another_T WHERE (col2, col3) IN (1,2,3)
 
 statement error 42000!Subquery has too few columns
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to