Update of /cvsroot/monetdb/sql/src/server
In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv22885/src/server

Modified Files:
        Makefile.ag bin_optimizer.mx rel_bin.mx rel_dump.mx 
        rel_optimizer.mx rel_select.mx rel_semantic.mx rel_updates.mx 
        sql_mvc.mx sql_rel2bin.mx sql_semantic.mx sql_statement.mx 
        sql_trans.mx 
Added Files:
        rel_trans.mx 
Log Message:
transactions are now first only parsed, and then executed via mal.


Index: bin_optimizer.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/bin_optimizer.mx,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -d -r1.22 -r1.23
--- bin_optimizer.mx    29 Nov 2009 09:32:22 -0000      1.22
+++ bin_optimizer.mx    13 Dec 2009 20:33:16 -0000      1.23
@@ -540,6 +540,7 @@
        case st_column:
        case st_append:
        case st_exception:
+       case st_trans:
 
        case st_aggr:
        case st_unop:

Index: sql_semantic.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_semantic.mx,v
retrieving revision 1.199
retrieving revision 1.200
diff -u -d -r1.199 -r1.200
--- sql_semantic.mx     29 Nov 2009 19:51:40 -0000      1.199
+++ sql_semantic.mx     13 Dec 2009 20:33:16 -0000      1.200
@@ -993,14 +993,16 @@
                return NULL;
 
        switch (s->token) {
+/*
        case TR_COMMIT:
        case TR_SAVEPOINT:
        case TR_RELEASE:
        case TR_ROLLBACK:
        case TR_START:
        case TR_MODE:
-               res = transactions(sql, s);
+               res = sql_transactions(sql, s);
                break;
+*/
        case SQL_CREATE_SCHEMA:
        case SQL_DROP_SCHEMA:
        case SQL_CREATE_TABLE:

--- NEW FILE: rel_trans.mx ---
@' The contents of this file are subject to the MonetDB Public License
@' Version 1.1 (the "License"); you may not use this file except in
@' compliance with the License. You may obtain a copy of the License at
@' http://monetdb.cwi.nl/Legal/MonetDBLicense-1.1.html
@'
@' Software distributed under the License is distributed on an "AS IS"
@' basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
@' License for the specific language governing rights and limitations
@' under the License.
@'
@' The Original Code is the MonetDB Database System.
@'
@' The Initial Developer of the Original Code is CWI.
@' Portions created by CWI are Copyright (C) 1997-July 2008 CWI.
@' Copyright August 2008-2009 MonetDB B.V.
@' All Rights Reserved.

@f rel_trans
@a N.J. Nes
@*

@h
#ifndef _REL_TRANS_H_
#define _REL_TRANS_H_

#include "sql_symbol.h"
#include "sql_mvc.h"
#include "sql_relation.h"

#define tr_none         0
#define tr_readonly     1
#define tr_writable     2
#define tr_serializable 4

extern sql_rel *rel_transactions(mvc *sql, symbol *sym);

#endif /*_REL_TRANS_H_*/

@c

#include "sql_config.h"
#include "rel_trans.h"
#include "rel_select.h"
#include "rel_exp.h"
#include "sql_parser.h"

static sql_rel *
rel_trans(int trans_type, int nr, char *name)
{
        sql_rel *rel = rel_create();
        list *exps = new_exp_list();

        append(exps, exp_atom_int(nr));
        if (name)
                append(exps, exp_atom_clob(name));
        rel->l = NULL;
        rel->r = NULL;
        rel->op = op_ddl;
        rel->flag = trans_type;
        rel->exps = exps;
        rel->card = 0;
        rel->nrcols = 0;
        return rel;
}

sql_rel *
rel_transactions(mvc *sql, symbol *s)
{
        sql_rel *ret = NULL;

        switch (s->token) {
        case TR_RELEASE:
                ret = rel_trans(DDL_RELEASE, 0, s->data.sval);
                break;
        case TR_COMMIT:
                assert(s->type == type_int);
                ret = rel_trans(DDL_COMMIT, s->data.i_val, NULL);
                break;
        case TR_SAVEPOINT:
                ret = rel_trans(DDL_COMMIT, 0, s->data.sval);
                break;
        case TR_ROLLBACK: {
                dnode *n = s->data.lval->h;
                assert(n->type == type_int);
                ret= rel_trans(DDL_ROLLBACK, n->data.i_val, n->next->data.sval);
        }       break;
        case TR_START:
        case TR_MODE:
                assert(s->type == type_int);
                ret = rel_trans(DDL_TRANS, s->data.i_val, NULL);
                break;
        default:
                return sql_error(sql, 01, "transaction unknown Symbol(" PTRFMT 
")->token = %s", PTRFMTCAST s, token2string(s->token));
        }
        return ret;
}

Index: sql_trans.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_trans.mx,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -d -r1.29 -r1.30
--- sql_trans.mx        7 Jan 2009 14:19:29 -0000       1.29
+++ sql_trans.mx        13 Dec 2009 20:33:16 -0000      1.30
@@ -34,7 +34,7 @@
 #define tr_writable    2
 #define tr_serializable 4
 
-extern stmt *transactions(mvc *sql, symbol *sym);
+extern stmt *sql_transactions(mvc *sql, symbol *sym);
 
 #endif /*_SQL_TRANS_H_*/
 
@@ -46,7 +46,7 @@
 #include "sql_env.h"
 
 stmt *
-transactions(mvc *sql, symbol *s)
+sql_transactions(mvc *sql, symbol *s)
 {
        int ret = 0;
 

Index: rel_optimizer.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/rel_optimizer.mx,v
retrieving revision 1.78
retrieving revision 1.79
diff -u -d -r1.78 -r1.79
--- rel_optimizer.mx    2 Dec 2009 13:06:09 -0000       1.78
+++ rel_optimizer.mx    13 Dec 2009 20:33:16 -0000      1.79
@@ -106,7 +106,7 @@
        case op_inter: 
        case op_except: 
        case op_topn: 
-       case op_output:
+       case op_ddl:
                return name_find_column( rel->l, rname, name);
        case op_project:
        case op_groupby: 
@@ -189,7 +189,7 @@
        case op_select: 
        case op_groupby: 
        case op_topn: 
-       case op_output:
+       case op_ddl:
                if (rel->l) 
                        rel_properties(sql, gp, rel->l);
                break;
@@ -230,7 +230,7 @@
        case op_insert:
        case op_update:
        case op_delete:
-       case op_output:
+       case op_ddl:
                break;
        }
 }
