MonetDB: default - disabled until ceptipede matures...

2014-08-06 Thread Niels Nes
Changeset: 7112dfe7e934 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7112dfe7e934
Modified Files:
sql/test/centipede/Tests/All
Branch: default
Log Message:

disabled until ceptipede matures...


diffs (6 lines):

diff --git a/sql/test/centipede/Tests/All b/sql/test/centipede/Tests/All
--- a/sql/test/centipede/Tests/All
+++ b/sql/test/centipede/Tests/All
@@ -1,1 +1,1 @@
-NOT_WIN32?olap
+#NOT_WIN32?olap
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jan2014 - fixed bugs 3505 and 3511

2014-08-06 Thread Niels Nes
Changeset: 516d270cbe32 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=516d270cbe32
Added Files:
sql/test/BugTracker-2014/Tests/boolean_not.Bug-3505.sql
sql/test/BugTracker-2014/Tests/boolean_not.Bug-3505.stable.err
sql/test/BugTracker-2014/Tests/boolean_not.Bug-3505.stable.out
sql/test/BugTracker-2014/Tests/bug_in_cse.Bug-3511.sql
sql/test/BugTracker-2014/Tests/bug_in_cse.Bug-3511.stable.err
sql/test/BugTracker-2014/Tests/bug_in_cse.Bug-3511.stable.out
Modified Files:
sql/server/rel_exp.c
sql/test/BugTracker-2014/Tests/All
Branch: Jan2014
Log Message:

fixed bugs 3505 and 3511


diffs (truncated from 308 to 300 lines):

diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c
--- a/sql/server/rel_exp.c
+++ b/sql/server/rel_exp.c
@@ -738,6 +738,24 @@ exp_match_list( list *l, list *r)
return match;
 }
 
+static int 
+exps_equal( list *l, list *r)
+{
+   node *n, *m;
+
+   if (!l || !r)
+   return l == r;
+   if (list_length(l) != list_length(r))
+   return 0;
+   for (n = l->h, m = r->h; n && m; n = n->next, m = m->next) {
+   sql_exp *le = n->data, *re = m->data;
+
+   if (!exp_match_exp(le,re))
+   return 0;
+   }
+   return 1;
+}
+
 int 
 exp_match_exp( sql_exp *e1, sql_exp *e2)
 {
@@ -769,15 +787,15 @@ exp_match_exp( sql_exp *e1, sql_exp *e2)
break;
case e_aggr:
if (!subaggr_cmp(e1->f, e2->f) && /* equal aggregation*/
-   exp_match_list(e1->l, e2->l) && 
+   exps_equal(e1->l, e2->l) && 
e1->flag == e2->flag)
return 1;
break;
case e_func:
if (!subfunc_cmp(e1->f, e2->f) && /* equal functions */
-   exp_match_list(e1->l, e2->l) &&
+   exps_equal(e1->l, e2->l) &&
/* optional order by expressions */
-   exp_match_list(e1->r, e2->r))
+   exps_equal(e1->r, e2->r))
return 1;
break;
case e_atom:
diff --git a/sql/test/BugTracker-2014/Tests/All 
b/sql/test/BugTracker-2014/Tests/All
--- a/sql/test/BugTracker-2014/Tests/All
+++ b/sql/test/BugTracker-2014/Tests/All
@@ -18,7 +18,9 @@ in_incorrect_multi.Bug-3462
 crash_on_groupby_distinct_serial.Bug-3463
 local-temp-1.Bug-3468
 local-temp-2.Bug-3468
+boolean_not.Bug-3505
 varchar_conversion_crash.Bug-3506
+bug_in_cse.Bug-3511
 stringfloatshtcompare.Bug-3512
 oid-table-assert.Bug-3514
 round-properties.Bug-3515
