Changeset: d28875138d99 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d28875138d99
Modified Files:
        monetdb5/modules/kernel/mmath.mal
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql_statement.c
        sql/backends/monet5/sql_statement.h
Branch: Jul2015
Log Message:

call rand() many times (not just once).


diffs (46 lines):

diff --git a/monetdb5/modules/kernel/mmath.mal 
b/monetdb5/modules/kernel/mmath.mal
--- a/monetdb5/modules/kernel/mmath.mal
+++ b/monetdb5/modules/kernel/mmath.mal
@@ -188,7 +188,7 @@ command rand{unsafe} () :int
 address MATHrandint
 comment "return a random number";
 
-command rand{unsafe} (v:int) :int 
+command rand (v:int) :int 
 address MATHrandintarg
 comment "return a random number";
 
diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -400,6 +400,8 @@ exp_bin(mvc *sql, sql_exp *e, stmt *left
                                        return NULL;
                                if (es->nrcols > nrcols)
                                        nrcols = es->nrcols;
+                               if (es && es->nrcols <= 0 && left && 
has_side_effect(es)) 
+                                       es = stmt_const(sql->sa, 
bin_first_column(sql->sa, left), es);
                                list_append(l,es);
                        }
                        if (sel && strcmp(sql_func_mod(f->func), "calc") == 0 
&& nrcols && strcmp(sql_func_imp(f->func), "ifthenelse") != 0)
diff --git a/sql/backends/monet5/sql_statement.c 
b/sql/backends/monet5/sql_statement.c
--- a/sql/backends/monet5/sql_statement.c
+++ b/sql/backends/monet5/sql_statement.c
@@ -633,7 +633,7 @@ push_project(sql_allocator *sa, stmt *ro
        return val;
 }
 
-static int
+int
 has_side_effect(stmt *val)
 {
        int se = 0;
diff --git a/sql/backends/monet5/sql_statement.h 
b/sql/backends/monet5/sql_statement.h
--- a/sql/backends/monet5/sql_statement.h
+++ b/sql/backends/monet5/sql_statement.h
@@ -255,4 +255,6 @@ extern list *stmt_list_dependencies(sql_
 
 extern stmt *const_column(sql_allocator *sa, stmt *val);
 
+extern int has_side_effect(stmt *val);
+
 #endif /* _SQL_STATEMENT_H_ */
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to