@@ -2663,7 +2663,7 @@
        case op_insert:
        case op_update:
        case op_delete:
-       case op_output:
+       case op_ddl:
                break;
 
        case op_select: 
@@ -2784,7 +2784,7 @@
        case op_full: 
        case op_semi: 
        case op_anti: 
-       case op_output:
+       case op_ddl:
                return rel;
        }
        return rel;
@@ -2812,7 +2812,7 @@
        case op_insert:
        case op_update:
        case op_delete:
-       case op_output:
+       case op_ddl:
 
                return rel;
 
@@ -3306,7 +3306,7 @@
        case op_select: 
        case op_groupby: 
        case op_topn: 
-       case op_output: 
+       case op_ddl: 
                rel->l = rewrite(sql, rel->l, rewriter);
                break;
        case op_insert:

Index: sql_statement.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_statement.mx,v
retrieving revision 1.194
retrieving revision 1.195
diff -u -d -r1.194 -r1.195
--- sql_statement.mx    29 Nov 2009 09:32:22 -0000      1.194
+++ sql_statement.mx    13 Dec 2009 20:33:16 -0000      1.195
@@ -97,6 +97,7 @@
        st_append,
        st_table_clear,
        st_exception,
+       st_trans,
 
        st_append_col,
        st_append_idx,
@@ -214,6 +215,8 @@
 extern stmt *stmt_append(stmt *c, stmt *values);
 extern stmt *stmt_table_clear(sql_table *t);
 extern stmt *stmt_export(stmt *t, char *sep, char *rsep, char *ssep, char 
*null_string, stmt *file);
+extern stmt *stmt_trans(int type, stmt *chain, stmt *name);
+
 extern stmt *stmt_temp(sql_subtype *t);
 extern stmt *stmt_atom(atom *op1);
 extern stmt *stmt_atom_string(char *s);