diff --git a/sql/test/BugTracker-2014/Tests/boolean_not.Bug-3505.sql 
b/sql/test/BugTracker-2014/Tests/boolean_not.Bug-3505.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2014/Tests/boolean_not.Bug-3505.sql
@@ -0,0 +1,16 @@
+start transaction;
+CREATE TABLE BOOLTBL1 (f1 bool);
+INSERT INTO BOOLTBL1 (f1) VALUES (cast('true' AS boolean));
+INSERT INTO BOOLTBL1 (f1) VALUES ('true');
+INSERT INTO BOOLTBL1 (f1) VALUES ('false');
+
+SELECT f1 FROM BOOLTBL1 WHERE f1 = NOT FALSE;
+SELECT f1 FROM BOOLTBL1 WHERE f1 = NOT TRUE;
+
+SELECT f1 FROM BOOLTBL1 WHERE f1 = (NOT FALSE);
+SELECT f1 FROM BOOLTBL1 WHERE NOT FALSE = f1;
+SELECT f1 FROM BOOLTBL1 WHERE NOT f1 = FALSE;
+
+SELECT f1 FROM BOOLTBL1 WHERE f1 = (NOT TRUE);
+SELECT f1 FROM BOOLTBL1 WHERE NOT TRUE = f1;
+SELECT f1 FROM BOOLTBL1 WHERE NOT f1 = TRUE;
diff --git a/sql/test/BugTracker-2014/Tests/boolean_not.Bug-3505.stable.err 
b/sql/test/BugTracker-2014/Tests/boolean_not.Bug-3505.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2014/Tests/boolean_not.Bug-3505.stable.err
@@ -0,0 +1,35 @@
+stderr of test 'boolean_not.Bug-3505` in directory 'sql/test/BugTracker-2014` 
itself:
+
+
+# 19:06:47 >  
+# 19:06:47 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=38042" "--set" 
"mapi_usock=/var/tmp/mtest-25685/.s.monetdb.38042" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/home/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2014"
 "--set" "mal_listing=0"
+# 19:06:47 >  
+
+# builtin opt  gdk_dbpath = 
/home/niels/scratch/rc-clean/Linux-x86_64/var/monetdb5/dbfarm/demo
+# builtin opt  gdk_debug = 0
+# builtin opt  gdk_vmtrim = no
+# builtin opt  monet_prompt = >
+# builtin opt  monet_daemon = no
+# builtin opt  mapi_port = 5
+# builtin opt  mapi_open = false
+# builtin opt  mapi_autosense = false
+# builtin opt  sql_optimizer = default_pipe
+# builtin opt  sql_debug = 0
+# cmdline opt  gdk_nr_threads = 0
+# cmdline opt  mapi_open = true
+# cmdline opt  mapi_port = 38042
+# cmdline opt  mapi_usock = /var/tmp/mtest-25685/.s.monetdb.38042
+# cmdline opt  monet_prompt = 
+# c

MonetDB: Jan2014 - fixed bug 3523 (which also fixed 3526). Make ...

2014-08-06 Thread Niels Nes
Changeset: 39b41810dc43 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=39b41810dc43
Added Files:
sql/test/BugTracker-2014/Tests/orderby_count.Bug-3526.sql
sql/test/BugTracker-2014/Tests/orderby_count.Bug-3526.stable.err
sql/test/BugTracker-2014/Tests/orderby_count.Bug-3526.stable.out
sql/test/BugTracker-2014/Tests/unsafe_project_push_down.Bug-3523.sql

sql/test/BugTracker-2014/Tests/unsafe_project_push_down.Bug-3523.stable.err

sql/test/BugTracker-2014/Tests/unsafe_project_push_down.Bug-3523.stable.out
Modified Files:
sql/server/rel_exp.c
sql/server/rel_exp.h
sql/server/rel_optimizer.c
sql/test/BugTracker-2014/Tests/All
Branch: Jan2014
Log Message:

fixed bug 3523 (which also fixed 3526). Make sure we only push down a project
without window functions


diffs (truncated from 305 to 300 lines):

diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c
--- a/sql/server/rel_exp.c
+++ b/sql/server/rel_exp.c
@@ -1159,6 +1159,33 @@ exp_has_func( sql_exp *e )
return 0;
 }
 
+int
+exp_unsafe( sql_exp *e) 
+{
+   if (!e)
+   return 0;
+
+   if (e->type != e_func && e->type != e_convert)
+   return 0;
+
+   if (e->type == e_func && e->card == CARD_AGGR)
+   return 1;
+   if (e->type == e_convert && e->l)
+   return exp_unsafe(e->l);
+   if (e->type == e_func && e->l) {
+   list *args = e->l;
+   node *n;
+
+   for(n = args->h; n; n = n->next) {
+   sql_exp *e = n->data;
+
+   if (exp_unsafe(e))
+   return 1;   
+   }
+   }
+   return 0;
+}
+
 static int
 exp_key( sql_exp *e )
 {
diff --git a/sql/server/rel_exp.h b/sql/server/rel_exp.h
--- a/sql/server/rel_exp.h
+++ b/sql/server/rel_exp.h
@@ -113,6 +113,7 @@ extern int exp_is_join_exp(sql_exp *e);
 extern int exp_is_atom(sql_exp *e);
 extern int exps_are_atoms(list *exps);
 extern int exp_has_func(sql_exp *e);
+extern int exp_unsafe(sql_exp *e);
 
 extern int rel_has_exp(sql_rel *rel, sql_exp *e);
 extern sql_rel *find_rel(list *rels, sql_exp *e);
@@ -130,4 +131,5 @@ extern int exps_intern(list *exps);
 extern char *compare_func( comp_type t );
 extern int is_identity( sql_exp *e, sql_rel *r);
 
+
 #endif /* _REL_EXP_H_ */
diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -1292,7 +1292,7 @@ project_unsafe(sql_rel *rel)
sql_exp *e = n->data;
 
/* aggr func in project ! */
-   if (e->type == e_func && e->card == CARD_AGGR)
+   if (exp_unsafe(e))
return 1;
}
return 0;
diff --git a/sql/test/BugTracker-2014/Tests/All 
b/sql/test/BugTracker-2014/Tests/All
--- a/sql/test/BugTracker-2014/Tests/All
+++ b/sql/test/BugTracker-2014/Tests/All
@@ -23,4 +23,6 @@ stringfloatshtcompare.Bug-3512
 oid-table-assert.Bug-3514
 round-properties.Bug-3515
 union_with_subqueries.Bug-3518
+unsafe_project_push_down.Bug-3523
 non_groupby_column.Bug-3524
+orderby_count.Bug-3526
diff --git a/sql/test/BugTracker-2014/Tests/orderby_count.Bug-3526.sql 
b/sql/test/BugTracker-2014/Tests/orderby_count.Bug-3526.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2014/Tests/orderby_count.Bug-3526.sql
@@ -0,0 +1,9 @@
+start transaction;
+create table a (k varchar(64),v boolean);
+insert into a values ('one',true),('two',false),('one',false);
+create table b (k varchar(64));
+insert into b values ('two'),('two'),('two');
+select * from a;
+select * from b;
+select k, v from a union all select k,NULL from b;
+select k,count(*),count(v) from (select k,v from a union all select k,null 
from b) as t(k,v) group by k order by count(*) desc;
diff --git a/sql/test/BugTracker-2014/Tests/orderby_count.Bug-3526.stable.err 
b/sql/test/BugTracker-2014/Tests/orderby_count.Bug-3526.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2014/Tests/orderby_count.Bug-3526.stable.err
@@ -0,0 +1,35 @@
+stderr of test 'orderby_count.Bug-3526` in directory 
'sql/test/BugTracker-2014` itself:
+
+
+# 17:12:12 >  
+# 17:12:12 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=33631" "--set" 
"mapi_usock=/var/tmp/mtest-917/.s.monetdb.33631" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/home/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2014"
 "--set" "mal_listing=0"