@@ -388,6 +391,7 @@
                ST(append);
                ST(table_clear);
                ST(exception);
+               ST(trans);
 
                ST(append_col);
                ST(append_idx);
@@ -635,6 +639,7 @@
                case st_return:
                case st_assign:
                case st_exception:
+               case st_trans:
 
                        if (s->op1.stval)
                                stmt_destroy(s->op1.stval);
@@ -694,7 +699,6 @@
                        if (s->op2.lval)
                                list_destroy(s->op2.lval);
                        break;
-
                case st_aggr:
                        if (s->op1.stval)
                                stmt_destroy(s->op1.stval);
@@ -917,6 +921,7 @@
                case st_var:
                case st_temp:
                case st_atom:
+               case st_trans:
                        break;
 
                        /* special cases */
@@ -1840,6 +1845,17 @@
        return s;
 }
 
+stmt *
+stmt_trans(int type, stmt *chain, stmt *name)
+{
+       stmt *s = stmt_create(st_trans);
+
+       s->op1.stval = chain;
+       s->op2.stval = name;
+       s->flag = type;
+       return s;
+}
+
 void
 stmt_set_nrcols(stmt *s)
 {
@@ -2728,6 +2744,7 @@
                                        stmt_stmt2dot(s->op4.stval, l, i, fp), 
-(s->optimized));
                        break;
 
+               case st_trans:
                case st_atom:
                case st_bat:
                        break;
@@ -2823,6 +2840,8 @@
        case st_rs_column:
        case st_export:
                        printf("export\n"); break;
+       case st_trans:
+                       printf("trans\n"); break;
        case st_affected_rows: 
        case st_while: 
        case st_if: 

Index: rel_dump.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/rel_dump.mx,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -d -r1.43 -r1.44
--- rel_dump.mx 28 Nov 2009 22:56:47 -0000      1.43
+++ rel_dump.mx 13 Dec 2009 20:33:16 -0000      1.44
@@ -211,8 +211,8 @@
                return "basetable";
        case op_table:
                return "table";
-       case op_output:
-               return "output";
+       case op_ddl:
+               return "ddl";
        case op_project:
                return "project";
        case op_select: 
@@ -287,10 +287,11 @@
                if (rel->exps) 
                        exps_print(sql, fout, rel->exps, depth, 1, 0);
                break;
-       case op_output:
+       case op_ddl:
                print_indent(sql, fout, depth);
-               stream_printf(fout, "output");
-               rel_print_(sql, fout, rel->l, depth+1, refs);
+               stream_printf(fout, "ddl");
+               if (rel->l)
+                       rel_print_(sql, fout, rel->l, depth+1, refs);
                if (rel->exps) 
                        exps_print(sql, fout, rel->exps, depth, 1, 0);
                break;
@@ -414,7 +415,7 @@
        switch (rel->op) {
        case op_basetable:
        case op_table:
-       case op_output:
+       case op_ddl:
                break;
        case op_join: 
        case op_left: 

Index: rel_semantic.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/rel_semantic.mx,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -d -r1.41 -r1.42
--- rel_semantic.mx     28 Nov 2009 22:56:47 -0000      1.41
+++ rel_semantic.mx     13 Dec 2009 20:33:16 -0000      1.42
@@ -47,6 +47,7 @@
 #include "rel_semantic.h"
 #include "rel_select.h"
 #include "rel_updates.h"
+#include "rel_trans.h"
 #include "rel_exp.h"
 
 #include <unistd.h>
@@ -185,6 +186,7 @@
        case TR_ROLLBACK:
        case TR_START:
        case TR_MODE:
+               return rel_transactions(sql, s);
 
        case SQL_CREATE_SCHEMA:
        case SQL_DROP_SCHEMA:

Index: sql_mvc.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_mvc.mx,v
retrieving revision 1.229
retrieving revision 1.230
diff -u -d -r1.229 -r1.230
--- sql_mvc.mx  28 Nov 2009 19:57:19 -0000      1.229
+++ sql_mvc.mx  13 Dec 2009 20:33:16 -0000      1.230
@@ -401,7 +401,7 @@
                fprintf(stderr, "mvc_commit %s\n", (name) ? name : "");
 
        if (m->session->status < 0) {
-               GDKerror("COMMIT: transaction is aborted, will ROLLBACK 
instead");
+               (void)sql_error(m, 010, "COMMIT: transaction is aborted, will 
ROLLBACK instead");
                mvc_rollback(m, chain, name);
                return -1;
        }
@@ -435,7 +435,7 @@
        cur -> parent = tr;
        tr = cur;
        if (ok != SQL_OK) {
-               GDKerror("COMMIT: transaction is aborted, will ROLLBACK 
instead");
+               (void)sql_error(m, 010, "COMMIT: transaction is aborted, will 
ROLLBACK instead");
                mvc_rollback(m, chain, name);
                return -1;
        }
@@ -462,7 +462,7 @@
                }
        } else {
                store_unlock();
-               GDKerror("COMMIT: transaction is aborted because of concurency 
conflicts, will ROLLBACK instead");
+               (void)sql_error(m, 010, "COMMIT: transaction is aborted because 
of concurency conflicts, will ROLLBACK instead");
                mvc_rollback(m, chain, name);
                return -1;
        }
@@ -498,7 +498,7 @@
                while (tr && (!tr->name || strcmp(tr->name, name) != 0))
                        tr = tr->parent;
                if (!tr) {
-                       GDKerror("rollback savepoint %s doesn't exists", name);
+                       (void)sql_error(m, 010, "rollback savepoint %s doesn't 
exists", name);
                        m->session->status = -1;
                        store_unlock();
                        return -1;
@@ -558,7 +558,7 @@
        while (tr && (!tr->name || strcmp(tr->name, name) != 0))
                tr = tr->parent;
        if (!tr || !tr->name || strcmp(tr->name, name) != 0) {
-               GDKerror("release savepoint %s doesn't exists", name);
+               (void)sql_error(m, 010, "release savepoint %s doesn't exists", 
name);
                m->session->status = -1;
                return -1;
        }

Index: sql_rel2bin.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_rel2bin.mx,v
retrieving revision 1.141
retrieving revision 1.142
diff -u -d -r1.141 -r1.142
--- sql_rel2bin.mx      28 Nov 2009 19:57:38 -0000      1.141
+++ sql_rel2bin.mx      13 Dec 2009 20:33:16 -0000      1.142
@@ -219,8 +219,8 @@
        case st_affected_rows:
 
        case st_export:
-
        case st_exception:
+       case st_trans:
 
        case st_while:
        case st_if:
@@ -1202,6 +1202,7 @@
        case st_column:
        case st_append:
        case st_exception:
+       case st_trans:
 
        case st_aggr:
        case st_unop:

Index: rel_select.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/rel_select.mx,v
retrieving revision 1.162
retrieving revision 1.163
diff -u -d -r1.162 -r1.163
--- rel_select.mx       4 Dec 2009 14:30:42 -0000       1.162
+++ rel_select.mx       13 Dec 2009 20:33:16 -0000      1.163
@@ -44,7 +44,6 @@
 extern sql_rel *rel_basetable(sql_table *t, char *tname);
 extern sql_rel *rel_recursive_func(list *exps);
 extern sql_rel *rel_table_func(sql_exp *f, list *exps);
-extern sql_rel *rel_output(sql_rel *l, sql_exp *sep, sql_exp *rsep, sql_exp 
*ssep, sql_exp *null_string, sql_exp *file);
 
 extern sql_exp *rel_bind_column( mvc *sql, sql_rel *rel, char *cname, int f );
 extern sql_exp *rel_bind_column2( mvc *sql, sql_rel *rel, char *tname, char 
*cname, int f );
@@ -352,7 +351,7 @@
        case op_update:
        case op_delete:
                break;
-       case op_output:
+       case op_ddl:
                break;
        }
        if (found)
@@ -522,28 +521,6 @@
 }
 
 sql_rel *
-rel_output(sql_rel *l, sql_exp *sep, sql_exp *rsep, sql_exp *ssep, sql_exp 
*null_string, sql_exp *file) 
-{
-       sql_rel *rel = rel_create();
-       list *exps = new_exp_list();
-
-       append(exps, sep);
-       append(exps, rsep);
-       append(exps, ssep);
-       append(exps, null_string);
-       if (file)
-               append(exps, file);
-       rel->l = l;
-       rel->r = NULL;
-       rel->op = op_output;
-       rel->exps = exps;
-       rel->card = 0;
-       rel->nrcols = 0;
-       return rel;
-}
-
-
-sql_rel *
 rel_recursive_func(list *exps) 
 {
        sql_rel *rel = rel_create();

Index: Makefile.ag
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/Makefile.ag,v
retrieving revision 1.80
retrieving revision 1.81
diff -u -d -r1.80 -r1.81
--- Makefile.ag 28 Nov 2009 22:56:46 -0000      1.80
+++ Makefile.ag 13 Dec 2009 20:33:16 -0000      1.81
@@ -62,6 +62,7 @@
                rel_semantic.mx \
                rel_select.mx \
                rel_updates.mx \
+               rel_trans.mx \
                rel_subquery.mx \
                rel_prop.mx \
                rel_exp.mx \

Index: rel_updates.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/rel_updates.mx,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- rel_updates.mx      28 Nov 2009 22:56:47 -0000      1.11
+++ rel_updates.mx      13 Dec 2009 20:33:16 -0000      1.12
@@ -652,6 +652,27 @@
        return res;
 }
 
+static sql_rel *
+rel_output(sql_rel *l, sql_exp *sep, sql_exp *rsep, sql_exp *ssep, sql_exp 
*null_string, sql_exp *file) 
+{
+       sql_rel *rel = rel_create();
+       list *exps = new_exp_list();
+
+       append(exps, sep);
+       append(exps, rsep);
+       append(exps, ssep);
+       append(exps, null_string);
+       if (file)
+               append(exps, file);
+       rel->l = l;
+       rel->r = NULL;
+       rel->op = op_ddl;
+       rel->flag = DDL_OUTPUT;
+       rel->exps = exps;
+       rel->card = 0;
+       rel->nrcols = 0;
+       return rel;
+}
 
 static sql_rel *
 copyto(mvc *sql, symbol *sq, str filename, dlist *seps, str null_string)

Index: rel_bin.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/rel_bin.mx,v
retrieving revision 1.103
retrieving revision 1.104
diff -u -d -r1.103 -r1.104
--- rel_bin.mx  29 Nov 2009 15:57:03 -0000      1.103
+++ rel_bin.mx  13 Dec 2009 20:33:16 -0000      1.104
@@ -3433,6 +3433,72 @@
        return NULL;
 }
 
+#define E_ATOM_INT(e) ((atom*)((sql_exp*)e)->l)->data.val.lval
+#define E_ATOM_STRING(e) ((atom*)((sql_exp*)e)->l)->data.val.sval
+
+static stmt *
+rel2bin_output(mvc *sql, sql_rel *rel, list *refs) 
+{
+       node *n = rel->exps->h;
+       char *tsep = _strdup(E_ATOM_STRING(n->data));
+       char *rsep = _strdup(E_ATOM_STRING(n->next->data));
+       char *ssep = _strdup(E_ATOM_STRING(n->next->next->data));
+       char *ns   = _strdup(E_ATOM_STRING(n->next->next->next->data));
+       char *fn   = NULL;
+       stmt *s = NULL, *fns = NULL;
+       list *slist = create_stmt_list();
+
+       if (rel->l)  /* first construct the sub relation */
+               s = subrel_bin(sql, rel->l, refs);
+       if (!s) 
+               return NULL;    
+
+       if (n->next->next->next->next) {
+               fn = E_ATOM_STRING(n->next->next->next->next->data);
+               fns = stmt_atom_string(_strdup(fn));
+       }
+       list_append(slist, stmt_export(s, tsep, rsep, ssep, ns, fns));
+       if (s->type == st_list && ((stmt*)s->op1.lval->h->data)->nrcols != 0) {
+               stmt *cnt = stmt_aggr(stmt_dup(s->op1.lval->h->data), NULL, 
sql_bind_aggr(sql->session->schema, "count", NULL), 1);
+               list_append(slist, stmt_affected_rows(cnt));
+       } else {
+               list_append(slist, stmt_affected_rows(stmt_atom_wrd(1)));
+       }
+       s = stmt_list(slist);
+       return s;
+}
+
+static stmt *
+rel2bin_trans(mvc *sql, sql_rel *rel, list *refs) 
+{
+       node *en = rel->exps->h;
+       stmt *chain = exp_bin(sql, en->data, NULL, NULL, NULL, NULL);
+       stmt *name = NULL;
+
+       (void)refs;
+       if (en->next)
+               name = exp_bin(sql, en->next->data, NULL, NULL, NULL, NULL);
+       return stmt_trans(rel->flag, chain, name);
+}
+
+static stmt *
+rel2bin_ddl(mvc *sql, sql_rel *rel, list *refs) 
+{
+       stmt *s = NULL;
+
+       if (rel->flag == DDL_OUTPUT) {
+               s = rel2bin_output(sql, rel, refs);
+               sql->type = Q_TABLE;
+       } else if (rel->flag <= DDL_TRANS) {
+               s = rel2bin_trans(sql, rel, refs);
+               sql->type = Q_TRANS;
+       } else {
+               sql->type = Q_SCHEMA;
+               return NULL;
+       }
+       return s;
+}
+
 static stmt *
 subrel_bin(mvc *sql, sql_rel *rel, list *refs) 
 {
@@ -3510,8 +3576,8 @@
                s = rel2bin_delete(sql, rel, refs);
                sql->type = Q_UPDATE;
                break;
-       case op_output:
-               assert(0);
+       case op_ddl:
+               s = rel2bin_ddl(sql, rel, refs);
                break;
        }
        if (s && rel_is_ref(rel)) {
@@ -3541,44 +3607,14 @@
        return s;
 }
 
-#define E_ATOM_STRING(e) ((atom*)((sql_exp*)e)->l)->data.val.sval
-
 stmt *
 output_rel_bin(mvc *sql, sql_rel *rel ) 
 {
-       sql_rel *p = rel;
        list *refs = list_create(NULL);
-       stmt *s = NULL;
-
-       if (is_output(p->op)) 
-               rel = p->l;
-       s = subrel_bin( sql, rel, refs);
-
-       if (s && p != rel) {
-               node *n = p->exps->h;
-               char *tsep = _strdup(E_ATOM_STRING(n->data));
-               char *rsep = _strdup(E_ATOM_STRING(n->next->data));
-               char *ssep = _strdup(E_ATOM_STRING(n->next->next->data));
-               char *ns   = _strdup(E_ATOM_STRING(n->next->next->next->data));
-               char *fn   = NULL;
-               stmt *fns = NULL;
-               list *slist = create_stmt_list();
+       stmt *s = subrel_bin( sql, rel, refs);
 
-               if (n->next->next->next->next) {
-                       fn = E_ATOM_STRING(n->next->next->next->next->data);
-                       fns = stmt_atom_string(_strdup(fn));
-               }
-               list_append(slist, stmt_export(s, tsep, rsep, ssep, ns, fns));
-               if (s->type == st_list && ((stmt*)s->op1.lval->h->data)->nrcols 
!= 0) {
-                       stmt *cnt = stmt_aggr(stmt_dup(s->op1.lval->h->data), 
NULL, sql_bind_aggr(sql->session->schema, "count", NULL), 1);
-                       list_append(slist, stmt_affected_rows(cnt));
-               } else {
-                       list_append(slist, 
stmt_affected_rows(stmt_atom_wrd(1)));
-               }
-               s = stmt_list(slist);
-       } else if (s && s->type != st_none && sql->type == Q_TABLE) {
+       if (!is_ddl(rel->op) && s && s->type != st_none && sql->type == Q_TABLE)
                s = stmt_output(s);
-       }
        list_destroy(refs);
        return s;
 }


------------------------------------------------------------------------------
Return on Information:
Google Enterprise Search pays you back
Get the facts.
http://p.sf.net/sfu/google-dev2dev
_______________________________________________
Monetdb-sql-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-sql-checkins

Reply via email to