+# 17:12:12 >  
+
+# builtin opt  gdk_dbpath = 
/home/niels/scratch/rc-clean/Linux-x86_64/var/monetdb5/dbfarm/demo
+# builtin opt  gdk_debug = 0
+# builtin opt  gdk_vmtrim = no
+# builtin opt  monet_prompt = >
+# builtin opt  monet_daemon = no
+# builtin opt  mapi_port = 5
+# builtin opt  mapi_open = false
+# builtin opt  mapi_autosense 

MonetDB: default - fix manifold for fixed sized, external types

2014-08-06 Thread Niels Nes
Changeset: dd2ab2bc72e9 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=dd2ab2bc72e9
Modified Files:
gdk/gdk_cross.c
monetdb5/modules/mal/manifold.c
monetdb5/optimizer/opt_support.c
Branch: default
Log Message:

fix manifold for fixed sized, external types


diffs (98 lines):

diff --git a/gdk/gdk_cross.c b/gdk/gdk_cross.c
--- a/gdk/gdk_cross.c
+++ b/gdk/gdk_cross.c
@@ -63,6 +63,8 @@ BATcross1(BAT **r1p, BAT **r2p, BAT *l, 
bn2->tdense = bn2->tkey != 0;
bn2->T->nil = 0;
bn2->T->nonil = 1;
+   BATseqbase(BATmirror(bn1), l->hseqbase);
+   BATseqbase(BATmirror(bn2), r->hseqbase);
*r1p = bn1;
*r2p = bn2;
return GDK_SUCCEED;
diff --git a/monetdb5/modules/mal/manifold.c b/monetdb5/modules/mal/manifold.c
--- a/monetdb5/modules/mal/manifold.c
+++ b/monetdb5/modules/mal/manifold.c
@@ -72,12 +72,16 @@ typedef struct{
if (msg)\
break;  \
for( i = mut->fvar; i<= mut->lvar; i++) {   \
-   if(!ATOMvarsized(mut->args[i].type)){   \
+   if(ATOMstorage(mut->args[i].type) < TYPE_str){  \
args[i] += mut->args[i].size;   \
-   } else {\
+   } else if (ATOMvarsized(mut->args[i].type)) { \
mut->args[i].o++;   \
mut->args[i].s = (str *) 
BUNtail(mut->args[i].bi, mut->args[i].o); \
args[i] = (void*)  &mut->args[i].s;  \
+   } else { \
+   mut->args[i].o++;   \
+   mut->args[i].s = (str *) Tloc(mut->args[i].b, 
mut->args[i].o); \
+   args[i] = (void*)  &mut->args[i].s;  \
}   \
}   \
v++;\
@@ -102,11 +106,15 @@ default:\
break;  \
bunfastapp(mut->args[0].b, (void*) y);  \
for( i = mut->fvar; i<= mut->lvar; i++) {   \
-   if(!ATOMvarsized(mut->args[i].type)){   \
+   if(ATOMstorage(mut->args[i].type) < TYPE_str){  \
args[i] += mut->args[i].size;   \
+   } else if(ATOMvarsized(mut->args[i].type)){ \
+   mut->args[i].o++;   \
+   mut->args[i].s = (str*) 
BUNtail(mut->args[i].bi, mut->args[i].o);\
+   args[i] =  (void*) & mut->args[i].s;\
} else {\
mut->args[i].o++;   \
-   mut->args[i].s = (str*) 
BUNtail(mut->args[i].bi, mut->args[i].o);\
+   mut->args[i].s = (str*) Tloc(mut->args[i].b, 
mut->args[i].o);\
args[i] =  (void*) & mut->args[i].s;\
}   \
}   \
@@ -130,10 +138,13 @@ MANIFOLDjob(MULTItask *mut)
// the mod.fcn arguments are ignored from the call
for( i = mut->pci->retc+2; i< mut->pci->argc; i++) {
if ( mut->args[i].b ){
-   if (!ATOMvarsized(mut->args[i].type)) {
+   if(ATOMstorage(mut->args[i].type) < TYPE_str){  \
args[i] = (char*) mut->args[i].first;
+   } else if(ATOMvarsized(mut->args[i].type)){ \
+   mut->args[i].s = (str*) 
BUNtail(mut->args[i].bi, mut->args[i].o);
+   args[i] =  (void*) & mut->args[i].s; 
} else {
-   mut->args[i].s = (str*) 
BUNtail(mut->args[i].bi, mut->args[i].o);
+   mut->args[i].s = (str*) Tloc(mut->args[i].b, 
mut->args[i].o);
args[i] =  (void*) & mut->args[i].s; 
}
} else {
@@ -307,7 +318,7 @@ MANIFOLDevaluate(Client cntxt, MalBlkPtr
freeInstruction(mut.pci);
 
// consolidate the properties
-   if (!ATOMvarsized(mat[0].b->ttype))
+   if (ATOMstorage(mat[0].b->ttype) < TYPE_str)
BATsetcount(mat[0].b,cnt);
BATsettrivprop(mat[0].b);
BATderiveProps(mat[0].b, TRUE);
diff --git a/monetdb5/optimizer/opt_support.c b/monetdb5/optimizer/opt_support.c
--- a/monetdb5/optimizer/opt_support.c
+++ b/monetdb5/optimizer/opt_support.c
@@ -840,6 +840,7 @@ int isAllScalar(MalBlkPtr mb, InstrPtr p
 int isM

MonetDB: Jan2014 - fixed bug 3524, ie improved error message for...

2014-08-06 Thread Niels Nes
Changeset: 8e2e4bcad4bb for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8e2e4bcad4bb
Added Files:
sql/test/BugTracker-2014/Tests/non_groupby_column.Bug-3524.sql
sql/test/BugTracker-2014/Tests/non_groupby_column.Bug-3524.stable.err
sql/test/BugTracker-2014/Tests/non_groupby_column.Bug-3524.stable.out
Modified Files:
sql/server/rel_select.c

sql/test/BugTracker-2013/Tests/cannot_use_columns_after_groupby.Bug-3340.stable.err
sql/test/BugTracker-2014/Tests/All
Branch: Jan2014
Log Message:

fixed bug 3524, ie improved error message for using non group by columns in 
group by result


diffs (147 lines):

diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -1771,8 +1771,12 @@ rel_column_ref(mvc *sql, sql_rel **rel, 
}
if (!exp && var)
return rel_var_ref(sql, name, 0);
-   if (!exp && !var)
-   return sql_error(sql, 02, "SELECT: identifier '%s' 
unknown", name);
+   if (!exp && !var) {
+   if (rel && *rel && (*rel)->card == CARD_AGGR && f == 
sql_sel)
+   return sql_error(sql, 02, "SELECT: cannot use 
non GROUP BY column '%s' in query results without an aggregate function", name);
+   else
+   return sql_error(sql, 02, "SELECT: identifier 
'%s' unknown", name);
+   }

} else if (dlist_length(l) == 2) {
char *tname = l->h->data.sval;
@@ -1795,8 +1799,12 @@ rel_column_ref(mvc *sql, sql_rel **rel, 
exp = rel_bind_column(sql, *rel, cname, f);
}
}
-   if (!exp)
-   return sql_error(sql, 02, "42S22!SELECT: no such column 
'%s.%s'", tname, cname);
+   if (!exp) {
+   if (rel && *rel && (*rel)->card == CARD_AGGR && f == 
sql_sel)
+   return sql_error(sql, 02, "SELECT: cannot use 
non GROUP BY column '%s.%s' in query results without an aggregate function", 
tname, cname);
+   else
+   return sql_error(sql, 02, "42S22!SELECT: no 
such column '%s.%s'", tname, cname);
+   }
} else if (dlist_length(l) >= 3) {
return sql_error(sql, 02, "TODO: column names of level >= 3");
}
diff --git 
a/sql/test/BugTracker-2013/Tests/cannot_use_columns_after_groupby.Bug-3340.stable.err
 
b/sql/test/BugTracker-2013/Tests/cannot_use_columns_after_groupby.Bug-3340.stable.err
--- 
a/sql/test/BugTracker-2013/Tests/cannot_use_columns_after_groupby.Bug-3340.stable.err
+++ 
b/sql/test/BugTracker-2013/Tests/cannot_use_columns_after_groupby.Bug-3340.stable.err
@@ -28,9 +28,9 @@ stderr of test 'cannot_use_columns_after
 # 20:54:49 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-27846" "--port=35773"
 # 20:54:49 >  
 
-MAPI  = (monetdb) /var/tmp/mtest-27846/.s.monetdb.35773
+MAPI  = (monetdb) /var/tmp/mtest-5110/.s.monetdb.34599
 QUERY = select "function", (sum(fv.claim_tb) - sum(fv.used_tb)) * 100 / 
toc.total_overcapacity from sys.filer_volumes as fv, (select sum(claim_tb) - 
sum(used_tb) as total_overcapacity from sys.filer_volumes) as toc group by 
fv."function" order by fv."function";
-ERROR = !SELECT: no such column 'toc.total_overcapacity'
+ERROR = !SELECT: cannot use non GROUP BY column 'toc.total_overcapacity' in 
query results without an aggregate function
 
 # 20:54:49 >  
 # 20:54:49 >  "Done."
diff --git a/sql/test/BugTracker-2014/Tests/All 
b/sql/test/BugTracker-2014/Tests/All
--- a/sql/test/BugTracker-2014/Tests/All
+++ b/sql/test/BugTracker-2014/Tests/All
@@ -23,3 +23,4 @@ stringfloatshtcompare.Bug-3512
 oid-table-assert.Bug-3514
 round-properties.Bug-3515
 union_with_subqueries.Bug-3518
+non_groupby_column.Bug-3524
diff --git a/sql/test/BugTracker-2014/Tests/non_groupby_column.Bug-3524.sql 
b/sql/test/BugTracker-2014/Tests/non_groupby_column.Bug-3524.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2014/Tests/non_groupby_column.Bug-3524.sql
@@ -0,0 +1,4 @@
+start transaction;
+
+create table agg_error (a bool, b bool);
+select max(a), b from agg_error group by a;
diff --git 
a/sql/test/BugTracker-2014/Tests/non_groupby_column.Bug-3524.stable.err 
b/sql/test/BugTracker-2014/Tests/non_groupby_column.Bug-3524.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2014/Tests/non_groupby_column.Bug-3524.stable.err
@@ -0,0 +1,38 @@
+stderr of test 'non_groupby_column.Bug-3524` in directory 
'sql/test/BugTracker-2014` itself:
+
+
+# 11:15:00 >  
+# 11:15:00 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=32287" "--set" 
"mapi_usock=/var/tmp/mtest-4352/.s.monetdb.32287" "--set" "monet_prompt=" 
"--force

MonetDB: default - merged

2014-08-06 Thread Niels Nes
Changeset: 38ca25bf505a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=38ca25bf505a
Modified Files:
monetdb5/modules/mal/mal_init.mal
Branch: default
Log Message:

merged


diffs (11 lines):

diff --git a/monetdb5/modules/mal/mal_init.mal 
b/monetdb5/modules/mal/mal_init.mal
--- a/monetdb5/modules/mal/mal_init.mal
+++ b/monetdb5/modules/mal/mal_init.mal
@@ -47,7 +47,6 @@ include status;
 include groupby;
 include group;
 include aggr;
-include array;
 include mkey;
 
 # Atom extensions
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - manifold should also work on external/varsize...

2014-08-06 Thread Niels Nes
Changeset: 123fa0b0a7b0 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=123fa0b0a7b0
Modified Files:
monetdb5/modules/mal/manifold.c
Branch: default
Log Message:

manifold should also work on external/varsized types


diffs (152 lines):

diff --git a/monetdb5/modules/mal/manifold.c b/monetdb5/modules/mal/manifold.c
--- a/monetdb5/modules/mal/manifold.c
+++ b/monetdb5/modules/mal/manifold.c
@@ -30,12 +30,15 @@
 /* The default iterator over known scalar commands.
  * It can be less efficient then the vector based implementations,
  * but saves quite some hacking in non-essential cases or
- * expensive user defined functions..
+ * expensive user defined functions.
  *
  * To keep things simple and reasonably performant we limit the
  * implementation to those cases where a single BAT is returned.
  * Arguments may be of any type. The MAL signature should be a COMMAND.
  *
+ * The functionality has been extended to also perform the manifold
+ * over aligned BATs, provided the underlying scalar function carries
+ * the 'manifold' property.
  */
 
 typedef struct{
@@ -69,10 +72,10 @@ typedef struct{
if (msg)\
break;  \
for( i = mut->fvar; i<= mut->lvar; i++) {   \
-   if( ATOMstorage(mut->args[i].type) != TYPE_str){ \
-   args[i] += mut->args[i].size;\
-   } else {\
-   mut->args[i].o++;   \
+   if(!ATOMvarsized(mut->args[i].type)){   \
+   args[i] += mut->args[i].size;   \
+   } else {\
+   mut->args[i].o++;   \
mut->args[i].s = (str *) 
BUNtail(mut->args[i].bi, mut->args[i].o); \
args[i] = (void*)  &mut->args[i].s;  \
}   \
@@ -92,13 +95,14 @@ case TYPE_oid: ManifoldLoop(oid,__VA_ARG
 case TYPE_flt: ManifoldLoop(flt,__VA_ARGS__); break;\
 case TYPE_dbl: ManifoldLoop(dbl,__VA_ARGS__); break;\
 case TYPE_str: \
+default:\
for( ; p< q ; p += mut->args[mut->fvar].size){  \
msg = (*mut->pci->fcn)(&y, __VA_ARGS__);\
if (msg)\
break;  \
bunfastapp(mut->args[0].b, (void*) y);  \
for( i = mut->fvar; i<= mut->lvar; i++) {   \
-   if( ATOMstorage(mut->args[i].type) !=  TYPE_str){\
+   if(!ATOMvarsized(mut->args[i].type)){   \
args[i] += mut->args[i].size;   \
} else {\
mut->args[i].o++;   \
@@ -107,9 +111,6 @@ case TYPE_str: \
}   \
}   \
}   \
-   break;  \
-default:   \
-   msg= createException(MAL,"mal.manifold","manifold call limitation 
(unknown type?) ");\
 }
 
 // single argument is preparatory step for GDK_mapreduce
@@ -127,16 +128,18 @@ MANIFOLDjob(MULTItask *mut)
throw(MAL,"mal.manifold",MAL_MALLOC_FAIL);

// the mod.fcn arguments are ignored from the call
-   for( i = mut->pci->retc+2; i< mut->pci->argc; i++)
-   if ( mut->args[i].b ){
-   if ( ATOMstorage(mut->args[i].type) != TYPE_str)
-   args[i] = (char*) mut->args[i].first;
-   else {
-   mut->args[i].s = (str*) BUNtail(mut->args[i].bi, 
mut->args[i].o);
-   args[i] =  (void*) & mut->args[i].s; 
+   for( i = mut->pci->retc+2; i< mut->pci->argc; i++) {
+   if ( mut->args[i].b ){
+   if (!ATOMvarsized(mut->args[i].type)) {
+   args[i] = (char*) mut->args[i].first;
+   } else {
+   mut->args[i].s = (str*) 
BUNtail(mut->args[i].bi, mut->args[i].o);
+   args[i] =  (void*) & mut->args[i].s; 
+   }
+   } else {
+   args[i] = (char*) getArgReference(mut->stk,mut->pci,i);
}
-   } else
-   args[i] = (char*) getArgReference(mut->stk,mut->pci,i);
+   }
 
 #ifdef _DEBUG_MANIFOLD_
mnstr_printf(mut->cntxt->fdout,"#MANIFOLDjob fvar %d lvar %d type 
%d\n",mut->fvar,mut->lvar, ATOMstorage(mut->args[mut->fvar].b->ttype));
@@ -168,29 +171,27 @@ MANIFOLDty