MonetDB: default - added upgrade code, ie for the recent changes...

2014-06-18 Thread Niels Nes
Changeset: cc51132c41b0 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=cc51132c41b0
Modified Files:
gdk/gdk_logger.c
gdk/gdk_logger.h
sql/backends/monet5/sql_scenario.c
sql/storage/bat/bat_logger.c
sql/storage/store.c
Branch: default
Log Message:

added upgrade code, ie for the recent changes in functions (var arg/res), 
schema (system column) and argument inout column added.

Logger can now handle a much larger amount of changes (64 bits).
added upgrade code for this aswell.

updated the version number in sql, ie users of default should dump
restore.


diffs (285 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -108,7 +108,7 @@ static char *log_commands[] = {
 typedef struct logformat_t {
char flag;
int tid;
-   int nr;
+   lng nr;
 } logformat;
 
 #define LOGFILE log
@@ -138,10 +138,24 @@ logbat_new(int tt, BUN size)
 }
 
 static int
+log_read_format_old(logger *l, logformat *data)
+{
+   int nr = 0;
+   int ok =  mnstr_read(l-log, data-flag, 1, 1) == 1 
+   mnstr_readInt(l-log, nr) == 1 
+   mnstr_readInt(l-log, data-tid) == 1;
+   data-nr = nr;
+   return ok;
+}
+
+static int
 log_read_format(logger *l, logformat *data)
 {
+   if (l-postfuncp) /* we need to convert from the old logformat, 
+needs to be removed once we released 
Aug2014 */
+   return log_read_format_old(l, data);
return mnstr_read(l-log, data-flag, 1, 1) == 1 
-   mnstr_readInt(l-log, data-nr) == 1 
+   mnstr_readLng(l-log, data-nr) == 1 
mnstr_readInt(l-log, data-tid) == 1;
 }
 
@@ -149,7 +163,7 @@ static int
 log_write_format(logger *l, logformat *data)
 {
if (mnstr_write(l-log, data-flag, 1, 1) == 1 
-   mnstr_writeInt(l-log, data-nr) 
+   mnstr_writeLng(l-log, data-nr) 
mnstr_writeInt(l-log, data-tid))
return LOG_OK;
fprintf(stderr, !ERROR: log_write_format: write failed\n);
@@ -246,7 +260,7 @@ la_bat_clear(logger *lg, logaction *la)
 static int
 log_read_seq(logger *lg, logformat *l)
 {
-   int seq = l-nr;
+   lng seq = l-nr;
lng val;
BUN p;
 
@@ -273,7 +287,7 @@ log_read_updates(logger *lg, trans *tr, 
int ht = -1, tt = -1, hseq = 0, tseq = 0;
 
if (lg-debug  1)
-   fprintf(stderr, #logger found log_read_updates %s %s %d\n, 
name, l-flag == LOG_INSERT ? insert : l-flag == LOG_DELETE ? delete : 
update, l-nr);
+   fprintf(stderr, #logger found log_read_updates %s %s  LLFMT 
\n, name, l-flag == LOG_INSERT ? insert : l-flag == LOG_DELETE ? delete 
: update, l-nr);
 
if (b) {
ht = b-htype;
@@ -806,7 +820,7 @@ logger_readlog(logger *lg, char *filenam
fprintf(stderr, %s, log_commands[(int) 
l.flag]);
else
fprintf(stderr, %d, l.flag);
-   fprintf(stderr,  %d %d, l.tid, l.nr);
+   fprintf(stderr,  %d  LLFMT, l.tid, l.nr);
if (name)
fprintf(stderr,  %s, name);
fprintf(stderr, \n);
@@ -1789,7 +1803,7 @@ log_delta(logger *lg, BAT *b, char *name
}
 
if (lg-debug  1)
-   fprintf(stderr, #Logged %s %d inserts\n, name, l.nr);
+   fprintf(stderr, #Logged %s  LLFMT  inserts\n, name, 
l.nr);
}
if (ok == GDK_FAIL)
fprintf(stderr, !ERROR: log_delta: write failed\n);
@@ -1840,7 +1854,7 @@ log_bat(logger *lg, BAT *b, char *name)
}
 
if (lg-debug  1)
-   fprintf(stderr, #Logged %s %d inserts\n, name, l.nr);
+   fprintf(stderr, #Logged %s  LLFMT  inserts\n, name, 
l.nr);
}
l.nr = (int) (b-batFirst - b-batDeleted);
lg-changes += l.nr;
@@ -1864,7 +1878,7 @@ log_bat(logger *lg, BAT *b, char *name)
}
 
if (lg-debug  1)
-   fprintf(stderr, #Logged %s %d deletes\n, name, l.nr);
+   fprintf(stderr, #Logged %s  LLFMT  deletes\n, name, 
l.nr);
}
if (ok == GDK_FAIL)
fprintf(stderr, !ERROR: log_bat: write failed\n);
diff --git a/gdk/gdk_logger.h b/gdk/gdk_logger.h
--- a/gdk/gdk_logger.h
+++ b/gdk/gdk_logger.h
@@ -25,7 +25,7 @@
 
 typedef struct logaction {
int type;   /* type of change */
-   int nr;
+   lng nr;
int ht; /* vid(-1),void etc */
int tt;
lng id;
diff --git a/sql/backends/monet5/sql_scenario.c 
b/sql/backends/monet5/sql_scenario.c
--- a/sql/backends/monet5/sql_scenario.c
+++ b/sql/backends/monet5/sql_scenario.c
@@ -600,11 +600,7 @@ 

MonetDB: default - more 64 bit logger fixes.

2014-06-22 Thread Niels Nes
Changeset: 5758831bafd3 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5758831bafd3
Modified Files:
gdk/gdk_logger.c
Branch: default
Log Message:

more 64 bit logger fixes.


diffs (32 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -1780,8 +1780,8 @@ log_delta(logger *lg, BAT *b, char *name
 
l.tid = lg-tid;
nr = (BUNlast(b) - BUNfirst(b));
-   assert(nr = GDK_int_max);
-   l.nr = (int) nr;
+   assert(nr = GDK_lng_max);
+   l.nr = nr;
lg-changes += l.nr;
 
if (l.nr) {
@@ -1823,7 +1823,7 @@ log_bat(logger *lg, BAT *b, char *name)
}
 
l.tid = lg-tid;
-   l.nr = (int) (BUNlast(b) - b-batInserted);
+   l.nr = (BUNlast(b) - b-batInserted);
lg-changes += l.nr;
 
if (l.nr) {
@@ -1856,7 +1856,7 @@ log_bat(logger *lg, BAT *b, char *name)
if (lg-debug  1)
fprintf(stderr, #Logged %s  LLFMT  inserts\n, name, 
l.nr);
}
-   l.nr = (int) (b-batFirst - b-batDeleted);
+   l.nr = (b-batFirst - b-batDeleted);
lg-changes += l.nr;
 
if (l.nr  ok == GDK_SUCCEED) {
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - more 64/32 bit fixes for logger structures

2014-06-22 Thread Niels Nes
Changeset: 6d2a1683974c for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6d2a1683974c
Modified Files:
gdk/gdk_logger.h
Branch: default
Log Message:

more 64/32 bit fixes for logger structures


diffs (12 lines):

diff --git a/gdk/gdk_logger.h b/gdk/gdk_logger.h
--- a/gdk/gdk_logger.h
+++ b/gdk/gdk_logger.h
@@ -49,7 +49,7 @@ typedef void (*postversionfix_fptr)(void
 
 typedef struct logger {
int debug;
-   size_t changes;
+   lng changes;
int version;
lng id;
int tid;
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - fix compilation on windows

2014-06-22 Thread Niels Nes
Changeset: c43ef3958880 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c43ef3958880
Modified Files:
gdk/gdk_logger.c
Branch: default
Log Message:

fix compilation on windows


diffs (12 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -832,7 +832,7 @@ logger_readlog(logger *lg, char *filenam
case LOG_START:
if (l.nr  lg-tid)
lg-tid = l.nr;
-   tr = tr_create(tr, l.nr);
+   tr = tr_create(tr, (int)l.nr);
if (lg-debug  1)
fprintf(stderr, #logger tstart %d\n, tr-tid);
break;
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - more 32 bit compilation fixes.

2014-06-23 Thread Niels Nes
Changeset: a221f132256f for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a221f132256f
Modified Files:
gdk/gdk_logger.c
Branch: default
Log Message:

more 32 bit compilation fixes.


diffs (21 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -1771,7 +1771,7 @@ log_delta(logger *lg, BAT *b, char *name
int ok = GDK_SUCCEED;
logformat l;
BUN p;
-   BUN nr;
+   lng nr;
 
if (lg-debug  128) {
/* logging is switched off */
@@ -1842,7 +1842,7 @@ log_bat(logger *lg, BAT *b, char *name)
!isVIEW(b)) {
const void *t = BUNtail(bi, b-batInserted);
 
-   ok = wt(t, lg-log, l.nr);
+   ok = wt(t, lg-log, (size_t)l.nr);
} else {
for (p = b-batInserted; p  BUNlast(b)  ok == 
GDK_SUCCEED; p++) {
const void *h = BUNhead(bi, p);
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - fixed lng vs int problem on windows

2014-06-23 Thread Niels Nes
Changeset: de6dd386edca for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=de6dd386edca
Modified Files:
gdk/gdk_logger.c
Branch: default
Log Message:

fixed lng vs int problem on windows


diffs (12 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -831,7 +831,7 @@ logger_readlog(logger *lg, char *filenam
switch (l.flag) {
case LOG_START:
if (l.nr  lg-tid)
-   lg-tid = l.nr;
+   lg-tid = (int)l.nr;
tr = tr_create(tr, (int)l.nr);
if (lg-debug  1)
fprintf(stderr, #logger tstart %d\n, tr-tid);
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jan2014 - add not true/not false parsing (solving bug 3...

2014-07-09 Thread Niels Nes
Changeset: be17bc388a09 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=be17bc388a09
Modified Files:
sql/server/sql_parser.y
Branch: Jan2014
Log Message:

add not true/not false parsing (solving bug 3505)


diffs (22 lines):

diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y
--- a/sql/server/sql_parser.y
+++ b/sql/server/sql_parser.y
@@ -4272,10 +4272,18 @@ literal:
{ sql_subtype t;
  sql_find_subtype(t, boolean, 0, 0 );
  $$ = _newAtomNode( atom_bool(SA, t, FALSE)); }
+ |  NOT BOOL_FALSE
+   { sql_subtype t;
+ sql_find_subtype(t, boolean, 0, 0 );
+ $$ = _newAtomNode( atom_bool(SA, t, TRUE)); }
  |  BOOL_TRUE
{ sql_subtype t;
  sql_find_subtype(t, boolean, 0, 0 );
  $$ = _newAtomNode( atom_bool(SA, t, TRUE)); }
+ |  NOT BOOL_TRUE
+   { sql_subtype t;
+ sql_find_subtype(t, boolean, 0, 0 );
+ $$ = _newAtomNode( atom_bool(SA, t, FALSE)); }
  ;
 
 interval_expression:
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jan2014 - don't assert but return error on atom_cast (f...

2014-07-09 Thread Niels Nes
Changeset: 17cd8c14c3b4 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=17cd8c14c3b4
Modified Files:
sql/server/sql_atom.c
Branch: Jan2014
Log Message:

don't assert but return error on atom_cast (fix bug 3506)


diffs (83 lines):

diff --git a/sql/server/sql_atom.c b/sql/server/sql_atom.c
--- a/sql/server/sql_atom.c
+++ b/sql/server/sql_atom.c
@@ -657,21 +657,24 @@ atom_cast(atom *a, sql_subtype *tp)
else
a-data.val.lval *= mul;
} else if (a-data.vtype == TYPE_int) {
-   assert(div || ((lng) GDK_int_min = (lng) 
a-data.val.ival * mul  (lng) a-data.val.ival * mul = (lng) GDK_int_max));
+   if (!div  ((lng) GDK_int_min  (lng) 
a-data.val.ival * mul || (lng) a-data.val.ival * mul  (lng) GDK_int_max))
+   return 0;
a-data.val.ival += (int)rnd;
if (div)
a-data.val.ival /= (int) mul;
else
a-data.val.ival *= (int) mul;
} else if (a-data.vtype == TYPE_sht) {
-   assert(div || ((lng) GDK_sht_min = (lng) 
a-data.val.shval * mul  (lng) a-data.val.shval * mul = (lng) GDK_sht_max));
+   if (!div  ((lng) GDK_sht_min  (lng) 
a-data.val.shval * mul || (lng) a-data.val.shval * mul  (lng) GDK_sht_max))
+   return 0;
a-data.val.shval += (sht)rnd;
if (div)
a-data.val.shval /= (sht) mul;
else
a-data.val.shval *= (sht) mul;
} else if (a-data.vtype == TYPE_bte) {
-   assert(div || ((lng) GDK_bte_min = (lng) 
a-data.val.btval * mul  (lng) a-data.val.btval * mul = (lng) GDK_bte_max));
+   if (!div  ((lng) GDK_bte_min  (lng) 
a-data.val.btval * mul || (lng) a-data.val.btval * mul  (lng) GDK_bte_max))
+   return 0;
a-data.val.btval += (bte)rnd;
if (div)
a-data.val.btval /= (bte) mul;
@@ -711,13 +714,16 @@ atom_cast(atom *a, sql_subtype *tp)
if (a-data.vtype == TYPE_lng) {
a-data.val.lval = (int) val;
} else if (a-data.vtype == TYPE_int) {
-   assert( ((lng) GDK_int_min = val  val = 
(lng) GDK_int_max));
+   if ( ((lng) GDK_int_min  val || val  (lng) 
GDK_int_max))
+   return 0;
a-data.val.ival = (int) val;
} else if (a-data.vtype == TYPE_sht) {
-   assert( ((lng) GDK_sht_min = val  val = 
(lng) GDK_sht_max));
+   if ( ((lng) GDK_sht_min  val || val  (lng) 
GDK_sht_max))
+   return 0;
a-data.val.shval = (int) val;
} else if (a-data.vtype == TYPE_bte) {
-   assert( ((lng) GDK_bte_min = val  val = 
(lng) GDK_bte_max));
+   if ( ((lng) GDK_bte_min  val || val  (lng) 
GDK_bte_max))
+   return 0;
a-data.val.btval = (int) val;
}
return 1;
@@ -779,15 +785,18 @@ atom_cast(atom *a, sql_subtype *tp)
if (a-data.vtype == TYPE_lng)
a-data.val.lval *= mul;
else if (a-data.vtype == TYPE_int) {
-   assert((lng) GDK_int_min = (lng) 
a-data.val.ival * mul  (lng) a-data.val.ival * mul = (lng) GDK_int_max);
+   if ((lng) GDK_int_min  (lng) a-data.val.ival 
* mul || (lng) a-data.val.ival * mul  (lng) GDK_int_max)
+   return 0;
a-data.val.ival *= (int) mul;
}
else if (a-data.vtype == TYPE_sht) {
-   assert((lng) GDK_sht_min = (lng) 
a-data.val.shval * mul  (lng) a-data.val.shval * mul = (lng) GDK_sht_max);
+   if ((lng) GDK_sht_min  (lng) a-data.val.shval 
* mul || (lng) a-data.val.shval * mul  (lng) GDK_sht_max)
+   return 0;
a-data.val.shval *= (sht) mul;
}
else if (a-data.vtype == TYPE_bte) {
-

MonetDB: Jan2014 - added limit without records in copy into. Bew...

2014-07-09 Thread Niels Nes
Changeset: 08f2048691fb for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=08f2048691fb
Modified Files:
sql/server/sql_parser.y
Branch: Jan2014
Log Message:

added limit without records in copy into. Beware this can only work
with file based input (not with streaming!) Fixes bug 3504


diffs (16 lines):

diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y
--- a/sql/server/sql_parser.y
+++ b/sql/server/sql_parser.y
@@ -2528,7 +2528,11 @@ opt_using:
 opt_nr:
 /* empty */{ $$ = NULL; }
  |  poslng RECORDS { $$ = append_lng(append_lng(L(), $1), 0); }
- |  poslng OFFSET poslng RECORDS   { $$ = append_lng(append_lng(L(), $1), 
$3); }
+ |  OFFSET poslng  { $$ = append_lng(append_lng(L(), -1), $2); }
+ |  poslng OFFSET poslng RECORDS   
+   { $$ = append_lng(append_lng(L(), $1), $3); }
+ |  poslng RECORDS OFFSET poslng   
+   { $$ = append_lng(append_lng(L(), $1), $4); }
  ;
 
 opt_null_string:
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jan2014 - fixed bug 3498, make sure we have a table (no...

2014-07-09 Thread Niels Nes
Changeset: d3a1eddca24b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d3a1eddca24b
Modified Files:
sql/backends/monet5/rel_bin.c
Branch: Jan2014
Log Message:

fixed bug 3498, make sure we have a table (not a single row)
before we do the topn.

fixed bug 3489, distinct with order by, use the proper extend directly for the 
possible order by columns (which are not part of the output)


diffs (74 lines):

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
@@ -1768,7 +1768,7 @@ rel2bin_semijoin( mvc *sql, sql_rel *rel
 }
 
 static stmt *
-rel2bin_distinct(mvc *sql, stmt *s)
+rel2bin_distinct(mvc *sql, stmt *s, stmt **distinct)
 {
node *n;
stmt *g = NULL, *grp = NULL, *ext = NULL, *cnt = NULL;
@@ -1808,6 +1808,8 @@ rel2bin_distinct(mvc *sql, stmt *s)
list_append(rl, stmt_project(sql-sa, ext, t));
}
 
+   if (distinct)
+   *distinct = ext;
s = stmt_list(sql-sa, rl);
return s;
 }
@@ -1869,7 +1871,7 @@ rel2bin_union( mvc *sql, sql_rel *rel, l
}
 
if (need_distinct(rel)) 
-   sub = rel2bin_distinct(sql, sub);
+   sub = rel2bin_distinct(sql, sub, NULL);
return sub;
 }
 
@@ -2008,7 +2010,7 @@ rel2bin_except( mvc *sql, sql_rel *rel, 
}
 
if (need_distinct(rel))
-   sub = rel2bin_distinct(sql, sub);
+   sub = rel2bin_distinct(sql, sub, NULL);
return sub;
 }
 
@@ -2134,7 +2136,7 @@ rel2bin_inter( mvc *sql, sql_rel *rel, l
}
 
if (need_distinct(rel))
-   sub = rel2bin_distinct(sql, sub);
+   sub = rel2bin_distinct(sql, sub, NULL);
return sub;
 }
 
@@ -2232,7 +2234,10 @@ rel2bin_project( mvc *sql, sql_rel *rel,
assert(0);
return NULL;
}
-   if (sub  sub-nrcols = 1  s-nrcols == 0)
+   /* single value with limit */
+   if (topn  rel-r  sub  sub-nrcols == 0)
+   s = const_column(sql-sa, s);
+   else if (sub  sub-nrcols = 1  s-nrcols == 0)
s = stmt_const(sql-sa, bin_first_column(sql-sa, sub), 
s);

s = stmt_rename(sql, rel, exp, s);
@@ -2288,11 +2293,11 @@ rel2bin_project( mvc *sql, sql_rel *rel,
sub = stmt_list(sql-sa, npl);
}
if (need_distinct(rel)) {
-   psub = rel2bin_distinct(sql, psub);
+   stmt *distinct = NULL;
+   psub = rel2bin_distinct(sql, psub, distinct);
/* also rebuild sub as multiple orderby expressions may use the 
sub table (ie aren't part of the result columns) */
if (sub) {
list *npl = sa_list(sql-sa);
-   stmt *distinct = stmt_mirror(sql-sa, 
psub-op4.lval-h-data);

pl = sub-op4.lval;
for ( n=pl-h ; n; n = n-next) 
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jan2014 - fixed bug 3491, ie not need for a crossproduc...

2014-07-09 Thread Niels Nes
Changeset: d207b2b7ece5 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d207b2b7ece5
Modified Files:
sql/server/rel_select.c
Branch: Jan2014
Log Message:

fixed bug 3491, ie not need for a crossproduct if both left and right are only 
expressions, not relations.


diffs (12 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
@@ -3019,7 +3019,7 @@ rel_logical_exp(mvc *sql, sql_rel *rel, 
e = exp_compare(sql-sa,  e, r, cmp_equal);
rel = rel_select(sql-sa, rel, e);
}
-   if (l_is_value)
+   if (l_is_value  outer)
rel = rel_crossproduct(sql-sa, outer, rel, 
op_join);
rel = rel_project(sql-sa, rel, rel_projections(sql, 
outer, NULL, 1, 1));
set_processed(rel);
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jan2014 - on windows convert \r\n substrings in seperat...

2014-07-09 Thread Niels Nes
Changeset: 1f4ed128ee53 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1f4ed128ee53
Modified Files:
sql/backends/monet5/sql.c
Branch: Jan2014
Log Message:

on windows convert \r\n substrings in seperators into \n.


diffs (37 lines):

diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -2654,6 +2654,21 @@ bat2return(MalStkPtr stk, InstrPtr pci, 
}
 }
 
+#ifdef WIN32
+static void
+fix_windows_newline(unsigned char *s)
+{
+   char *p = NULL;
+   int c = '\r';
+
+   if (s  (p=strchr((char*)s, c)) != NULL  p[1] == '\n') {
+   for(; p[1]; p++) 
+   p[0] = p[1];
+   p[0] = 0;
+   }
+}
+#endif
+
 /* str mvc_import_table_wrap(int *res, str *sname, str *tname, unsigned char* 
*T, unsigned char* *R, unsigned char* *S, unsigned char* *N, str *fname, lng 
*sz, lng *offset); */
 str
 mvc_import_table_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
@@ -2710,6 +2725,11 @@ mvc_import_table_wrap(Client cntxt, MalB
 #else
s = bstream_create(ss, 0x200);
 #endif
+#ifdef WIN32
+   fix_windows_newline(tsep);
+   fix_windows_newline(rsep);
+   fix_windows_newline(ssep);
+#endif
if (s != NULL) {
b = mvc_import_table(cntxt, be-mvc, s, *sname, *tname, (char 
*) tsep, (char *) rsep, (char *) ssep, (char *) ns, *sz, *offset, *locked);
bstream_destroy(s);
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jan2014 - merging

2014-07-09 Thread Niels Nes
Changeset: 63f90cc76c10 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=63f90cc76c10
Modified Files:
MonetDB.spec
configure.ag
Branch: Jan2014
Log Message:

merging


diffs (52 lines):

diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -589,9 +589,9 @@ used from the MAL level.
 Summary: MonetDB5 SQL server modules
 Group: Applications/Databases
 Requires: MonetDB5-server = %{version}-%{release}
-%if %{?rhel:0}%{!?rhel:1}
-# for systemd-tmpfiles
-Requires: systemd-units
+%if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} = 7
+# RHEL = 7, and all current Fedora
+Requires: %{_bindir}/systemd-tmpfiles
 %endif
 Obsoletes: MonetDB-SQL-devel
 Obsoletes: %{name}-SQL
@@ -605,7 +605,7 @@ accelerators.  It also has an SQL fronte
 This package contains the SQL frontend for MonetDB.  If you want to
 use SQL with MonetDB, you will need to install this package.
 
-%if %{?rhel:0}%{!?rhel:1}
+%if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} = 7
 %post SQL-server5
 systemd-tmpfiles --create %{_sysconfdir}/tmpfiles.d/monetdbd.conf
 %endif
@@ -615,11 +615,11 @@ systemd-tmpfiles --create %{_sysconfdir}
 %{_bindir}/monetdb
 %{_bindir}/monetdbd
 %dir %attr(775,monetdb,monetdb) %{_localstatedir}/log/monetdb
-%if %{?rhel:0}%{!?rhel:1}
-# Fedora 15 and newer
+%if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} = 7
+# RHEL = 7, and all current Fedora
 %{_sysconfdir}/tmpfiles.d/monetdbd.conf
 %else
-# RedHat Enterprise Linux
+# RedHat Enterprise Linux  7
 %dir %attr(775,monetdb,monetdb) %{_localstatedir}/run/monetdb
 %exclude %{_sysconfdir}/tmpfiles.d/monetdbd.conf
 %endif
diff --git a/configure.ag b/configure.ag
--- a/configure.ag
+++ b/configure.ag
@@ -486,7 +486,7 @@ case $host_os in
if test -s /etc/os-release; then
# this is the new way of getting release information
# works for Fedora = 17, Ubuntu = 12.04 (Precise Pangolin)
-   LINUX_DIST=`source /etc/os-release; echo ${NAME}:${VERSION_ID}`
+   LINUX_DIST=`source /etc/os-release; echo ${ID}:${VERSION_ID}`
elif test -s /etc/fedora-release ; then
LINUX_DIST=`cat /etc/fedora-release | head -n1 \
| sed 's|^.*\(Fedora\).* release \([[0-9]][[^ \n]]*\)\( 
.*\)*$|\1:\2|'` 
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jan2014 - added test for bug 3506

2014-07-28 Thread Niels Nes
Changeset: d89feba26343 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d89feba26343
Added Files:
sql/test/BugTracker-2014/Tests/varchar_conversion_crash.Bug-3506.sql

sql/test/BugTracker-2014/Tests/varchar_conversion_crash.Bug-3506.stable.err

sql/test/BugTracker-2014/Tests/varchar_conversion_crash.Bug-3506.stable.out
Modified Files:
sql/test/BugTracker-2014/Tests/All
Branch: Jan2014
Log Message:

added test for bug 3506


diffs (114 lines):

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,6 +18,7 @@ in_incorrect_multi.Bug-3462
 crash_on_groupby_distinct_serial.Bug-3463
 local-temp-1.Bug-3468
 local-temp-2.Bug-3468
+varchar_conversion_crash.Bug-3506
 oid-table-assert.Bug-3514
 round-properties.Bug-3515
 union_with_subqueries.Bug-3518
diff --git 
a/sql/test/BugTracker-2014/Tests/varchar_conversion_crash.Bug-3506.sql 
b/sql/test/BugTracker-2014/Tests/varchar_conversion_crash.Bug-3506.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2014/Tests/varchar_conversion_crash.Bug-3506.sql
@@ -0,0 +1,8 @@
+CREATE TABLE config (id SERIAL ,dataset INT NOT NULL ,section VARCHAR(100) 
,key VARCHAR(100) ,value VARCHAR(500) ,type VARCHAR(5) ,UNIQUE (dataset, 
section, key)) ;
+
+INSERT INTO config (dataset, section, key, value, type) VALUES (6, 
'quality_lofar', 'low_bound', 1.9, 'float');
+INSERT INTO config (dataset, section, key, value, type) VALUES (6, 
'quality_lofar', 'high_bound', 80, 'int');
+
+select * from config;
+
+drop table config;
diff --git 
a/sql/test/BugTracker-2014/Tests/varchar_conversion_crash.Bug-3506.stable.err 
b/sql/test/BugTracker-2014/Tests/varchar_conversion_crash.Bug-3506.stable.err
new file mode 100644
--- /dev/null
+++ 
b/sql/test/BugTracker-2014/Tests/varchar_conversion_crash.Bug-3506.stable.err
@@ -0,0 +1,38 @@
+stderr of test 'varchar_conversion_crash.Bug-3506` in directory 
'sql/test/BugTracker-2014` itself:
+
+
+# 18:58:33   
+# 18:58:33   mserver5 --debug=10 --set gdk_nr_threads=0 --set 
mapi_open=true --set mapi_port=38663 --set 
mapi_usock=/var/tmp/mtest-28742/.s.monetdb.38663 --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
+# 18:58:33   
+
+# 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 = 38663
+# cmdline opt  mapi_usock = /var/tmp/mtest-28742/.s.monetdb.38663
+# cmdline opt  monet_prompt = 
+# cmdline opt  mal_listing = 2
+# cmdline opt  gdk_dbpath = 
/home/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2014
+# cmdline opt  mal_listing = 0
+
+# 18:58:33   
+# 18:58:33   mclient -lsql -ftest -Eutf-8 -i -e 
--host=/var/tmp/mtest-28742 --port=38663
+# 18:58:33   
+
+MAPI  = (monetdb) /var/tmp/mtest-28742/.s.monetdb.38663
+QUERY = INSERT INTO config (dataset, section, key, value, type) VALUES (6, 
'quality_lofar', 'high_bound', 80, 'int');
+ERROR = !EXEC: wrong type for argument 4 of prepared statement: decimal, 
expected decimal
+
+# 18:58:33   
+# 18:58:33   Done.
+# 18:58:33   
+
diff --git 
a/sql/test/BugTracker-2014/Tests/varchar_conversion_crash.Bug-3506.stable.out 
b/sql/test/BugTracker-2014/Tests/varchar_conversion_crash.Bug-3506.stable.out
new file mode 100644
--- /dev/null
+++ 
b/sql/test/BugTracker-2014/Tests/varchar_conversion_crash.Bug-3506.stable.out
@@ -0,0 +1,42 @@
+stdout of test 'varchar_conversion_crash.Bug-3506` in directory 
'sql/test/BugTracker-2014` itself:
+
+
+# 18:58:33   
+# 18:58:33   mserver5 --debug=10 --set gdk_nr_threads=0 --set 
mapi_open=true --set mapi_port=38663 --set 
mapi_usock=/var/tmp/mtest-28742/.s.monetdb.38663 --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
+# 18:58:33   
+
+# MonetDB 5 server v11.17.22
+# This is an unreleased version
+# Serving database 'mTests_sql_test_BugTracker-2014', using 4 threads
+# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically 
linked
+# Found 7.334 GiB available main-memory.
+# Copyright (c) 1993-July 2008 CWI.
+# Copyright (c) August 2008-2014 MonetDB B.V., all rights reserved
+# Visit http://www.monetdb.org/ for further information
+# Listening for connection requests on mapi:monetdb://localhost.nes.nl:38663/
+# Listening for UNIX domain connection requests on 

MonetDB: Jan2014 - removed dead code

2014-07-28 Thread Niels Nes
Changeset: 956d1c0ab176 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=956d1c0ab176
Modified Files:
monetdb5/optimizer/opt_mergetable.c
Branch: Jan2014
Log Message:

removed dead code


diffs (22 lines):

diff --git a/monetdb5/optimizer/opt_mergetable.c 
b/monetdb5/optimizer/opt_mergetable.c
--- a/monetdb5/optimizer/opt_mergetable.c
+++ b/monetdb5/optimizer/opt_mergetable.c
@@ -709,18 +709,6 @@ mat_aggr(MalBlkPtr mb, InstrPtr p, mat_t
s = pushArgument(mb, s, getArg(r,0));
pushInstruction(mb, s);
r = s;
-
-/* DEAD CODE FOUND BY COVERITY
-   if (isAvg) {
-   s = newInstruction(mb,ASSIGNsymbol);
-   setModuleId(s, algebraRef);
-   setFunctionId(s, selectNotNilRef);
-   getArg(s,0) = newTmpVariable(mb, battp2);
-   s = pushArgument(mb, s, getArg(u,0));
-   pushInstruction(mb, s);
-   u = s;
-   }
-*/
}
 
/* for avg we do sum (avg*(count/sumcount) ) */
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - reenable the rel_push_semijoin_down optimzer

2014-07-28 Thread Niels Nes
Changeset: 95fd0f2a50b8 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=95fd0f2a50b8
Modified Files:
sql/benchmarks/tpch/LOCKED/Tests/01-22.stable.out
sql/benchmarks/tpch/LOCKED/Tests/18.stable.out
sql/benchmarks/tpch/Tests/01-22.stable.out
sql/benchmarks/tpch/Tests/16-explain.stable.out
sql/benchmarks/tpch/Tests/16-plan.stable.out
sql/benchmarks/tpch/Tests/18-explain.stable.out
sql/benchmarks/tpch/Tests/18-plan.stable.out
sql/benchmarks/tpch/Tests/18.stable.out
sql/benchmarks/tpch/Tests/20-explain.stable.out
sql/benchmarks/tpch/Tests/20-plan.stable.out
sql/server/rel_exp.c
sql/server/rel_optimizer.c
Branch: default
Log Message:

reenable the rel_push_semijoin_down optimzer


diffs (truncated from 1015 to 300 lines):

diff --git a/sql/benchmarks/tpch/LOCKED/Tests/01-22.stable.out 
b/sql/benchmarks/tpch/LOCKED/Tests/01-22.stable.out
--- a/sql/benchmarks/tpch/LOCKED/Tests/01-22.stable.out
+++ b/sql/benchmarks/tpch/LOCKED/Tests/01-22.stable.out
@@ -1216,7 +1216,7 @@ Ready.
 % rewrite, count # name
 % clob,int # type
 % 7,   1 # length
-[ joinidx,   2   ]
+[ joinidx,   1   ]
 
 # 11:48:06   
 # 11:48:06   Mtimeout -timeout 60 MapiClient -lsql -umonetdb -Pmonetdb 
--host=localhost --port=35781
diff --git a/sql/benchmarks/tpch/LOCKED/Tests/18.stable.out 
b/sql/benchmarks/tpch/LOCKED/Tests/18.stable.out
--- a/sql/benchmarks/tpch/LOCKED/Tests/18.stable.out
+++ b/sql/benchmarks/tpch/LOCKED/Tests/18.stable.out
@@ -70,7 +70,7 @@ Ready.
 % rewrite, count # name
 % clob,int # type
 % 7,   1 # length
-[ joinidx,   2   ]
+[ joinidx,   1   ]
 
 # 09:17:20   
 # 09:17:20   Done.
diff --git a/sql/benchmarks/tpch/Tests/01-22.stable.out 
b/sql/benchmarks/tpch/Tests/01-22.stable.out
--- a/sql/benchmarks/tpch/Tests/01-22.stable.out
+++ b/sql/benchmarks/tpch/Tests/01-22.stable.out
@@ -1216,7 +1216,7 @@ Ready.
 % rewrite, count # name
 % clob,int # type
 % 7,   1 # length
-[ joinidx,   2   ]
+[ joinidx,   1   ]
 
 # 11:48:06   
 # 11:48:06   Mtimeout -timeout 60 MapiClient -lsql -umonetdb -Pmonetdb 
--host=localhost --port=35781
diff --git a/sql/benchmarks/tpch/Tests/16-explain.stable.out 
b/sql/benchmarks/tpch/Tests/16-explain.stable.out
--- a/sql/benchmarks/tpch/Tests/16-explain.stable.out
+++ b/sql/benchmarks/tpch/Tests/16-explain.stable.out
@@ -63,94 +63,94 @@ Ready.
 function 
user.s2_1{autoCommit=true}(A0:str,A1:str,A2:int,A3:int,A4:int,A5:int,A6:int,A7:int,A8:int,A9:int,A10:str):void;
 X_13 := sql.mvc();
 X_14:bat[:oid,:oid]  := sql.tid(X_13,sys,partsupp);
-X_17 := 
sql.bind_idxbat(X_13,sys,partsupp,partsupp_ps_partkey_fkey,0);
-(X_20,r1_20) := 
sql.bind_idxbat(X_13,sys,partsupp,partsupp_ps_partkey_fkey,2);
-X_23 := 
sql.bind_idxbat(X_13,sys,partsupp,partsupp_ps_partkey_fkey,1);
+X_17 := sql.bind(X_13,sys,partsupp,ps_suppkey,0);
+(X_20,r1_20) := sql.bind(X_13,sys,partsupp,ps_suppkey,2);
+X_23 := sql.bind(X_13,sys,partsupp,ps_suppkey,1);
 X_25 := sql.delta(X_17,X_20,r1_20,X_23);
 X_26 := algebra.leftfetchjoin(X_14,X_25);
-X_27:bat[:oid,:oid]  := sql.tid(X_13,sys,part);
-X_29 := sql.bind(X_13,sys,part,p_size,0);
-(X_31,r1_31) := sql.bind(X_13,sys,part,p_size,2);
-X_33 := sql.bind(X_13,sys,part,p_size,1);
-X_34 := sql.delta(X_29,X_31,r1_31,X_33);
-X_35 := algebra.leftfetchjoin(X_27,X_34);
-X_36 := sql.bind(X_13,sys,part,p_type,0);
-(X_38,r1_39) := sql.bind(X_13,sys,part,p_type,2);
-X_40 := sql.bind(X_13,sys,part,p_type,1);
-X_41 := sql.delta(X_36,X_38,r1_39,X_40);
-X_42 := algebra.leftfetchjoin(X_27,X_41);
-X_44 := sql.bind(X_13,sys,part,p_brand,0);
-(X_47,r1_50) := sql.bind(X_13,sys,part,p_brand,2);
-X_49 := sql.bind(X_13,sys,part,p_brand,1);
-X_50 := sql.delta(X_44,X_47,r1_50,X_49);
-X_51 := algebra.leftfetchjoin(X_27,X_50);
-X_52 := algebra.subselect(X_51,A0,A0,true,true,true);
-X_54 := algebra.likesubselect(X_42,X_52,A1,,true);
-X_55 := algebra.subselect(X_35,X_54,A2,A2,true,true,false);
-X_57 := algebra.subselect(X_35,X_54,A3,A3,true,true,false);
-X_58 := bat.mergecand(X_55,X_57);
-X_59 := algebra.subselect(X_35,X_54,A4,A4,true,true,false);
-X_60 := bat.mergecand(X_58,X_59);
-X_61 := algebra.subselect(X_35,X_54,A5,A5,true,true,false);
-X_62 := bat.mergecand(X_60,X_61);
-X_63 := algebra.subselect(X_35,X_54,A6,A6,true,true,false);
-X_64 := bat.mergecand(X_62,X_63);
-X_65 := algebra.subselect(X_35,X_54,A7,A7,true,true,false);
-X_66 := bat.mergecand(X_64,X_65);
-X_67 := algebra.subselect(X_35,X_54,A8,A8,true,true,false);
-X_68 := bat.mergecand(X_66,X_67);
-X_69 := algebra.subselect(X_35,X_54,A9,A9,true,true,false);
-X_70 := bat.mergecand(X_68,X_69);
-X_71 := algebra.leftfetchjoin(X_70,X_27);
-(X_72,r1_83) := algebra.join(X_26,X_71);
-X_74 := 

MonetDB: Jan2014 - also cleanup columns of views

2014-07-29 Thread Niels Nes
Changeset: 051b34d4f934 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=051b34d4f934
Modified Files:
sql/storage/store.c
Branch: Jan2014
Log Message:

also cleanup columns of views


diffs (12 lines):

diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -3562,7 +3562,7 @@ sys_drop_table(sql_trans *tr, sql_table 
 
sql_trans_drop_dependencies(tr, t-base.id);
 
-   if (isKindOfTable(t))
+   if (isKindOfTable(t) || isView(t))
sys_drop_columns(tr, t, drop_action);
 
if (isGlobal(t)) 
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jan2014 - properly handle type equality for floating po...

2014-07-30 Thread Niels Nes
Changeset: b7e69e104736 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b7e69e104736
Modified Files:
sql/benchmarks/ssbm/Tests/02-explain.stable.out
sql/benchmarks/ssbm/Tests/02-plan.stable.out
sql/benchmarks/ssbm/Tests/03-explain.stable.out
sql/benchmarks/ssbm/Tests/03-plan.stable.out
sql/benchmarks/ssbm/Tests/07-explain.stable.out
sql/benchmarks/ssbm/Tests/07-plan.stable.out
sql/benchmarks/ssbm/Tests/08-explain.stable.out
sql/benchmarks/ssbm/Tests/08-plan.stable.out
sql/benchmarks/tpch/Tests/01-explain.stable.out
sql/benchmarks/tpch/Tests/01-plan.stable.out
sql/benchmarks/tpch/Tests/03-explain.stable.out
sql/benchmarks/tpch/Tests/03-plan.stable.out
sql/benchmarks/tpch/Tests/08-explain.stable.out
sql/benchmarks/tpch/Tests/08-plan.stable.out
sql/benchmarks/tpch/Tests/17-plan.stable.out
sql/benchmarks/tpch/Tests/22-plan.stable.out
sql/common/sql_types.c
sql/server/rel_optimizer.c

sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out
sql/test/BugTracker/Tests/between_with_column.SF-1959410.stable.err
Branch: Jan2014
Log Message:

properly handle type equality for floating point types


diffs (truncated from 782 to 300 lines):

diff --git a/sql/benchmarks/ssbm/Tests/02-explain.stable.out 
b/sql/benchmarks/ssbm/Tests/02-explain.stable.out
--- a/sql/benchmarks/ssbm/Tests/02-explain.stable.out
+++ b/sql/benchmarks/ssbm/Tests/02-explain.stable.out
@@ -39,20 +39,20 @@ Ready.
 % 269 # length
 function user.s2_1{autoCommit=true}(A0:int,A1:int,A2:int,A3:int,A4:int):void;
 X_7 := sql.mvc();
-X_11 := sql.bind(X_7,sys,lineorder,lo_discount,0);
-X_19 := sql.bind(X_7,sys,lineorder,lo_quantity,0);
+X_11 := sql.bind(X_7,sys,lineorder,lo_quantity,0);
+X_19 := sql.bind(X_7,sys,lineorder,lo_discount,0);
 X_8:bat[:oid,:oid]  := sql.tid(X_7,sys,lineorder);
-X_90 := algebra.subselect(X_19,X_8,A3,A4,true,true,false);
-(X_21,r1_25) := sql.bind(X_7,sys,lineorder,lo_quantity,2);
-X_91 := algebra.subselect(r1_25,A3,A4,true,true,false);
-X_23 := sql.bind(X_7,sys,lineorder,lo_quantity,1);
-X_92 := algebra.subselect(X_23,X_8,A3,A4,true,true,false);
+X_90 := algebra.subselect(X_19,X_8,A1,A2,true,true,false);
+(X_21,r1_25) := sql.bind(X_7,sys,lineorder,lo_discount,2);
+X_91 := algebra.subselect(r1_25,A1,A2,true,true,false);
+X_23 := sql.bind(X_7,sys,lineorder,lo_discount,1);
+X_92 := algebra.subselect(X_23,X_8,A1,A2,true,true,false);
 X_24 := sql.subdelta(X_90,X_8,X_21,X_91,X_92);
-X_93 := algebra.subselect(X_11,X_24,A1,A2,true,true,false);
-(X_14,r1_14) := sql.bind(X_7,sys,lineorder,lo_discount,2);
-X_94 := algebra.subselect(r1_14,A1,A2,true,true,false);
-X_17 := sql.bind(X_7,sys,lineorder,lo_discount,1);
-X_95 := algebra.subselect(X_17,X_24,A1,A2,true,true,false);
+X_93 := algebra.subselect(X_11,X_24,A3,A4,true,true,false);
+(X_14,r1_14) := sql.bind(X_7,sys,lineorder,lo_quantity,2);
+X_94 := algebra.subselect(r1_14,A3,A4,true,true,false);
+X_17 := sql.bind(X_7,sys,lineorder,lo_quantity,1);
+X_95 := algebra.subselect(X_17,X_24,A3,A4,true,true,false);
 X_26 := sql.subdelta(X_93,X_24,X_14,X_94,X_95);
 X_27 := 
sql.bind_idxbat(X_7,sys,lineorder,lineorder_lo_orderdate_fkey,0);
 (X_29,r1_37) := 
sql.bind_idxbat(X_7,sys,lineorder,lineorder_lo_orderdate_fkey,2);
@@ -74,7 +74,7 @@ function user.s2_1{autoCommit=true}(A0:i
 X_55 := sql.projectdelta(X_26,X_49,X_52,r1_65,X_54);
 X_56 := algebra.leftfetchjoin(X_47,X_55);
 X_57 := batcalc.lng(X_56);
-X_58 := sql.projectdelta(X_26,X_11,X_14,r1_14,X_17);
+X_58 := sql.projectdelta(X_26,X_19,X_21,r1_25,X_23);
 X_59 := algebra.leftfetchjoin(X_47,X_58);
 X_60:bat[:oid,:lng]  := batcalc.*(X_57,X_59);
 X_61 := algebra.selectNotNil(X_60);
diff --git a/sql/benchmarks/ssbm/Tests/02-plan.stable.out 
b/sql/benchmarks/ssbm/Tests/02-plan.stable.out
--- a/sql/benchmarks/ssbm/Tests/02-plan.stable.out
+++ b/sql/benchmarks/ssbm/Tests/02-plan.stable.out
@@ -41,7 +41,7 @@ project (
 | | join (
 | | | select (
 | | | | table(sys.lineorder) [ lineorder.lo_quantity, 
lineorder.lo_extendedprice, lineorder.lo_discount, 
lineorder.%lineorder_lo_orderdate_fkey NOT NULL JOINIDX 
sys.lineorder.lineorder_lo_orderdate_fkey ] COUNT 
-| | | ) [ int[tinyint 26] = lineorder.lo_quantity = int[tinyint 35], 
int[tinyint 4] = lineorder.lo_discount = int[tinyint 6] ],
+| | | ) [ int[tinyint 4] = lineorder.lo_discount = int[tinyint 6], 
int[tinyint 26] = lineorder.lo_quantity = int[tinyint 35] ],
 | | | select (
 | | | | table(sys.dwdate) [ dwdate.d_yearmonthnum, dwdate.%TID% NOT NULL ] 
COUNT 
 | | | ) [ dwdate.d_yearmonthnum = int 199401 ]
diff --git a/sql/benchmarks/ssbm/Tests/03-explain.stable.out 
b/sql/benchmarks/ssbm/Tests/03-explain.stable.out
--- 

MonetDB: default - upgrade path fixes, ie make sure the new colu...

2014-08-02 Thread Niels Nes
Changeset: 28d0d9808b1a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=28d0d9808b1a
Modified Files:
sql/backends/monet5/sql_scenario.c
sql/server/sql_mvc.c
sql/storage/store.c
Branch: default
Log Message:

upgrade path fixes, ie make sure the new columns are added to the catalog
   some old need a different order number
   and old view columns should be removed


diffs (78 lines):

diff --git a/sql/backends/monet5/sql_scenario.c 
b/sql/backends/monet5/sql_scenario.c
--- a/sql/backends/monet5/sql_scenario.c
+++ b/sql/backends/monet5/sql_scenario.c
@@ -856,6 +856,18 @@ sql_update_default(Client c)
 
pos += snprintf(buf + pos, bufsize - pos, set schema \sys\;\n);
 
+   /* cleanup columns of dropped views */
+   pos += snprintf(buf + pos, bufsize - pos, delete from _columns where 
table_id not in (select id from _tables);\n);
+
+   /* add new columns */
+   pos += snprintf(buf + pos, bufsize - pos, insert into _columns values( 
(select max(id)+1 from _columns), 'system', 'boolean', 1, 0, (select id from 
_tables where name = 'schemas'), NULL, true, 4, NULL);\n);
+   pos += snprintf(buf + pos, bufsize - pos, insert into _columns values( 
(select max(id)+1 from _columns), 'varres', 'boolean', 1, 0, (select id from 
_tables where name = 'functions'), NULL, true, 7, NULL);\n);
+   pos += snprintf(buf + pos, bufsize - pos, insert into _columns values( 
(select max(id)+1 from _columns), 'vararg', 'boolean', 1, 0, (select id from 
_tables where name = 'functions'), NULL, true, 8, NULL);\n);
+   pos += snprintf(buf + pos, bufsize - pos, insert into _columns values( 
(select max(id)+1 from _columns), 'inout', 'tinyint', 8, 0, (select id from 
_tables where name = 'args'), NULL, true, 6, NULL);\n);
+   /* correct column numbers */
+   pos += snprintf(buf + pos, bufsize - pos, update _columns set 
number='9' where name = 'schema_id' and table_id in (select id from _tables 
where name = 'functions');\n);
+   pos += snprintf(buf + pos, bufsize - pos, update _columns set 
number='7' where name = 'number' and table_id in (select id from _tables where 
name = 'args');\n);
+
/* remove table return types (#..), ie tt_generated from
 * _tables/_columns */
pos += snprintf(buf + pos, bufsize - pos, delete from _columns where 
table_id in (select id from _tables where name like '#%%');\n);
diff --git a/sql/server/sql_mvc.c b/sql/server/sql_mvc.c
--- a/sql/server/sql_mvc.c
+++ b/sql/server/sql_mvc.c
@@ -65,7 +65,7 @@ mvc_init(int debug, store_type store, in
s = m-session-schema = mvc_bind_schema(m, sys);
assert(m-session-schema != NULL);
 
-   if (catalog_version) {
+   if (!first) {
t = mvc_bind_table(m, s, tables);
mvc_drop_table(m, s, t, 0);
t = mvc_bind_table(m, s, columns);
@@ -83,7 +83,7 @@ mvc_init(int debug, store_type store, in
mvc_create_column_(m, t, readonly, boolean, 1);
mvc_create_column_(m, t, temporary, smallint, 16);
 
-   if (catalog_version) {
+   if (!first) {
int pub = ROLE_PUBLIC;
int p = PRIV_SELECT;
int zero = 0;
@@ -103,15 +103,13 @@ mvc_init(int debug, store_type store, in
mvc_create_column_(m, t, number, int, 32);
mvc_create_column_(m, t, storage, varchar, 2048);
 
-   if (catalog_version) {
+   if (!first) {
int pub = ROLE_PUBLIC;
int p = PRIV_SELECT;
int zero = 0;
sql_table *privs = find_sql_table(s, privileges);
table_funcs.table_insert(m-session-tr, privs, 
t-base.id, pub, p, zero, zero);
-   }
-
-   if (!catalog_version) {
+   } else { 
sql_create_env(m, s);
sql_create_privileges(m, s);
}
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -871,11 +871,9 @@ load_schema(sql_trans *tr, sqlid id, oid
s = SA_ZNEW(tr-sa, sql_schema);
v = table_funcs.column_find_value(tr, find_sql_column(ss, 
name), rid);
base_init(tr-sa, s-base, sid, TR_OLD, v); _DELETE(v);
-   v = table_funcs.column_find_value(tr, 
-   find_sql_column(ss, authorization), rid);
+   v = table_funcs.column_find_value(tr, find_sql_column(ss, 
authorization), rid);
s-auth_id = *(sqlid *)v;   _DELETE(v);
-   v = table_funcs.column_find_value(tr, 
-   find_sql_column(tables, system), rid);
+   v = table_funcs.column_find_value(tr, find_sql_column(ss, 

MonetDB: Jan2014 - merged

2014-08-02 Thread Niels Nes
Changeset: 6c0e48b27ea6 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6c0e48b27ea6
Modified Files:
sql/test/BugTracker-2014/Tests/stringfloatshtcompare.Bug-3512.sql
Branch: Jan2014
Log Message:

merged


diffs (10 lines):

diff --git a/sql/test/BugTracker-2014/Tests/stringfloatshtcompare.Bug-3512.sql 
b/sql/test/BugTracker-2014/Tests/stringfloatshtcompare.Bug-3512.sql
--- a/sql/test/BugTracker-2014/Tests/stringfloatshtcompare.Bug-3512.sql
+++ b/sql/test/BugTracker-2014/Tests/stringfloatshtcompare.Bug-3512.sql
@@ -15,4 +15,4 @@ INSERT INTO bug3512 (a) VALUES ('.00
 
 -- this fails because decimal numbers cannot be cast to short
 SELECT * FROM bug3512 WHERE a = ;
-ROLLBACK;
\ No newline at end of file
+ROLLBACK;
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jan2014 - fix for bug 3508, ie handle trailing spaces

2014-08-02 Thread Niels Nes
Changeset: 9d7469c47ad8 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9d7469c47ad8
Modified Files:
gdk/gdk_atoms.c
Branch: Jan2014
Log Message:

fix for bug 3508, ie handle trailing spaces


diffs (57 lines):

diff --git a/gdk/gdk_atoms.c b/gdk/gdk_atoms.c
--- a/gdk/gdk_atoms.c
+++ b/gdk/gdk_atoms.c
@@ -464,6 +464,8 @@ bitFromStr(const char *src, int *len, bi
} else {
p = src;
}
+   while (GDKisspace(*p))
+   p++;
return (int) (p - src);
 }
 
@@ -642,6 +644,8 @@ numFromStr(const char *src, int *len, vo
break;
}
}
+   while (GDKisspace(*p))
+   p++;
return (int) (p - src);
 }
 
@@ -727,6 +731,8 @@ ptrFromStr(const char *src, int *len, pt
}
**dst = (ptr) base;
}
+   while (GDKisspace(*p))
+   p++;
return (int) (p - src);
 }
 
@@ -769,6 +775,8 @@ dblFromStr(const char *src, int *len, db
**dst = (dbl) d;
}
}
+   while (GDKisspace(*p))
+   p++;
return (int) (p - src);
 }
 
@@ -802,6 +810,8 @@ fltFromStr(const char *src, int *len, fl
errno = 0;
f = strtof(src, pe);
p = pe;
+   while (GDKisspace(*p))
+   p++;
n = (int) (p - src);
if (n == 0 || (errno == ERANGE  (f  -1 || f  1))
 #ifdef INFINITY
@@ -1690,6 +1700,8 @@ OIDfromStr(const char *src, int *len, oi
}
p += pos;
}
+   while (GDKisspace(*p))
+   p++;
return (int) (p - src);
 }
 
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jan2014 - allow decimals without '.'

2014-08-04 Thread Niels Nes
Changeset: 27d9a8384784 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=27d9a8384784
Modified Files:
sql/backends/monet5/sql_round_impl.h
Branch: Jan2014
Log Message:

allow decimals without '.'


diffs (12 lines):

diff --git a/sql/backends/monet5/sql_round_impl.h 
b/sql/backends/monet5/sql_round_impl.h
--- a/sql/backends/monet5/sql_round_impl.h
+++ b/sql/backends/monet5/sql_round_impl.h
@@ -300,7 +300,7 @@ str_2dec(TYPE *res, str *val, int *d, in
*res = NIL(TYPE);
return MAL_SUCCEED;
} else {
-   throw(SQL, STRING(TYPE), \%s\ is no decimal value 
(doesn't contain a '.'), *val);
+   scale = 0;
}
}
 
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jan2014 - fixed bug 3521, ie use exp(double) (and other...

2014-08-04 Thread Niels Nes
Changeset: 8f619c2ff336 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8f619c2ff336
Modified Files:
sql/common/sql_types.c
sql/test/BugTracker-2009/Tests/overflow.SF-2853458.stable.err
sql/test/BugTracker-2009/Tests/pow_operator.SF-2812721.stable.out
sql/test/BugTracker-2013/Tests/mitosis-floor.Bug-3330.stable.out
sql/test/bugs/Tests/floor-bug-sf-967066.stable.out
Branch: Jan2014
Log Message:

fixed bug 3521, ie use exp(double) (and other related math functions) when
the input type isn't a real (ie single precision floating point).


diffs (93 lines):

diff --git a/sql/common/sql_types.c b/sql/common/sql_types.c
--- a/sql/common/sql_types.c
+++ b/sql/common/sql_types.c
@@ -1441,11 +1441,7 @@ sqltypeinit( sql_allocator *sa)
sql_create_func(sa, scale_up, calc, *, *u, *t, 
*t, SCALE_NONE);
}
 
-   /* initial assignment to t is on purpose like this, such that the
-* compiler (as of gcc-4.6) sees that we never go below the
-* initial pointer, and hence don't get a
-* error: array subscript is below array bounds */
-   for (t = floats + (dates - floats - 1); t = floats; t--) {
+   for (t = floats; t  dates; t++) {
sql_create_func(sa, power, mmath, pow, *t, *t, *t, 
SCALE_FIX);
sql_create_func(sa, floor, mmath, floor, *t, NULL, *t, 
SCALE_FIX);
sql_create_func(sa, ceil, mmath, ceil, *t, NULL, *t, 
SCALE_FIX);
diff --git a/sql/test/BugTracker-2009/Tests/overflow.SF-2853458.stable.err 
b/sql/test/BugTracker-2009/Tests/overflow.SF-2853458.stable.err
--- a/sql/test/BugTracker-2009/Tests/overflow.SF-2853458.stable.err
+++ b/sql/test/BugTracker-2009/Tests/overflow.SF-2853458.stable.err
@@ -67,12 +67,12 @@ stderr of test 'overflow.SF-2853458` in 
 # 22:26:13   mclient -lsql -umonetdb -Pmonetdb --host=alf --port=35561 
 # 22:26:13   
 
-MAPI  = (monetdb) /var/tmp/mtest-23209/.s.monetdb.33225
+MAPI  = (monetdb) /var/tmp/mtest-9389/.s.monetdb.34946
 QUERY = select cast(power(2,63) as bigint);
-ERROR = !overflow in conversion of 9.22337204e+18 to lng.
-MAPI  = (monetdb) /var/tmp/mtest-23209/.s.monetdb.33225
+ERROR = !overflow in conversion of 9.2233720368547758e+18 to lng.
+MAPI  = (monetdb) /var/tmp/mtest-9389/.s.monetdb.34946
 QUERY = select cast(power(2,64) as bigint);
-ERROR = !overflow in conversion of 1.84467441e+19 to lng.
+ERROR = !overflow in conversion of 1.8446744073709552e+19 to lng.
 
 # 22:26:13   
 # 22:26:13   Done.
diff --git a/sql/test/BugTracker-2009/Tests/pow_operator.SF-2812721.stable.out 
b/sql/test/BugTracker-2009/Tests/pow_operator.SF-2812721.stable.out
--- a/sql/test/BugTracker-2009/Tests/pow_operator.SF-2812721.stable.out
+++ b/sql/test/BugTracker-2009/Tests/pow_operator.SF-2812721.stable.out
@@ -27,17 +27,17 @@ Ready.
 #select power(2,2);
 % .L # table_name
 % power_single_value # name
-% real # type
-% 15 # length
+% double # type
+% 24 # length
 [ 4]
 #select power(2.8,2);
 % .L # table_name
 % power_single_value # name
-% real # type
-% 15 # length
-[ 7.8368   ]
+% double # type
+% 24 # length
+[ 7.84 ]
 
-# 09:09:06   
-# 09:09:06   Done.
-# 09:09:06   
+# 19:02:22   
+# 19:02:22   Done.
+# 19:02:22   
 
diff --git a/sql/test/BugTracker-2013/Tests/mitosis-floor.Bug-3330.stable.out 
b/sql/test/BugTracker-2013/Tests/mitosis-floor.Bug-3330.stable.out
--- a/sql/test/BugTracker-2013/Tests/mitosis-floor.Bug-3330.stable.out
+++ b/sql/test/BugTracker-2013/Tests/mitosis-floor.Bug-3330.stable.out
@@ -51,8 +51,8 @@ Ready.
 #;
 % sys.image,   sys.image,  sys.image,  sys.L1 # table_name
 % tilex,   tiley,  intensity,  count # name
-% real,real,   int,wrd # type
-% 15,  15, 1,  1 # length
+% double,  double, int,wrd # type
+% 24,  24, 1,  1 # length
 [ 0,   0,  3,  1   ]
 [ 0,   0,  6,  1   ]
 #drop table error;
diff --git a/sql/test/bugs/Tests/floor-bug-sf-967066.stable.out 
b/sql/test/bugs/Tests/floor-bug-sf-967066.stable.out
--- a/sql/test/bugs/Tests/floor-bug-sf-967066.stable.out
+++ b/sql/test/bugs/Tests/floor-bug-sf-967066.stable.out
@@ -27,8 +27,8 @@ Ready.
 #select floor(3.5);
 % .L # table_name
 % floor_single_value # name
-% real # type
-% 15 # length
+% double # type
+% 24 # length
 [ 3]
 
 # 12:51:03   
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - also push crossproduct down through union's

2014-08-05 Thread Niels Nes
Changeset: e3393cf00745 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e3393cf00745
Modified Files:
sql/server/rel_exp.c
sql/server/rel_optimizer.c
sql/test/BugTracker-2009/Tests/join_topn.SF-2654133.stable.out
sql/test/bugs/Tests/groupby_having_charlength-bug-sf-943566.stable.out
Branch: default
Log Message:

also push crossproduct down through union's


diffs (66 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
@@ -1432,8 +1432,12 @@ list *
 exps_copy( sql_allocator *sa, list *exps)
 {
node *n;
-   list *nl = new_exp_list(sa);
+   list *nl;
 
+   if (!exps)
+   return exps;
+
+   nl = new_exp_list(sa);
for(n = exps-h; n; n = n-next) {
sql_exp *arg = n-data;
 
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
@@ -3489,10 +3489,10 @@ rel_uses_part_nr( sql_rel *rel, sql_exp 
 static sql_rel *
 rel_push_join_down_union(int *changes, mvc *sql, sql_rel *rel) 
 {
-   if (((is_join(rel-op)  !is_outerjoin(rel-op)) || is_semi(rel-op)) 
 !list_empty(rel-exps)) {
+   if ((is_join(rel-op)  !is_outerjoin(rel-op)) || is_semi(rel-op)) {
sql_rel *l = rel-l, *r = rel-r, *ol = l, *or = r;
list *exps = rel-exps;
-   sql_exp *je = exps-h-data;
+   sql_exp *je = !list_empty(exps)?exps-h-data:NULL;
 
if (!l || !r || need_distinct(l) || need_distinct(r))
return rel;
@@ -3503,7 +3503,7 @@ rel_push_join_down_union(int *changes, m
 
/* both sides only if we have a join index */
if (!l || !r ||(is_union(l-op)  is_union(r-op)  
-   !find_prop(je-p, PROP_JOINIDX)  /* FKEY JOIN */
+   je  !find_prop(je-p, PROP_JOINIDX)  /* FKEY JOIN */
!rel_is_join_on_pkey(rel))) /* aligned PKEY JOIN */
return rel;
 
diff --git a/sql/test/BugTracker-2009/Tests/join_topn.SF-2654133.stable.out 
b/sql/test/BugTracker-2009/Tests/join_topn.SF-2654133.stable.out
--- a/sql/test/BugTracker-2009/Tests/join_topn.SF-2654133.stable.out
+++ b/sql/test/BugTracker-2009/Tests/join_topn.SF-2654133.stable.out
@@ -28,7 +28,7 @@ Ready.
 [ 1]
 [ 1]
 #select * from tables, x limit 10;
-% .tables, .tables,.tables,.tables,.tables,
.tables,.tables,.tables,.tables,sys.x,  sys.x # 
table_name
+% .tables, .tables,.tables,.tables,.tables,
.tables,.tables,.tables,.tables,.x, .x # 
table_name
 % id,  name,   schema_id,  query,  type,   system, commit_action,  
readonly,   temporary,  n,  s # name
 % int, varchar,int,varchar,smallint,   boolean,
smallint,   boolean,tinyint,int,varchar # type
 % 4,   9,  4,  0,  1,  5,  1,  5,  1,  1,  
5 # length
diff --git 
a/sql/test/bugs/Tests/groupby_having_charlength-bug-sf-943566.stable.out 
b/sql/test/bugs/Tests/groupby_having_charlength-bug-sf-943566.stable.out
--- a/sql/test/bugs/Tests/groupby_having_charlength-bug-sf-943566.stable.out
+++ b/sql/test/bugs/Tests/groupby_having_charlength-bug-sf-943566.stable.out
@@ -31,7 +31,7 @@ Ready.
 #  where t.name IN ('args', 'columns', 'functions', 'idxs',
 #  'objects', 'keys', 'modules', 'sequences')
 #  group by s.name having count(*)  char_length(s.name);
-% sys.s,   sys.L1, sys.L2 # table_name
+% .s,  .L1,.L2 # table_name
 % name,L1, L2 # name
 % varchar, int,wrd # type
 % 4,   1,  2 # length
___
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 @@ MANIFOLDtypecheck(Client cntxt, MalBlkPt
MalBlkPtr nmb;
MALfcn 

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: 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= 
--forcemito --set mal_listing=2 

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 isMapOp(InstrPtr p){
return  getModuleId(p) 

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 = false
+# builtin opt  sql_optimizer = default_pipe
+# builtin 

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 = 
+# cmdline opt  mal_listing = 2
+# cmdline opt  gdk_dbpath = 

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: default - fixed crash in manifold called functions with...

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

fixed crash in manifold called functions with external atoms


diffs (21 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
@@ -129,7 +129,7 @@ MANIFOLDjob(MULTItask *mut)
 {  int i;
char *p, *q;
char **args;
-   str y, msg= MAL_SUCCEED;
+   str y = NULL, msg= MAL_SUCCEED;
 
args = (char**) GDKzalloc(sizeof(char*) * mut-pci-argc);
if( args == NULL)
@@ -167,6 +167,8 @@ MANIFOLDjob(MULTItask *mut)
default:
msg= createException(MAL,mal.manifold,manifold call 
limitation );
}
+   if (ATOMextern(mut-args[0].type)  y) 
+   GDKfree(y); 
 bunins_failed:
GDKfree(args);
return msg;
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - use subslice instead of slice

2014-08-07 Thread Niels Nes
Changeset: de3fbece100b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=de3fbece100b
Modified Files:
monetdb5/optimizer/opt_pushselect.c
Branch: default
Log Message:

use subslice instead of slice


diffs (12 lines):

diff --git a/monetdb5/optimizer/opt_pushselect.c 
b/monetdb5/optimizer/opt_pushselect.c
--- a/monetdb5/optimizer/opt_pushselect.c
+++ b/monetdb5/optimizer/opt_pushselect.c
@@ -468,7 +468,7 @@ OPTpushselectImplementation(Client cntxt
ValRecord cst;
 
/* slice the candidates */
-   setFunctionId(r, sliceRef);
+   setFunctionId(r, subsliceRef);
getArg(r, 0) = newTmpVariable(mb, 
newBatType(TYPE_oid, TYPE_oid));
getArg(r, 1) = getArg(s, 1); 
cst.vtype = getArgType(mb, r, 2);
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - fixed problem in using firstn with group result

2014-08-07 Thread Niels Nes
Changeset: 978a2b87f602 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=978a2b87f602
Modified Files:
sql/backends/monet5/sql_gencode.c
Branch: default
Log Message:

fixed problem in using firstn with group result


diffs (26 lines):

diff --git a/sql/backends/monet5/sql_gencode.c 
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -1002,10 +1002,10 @@ static int
return -1;
c = k;
}
-   if (s-flag) {
-   int topn = 0, flag = s-flag, utopn = flag  2;
+   if (s-flag1) {
+   int topn = 0, flag = s-flag, grps = flag  2;
 
-   flag = 2;
+   flag = 1;
 
q = newStmt1(mb, calcRef, +);
q = pushArgument(mb, q, offset);
@@ -1015,7 +1015,7 @@ static int
topn = getDestVar(q);
 
q = newStmt(mb, algebraRef, firstnRef);
-   if (utopn)
+   if (grps) /* we need the groups for the next 
firstn */
q = pushReturn(mb, q, 
newTmpVariable(mb, TYPE_any));
q = pushArgument(mb, q, c);
if (p)
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - merged

2014-08-07 Thread Niels Nes
Changeset: a95ebdfb2c99 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a95ebdfb2c99
Modified Files:
clients/mapiclient/Tests/stethoscope--help.stable.err
monetdb5/mal/Tests/All
monetdb5/optimizer/Tests/All

sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.stable.out.32bit
Branch: default
Log Message:

merged


diffs (189 lines):

diff --git a/clients/mapiclient/Tests/stethoscope--help.stable.err 
b/clients/mapiclient/Tests/stethoscope--help.stable.err
--- a/clients/mapiclient/Tests/stethoscope--help.stable.err
+++ b/clients/mapiclient/Tests/stethoscope--help.stable.err
@@ -17,7 +17,7 @@ stethoscope [options] [dbname] +[trace o
   -h | --host=hostname
   -? | --help
 
-The trace options (default 'ISTest'):
+The trace options (default 'ISTestn'):
   S = monitor start of instruction profiling
   a = aggregate clock ticks per instruction
   e = event counter
@@ -29,6 +29,7 @@ The trace options (default 'ISTest'):
   c = cpu statistics (utime,ctime,stime,cstime)
   m = rss memory as provided by OS (in MB)
   M = memory footprint of non-persistent objects
+  n = numa intra socket data flow
   r = block reads
   w = block writes
   b = bytes read/written
diff --git a/monetdb5/mal/Tests/All b/monetdb5/mal/Tests/All
--- a/monetdb5/mal/Tests/All
+++ b/monetdb5/mal/Tests/All
@@ -134,7 +134,6 @@ tst256
 tst260
 tst2570
 # tst265 -- windowsum and slidingsum have been removed
-tst267
 # opens /tmp/MonetEvents, i.e. not on Windows:
 NOT_WIN32?tst270
 tst272
diff --git a/monetdb5/optimizer/Tests/All b/monetdb5/optimizer/Tests/All
--- a/monetdb5/optimizer/Tests/All
+++ b/monetdb5/optimizer/Tests/All
@@ -18,10 +18,7 @@ tst4630
 tst4700
 tst4701
 # tst4730 -- uses group.refine
-tst4800
-tst4801
 tst4820
-tst4900
 
 qep00
 qep01
@@ -81,13 +78,11 @@ CXerror1
 #the remainder are snippets used in the reference manual
 CMexample
 CRexample
-AEexample
 ARexample
 DCexample
 DCexample2
 ESexample
 FTexample
-GCexample
 GCexample01
 CXexample
 JPexample
diff --git 
a/sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.stable.out.32bit 
b/sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.stable.out.32bit
--- a/sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.stable.out.32bit
+++ b/sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.stable.out.32bit
@@ -16,12 +16,64 @@ stdout of test 'limit_in_prepare.Bug-255
 # MonetDB/SQL module v2.38.0 loaded
 
 Ready.
+# SQL catalog created, loading sql scripts once
+# loading sql script: 09_like.sql
+# loading sql script: 10_math.sql
+# loading sql script: 11_times.sql
+# loading sql script: 12_url.sql
+# loading sql script: 13_date.sql
+# loading sql script: 14_inet.sql
+# loading sql script: 15_querylog.sql
+# loading sql script: 16_tracelog.sql
+# loading sql script: 19_cluster.sql
+# loading sql script: 20_vacuum.sql
+# loading sql script: 21_dependency_functions.sql
+# loading sql script: 22_clients.sql
+# loading sql script: 23_skyserver.sql
+# loading sql script: 24_zorder.sql
+# loading sql script: 25_debug.sql
+# loading sql script: 26_sysmon.sql
+# loading sql script: 39_analytics.sql
+# loading sql script: 40_geom.sql
+# loading sql script: 40_json.sql
+# loading sql script: 41_jsonstore.sql
+# loading sql script: 45_uuid.sql
+# loading sql script: 75_storagemodel.sql
+# loading sql script: 80_statistics.sql
+# loading sql script: 80_udf.sql
+# loading sql script: 85_bam.sql
+# loading sql script: 99_system.sql
 
+# 22:28:06   
+# 22:28:06   mclient -lsql -ftest -Eutf-8 -i -e 
--host=/var/tmp/mtest-10173 --port=36549
+# 22:28:06   
 
-# 08:45:11   
-# 08:45:11   mclient -lsql -ftest -i -e --host=alf --port=35663 
-# 08:45:11   
-
+#CREATE TABLE sys.tbls (
+#  idINTEGER,
+#  name  VARCHAR(1024),
+#  schema_id INTEGER,
+#  query VARCHAR(2048),
+#  type  SMALLINT,
+#  systemBOOLEAN,
+#  commit_action SMALLINT,
+#  readonly  BOOLEAN,
+#  temporary SMALLINT
+#);
+#COPY 40 RECORDS INTO sys.tbls FROM stdin USING DELIMITERS '\t','\n','';
+#2001  schemas   2000NULL0   true0   false   0
+#2007  types 2000NULL0   true0   false   0
+#2016  functions 2000NULL0   true0   false   0
+#2027  args  2000NULL0   true0   false   0
+#2036  sequences 2000NULL0   true0   false   0
+#2046  dependencies  2000NULL0   true0   false   0
+#2050  connections   2000NULL0   true0   false   0
+#2059  _tables   2000NULL0   true0   false   0
+#2068  _columns  2000NULL0   true0   false   0
+#2079  keys  2000NULL0   true0   false   0
+#2086  idxs  2000NULL0   true0   false   0
+[ 40   ]
+#create table rr (id int);
+#insert into rr values (1),(2),(3);
 [ 3]
 #prepare select * from rr limit ?;
 #prepare 

MonetDB: default - revert firstn/topn bogus fix.

2014-08-07 Thread Niels Nes
Changeset: 7fbe4711 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7fbe4711
Modified Files:
sql/backends/monet5/sql_gencode.c
Branch: default
Log Message:

revert firstn/topn bogus fix.


diffs (12 lines):

diff --git a/sql/backends/monet5/sql_gencode.c 
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -1005,7 +1005,7 @@ static int
if (s-flag1) {
int topn = 0, flag = s-flag, grps = flag  2;
 
-   flag = 1;
+   flag = 2;
 
q = newStmt1(mb, calcRef, +);
q = pushArgument(mb, q, offset);
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - revert slice - subslice change...

2014-08-07 Thread Niels Nes
Changeset: ad4ca16ee973 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ad4ca16ee973
Modified Files:
monetdb5/optimizer/opt_pushselect.c
Branch: default
Log Message:

revert slice - subslice change...


diffs (12 lines):

diff --git a/monetdb5/optimizer/opt_pushselect.c 
b/monetdb5/optimizer/opt_pushselect.c
--- a/monetdb5/optimizer/opt_pushselect.c
+++ b/monetdb5/optimizer/opt_pushselect.c
@@ -468,7 +468,7 @@ OPTpushselectImplementation(Client cntxt
ValRecord cst;
 
/* slice the candidates */
-   setFunctionId(r, subsliceRef);
+   setFunctionId(r, sliceRef);
getArg(r, 0) = newTmpVariable(mb, 
newBatType(TYPE_oid, TYPE_oid));
getArg(r, 1) = getArg(s, 1); 
cst.vtype = getArgType(mb, r, 2);
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jan2014 - fixed bug 3534, ie give a proper error message

2014-08-11 Thread Niels Nes
Changeset: fecd6435c289 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=fecd6435c289
Modified Files:
sql/server/rel_select.c
Branch: Jan2014
Log Message:

fixed bug 3534, ie give a proper error message


diffs (30 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
@@ -995,7 +995,7 @@ static char * rel_get_name( sql_rel *rel
if (rel-r) 
return exp_name(rel-r);
return NULL;
-   case op_basetable:
+   case op_basetable: 
return rel-r;
default:
if (rel-l)
@@ -4850,7 +4850,7 @@ join_on_column_name(mvc *sql, sql_rel *r
}
}
if (!found) {
-   sql_error(sql, 02, JOIN: no columns of tables '%s' and '%s' 
match, rel_get_name(t1)?rel_get_name(t1):, 
rel_get_name(t2)?rel_get_name(t2):);
+   sql_error(sql, 02, JOIN: no columns of tables '%s' and '%s' 
match, rel_name(t1)?rel_name(t1):, rel_name(t2)?rel_name(t2):);
rel_destroy(rel);
return NULL;
}
@@ -5378,7 +5378,7 @@ rel_joinquery_(mvc *sql, sql_rel *rel, s
sql_exp *rs = rel_bind_column(sql, t2, nm, sql_where);
 
if (!ls || !rs) {
-   sql_error(sql, 02, JOIN: tables '%s' and '%s' 
do not have a matching column '%s'\n, rel_get_name(t1)?rel_get_name(t1):, 
rel_get_name(t2)?rel_get_name(t2):, nm);
+   sql_error(sql, 02, JOIN: tables '%s' and '%s' 
do not have a matching column '%s'\n, rel_name(t1)?rel_name(t1):, 
rel_name(t2)?rel_name(t2):, nm);
rel_destroy(rel);
return NULL;
}
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jan2014 - merged

2014-08-11 Thread Niels Nes
Changeset: 934f34a68244 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=934f34a68244
Modified Files:
monetdb5/modules/mal/batcalc.mal
monetdb5/modules/mal/batcalc.mal.sh
monetdb5/modules/mal/calc.mal
monetdb5/modules/mal/calc.mal.sh
Branch: Jan2014
Log Message:

merged


diffs (104 lines):

diff --git a/monetdb5/modules/mal/batcalc.mal b/monetdb5/modules/mal/batcalc.mal
--- a/monetdb5/modules/mal/batcalc.mal
+++ b/monetdb5/modules/mal/batcalc.mal
@@ -19673,28 +19673,28 @@ comment Return -1/0/1 if V /==/ B wit
 
 pattern between(b:bat[:oid,:any_1],lo:bat[:oid,:any_1],hi:bat[:oid,:any_1]) 
:bat[:oid,:bit]
 address CMDbatBETWEEN
-comment B between LO and HI inclusive, nil border is (minus) infinity;
+comment B between LO and HI inclusive;
 pattern 
between(b:bat[:oid,:any_1],lo:bat[:oid,:any_1],hi:bat[:oid,:any_1],s:bat[:oid,:oid])
 :bat[:oid,:bit]
 address CMDbatBETWEEN
-comment B between LO and HI inclusive with candidates list, nil border is 
(minus) infinity;
+comment B between LO and HI inclusive with candidates list;
 pattern between(b:bat[:oid,:any_1],lo:bat[:oid,:any_1],hi:any_1) 
:bat[:oid,:bit]
 address CMDbatBETWEEN
-comment B between LO and HI inclusive, nil border is (minus) infinity;
+comment B between LO and HI inclusive;
 pattern 
between(b:bat[:oid,:any_1],lo:bat[:oid,:any_1],hi:any_1,s:bat[:oid,:oid]) 
:bat[:oid,:bit]
 address CMDbatBETWEEN
-comment B between LO and HI inclusive with candidates list, nil border is 
(minus) infinity;
+comment B between LO and HI inclusive with candidates list;
 pattern between(b:bat[:oid,:any_1],lo:any_1,hi:bat[:oid,:any_1]) 
:bat[:oid,:bit]
 address CMDbatBETWEEN
-comment B between LO and HI inclusive, nil border is (minus) infinity;
+comment B between LO and HI inclusive;
 pattern 
between(b:bat[:oid,:any_1],lo:any_1,hi:bat[:oid,:any_1],s:bat[:oid,:oid]) 
:bat[:oid,:bit]
 address CMDbatBETWEEN
-comment B between LO and HI inclusive with candidates list, nil border is 
(minus) infinity;
+comment B between LO and HI inclusive with candidates list;
 pattern between(b:bat[:oid,:any_1],lo:any_1,hi:any_1) :bat[:oid,:bit]
 address CMDbatBETWEEN
-comment B between LO and HI inclusive, nil border is (minus) infinity;
+comment B between LO and HI inclusive;
 pattern between(b:bat[:oid,:any_1],lo:any_1,hi:any_1,s:bat[:oid,:oid]) 
:bat[:oid,:bit]
 address CMDbatBETWEEN
-comment B between LO and HI inclusive with candidates list, nil border is 
(minus) infinity;
+comment B between LO and HI inclusive with candidates list;
 
 
 pattern avg(b:bat[:oid,:bte]) :dbl
diff --git a/monetdb5/modules/mal/batcalc.mal.sh 
b/monetdb5/modules/mal/batcalc.mal.sh
--- a/monetdb5/modules/mal/batcalc.mal.sh
+++ b/monetdb5/modules/mal/batcalc.mal.sh
@@ -530,28 +530,28 @@ echo
 cat EOF
 pattern between(b:bat[:oid,:any_1],lo:bat[:oid,:any_1],hi:bat[:oid,:any_1]) 
:bat[:oid,:bit]
 address CMDbatBETWEEN
-comment B between LO and HI inclusive, nil border is (minus) infinity;
+comment B between LO and HI inclusive;
 pattern 
between(b:bat[:oid,:any_1],lo:bat[:oid,:any_1],hi:bat[:oid,:any_1],s:bat[:oid,:oid])
 :bat[:oid,:bit]
 address CMDbatBETWEEN
-comment B between LO and HI inclusive with candidates list, nil border is 
(minus) infinity;
+comment B between LO and HI inclusive with candidates list;
 pattern between(b:bat[:oid,:any_1],lo:bat[:oid,:any_1],hi:any_1) 
:bat[:oid,:bit]
 address CMDbatBETWEEN
-comment B between LO and HI inclusive, nil border is (minus) infinity;
+comment B between LO and HI inclusive;
 pattern 
between(b:bat[:oid,:any_1],lo:bat[:oid,:any_1],hi:any_1,s:bat[:oid,:oid]) 
:bat[:oid,:bit]
 address CMDbatBETWEEN
-comment B between LO and HI inclusive with candidates list, nil border is 
(minus) infinity;
+comment B between LO and HI inclusive with candidates list;
 pattern between(b:bat[:oid,:any_1],lo:any_1,hi:bat[:oid,:any_1]) 
:bat[:oid,:bit]
 address CMDbatBETWEEN
-comment B between LO and HI inclusive, nil border is (minus) infinity;
+comment B between LO and HI inclusive;
 pattern 
between(b:bat[:oid,:any_1],lo:any_1,hi:bat[:oid,:any_1],s:bat[:oid,:oid]) 
:bat[:oid,:bit]
 address CMDbatBETWEEN
-comment B between LO and HI inclusive with candidates list, nil border is 
(minus) infinity;
+comment B between LO and HI inclusive with candidates list;
 pattern between(b:bat[:oid,:any_1],lo:any_1,hi:any_1) :bat[:oid,:bit]
 address CMDbatBETWEEN
-comment B between LO and HI inclusive, nil border is (minus) infinity;
+comment B between LO and HI inclusive;
 pattern between(b:bat[:oid,:any_1],lo:any_1,hi:any_1,s:bat[:oid,:oid]) 
:bat[:oid,:bit]
 address CMDbatBETWEEN
-comment B between LO and HI inclusive with candidates list, nil border is 
(minus) infinity;
+comment B between LO and HI inclusive with candidates list;
 
 EOF
 echo
diff --git a/monetdb5/modules/mal/calc.mal b/monetdb5/modules/mal/calc.mal
--- a/monetdb5/modules/mal/calc.mal
+++ b/monetdb5/modules/mal/calc.mal
@@ -4361,7 +4361,7 @@ comment Return -1/0/1 if 

MonetDB: Jan2014 - fixed bug 3536, ie handle different types in ...

2014-08-12 Thread Niels Nes
Changeset: b567ef55eac7 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b567ef55eac7
Added Files:

sql/test/BugTracker-2014/Tests/outer_join_using_diff_types_using.Bug-3536.sql

sql/test/BugTracker-2014/Tests/outer_join_using_diff_types_using.Bug-3536.stable.err

sql/test/BugTracker-2014/Tests/outer_join_using_diff_types_using.Bug-3536.stable.out
Modified Files:
sql/server/rel_select.c
sql/test/BugTracker-2014/Tests/All
Branch: Jan2014
Log Message:

fixed bug 3536, ie handle different types in using and outer joins


diffs (131 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
@@ -5383,8 +5383,12 @@ rel_joinquery_(mvc *sql, sql_rel *rel, s
return NULL;
}
rel = rel_compare_exp(sql, rel, ls, rs, =, NULL, 
TRUE);
-   cond = rel_unop_(sql, ls, NULL, isnull, card_value);
-   ls = rel_nop_(sql, cond, rs, ls, NULL, NULL, 
ifthenelse, card_value);
+   if (op != op_join) {
+   cond = rel_unop_(sql, ls, NULL, isnull, 
card_value);
+   if (rel_convert_types(sql, ls, rs, 1, 
type_equal)  0)
+   return NULL;
+   ls = rel_nop_(sql, cond, rs, ls, NULL, NULL, 
ifthenelse, card_value);
+   }
exp_setname(sql-sa, ls, rnme, nm);
append(outexps, ls);
if (!rel) 
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
@@ -29,3 +29,4 @@ union_with_subqueries.Bug-3518
 unsafe_project_push_down.Bug-3523
 non_groupby_column.Bug-3524
 orderby_count.Bug-3526
+outer_join_using_diff_types_using.Bug-3536
diff --git 
a/sql/test/BugTracker-2014/Tests/outer_join_using_diff_types_using.Bug-3536.sql 
b/sql/test/BugTracker-2014/Tests/outer_join_using_diff_types_using.Bug-3536.sql
new file mode 100644
--- /dev/null
+++ 
b/sql/test/BugTracker-2014/Tests/outer_join_using_diff_types_using.Bug-3536.sql
@@ -0,0 +1,9 @@
+
+create table test_a (a integer);
+create table test_b (a smallint);
+
+select * from test_a join test_b using (a);
+select * from test_a left outer join test_b using (a);
+
+drop table test_a;
+drop table test_b;
diff --git 
a/sql/test/BugTracker-2014/Tests/outer_join_using_diff_types_using.Bug-3536.stable.err
 
b/sql/test/BugTracker-2014/Tests/outer_join_using_diff_types_using.Bug-3536.stable.err
new file mode 100644
--- /dev/null
+++ 
b/sql/test/BugTracker-2014/Tests/outer_join_using_diff_types_using.Bug-3536.stable.err
@@ -0,0 +1,35 @@
+stderr of test 'outer_join_using_diff_types_using.Bug-3536` in directory 
'sql/test/BugTracker-2014` itself:
+
+
+# 11:45:36   
+# 11:45:36   mserver5 --debug=10 --set gdk_nr_threads=0 --set 
mapi_open=true --set mapi_port=31021 --set 
mapi_usock=/var/tmp/mtest-13021/.s.monetdb.31021 --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
+# 11:45:36   
+
+# 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 = 31021
+# cmdline opt  mapi_usock = /var/tmp/mtest-13021/.s.monetdb.31021
+# cmdline opt  monet_prompt = 
+# cmdline opt  mal_listing = 2
+# cmdline opt  gdk_dbpath = 
/home/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2014
+# cmdline opt  mal_listing = 0
+
+# 11:45:36   
+# 11:45:36   mclient -lsql -ftest -Eutf-8 -i -e 
--host=/var/tmp/mtest-13021 --port=31021
+# 11:45:36   
+
+
+# 11:45:36   
+# 11:45:36   Done.
+# 11:45:36   
+
diff --git 
a/sql/test/BugTracker-2014/Tests/outer_join_using_diff_types_using.Bug-3536.stable.out
 
b/sql/test/BugTracker-2014/Tests/outer_join_using_diff_types_using.Bug-3536.stable.out
new file mode 100644
--- /dev/null
+++ 
b/sql/test/BugTracker-2014/Tests/outer_join_using_diff_types_using.Bug-3536.stable.out
@@ -0,0 +1,46 @@
+stdout of test 'outer_join_using_diff_types_using.Bug-3536` in directory 
'sql/test/BugTracker-2014` itself:
+
+
+# 11:45:36   
+# 11:45:36   mserver5 --debug=10 --set gdk_nr_threads=0 --set 
mapi_open=true --set mapi_port=31021 --set 
mapi_usock=/var/tmp/mtest-13021/.s.monetdb.31021 --set monet_prompt= 
--forcemito --set mal_listing=2 

MonetDB: Oct2014 - properly call firstn with distinct True (only...

2014-08-13 Thread Niels Nes
Changeset: 4592f95b53ff for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4592f95b53ff
Modified Files:
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_statement.h
sql/benchmarks/tpch/Tests/02-explain.stable.out
sql/benchmarks/tpch/Tests/03-explain.stable.out
sql/benchmarks/tpch/Tests/10-explain.stable.out
sql/benchmarks/tpch/Tests/18-explain.stable.out
sql/benchmarks/tpch/Tests/21-explain.stable.out

sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
Branch: Oct2014
Log Message:

properly call firstn with distinct True (only when realy needed)


diffs (truncated from 341 to 300 lines):

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
@@ -2286,13 +2286,13 @@ rel2bin_project( mvc *sql, sql_rel *rel,
*/
if (topn  rel-r) {
list *oexps = rel-r, *npl = sa_list(sql-sa);
-   /* distinct, topn returns atleast N (unique) */
+   /* distinct, topn returns atleast N (unique groups) */
int distinct = need_distinct(rel);
stmt *limit = NULL, *lpiv = NULL, *lgid = NULL; 
 
for (n=oexps-h; n; n = n-next) {
sql_exp *orderbycole = n-data; 
-   int inc = distinct || n-next;
+   int last = (n-next == NULL);
 
stmt *orderbycolstmt = exp_bin(sql, orderbycole, sub, 
psub, NULL, NULL, NULL, NULL); 
 
@@ -2300,21 +2300,20 @@ rel2bin_project( mvc *sql, sql_rel *rel,
return NULL;

if (!limit) {   /* topn based on a single column */
-   limit = stmt_limit(sql-sa, orderbycolstmt, 
stmt_atom_wrd(sql-sa, 0), l, LIMIT_DIRECTION(is_ascending(orderbycole), 1, 
inc));
+   limit = stmt_limit(sql-sa, orderbycolstmt, 
stmt_atom_wrd(sql-sa, 0), l, LIMIT_FLAG(distinct, is_ascending(orderbycole), 
last, 1));
} else {/* topn based on 2 columns */
-   limit = stmt_limit2(sql-sa, orderbycolstmt, 
lpiv, lgid, stmt_atom_wrd(sql-sa, 0), l, 
LIMIT_DIRECTION(is_ascending(orderbycole), 1, inc));
+   limit = stmt_limit2(sql-sa, orderbycolstmt, 
lpiv, lgid, stmt_atom_wrd(sql-sa, 0), l, LIMIT_FLAG(distinct, 
is_ascending(orderbycole), last, 1));
}
if (!limit) 
return NULL;
-   lpiv = stmt_result(sql-sa, limit, 0);
-   lgid = stmt_result(sql-sa, limit, 1);
+   lpiv = limit;
+   if (!last) {
+   lpiv = stmt_result(sql-sa, limit, 0);
+   lgid = stmt_result(sql-sa, limit, 1);
+   }
}
 
-   if (!distinct)  /* ready to project */
-   limit = lpiv;
-   else/* TODO */
-   limit = lpiv; 
-   
+   limit = lpiv; 
for ( n=pl-h ; n; n = n-next) 
list_append(npl, stmt_project(sql-sa, limit, 
column(sql-sa, n-data)));
psub = stmt_list(sql-sa, npl);
@@ -2584,7 +2583,7 @@ rel2bin_topn( mvc *sql, sql_rel *rel, li
o = stmt_atom_wrd(sql-sa, 0);
 
sc = column(sql-sa, sc);
-   limit = stmt_limit(sql-sa, stmt_alias(sql-sa, sc, tname, 
cname), o, l, LIMIT_DIRECTION(0,0,0));
+   limit = stmt_limit(sql-sa, stmt_alias(sql-sa, sc, tname, 
cname), o, l, LIMIT_FLAG(0,0,0,0));
 
for ( ; n; n = n-next) {
stmt *sc = n-data;
diff --git a/sql/backends/monet5/sql_gencode.c 
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -1018,9 +1018,10 @@ static int
c = k;
}
if (s-flag1) {
-   int topn = 0, flag = s-flag, grps = flag  2;
-
-   flag = 2;
+   int topn = 0, flag = s-flag;
+   int last = (flag  2);
+   int dir = (flag  4);
+   int distinct = (flag  8);
 
q = newStmt1(mb, calcRef, +);
q = pushArgument(mb, q, offset);
@@ -1030,7 +1031,7 @@ static int
topn = getDestVar(q);
 
q = newStmt(mb, algebraRef, firstnRef);
-   if (grps) /* we need the groups for the next 
firstn */

MonetDB: rdf - use lng not long.

2014-08-13 Thread Niels Nes
Changeset: a6be39a12361 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a6be39a12361
Modified Files:
monetdb5/extras/rdf/rdf_shredder.c
monetdb5/extras/rdf/rdftypes.c
monetdb5/extras/rdf/rdftypes.h
Branch: rdf
Log Message:

use lng not long.


diffs (125 lines):

diff --git a/monetdb5/extras/rdf/rdf_shredder.c 
b/monetdb5/extras/rdf/rdf_shredder.c
--- a/monetdb5/extras/rdf/rdf_shredder.c
+++ b/monetdb5/extras/rdf/rdf_shredder.c
@@ -198,8 +198,8 @@ getObjectType_and_Value(unsigned char* o
 
 double  realDbl;
 int realInt;
-   longnTime; 
-   longrealLng; 
+   lng nTime; 
+   lng realLng; 
 
len = strlen((str)objStr);
if (len  100 || len = 20){
diff --git a/monetdb5/extras/rdf/rdftypes.c b/monetdb5/extras/rdf/rdftypes.c
--- a/monetdb5/extras/rdf/rdftypes.c
+++ b/monetdb5/extras/rdf/rdftypes.c
@@ -325,7 +325,7 @@ char rdfcast(ObjectType srcT, ObjectType
dstPtr-len, 
srcPtr-val.dval);
dstPtr-vtype = TYPE_str;
return 1; 
-   case DATETIME:  //Datetime in encoded long 
value of timestamp
+   case DATETIME:  //Datetime in encoded lng value 
of timestamp
{   
char buf[64], *s1 = buf;
int len = 64; 
@@ -451,11 +451,11 @@ int convertDateTimeToTimeT(char *sDateTi
  * Using/extending monetdb mtime functions
  * */
 
-int convertDateTimeToLong(char *sDateTime, long *t){
+int convertDateTimeToLong(char *sDateTime, lng *t){
timestamp *ts = NULL; 
//tzone *tz;
int len, pos = 0; 
-   long encodeLng = 0; 
+   lng encodeLng = 0; 
int positiveDate = 0;
int sign = 0;

@@ -501,7 +501,7 @@ int convertDateTimeToLong(char *sDateTim
return 0;
}
 
-   //Encoding timestamp to long. 
+   //Encoding timestamp to lng. 
//First 4 bits are not used, 5th bits for sign of number of days value 
//(1, if the number of days is negative)
//27 bits for days, 32 bits for msecs
@@ -513,14 +513,14 @@ int convertDateTimeToLong(char *sDateTim
sign = 0;
}

-   encodeLng |= (long) positiveDate;
+   encodeLng |= (lng) positiveDate;
encodeLng = encodeLng  (sizeof(ts-msecs) * 8); //Move 32 bits
-   encodeLng |= (long)sign  (sizeof(long) * 8 - 5);  //Set the sign 
bit
-   encodeLng = encodeLng | (long) ts-msecs;   //Set 32 bits for msecs
+   encodeLng |= (lng)sign  (sizeof(lng) * 8 - 5);//Set the sign 
bit
+   encodeLng = encodeLng | (lng) ts-msecs;//Set 32 bits for msecs

*t = encodeLng; 
 
-   //printf(Encode string %s with days %d and msecs %d to long %ld 
\n,sDateTime, ts-days, ts-msecs, *t);
+   //printf(Encode string %s with days %d and msecs %d to lng %ld 
\n,sDateTime, ts-days, ts-msecs, *t);
if (ts) GDKfree(ts); 

return 1;
@@ -535,7 +535,7 @@ void
 encodeValueInOid(ValPtr vrPtrRealValue, ObjectType objType, BUN* bun){
 
int positiveInt = 0; 
-   long positiveLng = 0; 
+   lng positiveLng = 0; 
 
*bun = 0; 
 
@@ -564,8 +564,8 @@ encodeValueInOid(ValPtr vrPtrRealValue, 
}
break;
case DATETIME: 
-   //Consider it is as long value
-   //No sign bit needed for this encoded long
+   //Consider it is as lng value
+   //No sign bit needed for this encoded lng
assert (vrPtrRealValue-val.lval = 0);
positiveLng = vrPtrRealValue-val.lval;
 
@@ -584,7 +584,7 @@ decodeValueFromOid(BUN bun, ObjectType o
BUN realval = 0; 
int sign = 0; 
int ival = 0; 
-   long lval = 0;
+   lng lval = 0;
double *realdbl = NULL; 

//printf(Decode value from oid: BUNFMT \n,bun);
@@ -656,7 +656,7 @@ void convertTMtimeToMTime(time_t t, time
  * Convert value from tm format to timestamp of monet mtime
  * Only convert when storing in monetdb BAT for datetime
  * */
-void convert_encodedLng_toTimestamp(long t, timestamp *ts){
+void convert_encodedLng_toTimestamp(lng t, timestamp *ts){
int sign = 0; 
int daypart = 0; 
int msecpart = 0;
diff --git a/monetdb5/extras/rdf/rdftypes.h b/monetdb5/extras/rdf/rdftypes.h
--- a/monetdb5/extras/rdf/rdftypes.h
+++ b/monetdb5/extras/rdf/rdftypes.h
@@ -81,13 +81,13 @@ rdf_export int
 convertDateTimeToTimeT(char *sDateTime, int len, time_t *t);
 
 rdf_export int
-convertDateTimeToLong(char *sDateTime, long *t);
+convertDateTimeToLong(char *sDateTime, lng *t);
 
 rdf_export void
 

MonetDB: Oct2014 - use batcalc.between were possible

2014-08-13 Thread Niels Nes
Changeset: a75afbec2a01 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a75afbec2a01
Modified Files:
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql_gencode.c
sql/include/sql_catalog.h
sql/server/rel_dump.c
sql/server/rel_select.c
Branch: Oct2014
Log Message:

use batcalc.between were possible


diffs (133 lines):

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
@@ -690,7 +690,7 @@ exp_bin(mvc *sql, sql_exp *e, stmt *left
s = stmt_binop(sql-sa, 
stmt_binop(sql-sa, l, r, lf), 
stmt_binop(sql-sa, l, r2, rf), 
a);
-   } else if (l-nrcols  0  r-nrcols  0  
r2-nrcols  0) {
+   } else if (((e-flag3) != 3) /* both sides 
closed use between implementation */  l-nrcols  0  r-nrcols  0  
r2-nrcols  0) {
s = stmt_uselect(sql-sa, l, r, 
range2lcompare(e-flag),
stmt_uselect(sql-sa, l, r2, 
range2rcompare(e-flag), sel));
} else {
diff --git a/sql/backends/monet5/sql_gencode.c 
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -1371,7 +1371,7 @@ static int
return -1;
 
if ((s-op2-nrcols  0 || s-op3-nrcols)  (s-type 
== st_uselect2)) {
-   int k;
+   int k, symmetric = s-flagCMP_SYMMETRIC;
char *mod = calcRef;
char *op1 = , *op2 = ;
 
@@ -1385,17 +1385,28 @@ static int
if (s-flag  2)
op2 = =;
 
-   if ((q = multiplex2(mb, mod, 
convertOperator(op1), l, r1, TYPE_bit)) == NULL)
-   return -1;
+   if (s-flag1  s-flag2) {
+   if (symmetric)
+   p = newStmt1(mb, batcalcRef, 
between_symmetric);
+   else
+   p = newStmt1(mb, batcalcRef, 
between);
+   p = pushArgument(mb, p, l);
+   p = pushArgument(mb, p, r1);
+   p = pushArgument(mb, p, r2);
+   k = getDestVar(p);
+   } else {
+   if ((q = multiplex2(mb, mod, 
convertOperator(op1), l, r1, TYPE_bit)) == NULL)
+   return -1;
 
-   if ((r = multiplex2(mb, mod, 
convertOperator(op2), l, r2, TYPE_bit)) == NULL)
-   return -1;
-   p = newStmt1(mb, batcalcRef, and);
-   p = pushArgument(mb, p, getDestVar(q));
-   p = pushArgument(mb, p, getDestVar(r));
-   if (p == NULL)
-   return -1;
-   k = getDestVar(p);
+   if ((r = multiplex2(mb, mod, 
convertOperator(op2), l, r2, TYPE_bit)) == NULL)
+   return -1;
+   p = newStmt1(mb, batcalcRef, and);
+   p = pushArgument(mb, p, getDestVar(q));
+   p = pushArgument(mb, p, getDestVar(r));
+   if (p == NULL)
+   return -1;
+   k = getDestVar(p);
+   }
 
q = newStmt1(mb, algebraRef, subselect);
q = pushArgument(mb, q, k);
diff --git a/sql/include/sql_catalog.h b/sql/include/sql_catalog.h
--- a/sql/include/sql_catalog.h
+++ b/sql/include/sql_catalog.h
@@ -147,6 +147,9 @@ typedef enum comp_type {
cmp_equal_nil = 14  /* special case equi join, with nil = 
nil */
 } comp_type;
 
+/* for ranges we keep the requirment for symmetric */
+#define CMP_SYMMETRIC 8
+
 #define is_theta_exp(e) ((e) == cmp_gt || (e) == cmp_gte || (e) == cmp_lte ||\
 (e) == cmp_lt || (e) == cmp_equal || (e) == 
cmp_notequal)
 
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
@@ -177,6 +177,8 @@ exp_print(mvc *sql, stream *fout, sql_ex

MonetDB: Oct2014 - added an other push groupby down rewrite step.

2014-08-13 Thread Niels Nes
Changeset: a4374e43f2d4 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a4374e43f2d4
Modified Files:
sql/backends/monet5/rel_bin.c
sql/benchmarks/tpch/Tests/02-explain.stable.out
sql/benchmarks/tpch/Tests/02-plan.stable.out
sql/benchmarks/tpch/Tests/10-plan.stable.out
sql/benchmarks/tpch/Tests/17-explain.stable.out
sql/benchmarks/tpch/Tests/17-plan.stable.out
sql/benchmarks/tpch/Tests/18-plan.stable.out
sql/benchmarks/tpch/Tests/20-explain.stable.out
sql/benchmarks/tpch/Tests/20-plan.stable.out
sql/benchmarks/tpch/Tests/21-plan.stable.out
sql/server/rel_exp.c
sql/server/rel_exp.h
sql/server/rel_optimizer.c
Branch: Oct2014
Log Message:

added an other push groupby down rewrite step.
When a groupby follows a join, and the group by is
grouped over a unique column of one of the joined tables
(and all aggregates are done on this table), it can be
pushed down. This pattern happens a lot after apply
rewrites (ie of correlated subqueries).
One thing to remember is when pushed down 'outer' joins
we should mark 'count' aggregates as the outer join should
after the rewrite fill in '0' and not 'null' when rows
are missing.


diffs (truncated from 1342 to 300 lines):

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
@@ -28,6 +28,8 @@
 #include rel_optimizer.h
 #include sql_env.h
 
+#define OUTER_ZERO 64
+
 static stmt * subrel_bin(mvc *sql, sql_rel *rel, list *refs);
 
 static stmt *
@@ -526,6 +528,8 @@ exp_bin(mvc *sql, sql_exp *e, stmt *left
}
}
s = stmt_aggr(sql-sa, as, grp, ext, a, 1, need_no_nil(e) /* 
ignore nil*/ );
+   if (find_prop(e-p, PROP_COUNT)) /* propagate count == 0 ipv 
NULL in outer joins */
+   s-flag |= OUTER_ZERO;
/* HACK: correct cardinality for window functions */
if (e-card  CARD_AGGR)
s-nrcols = 2;
@@ -1083,6 +1087,7 @@ stmt_rename(mvc *sql, sql_rel *rel, sql_
 {
char *name = exp-name;
char *rname = exp-rname;
+   stmt *o = s;
 
(void)rel;
if (!name  exp-type == e_column  exp-r)
@@ -1094,6 +1099,8 @@ stmt_rename(mvc *sql, sql_rel *rel, sql_
if (!rname)
rname = table_name(sql-sa, s);
s = stmt_alias(sql-sa, s, rname, name);
+   if (o-flag  OUTER_ZERO)
+   s-flag |= OUTER_ZERO;
return s;
 }
 
@@ -1645,7 +1652,7 @@ rel2bin_join( mvc *sql, sql_rel *rel, li
if (rel-op == op_left || rel-op == op_full)
s = stmt_append(sql-sa, s, stmt_project(sql-sa, ld, 
c));
if (rel-op == op_right || rel-op == op_full) 
-   s = stmt_append(sql-sa, s, stmt_const(sql-sa, rd, 
stmt_atom(sql-sa, atom_general(sql-sa, tail_type(c), NULL;
+   s = stmt_append(sql-sa, s, stmt_const(sql-sa, rd, 
(c-flagOUTER_ZERO)?stmt_atom_wrd(sql-sa, 0):stmt_atom(sql-sa, 
atom_general(sql-sa, tail_type(c), NULL;
 
s = stmt_alias(sql-sa, s, rnme, nme);
list_append(l, s);
@@ -1660,7 +1667,7 @@ rel2bin_join( mvc *sql, sql_rel *rel, li
if (rel-op == op_left || rel-op == op_full || rel-op == 
op_right)
s = Column(sql-sa, s);
if (rel-op == op_left || rel-op == op_full) 
-   s = stmt_append(sql-sa, s, stmt_const(sql-sa, ld, 
stmt_atom(sql-sa, atom_general(sql-sa, tail_type(c), NULL;
+   s = stmt_append(sql-sa, s, stmt_const(sql-sa, ld, 
(c-flagOUTER_ZERO)?stmt_atom_wrd(sql-sa, 0):stmt_atom(sql-sa, 
atom_general(sql-sa, tail_type(c), NULL;
if (rel-op == op_right || rel-op == op_full) 
s = stmt_append(sql-sa, s, stmt_project(sql-sa, rd, 
c));
 
diff --git a/sql/benchmarks/tpch/Tests/02-explain.stable.out 
b/sql/benchmarks/tpch/Tests/02-explain.stable.out
--- a/sql/benchmarks/tpch/Tests/02-explain.stable.out
+++ b/sql/benchmarks/tpch/Tests/02-explain.stable.out
@@ -67,168 +67,167 @@ Ready.
 % 823 # length
 function user.s2_1{autoCommit=true}(A0:int,A1:str,A2:str,A3:str):void;
 X_6 := sql.mvc();
-X_7:bat[:oid,:oid]  := sql.tid(X_6,sys,nation);
-X_10 := sql.bind_idxbat(X_6,sys,nation,nation_n_regionkey_fkey,0);
-(X_13,r1_13) := 
sql.bind_idxbat(X_6,sys,nation,nation_n_regionkey_fkey,2);
-X_16 := sql.bind_idxbat(X_6,sys,nation,nation_n_regionkey_fkey,1);
-X_18 := sql.projectdelta(X_7,X_10,X_13,r1_13,X_16);
-X_21 := sql.bind(X_6,sys,region,r_name,0);
-X_19:bat[:oid,:oid]  := sql.tid(X_6,sys,region);
-X_337 := algebra.subselect(X_21,X_19,A3,A3,true,true,false);
-(X_23,r1_24) := sql.bind(X_6,sys,region,r_name,2);
-X_338 := algebra.subselect(r1_24,A3,A3,true,true,false);
-X_25 := 

MonetDB: Oct2014 - remove unused variable p

2014-08-14 Thread Niels Nes
Changeset: 9d615402e7c6 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9d615402e7c6
Modified Files:
sql/server/rel_optimizer.c
Branch: Oct2014
Log Message:

remove unused variable p


diffs (25 lines):

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
@@ -3122,19 +3122,18 @@ rel_push_groupby_down(int *changes, mvc 
if (rel-op == op_groupby  list_length(gbe) == 1  is_join(j-op)) {
sql_rel *jl = j-l, *jr = j-r, *cr;
sql_exp *gb = gbe-h-data, *e;
-   prop *p;
node *n;
int left = 1;
list *aggrs, *gbe;
 
if (jl-op == op_project 
(e = list_find_exp( jl-exps, gb)) != NULL 
-   (p = find_prop(e-p, PROP_HASHCOL)) != NULL) {
+find_prop(e-p, PROP_HASHCOL) != NULL) {
left = 0;
cr = jr;
} else if (jr-op == op_project 
(e = list_find_exp( jr-exps, gb)) != NULL 
-   (p = find_prop(e-p, PROP_HASHCOL)) != NULL) {
+find_prop(e-p, PROP_HASHCOL) != NULL) {
left = 1;
cr = jl;
} else {
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Oct2014 - upgrade code fixes.

2014-08-17 Thread Niels Nes
Changeset: 027be675347f for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=027be675347f
Modified Files:
sql/backends/monet5/sql.c
sql/backends/monet5/sql.h
sql/backends/monet5/sql.mal
sql/backends/monet5/sql_scenario.c
sql/include/sql_catalog.h
sql/server/rel_select.c
sql/server/sql_parser.y
sql/storage/bat/bat_logger.c
sql/storage/sql_catalog.c
Branch: Oct2014
Log Message:

upgrade code fixes.
the union functions are now dropped and recreated, this is
needed to solve the storage of multiple return types.


diffs (truncated from 720 to 300 lines):

diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -899,6 +899,49 @@ create_func(mvc *sql, char *sname, sql_f
return MAL_SUCCEED;
 }
 
+str
+UPGdrop_func(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+{
+   mvc *sql = NULL;
+   str msg = MAL_SUCCEED;
+   int id = *(int *) getArgReference(stk, pci, 1);
+   sql_func *func;
+
+   if ((msg = getSQLContext(cntxt, mb, sql, NULL)) != NULL)
+   return msg;
+   if ((msg = checkSQLContext(cntxt)) != NULL)
+   return msg;
+
+   func = sql_trans_find_func(sql-session-tr, id);
+   if (func) 
+   mvc_drop_func(sql, func-s, func, 0);
+   return msg;
+}
+
+str
+UPGcreate_func(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+{
+   mvc *sql = NULL;
+   str msg = MAL_SUCCEED;
+   str func = *(str *) getArgReference(stk, pci, 1);
+   stmt *s;
+
+   if ((msg = getSQLContext(cntxt, mb, sql, NULL)) != NULL)
+   return msg;
+   if ((msg = checkSQLContext(cntxt)) != NULL)
+   return msg;
+   s = sql_parse(sql, sa_create(), func, 0);
+   if (s  s-type == st_catalog) {
+   char *schema = 
((stmt*)s-op1-op4.lval-h-data)-op4.aval-data.val.sval;
+   sql_func *func = 
(sql_func*)((stmt*)s-op1-op4.lval-t-data)-op4.aval-data.val.pval;
+
+   msg = create_func(sql, schema, func);
+   } else {
+   throw(SQL, sql.catalog, function creation failed '%s', 
func);
+   }
+   return msg;
+}
+
 static char *
 create_trigger(mvc *sql, char *sname, char *tname, char *triggername, int 
time, int orientation, int event, char *old_name, char *new_name, char 
*condition, char *query)
 {
diff --git a/sql/backends/monet5/sql.h b/sql/backends/monet5/sql.h
--- a/sql/backends/monet5/sql.h
+++ b/sql/backends/monet5/sql.h
@@ -109,6 +109,9 @@ sql5_export str mvc_declared_table_colum
 sql5_export str mvc_drop_declared_table_wrap(Client cntxt, MalBlkPtr mb, 
MalStkPtr stk, InstrPtr pci);
 sql5_export str mvc_drop_declared_tables_wrap(Client cntxt, MalBlkPtr mb, 
MalStkPtr stk, InstrPtr pci);
 
+sql5_export str UPGdrop_func(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
+sql5_export str UPGcreate_func(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
+
 sql5_export str mvc_affected_rows_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr 
stk, InstrPtr pci);
 sql5_export str mvc_export_result_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr 
stk, InstrPtr pci);
 sql5_export str mvc_export_head_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr 
stk, InstrPtr pci);
@@ -322,4 +325,5 @@ sql5_export str STRindex_bte(bte *res, s
 sql5_export str BATSTRindex_bte(bat *res, bat *src, bit *u);
 sql5_export str STRstrings(str *res, str src);
 sql5_export str BATSTRstrings(bat *res, bat *src);
+
 #endif /* _SQL_H */
diff --git a/sql/backends/monet5/sql.mal b/sql/backends/monet5/sql.mal
--- a/sql/backends/monet5/sql.mal
+++ b/sql/backends/monet5/sql.mal
@@ -305,6 +305,14 @@ pattern dropDeclaredTables{unsafe}( nr:i
 address mvc_drop_declared_tables_wrap
 comment drop top n declared tables; 
 
+pattern drop_func_upgrade_oct2014(id:int) :int
+address UPGdrop_func
+comment Drop the function identified by id, needed for the Oct2014 upgrade;
+
+pattern create_func_upgrade_oct2014(f:str) :int
+address UPGcreate_func
+comment Create the function described by f, needed for the Oct2014 upgrade;
+
 pattern exportHead{unsafe}(s:streams, res_id:int) :void
 address mvc_export_head_wrap
 comment Export a result (in order) to stream s; 
diff --git a/sql/backends/monet5/sql_scenario.c 
b/sql/backends/monet5/sql_scenario.c
--- a/sql/backends/monet5/sql_scenario.c
+++ b/sql/backends/monet5/sql_scenario.c
@@ -598,10 +598,6 @@ sql_update_feb2013_sp3(Client c)
return err; /* usually MAL_SUCCEED */
 }
 
-/*
- * TODO
- * update all table functions, ie make them type F_UNION
- */
 static str
 sql_update_jan2014(Client c)
 {
@@ -877,6 +873,21 @@ sql_update_oct2014(Client c)
pos += snprintf(buf + pos, bufsize - pos, delete from _columns where 
table_id in (select id from _tables where name like '#%%');\n);
pos += snprintf(buf + pos, bufsize - pos, delete from _tables where 
name like 

MonetDB: Oct2014 - approved output

2014-08-17 Thread Niels Nes
Changeset: 93ad4be3fdda for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=93ad4be3fdda
Modified Files:
sql/benchmarks/tpch/Tests/20-explain.stable.out
sql/benchmarks/tpch/Tests/20-plan.stable.out
Branch: Oct2014
Log Message:

approved output


diffs (174 lines):

diff --git a/sql/benchmarks/tpch/Tests/20-explain.stable.out 
b/sql/benchmarks/tpch/Tests/20-explain.stable.out
--- a/sql/benchmarks/tpch/Tests/20-explain.stable.out
+++ b/sql/benchmarks/tpch/Tests/20-explain.stable.out
@@ -94,12 +94,12 @@ function user.s2_1{autoCommit=true}(A0:s
 X_55:bat[:oid,:int]  := algebra.leftfetchjoinPath(X_43,X_33,X_54);
 (X_56,r1_59) := algebra.join(X_31,X_55);
 X_58 := algebra.tinter(X_32,X_56);
-X_282 := algebra.leftfetchjoin(X_58,X_23);
+X_278 := algebra.leftfetchjoin(X_58,X_23);
 X_59 := 
sql.bind_idxbat(X_8,sys,partsupp,partsupp_ps_partkey_ps_suppkey_pkey,0);
 (X_62,r1_65) := 
sql.bind_idxbat(X_8,sys,partsupp,partsupp_ps_partkey_ps_suppkey_pkey,2);
 X_64 := 
sql.bind_idxbat(X_8,sys,partsupp,partsupp_ps_partkey_ps_suppkey_pkey,1);
 X_65 := sql.delta(X_59,X_62,r1_65,X_64);
-X_66:bat[:oid,:wrd]  := algebra.leftfetchjoin(X_282,X_65);
+X_66:bat[:oid,:wrd]  := algebra.leftfetchjoin(X_278,X_65);
 X_67:bat[:oid,:oid]  := sql.tid(X_8,sys,lineitem);
 X_69 := sql.bind(X_8,sys,lineitem,l_shipdate,0);
 (X_71,r1_75) := sql.bind(X_8,sys,lineitem,l_shipdate,2);
@@ -108,17 +108,17 @@ function user.s2_1{autoCommit=true}(A0:s
 X_75 := algebra.leftfetchjoin(X_67,X_74);
 X_76 := mtime.addmonths(A3,A4);
 X_77 := algebra.subselect(X_75,A2,X_76,true,false,false);
-X_283 := algebra.leftfetchjoin(X_77,X_67);
+X_279 := algebra.leftfetchjoin(X_77,X_67);
 X_80 := sql.bind(X_8,sys,lineitem,l_suppkey,0);
 (X_84,r1_91) := sql.bind(X_8,sys,lineitem,l_suppkey,2);
 X_87 := sql.bind(X_8,sys,lineitem,l_suppkey,1);
 X_89 := sql.delta(X_80,X_84,r1_91,X_87);
-X_90:bat[:oid,:int]  := algebra.leftfetchjoin(X_283,X_89);
+X_90:bat[:oid,:int]  := algebra.leftfetchjoin(X_279,X_89);
 X_91 := sql.bind(X_8,sys,lineitem,l_partkey,0);
 (X_93,r1_101) := sql.bind(X_8,sys,lineitem,l_partkey,2);
 X_95 := sql.bind(X_8,sys,lineitem,l_partkey,1);
 X_96 := sql.delta(X_91,X_93,r1_101,X_95);
-X_97:bat[:oid,:int]  := algebra.leftfetchjoin(X_283,X_96);
+X_97:bat[:oid,:int]  := algebra.leftfetchjoin(X_279,X_96);
 (X_98,r1_107,r2_107) := group.subgroup(X_97);
 (X_101,r1_110,r2_110) := group.subgroupdone(X_90,X_98);
 X_104 := algebra.leftfetchjoin(r1_110,X_97);
@@ -127,7 +127,7 @@ function user.s2_1{autoCommit=true}(A0:s
 (X_154,r1_176) := sql.bind(X_8,sys,lineitem,l_quantity,2);
 X_157 := sql.bind(X_8,sys,lineitem,l_quantity,1);
 X_159 := sql.delta(X_149,X_154,r1_176,X_157);
-X_160:bat[:oid,:int]  := algebra.leftfetchjoin(X_283,X_159);
+X_160:bat[:oid,:int]  := algebra.leftfetchjoin(X_279,X_159);
 X_161:bat[:oid,:lng]  := aggr.subsum(X_160,X_101,r1_110,true,true);
 X_105:bat[:oid,:wrd]  := mal.manifold(mkey,hash,X_104);
 X_110:bat[:oid,:wrd]  := mkey.bulk_rotate_xor_hash(X_105,22,X_109);
@@ -141,7 +141,7 @@ function user.s2_1{autoCommit=true}(A0:s
 (X_125,r1_139) := sql.bind(X_8,sys,partsupp,ps_suppkey,2);
 X_128 := sql.bind(X_8,sys,partsupp,ps_suppkey,1);
 X_130 := sql.delta(X_120,X_125,r1_139,X_128);
-X_131:bat[:oid,:int]  := algebra.leftfetchjoin(X_282,X_130);
+X_131:bat[:oid,:int]  := algebra.leftfetchjoin(X_278,X_130);
 X_132 := algebra.leftfetchjoin(X_119,X_131);
 X_133 := algebra.leftfetchjoin(X_117,r1_121);
 X_134 := algebra.leftfetchjoin(X_133,X_109);
@@ -152,7 +152,7 @@ function user.s2_1{autoCommit=true}(A0:s
 (X_140,r1_156) := sql.bind(X_8,sys,partsupp,ps_availqty,2);
 X_142 := sql.bind(X_8,sys,partsupp,ps_availqty,1);
 X_143 := sql.delta(X_138,X_140,r1_156,X_142);
-X_144:bat[:oid,:int]  := algebra.leftfetchjoinPath(X_137,X_282,X_143);
+X_144:bat[:oid,:int]  := algebra.leftfetchjoinPath(X_137,X_278,X_143);
 X_145:bat[:oid,:lng]  := batcalc.lng(X_144,19,2);
 X_147 := calc.lng(1,A1,11,1);
 X_163:bat[:oid,:lng]  := algebra.leftfetchjoinPath(X_136,X_133,X_161);
@@ -161,47 +161,45 @@ function user.s2_1{autoCommit=true}(A0:s
 X_166:bat[:oid,:bit]  := batcalc.(X_145,X_165);
 X_167 := algebra.subselect(X_166,true,true,true,true,false);
 X_169:bat[:oid,:int]  := algebra.leftfetchjoinPath(X_167,X_137,X_131);
-(X_170,r1_196,r2_196) := group.subgroupdone(X_169);
-X_173 := algebra.leftfetchjoin(r1_196,X_169);
-(X_174,r1_200) := algebra.join(X_21,X_173);
-X_176 := algebra.tinter(X_22,X_174);
-X_284 := algebra.leftfetchjoin(X_176,X_9);
-X_177 := sql.bind(X_8,sys,supplier,s_nationkey,0);
-(X_180,r1_206) := sql.bind(X_8,sys,supplier,s_nationkey,2);
-X_183 := sql.bind(X_8,sys,supplier,s_nationkey,1);
-X_184 := sql.delta(X_177,X_180,r1_206,X_183);
-X_185:bat[:oid,:int]  

MonetDB: Oct2014 - fixed crash in in handling

2014-08-17 Thread Niels Nes
Changeset: f34a80054a36 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f34a80054a36
Modified Files:
sql/server/rel_select.c
Branch: Oct2014
Log Message:

fixed crash in in handling


diffs (12 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
@@ -3010,7 +3010,7 @@ rel_logical_exp(mvc *sql, sql_rel *rel, 
l-card != CARD_ATOM  has_nil(l)) {
e = rel_unop_(sql, l, NULL, isnull, 
card_value);
e = exp_compare(sql-sa, e, 
exp_atom_bool(sql-sa, 0), cmp_equal);
-   if (!is_select(rel-op)  !rel_is_ref(rel))
+   if (!is_select(rel-op) || rel_is_ref(rel))
left = rel = rel_select(sql-sa, rel, 
e);
else
rel_select_add_exp(sql-sa, rel, e);
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Oct2014 - restore error message for single column in st...

2014-08-17 Thread Niels Nes
Changeset: 235399f6dab0 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=235399f6dab0
Modified Files:
sql/server/rel_select.c
Branch: Oct2014
Log Message:

restore error message for single column in statements


diffs (16 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
@@ -3133,8 +3133,11 @@ rel_logical_exp(mvc *sql, sql_rel *rel, 
 
/* list through all left/right expressions */
rexps = right-exps;
-   if (!is_project(right-op) || list_length(ll) != 
list_length(rexps))
+   if (!is_project(right-op) || list_length(ll) != 
list_length(rexps)) {
+   if (list_length(ll) == 1)
+   return sql_error(sql, 02, IN: iinner 
query should return a single column);
return NULL;
+   }
 
for (n=ll-h, m=rexps-h; n  m; n = n-next, m = 
m-next) {
sql_exp *l = n-data;
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Oct2014 - generalized div detection/rewrites which fixe...

2014-08-20 Thread Niels Nes
Changeset: 9698a5f83bf6 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9698a5f83bf6
Added Files:
sql/test/BugTracker-2014/Tests/ifthenelse.Bug-3546.stable.err
sql/test/BugTracker-2014/Tests/ifthenelse.Bug-3546.stable.out
Modified Files:
sql/backends/monet5/sql_gencode.c
sql/server/rel_optimizer.c
sql/storage/bat/bat_storage.c
sql/test/BugTracker-2014/Tests/All
Branch: Oct2014
Log Message:

generalized div detection/rewrites which fixes bug 3546


diffs (299 lines):

diff --git a/sql/backends/monet5/sql_gencode.c 
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -1869,6 +1869,8 @@ static int
return -1;
mod = sql_func_mod(f-func);
fimp = sql_func_imp(f-func);
+   if (s-op1  list_length(s-op1-op4.lval) != 3  
strcmp(f-func-base.name, ifthenelse) == 0)
+   assert(0);
if (s-nrcols) {
sql_subtype *res = f-res-h-data;
fimp = convertMultiplexFcn(fimp);
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
@@ -2216,6 +2216,43 @@ sql_div_fixup( mvc *sql, sql_exp *e, sql
return exp_binop(sql-sa, le, re, e-f);
 }
 
+static int 
+exp_find_func( sql_exp *e, char *name)
+{
+   if (!e)
+   return 0;
+   switch(e-type) {
+   case e_aggr:
+   case e_func: 
+   {
+   list *l = e-l;
+   node *n;
+   sql_subfunc *f = e-f;
+
+   if (!f-func-s  !strcmp(f-func-base.name, name)) 
+   return 1;
+   if (!l)
+   return 0;
+   for (n = l-h; n; n = n-next) {
+   sql_exp *ne = n-data;
+
+   if (exp_find_func( ne, name))
+   return 1;
+   }
+   }
+   case e_convert:
+   return exp_find_func( e-l, name);
+   case e_column: 
+   case e_cmp:
+   case e_psm:
+   case e_atom:
+   default:
+   return 0;
+   }
+}
+
+static sql_exp * exp_div_fixup( mvc *sql, sql_exp *e, sql_exp *cond, int lr );
+
 static list *
 exps_case_fixup( mvc *sql, list *exps, sql_exp *cond, int lr )
 {
@@ -2236,6 +2273,10 @@ exps_case_fixup( mvc *sql, list *exps, s
exp_setname(sql-sa, ne, e-rname, 
e-name );
e = ne;
}
+   } else if (e-type == e_convert) {
+   sql_exp *l = exp_div_fixup(sql, e-l, cond, lr);
+   sql_exp *ne = exp_convert(sql-sa, l, 
exp_fromtype(e), exp_totype(e));
+   e = ne;
}
append(nexps, e);
}
@@ -2245,6 +2286,24 @@ exps_case_fixup( mvc *sql, list *exps, s
 }
 
 static sql_exp *
+exp_div_fixup( mvc *sql, sql_exp *e, sql_exp *cond, int lr )
+{
+   if (is_func(e-type)  e-l  !is_rank_op(e) ) {
+   sql_subfunc *f = e-f;
+
+   if (!f-func-s  !strcmp(f-func-base.name, sql_div)) {
+   e = sql_div_fixup(sql, e, cond, lr);
+   } else {
+   list *l = exps_case_fixup(sql, e-l, cond, lr);
+   sql_exp *ne = exp_op(sql-sa, l, f);
+   exp_setname(sql-sa, ne, e-rname, e-name );
+   e = ne;
+   }
+   }
+   return e;
+}
+
+static sql_exp *
 exp_case_fixup( mvc *sql, sql_exp *e )
 {
/* only functions need fix up */
@@ -2264,38 +2323,23 @@ exp_case_fixup( mvc *sql, sql_exp *e )
 
/* ifthenelse with one of the sides an 'sql_div' */
args = ne-l;
-   if (!f-func-s  !strcmp(f-func-base.name,ifthenelse)) { 
+   if (!f-func-s  !strcmp(f-func-base.name, ifthenelse)) { 
sql_exp *cond = args-h-data, *nne; 
sql_exp *a1 = args-h-next-data; 
sql_exp *a2 = args-h-next-next-data; 
-   sql_subfunc *a1f = a1-f;
-   sql_subfunc *a2f = a2-f;
 
/* rewrite right hands of div */
-   if (a1-type == e_func  !a1f-func-s  
-!strcmp(a1f-func-base.name, sql_div)) {
-   a1 = sql_div_fixup(sql, a1, cond, 0);
+   if ((a1-type == e_func || a1-type == e_convert)  
exp_find_func(a1, sql_div)) {
+   a1 = exp_div_fixup(sql, a1, cond, 

MonetDB: Oct2014 - added test for bug 3542

2014-08-20 Thread Niels Nes
Changeset: b3e90980dc9b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b3e90980dc9b
Added Files:
sql/test/BugTracker-2014/Tests/round.Bug-3542.sql
sql/test/BugTracker-2014/Tests/round.Bug-3542.stable.err
sql/test/BugTracker-2014/Tests/round.Bug-3542.stable.out
Modified Files:
sql/test/BugTracker-2014/Tests/All
Branch: Oct2014
Log Message:

added test for bug 3542


diffs (119 lines):

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
@@ -32,4 +32,5 @@ non_groupby_column.Bug-3524
 orderby_count.Bug-3526
 outer_join_using_diff_types_using.Bug-3536
 select-distinct-order-limit.Bug-3527
+round.Bug-3542
 ifthenelse.Bug-3546
diff --git a/sql/test/BugTracker-2014/Tests/round.Bug-3542.sql 
b/sql/test/BugTracker-2014/Tests/round.Bug-3542.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2014/Tests/round.Bug-3542.sql
@@ -0,0 +1,7 @@
+CREATE TABLE test_num_data (id integer, val numeric(18,10));
+INSERT INTO test_num_data VALUES (1, '-0.0');
+INSERT INTO test_num_data VALUES (2, '-34338492.215397047');
+SELECT * FROM test_num_data;
+SELECT t1.id, t2.id, t1.val * t2.val FROM test_num_data t1, test_num_data t2;
+SELECT t1.id, t2.id, round(t1.val * t2.val, 30) FROM test_num_data t1, 
test_num_data t2;
+drop table test_num_data;
diff --git a/sql/test/BugTracker-2014/Tests/round.Bug-3542.stable.err 
b/sql/test/BugTracker-2014/Tests/round.Bug-3542.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2014/Tests/round.Bug-3542.stable.err
@@ -0,0 +1,43 @@
+stderr of test 'round.Bug-3542` in directory 'sql/test/BugTracker-2014` itself:
+
+
+# 11:02:07   
+# 11:02:07   mserver5 --debug=10 --set gdk_nr_threads=0 --set 
mapi_open=true --set mapi_port=32577 --set 
mapi_usock=/var/tmp/mtest-6484/.s.monetdb.32577 --set monet_prompt= 
--forcemito --set mal_listing=2 
--dbpath=/home/niels/scratch/rc-monetdb/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2014
 --set mal_listing=0 --set embedded_r=yes
+# 11:02:07   
+
+# builtin opt  gdk_dbpath = 
/home/niels/scratch/rc-monetdb/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 = 32577
+# cmdline opt  mapi_usock = /var/tmp/mtest-6484/.s.monetdb.32577
+# cmdline opt  monet_prompt = 
+# cmdline opt  mal_listing = 2
+# cmdline opt  gdk_dbpath = 
/home/niels/scratch/rc-monetdb/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2014
+# cmdline opt  mal_listing = 0
+# cmdline opt  embedded_r = yes
+# cmdline opt  gdk_debug = 536870922
+
+# 11:02:08   
+# 11:02:08   mclient -lsql -ftest -Eutf-8 -i -e 
--host=/var/tmp/mtest-6484 --port=32577
+# 11:02:08   
+
+MAPI  = (monetdb) /var/tmp/mtest-6484/.s.monetdb.32577
+QUERY = SELECT t1.id, t2.id, t1.val * t2.val FROM test_num_data t1, 
test_num_data t2;
+
+MAPI  = (monetdb) /var/tmp/mtest-6484/.s.monetdb.32577
+QUERY = SELECT t1.id, t2.id, round(t1.val * t2.val, 30) FROM test_num_data t1, 
test_num_data t2;
+
+
+# 11:02:08   
+# 11:02:08   Done.
+# 11:02:08   
+
diff --git a/sql/test/BugTracker-2014/Tests/round.Bug-3542.stable.out 
b/sql/test/BugTracker-2014/Tests/round.Bug-3542.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2014/Tests/round.Bug-3542.stable.out
@@ -0,0 +1,45 @@
+stdout of test 'round.Bug-3542` in directory 'sql/test/BugTracker-2014` itself:
+
+
+# 11:02:07   
+# 11:02:07   mserver5 --debug=10 --set gdk_nr_threads=0 --set 
mapi_open=true --set mapi_port=32577 --set 
mapi_usock=/var/tmp/mtest-6484/.s.monetdb.32577 --set monet_prompt= 
--forcemito --set mal_listing=2 
--dbpath=/home/niels/scratch/rc-monetdb/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2014
 --set mal_listing=0 --set embedded_r=yes
+# 11:02:07   
+
+# MonetDB 5 server v11.19.0
+# This is an unreleased version
+# Serving database 'mTests_sql_test_BugTracker-2014', using 4 threads
+# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically 
linked
+# Found 7.334 GiB available main-memory.
+# Copyright (c) 1993-July 2008 CWI.
+# Copyright (c) August 2008-2014 MonetDB B.V., all rights reserved
+# Visit http://www.monetdb.org/ for further information
+# Listening for connection requests on mapi:monetdb://localhost.nes.nl:32577/
+# Listening for UNIX domain connection requests on 
mapi:monetdb:///var/tmp/mtest-6484/.s.monetdb.32577
+# MonetDB/GIS module loaded
+# MonetDB/SQL module loaded
+# MonetDB/R   module loaded
+
+Ready.
+
+# 11:02:08   
+# 11:02:08   mclient -lsql -ftest -Eutf-8 -i -e 
--host=/var/tmp/mtest-6484 --port=32577
+# 

MonetDB: Oct2014 - merged

2014-08-20 Thread Niels Nes
Changeset: 5ec7c028f095 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5ec7c028f095
Modified Files:
configure.ag
Branch: Oct2014
Log Message:

merged


diffs (41 lines):

diff --git a/configure.ag b/configure.ag
--- a/configure.ag
+++ b/configure.ag
@@ -2442,17 +2442,28 @@ if test x$have_samtools != xno; then
save_LDFLAGS=$LDFLAGS
CPPFLAGS=$CPPFLAGS $SAMTOOLS_CFLAGS
LDFLAGS=$LDFLAGS $SAMTOOLS_LIBS
+
AC_CHECK_HEADER(samtools/bam.h,
+   [ why_have_samtools= ],
+   [ why_have_samtools=samtools/bam.h header not found ])
+   if test -z $why_have_samtools; then
AC_CHECK_HEADER(samtools/bgzf.h,
-   AC_CHECK_LIB(bam, bam_header_read,
-   AC_DEFINE(HAVE_SAMTOOLS, 1, [Define if you have 
the samtools (providing the bam library)]),
-   [ if test x$have_samtools != xauto; then 
AC_MSG_ERROR([-lbam library not found]); fi
- have_samtools=no; why_have_samtools=(bam 
library not found) ],
-   [-lm -lpthread -lz]),
-   [ if test x$have_samtools != xauto; then 
AC_MSG_ERROR([samtools/bgzf.h header not found]); fi
- have_samtools=no; why_have_samtools=(samtools/bgzf.h 
header not found) ]),
-   [ if test x$have_samtools != xauto; then 
AC_MSG_ERROR([samtools/bam.h header not found]); fi
- have_samtools=no; why_have_samtools=(samtools/bam.h header 
not found) ])
+   [ why_have_samtools= ],
+   [ why_have_samtools=samtools/bgzf.h header not found 
])
+   fi
+   if test -z $why_have_samtools; then
+   AC_CHECK_LIB(bam, bam_header_read,
+   AC_DEFINE(HAVE_SAMTOOLS, 1, [Define if you have the 
samtools (providing the bam library)]),
+   [ why_have_samtools=bam library not found ],
+   [-lm -lpthread -lz])
+   fi
+   if test -n $why_have_samtools; then
+   if test x$have_samtools != xauto; then
+   AC_MSG_ERROR([$why_have_samtools])
+   fi
+   have_samtools=no
+   why_have_samtools=($why_have_samtools)
+   fi
LDFLAGS=$save_LDFLAGS
CPPFLAGS=$save_CPPFLAGS
if test x$have_samtools = xyes -o x$have_samtools = xauto; then
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Oct2014 - fixed push topn down, also include the order ...

2014-08-20 Thread Niels Nes
Changeset: 36a9402c22b5 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=36a9402c22b5
Modified Files:
sql/server/rel_optimizer.c
Branch: Oct2014
Log Message:

fixed push topn down, also include the order by columns, solves bug 3547.


diffs (54 lines):

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
@@ -204,7 +204,8 @@ list_find_exp( list *exps, sql_exp *e)
 {
sql_exp *ne = NULL;
 
-   assert(e-type == e_column);
+   if (e-type != e_column)
+   return NULL;
if ((e-l  (ne=exps_bind_column2(exps, e-l, e-r)) != NULL) ||
((ne=exps_bind_column(exps, e-r, NULL)) != NULL))
return ne;
@@ -1733,6 +1734,7 @@ rel_push_topn_down(int *changes, mvc *sq
sql_rel *u = rp, *ou = u, *x;
sql_rel *ul = u-l;
sql_rel *ur = u-r;
+   int add_r = 0;
 
/* only push topn once */
x = ul;
@@ -1746,6 +1748,8 @@ rel_push_topn_down(int *changes, mvc *sq
if (x  x-op == op_topn)
return rel;
 
+   if (list_length(ul-exps)  list_length(r-exps))
+   add_r = 1;
ul = rel_dup(ul);
ur = rel_dup(ur);
if (!is_project(ul-op)) 
@@ -1760,14 +1764,23 @@ rel_push_topn_down(int *changes, mvc *sq
/* introduce projects under the set */
ul = rel_project(sql-sa, ul, NULL);
ul-exps = exps_copy(sql-sa, r-exps);
+   /* possibly add order by column */
+   if (add_r)
+   ul-exps = list_merge(ul-exps, 
exps_copy(sql-sa, r-r), NULL);
ul-r = exps_copy(sql-sa, r-r);
ul = rel_topn(sql-sa, ul, sum_limit_offset(sql, 
rel-exps));
ur = rel_project(sql-sa, ur, NULL);
ur-exps = exps_copy(sql-sa, r-exps);
+   /* possibly add order by column */
+   if (add_r)
+   ur-exps = list_merge(ur-exps, 
exps_copy(sql-sa, r-r), NULL);
ur-r = exps_copy(sql-sa, r-r);
ur = rel_topn(sql-sa, ur, sum_limit_offset(sql, 
rel-exps));
u = rel_setop(sql-sa, ul, ur, op_union);
u-exps = exps_copy(sql-sa, r-exps); 
+   /* possibly add order by column */
+   if (add_r)
+   u-exps = list_merge(u-exps, 
exps_copy(sql-sa, r-r), NULL);
/* zap names */
rel_no_rename_exps(u-exps);
rel_destroy(ou);
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Oct2014 - approve error message

2014-08-20 Thread Niels Nes
Changeset: 7432e7c35cff for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7432e7c35cff
Modified Files:
sql/test/BugTracker-2014/Tests/round.Bug-3542.stable.err
Branch: Oct2014
Log Message:

approve error message


diffs (19 lines):

diff --git a/sql/test/BugTracker-2014/Tests/round.Bug-3542.stable.err 
b/sql/test/BugTracker-2014/Tests/round.Bug-3542.stable.err
--- a/sql/test/BugTracker-2014/Tests/round.Bug-3542.stable.err
+++ b/sql/test/BugTracker-2014/Tests/round.Bug-3542.stable.err
@@ -30,11 +30,12 @@ stderr of test 'round.Bug-3542` in direc
 # 11:02:08   mclient -lsql -ftest -Eutf-8 -i -e 
--host=/var/tmp/mtest-6484 --port=32577
 # 11:02:08   
 
-MAPI  = (monetdb) /var/tmp/mtest-6484/.s.monetdb.32577
+MAPI  = (monetdb) /var/tmp/mtest-12641/.s.monetdb.34069
 QUERY = SELECT t1.id, t2.id, t1.val * t2.val FROM test_num_data t1, 
test_num_data t2;
-
-MAPI  = (monetdb) /var/tmp/mtest-6484/.s.monetdb.32577
+ERROR = !overflow in calculation -343384922153970470*-343384922153970470.
+MAPI  = (monetdb) /var/tmp/mtest-12641/.s.monetdb.34069
 QUERY = SELECT t1.id, t2.id, round(t1.val * t2.val, 30) FROM test_num_data t1, 
test_num_data t2;
+ERROR = !overflow in calculation -343384922153970470*-343384922153970470.
 
 
 # 11:02:08   
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Oct2014 - removed debug statement

2014-08-20 Thread Niels Nes
Changeset: c9a28c08776b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c9a28c08776b
Modified Files:
sql/backends/monet5/sql_gencode.c
Branch: Oct2014
Log Message:

removed debug statement


diffs (12 lines):

diff --git a/sql/backends/monet5/sql_gencode.c 
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -1869,8 +1869,6 @@ static int
return -1;
mod = sql_func_mod(f-func);
fimp = sql_func_imp(f-func);
-   if (s-op1  list_length(s-op1-op4.lval) != 3  
strcmp(f-func-base.name, ifthenelse) == 0)
-   assert(0);
if (s-nrcols) {
sql_subtype *res = f-res-h-data;
fimp = convertMultiplexFcn(fimp);
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Oct2014 - added test for bug 3543

2014-08-20 Thread Niels Nes
Changeset: 09da452b2f51 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=09da452b2f51
Added Files:
sql/test/BugTracker-2014/Tests/number_4_4.Bug-3543.sql
Modified Files:
sql/test/BugTracker-2014/Tests/All
Branch: Oct2014
Log Message:

added test for bug 3543


diffs (43 lines):

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
@@ -33,4 +33,5 @@ orderby_count.Bug-3526
 outer_join_using_diff_types_using.Bug-3536
 select-distinct-order-limit.Bug-3527
 round.Bug-3542
+number_4_4.Bug-3543
 ifthenelse.Bug-3546
diff --git a/sql/test/BugTracker-2014/Tests/number_4_4.Bug-3543.sql 
b/sql/test/BugTracker-2014/Tests/number_4_4.Bug-3543.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2014/Tests/number_4_4.Bug-3543.sql
@@ -0,0 +1,29 @@
+CREATE TABLE fract_only (id int, val numeric(4,4));
+--Note that the precision is equal to the scale, so the allowed number of 
significant digits before the decimal dot should not exceed 0 (4 - 4 = 0).
+
+--the following SQL are NOT accepted but should be accepted:
+INSERT INTO fract_only VALUES (1, '-0.');
+INSERT INTO fract_only VALUES (2, '+0.');
+
+--the following SQL are accepted but incorrect data is stored:
+INSERT INTO fract_only VALUES (3, '+.');
+SELECT * FROM fract_only;
+-- returns value 2.5535 !!
+
+--the following SQL are accepted but should error:
+INSERT INTO fract_only VALUES (4, '0.5');  -- should fail but is invalidly 
accepted
+INSERT INTO fract_only VALUES (5, '0.9');  -- should fail but is invalidly 
accepted
+SELECT * FROM fract_only;
+-- both show 1. which out of the allowed value range of numeric(4,4)
+
+INSERT INTO fract_only VALUES (6, '+0.5'); -- correctly fails
+INSERT INTO fract_only VALUES (6, '+.5');  -- should fail but is invalidly 
accepted
+SELECT * FROM fract_only;
+-- returns value 2.5536 for id 6 !!
+
+INSERT INTO fract_only VALUES (7, '-0.5'); -- correctly fails
+INSERT INTO fract_only VALUES (7, '-.98');  -- should fail but is 
invalidly accepted
+SELECT * FROM fract_only;
+-- returns value -0. for id 7 !!
+
+drop table fract_only;
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Oct2014 - more decimal fixes

2014-08-20 Thread Niels Nes
Changeset: 882e12ddac9d for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=882e12ddac9d
Modified Files:
sql/server/sql_parser.y

sql/test/BugTracker-2013/Tests/bogus_aggregation_casts.Bug-3342.stable.out
sql/test/BugTracker-2013/Tests/median.Bug-3352.stable.out
sql/test/BugTracker-2014/Tests/round-properties.Bug-3515.sql
sql/test/BugTracker-2014/Tests/round-properties.Bug-3515.stable.out
sql/test/Dump/Tests/dump.stable.out
sql/test/quantiles/Tests/quantiles.stable.out
sql/test/testdb/Tests/testdb-dump.stable.out
Branch: Oct2014
Log Message:

more decimal fixes


diffs (150 lines):

diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y
--- a/sql/server/sql_parser.y
+++ b/sql/server/sql_parser.y
@@ -4618,7 +4618,7 @@ data_type:
  |  sqlINTEGER { sql_find_subtype($$, int, 0, 0); }
  |  BIGINT { sql_find_subtype($$, bigint, 0, 0); }
 
- |  sqlDECIMAL { sql_find_subtype($$, decimal, 1, 0); }
+ |  sqlDECIMAL { sql_find_subtype($$, decimal, 18, 3); }
  |  sqlDECIMAL '(' nonzero ')'
{ 
  int d = $3;
diff --git 
a/sql/test/BugTracker-2013/Tests/bogus_aggregation_casts.Bug-3342.stable.out 
b/sql/test/BugTracker-2013/Tests/bogus_aggregation_casts.Bug-3342.stable.out
--- a/sql/test/BugTracker-2013/Tests/bogus_aggregation_casts.Bug-3342.stable.out
+++ b/sql/test/BugTracker-2013/Tests/bogus_aggregation_casts.Bug-3342.stable.out
@@ -42,9 +42,9 @@ Ready.
 #select sys.median(p_retailprice) from part;
 % sys.L1 # table_name
 % L1 # name
-% double # type
-% 24 # length
-[ 903  ]
+% decimal # type
+% 14 # length
+[ 903.00   ]
 #drop table part;
 
 # 21:17:25   
diff --git a/sql/test/BugTracker-2013/Tests/median.Bug-3352.stable.out 
b/sql/test/BugTracker-2013/Tests/median.Bug-3352.stable.out
--- a/sql/test/BugTracker-2013/Tests/median.Bug-3352.stable.out
+++ b/sql/test/BugTracker-2013/Tests/median.Bug-3352.stable.out
@@ -67,8 +67,8 @@ Ready.
 #select median(a) from t3352;
 % sys.L1 # table_name
 % L1 # name
-% double # type
-% 24 # length
+% decimal # type
+% 12 # length
 [ 41.18]
 #select median(b) from t3352;
 % sys.L1 # table_name
diff --git a/sql/test/BugTracker-2014/Tests/round-properties.Bug-3515.sql 
b/sql/test/BugTracker-2014/Tests/round-properties.Bug-3515.sql
--- a/sql/test/BugTracker-2014/Tests/round-properties.Bug-3515.sql
+++ b/sql/test/BugTracker-2014/Tests/round-properties.Bug-3515.sql
@@ -1,6 +1,7 @@
 START TRANSACTION;
 CREATE TABLE ceil_floor_round (a numeric);
 INSERT INTO ceil_floor_round VALUES ('-5.49');
+INSERT INTO ceil_floor_round VALUES ('-5.499');
 INSERT INTO ceil_floor_round VALUES ('0.0');
 SELECT a, round(a, 0) FROM ceil_floor_round;
 ROLLBACK;
diff --git 
a/sql/test/BugTracker-2014/Tests/round-properties.Bug-3515.stable.out 
b/sql/test/BugTracker-2014/Tests/round-properties.Bug-3515.stable.out
--- a/sql/test/BugTracker-2014/Tests/round-properties.Bug-3515.stable.out
+++ b/sql/test/BugTracker-2014/Tests/round-properties.Bug-3515.stable.out
@@ -55,15 +55,18 @@ Ready.
 #CREATE TABLE ceil_floor_round (a numeric);
 #INSERT INTO ceil_floor_round VALUES ('-5.49');
 [ 1]
+#INSERT INTO ceil_floor_round VALUES ('-5.499');
+[ 1]
 #INSERT INTO ceil_floor_round VALUES ('0.0');
 [ 1]
 #SELECT a, round(a, 0) FROM ceil_floor_round;
 % sys.ceil_floor_round,sys.L # table_name
 % a,   round_a # name
 % decimal, decimal # type
-% 2,   3 # length
-[ -4,  -4  ]
-[ 0,   0   ]
+% 20,  10 # length
+[ -5.500,  -6.000  ]
+[ -5.499,  -5.000  ]
+[ 0.000,   0.000   ]
 #ROLLBACK;
 
 # 16:17:57   
diff --git a/sql/test/Dump/Tests/dump.stable.out 
b/sql/test/Dump/Tests/dump.stable.out
--- a/sql/test/Dump/Tests/dump.stable.out
+++ b/sql/test/Dump/Tests/dump.stable.out
@@ -46,7 +46,7 @@ CREATE TABLE sys.typestest (
bigint BIGINT,
double DOUBLE,
real   REAL,
-   decimalDECIMAL,
+   decimalDECIMAL(18,3),
decimal9   DECIMAL(9),
decimal83  DECIMAL(8,3),
float  DOUBLE,
@@ -83,7 +83,7 @@ CREATE TABLE sys.typestest (
character10CHAR(10)
 );
 COPY 1 RECORDS INTO sys.typestest FROM stdin USING DELIMITERS 
'\t','\n','';
-true   10  1   100 100 100 1e+30   1.0002e+20  
1   123456789   12345.678   3.14150002  3.1415  3.1415  
2009-04-15  24  18  3   1728000.000 108000.000  
12.000  10.000  36000.000   6000.0002000.000
600.000 100.000 10.000  1995-07-15 07:30:00.00  1995-07-15 
07:30:00.0   1995-07-15 07:30:00.00+00:001995-07-15 
07:30:00.0+00:00 07:30:0007:30:00.0  07:30:00+00:00  
07:30:00.0+00:00123456  123456  123456123456x 
varchar   0123456789
+true   10  1   100 100 

MonetDB: mosaic - added parsing of INSERT ONLY

2014-08-21 Thread Niels Nes
Changeset: e9bdcf3cf60c for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e9bdcf3cf60c
Modified Files:
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql.c
sql/include/sql_catalog.h
sql/scripts/75_storagemodel.sql
sql/server/rel_schema.c
sql/server/rel_trans.h
sql/server/rel_updates.c
sql/server/sql_mvc.c
sql/server/sql_mvc.h
sql/server/sql_parser.h
sql/server/sql_parser.y
sql/server/sql_scan.c
sql/storage/bat/bat_storage.c
sql/storage/sql_storage.h
sql/storage/store.c
Branch: mosaic
Log Message:

added parsing of INSERT ONLY
added parsing and initial handling (ie storing only) of
alter table table_NAME alter column column_Name set storage 'storage 
string';
Sofar only the storage string is saved. Next step is to call the proper 
compression algo's.


diffs (truncated from 576 to 300 lines):

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
@@ -731,7 +731,7 @@ stmt_col( mvc *sql, sql_column *c, stmt 
 { 
stmt *sc = stmt_bat(sql-sa, c, RDONLY);
 
-   if (isTable(c-t)  !c-t-readonly 
+   if (isTable(c-t)  c-t-access != TABLE_READONLY 
   (c-base.flag != TR_NEW || c-t-base.flag != TR_NEW /* alter */) 
   (c-t-persistence == SQL_PERSIST || c-t-persistence == 
SQL_DECLARED_TABLE)  !c-t-commit_action) {
stmt *i = stmt_bat(sql-sa, c, RD_INS);
@@ -749,7 +749,7 @@ stmt_idx( mvc *sql, sql_idx *i, stmt *de
 { 
stmt *sc = stmt_idxbat(sql-sa, i, RDONLY);
 
-   if (isTable(i-t)  !i-t-readonly 
+   if (isTable(i-t)  i-t-access != TABLE_READONLY 
   (i-base.flag != TR_NEW || i-t-base.flag != TR_NEW /* alter */) 
   (i-t-persistence == SQL_PERSIST || i-t-persistence == 
SQL_DECLARED_TABLE)  !i-t-commit_action) {
stmt *ic = stmt_idxbat(sql-sa, i, RD_INS);
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -534,10 +534,10 @@ alter_table(mvc *sql, char *sname, sql_t
}
}
 
-   if (t-readonly != nt-readonly) {
-   if (t-readonly  table_has_updates(sql-session-tr, nt)) 
-   return sql_message(4!ALTER TABLE: set READONLY not 
possible with outstanding updates (wait until updates are flushed)\n);
-   mvc_readonly(sql, nt, t-readonly);
+   if (t-access != nt-access) {
+   if (t-access  table_has_updates(sql-session-tr, nt)) 
+   return sql_message(4!ALTER TABLE: set READ or 
INSERT ONLY not possible with outstanding updates (wait until updates are 
flushed)\n);
+   mvc_access(sql, nt, t-access);
}
 
/* check for changes */
@@ -583,6 +583,10 @@ alter_table(mvc *sql, char *sname, sql_t
}
if (c-def != nc-def)
mvc_default(sql, nc, c-def);
+   if (c-storage_type != nc-storage_type) {
+   /* TODO here we should call the storage related 
functions */
+   mvc_storage(sql, nc, c-storage_type);
+   }
}
for (; n; n = n-next) {
/* propagate alter table .. add column */
@@ -2205,7 +2209,7 @@ SQLtid(Client cntxt, MalBlkPtr mb, MalSt
 
nr = store_funcs.count_col(tr, c, 1);
 
-   if (isTable(t)  !t-readonly  (t-base.flag != TR_NEW /* alter */ ) 

+   if (isTable(t)  t-access == TABLE_WRITABLE  (t-base.flag != 
TR_NEW /* alter */ ) 
t-persistence == SQL_PERSIST  !t-commit_action)
inr = store_funcs.count_col(tr, c, 0);
nr -= inr;
@@ -3967,7 +3971,7 @@ SQLcompress(Client cntxt, MalBlkPtr mb, 
t = mvc_bind_table(m, s, *tbl);
if (t == NULL)
throw(SQL, sql.compress, 42S02!Table missing);
-   if ( !t-readonly)
+   if (t-access != TABLE_READONLY)
throw(SQL, sql.compress, !Table must be read only);
tr = m-session-tr;
t-base.wtime = s-base.wtime = tr-wtime = tr-wstime;
@@ -3991,11 +3995,11 @@ SQLcompress(Client cntxt, MalBlkPtr mb, 
d = c-data;
if (d-bid)
BBPdecref(d-bid, TRUE);
-   if (d-ibid)
-   BBPdecref(d-ibid, TRUE);
-   d-bid = 0;
+   //if (d-ibid)
+   //BBPdecref(d-ibid, TRUE);
+   d-bid = bid;
d-ibase = 0;
-   d-ibid = bid;  /* use the insert bat */
+   //d-ibid = 0;  /* use the insert bat */
c-base.wtime = tr-wstime;
c-base.rtime = tr-stime;
}
@@ -4029,7 +4033,7 @@ SQLdecompress(Client cntxt, MalBlkPtr mb
t = mvc_bind_table(m, s, *tbl);
if (t == NULL)

MonetDB: mosaic - call MOScompressInternal

2014-08-21 Thread Niels Nes
Changeset: 1e94fe1a63af for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1e94fe1a63af
Modified Files:
sql/backends/monet5/sql.c
Branch: mosaic
Log Message:

call MOScompressInternal


diffs (47 lines):

diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -48,6 +48,7 @@
 # include rdf.h
 #endif
 #include mal_instruction.h
+#include mosaic.h
 
 static int
 rel_is_table(sql_rel *rel)
@@ -506,7 +507,7 @@ table_has_updates(sql_trans *tr, sql_tab
 }
 
 static str
-alter_table(mvc *sql, char *sname, sql_table *t)
+alter_table(Client cntxt, mvc *sql, char *sname, sql_table *t)
 {
sql_schema *s = mvc_bind_schema(sql, sname);
sql_table *nt = NULL;
@@ -583,8 +584,16 @@ alter_table(mvc *sql, char *sname, sql_t
}
if (c-def != nc-def)
mvc_default(sql, nc, c-def);
+
if (c-storage_type != nc-storage_type) {
-   /* TODO here we should call the storage related 
functions */
+   bat bid = 0;
+   BAT *b = store_funcs.bind_col(sql-session-tr, nc, 0);
+   sql_delta *d;
+   char *msg = MOScompressInternal(cntxt, bid, 
b-batCacheid, c-storage_type);
+   if (msg)
+   return msg;
+   d = nc-data;
+   d-bid = bid;
mvc_storage(sql, nc, c-storage_type);
}
}
@@ -1093,7 +1102,7 @@ SQLcatalog(Client cntxt, MalBlkPtr mb, M
}
case DDL_ALTER_TABLE:{
sql_table *t = *(sql_table **) getArgReference(stk, pci, 3);
-   msg = alter_table(sql, sname, t);
+   msg = alter_table(cntxt, sql, sname, t);
break;
}
case DDL_CREATE_TYPE:{
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: mosaic - Handle 'compressed' columns/idxs in storage co...

2014-08-22 Thread Niels Nes
Changeset: 09d73ee0caa1 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=09d73ee0caa1
Modified Files:
sql/backends/monet5/sql.c
sql/include/sql_catalog.h
sql/storage/bat/bat_storage.c
sql/storage/bat/bat_storage.h
Branch: mosaic
Log Message:

Handle 'compressed' columns/idxs in storage code (todo handle logging)


diffs (114 lines):

diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -589,10 +589,17 @@ alter_table(Client cntxt, mvc *sql, char
bat bid = 0;
BAT *b = store_funcs.bind_col(sql-session-tr, nc, 0);
sql_delta *d;
-   char *msg = MOScompressInternal(cntxt, bid, 
b-batCacheid, c-storage_type);
+   char *msg;
+   if (c-t-access == TABLE_WRITABLE) 
+   return sql_message(40002!ALTER TABLE: SET 
STORAGE for column %s.%s only allowed on READ or INSERT ONLY tables, 
c-t-base.name, c-base.name);
+
+   msg = MOScompressInternal(cntxt, bid, b-batCacheid, 
c-storage_type);
if (msg)
return msg;
+   allocate_delta(sql-session-tr, nc);
d = nc-data;
+   assert(nc-base.allocated == 1);
+   nc-base.rtime = nc-base.wtime = 
sql-session-tr-wtime;
d-bid = bid;
mvc_storage(sql, nc, c-storage_type);
}
diff --git a/sql/include/sql_catalog.h b/sql/include/sql_catalog.h
--- a/sql/include/sql_catalog.h
+++ b/sql/include/sql_catalog.h
@@ -371,6 +371,7 @@ typedef struct sql_idx {
struct list *columns;   /* list of sql_kc */
struct sql_table *t;
struct sql_key *key;/* key */
+   char *storage_type;
void *data;
 } sql_idx;
 
diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c
--- a/sql/storage/bat/bat_storage.c
+++ b/sql/storage/bat/bat_storage.c
@@ -544,6 +544,18 @@ dup_del(sql_trans *tr, sql_table *ot, sq
return ok;
 }
 
+void
+allocate_delta(sql_trans *tr, sql_column *c)
+{
+   if (!c-data || !c-base.allocated) {
+   int type = c-type.type-localtype;
+   sql_column *oc = tr_find_column(tr-parent, c);
+   sql_delta *bat = c-data = ZNEW(sql_delta), *obat = 
timestamp_delta(oc-data, tr-stime);
+   (void)dup_bat(tr, c-t, obat, bat, type, isNew(oc), 
c-base.flag == TR_NEW); 
+   c-base.allocated = 1;
+   }
+}
+
 static void 
 append_col(sql_trans *tr, sql_column *c, void *i, int tpe)
 {
@@ -1606,6 +1618,23 @@ gtr_minmax( sql_trans *tr )
 }
 
 static int 
+tr_update_storage( sql_trans *tr, sql_delta *obat, sql_delta *cbat)
+{
+   int ok = LOG_OK;
+
+   (void)tr;
+   assert(store_nr_active==1);
+
+   assert (obat-bid != 0  cbat-bid != 0);
+   assert (obat-cached == NULL  cbat-cached == NULL);
+   temp_destroy(obat-bid);
+   obat-bid = cbat-bid;
+   temp_dup(cbat-bid);
+   assert(obat-ibid == cbat-ibid);
+   return ok;
+}
+
+static int 
 tr_update_delta( sql_trans *tr, sql_delta *obat, sql_delta *cbat, int unique)
 {
int ok = LOG_OK;
@@ -1801,7 +1830,10 @@ update_table(sql_trans *tr, sql_table *f
}
} else {
assert(oc-base.allocated);
-   tr_update_delta(tr, oc-data, cc-data, cc-unique == 
1);
+   if (cc-storage_type  (!cc-storage_type || 
strcmp(cc-storage_type, oc-storage_type) != 0))
+   tr_update_storage(tr, oc-data, cc-data);
+   else
+   tr_update_delta(tr, oc-data, cc-data, 
cc-unique == 1);
}
 
oc-null = cc-null;
@@ -1846,7 +1878,10 @@ update_table(sql_trans *tr, sql_table *f
}
} else {
assert(oi-base.allocated);
-   tr_update_delta(tr, oi-data, ci-data, 0);
+   if (ci-storage_type  (!ci-storage_type || 
strcmp(ci-storage_type, oi-storage_type) != 0))
+   tr_update_storage(tr, oi-data, 
ci-data);
+   else
+   tr_update_delta(tr, oi-data, ci-data, 
0);
}
 
if (oi-base.rtime  ci-base.rtime)
diff --git a/sql/storage/bat/bat_storage.h b/sql/storage/bat/bat_storage.h
--- a/sql/storage/bat/bat_storage.h
+++ b/sql/storage/bat/bat_storage.h
@@ -50,5 +50,7 @@ extern int bat_storage_init( store_funct
 extern int dup_bat(sql_trans *tr, sql_table *t, sql_delta *obat, sql_delta 
*bat, int type, int oc_isnew, int c_isnew);
 extern sql_delta * 

MonetDB: Oct2014 - fixed reuse

2014-08-26 Thread Niels Nes
Changeset: 6c4080d30b3e for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6c4080d30b3e
Added Files:
sql/test/BugTracker-2014/Tests/orderby_on_constant.Bug-3554.sql
sql/test/BugTracker-2014/Tests/orderby_on_constant.Bug-3554.stable.err
sql/test/BugTracker-2014/Tests/orderby_on_constant.Bug-3554.stable.out
Modified Files:
monetdb5/modules/kernel/bat5.c
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql.c
sql/backends/monet5/sql_statement.c
sql/test/BugTracker-2014/Tests/All
Branch: Oct2014
Log Message:

fixed reuse

fixed bug 3554, ie make sure single value order by /limit work


diffs (254 lines):

diff --git a/monetdb5/modules/kernel/bat5.c b/monetdb5/modules/kernel/bat5.c
--- a/monetdb5/modules/kernel/bat5.c
+++ b/monetdb5/modules/kernel/bat5.c
@@ -2198,9 +2198,9 @@ BKCshrinkBATmap(int *ret, int *bid, int 
Type *r = (Type*)Tloc(bn, BUNfirst(bn));\
for (;pq; oidx++, p++) {   
\
if ( *o == oidx ){  
\
-   while ( *ol == bidx  olo) {  \
+   while ( olo  *--ol == bidx) {
\
bidx--; 
\
-   ol--;q--;   
\
+   q--;
\
}   
\
*r++ = *(--q);  
\
o += (o  ol);  
\
@@ -2241,9 +2241,10 @@ BKCreuseBAT(int *ret, int *bid, int *did
throw(MAL, bat.reuse, MAL_MALLOC_FAIL );
}
 
-   bidx= BUNlast(b)-1;
+   oidx = b-hseqbase;
+   bidx = oidx + BUNlast(b)-1;
o = (oid*)Tloc(bs, BUNfirst(bs));
-   ol= (oid*)Tloc(bs, BUNlast(bs))-1;
+   ol= (oid*)Tloc(bs, BUNlast(bs));
 
switch(ATOMstorage(b-ttype) ){
case TYPE_bte: reuseloop(bte); break;
@@ -2262,15 +2263,16 @@ BKCreuseBAT(int *ret, int *bid, int *did
 
for (;pq; oidx++, p++) {
if ( *o == oidx ){
-   while ( *ol == bidx  olo) {
+   while ( ol  o  *--ol == bidx) {
bidx--;
-   ol--;q--;
+   q--;
}
BUNappend(bn, BUNtail(bi, --q), FALSE);
o += (o  ol);
bidx--;
-   } else
+   } else {
BUNappend(bn, BUNtail(bi, p), FALSE);
+   }
}
} else {
switch( b-T-width){
@@ -2298,6 +2300,7 @@ BKCreuseBAT(int *ret, int *bid, int *did
BBPkeepref(*ret= bn-batCacheid);
return MAL_SUCCEED;
 }
+
 str
 BKCreuseBATmap(int *ret, int *bid, int *did)
 {
@@ -2330,10 +2333,11 @@ BKCreuseBATmap(int *ret, int *bid, int *
throw(MAL, bat.shrinkMap, MAL_MALLOC_FAIL );
}
 
-   bidx= BUNlast(b)-1;
-o = (oid*)Tloc(bs, BUNfirst(bs));
-ol= (oid*)Tloc(bs, BUNlast(bs));
-r = (oid*)Tloc(bn, BUNfirst(bn));
+   oidx = b-hseqbase;
+   bidx = oidx + BUNlast(b)-1;
+   o  = (oid*)Tloc(bs, BUNfirst(bs));
+   ol = (oid*)Tloc(bs, BUNlast(bs));
+   r  = (oid*)Tloc(bn, BUNfirst(bn));
 
for (;oidxbidx; oidx++) {
if ( *o == oidx ){
@@ -2343,8 +2347,9 @@ BKCreuseBATmap(int *ret, int *bid, int *
*r++ = bidx;
o += (o  ol);
bidx--;
-   } else
+   } else {
*r++ = oidx;
+   }
}
 
 BATsetcount(bn, BATcount(b)-BATcount(bs));
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
@@ -2306,6 +2306,8 @@ rel2bin_project( mvc *sql, sql_rel *rel,
if (!orderbycolstmt) 
return NULL;

+   /* handle constants */
+   orderbycolstmt = column(sql-sa, orderbycolstmt);
if (!limit) {   /* topn based on a single column */
limit = stmt_limit(sql-sa, orderbycolstmt, 
stmt_atom_wrd(sql-sa, 0), l, 

MonetDB: Oct2014 - fixed second part of bug 3554, ie handle topn...

2014-08-27 Thread Niels Nes
Changeset: a07ae318c930 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a07ae318c930
Modified Files:
sql/server/rel_optimizer.c
sql/test/BugTracker-2014/Tests/orderby_on_constant.Bug-3554.sql
sql/test/BugTracker-2014/Tests/orderby_on_constant.Bug-3554.stable.out
Branch: Oct2014
Log Message:

fixed second part of bug 3554, ie handle topn push down properly


diffs (50 lines):

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
@@ -1777,7 +1777,7 @@ rel_push_topn_down(int *changes, mvc *sq
ur-r = exps_copy(sql-sa, r-r);
ur = rel_topn(sql-sa, ur, sum_limit_offset(sql, 
rel-exps));
u = rel_setop(sql-sa, ul, ur, op_union);
-   u-exps = exps_copy(sql-sa, r-exps); 
+   u-exps = exps_alias(sql-sa, r-exps); 
/* possibly add order by column */
if (add_r)
u-exps = list_merge(u-exps, 
exps_copy(sql-sa, r-r), NULL);
@@ -1785,7 +1785,11 @@ rel_push_topn_down(int *changes, mvc *sq
rel_no_rename_exps(u-exps);
rel_destroy(ou);
 
-   r-l = u;
+   ur = rel_project(sql-sa, u, exps_alias(sql-sa, 
r-exps));
+   ur-r = r-r;
+   r-l = NULL;
+   rel_destroy(r);
+   rel-l = ur;
(*changes)++;
return rel;
}
diff --git a/sql/test/BugTracker-2014/Tests/orderby_on_constant.Bug-3554.sql 
b/sql/test/BugTracker-2014/Tests/orderby_on_constant.Bug-3554.sql
--- a/sql/test/BugTracker-2014/Tests/orderby_on_constant.Bug-3554.sql
+++ b/sql/test/BugTracker-2014/Tests/orderby_on_constant.Bug-3554.sql
@@ -1,1 +1,4 @@
 select a+b from (select 1 as a,1 as b) as q order by a limit 1;
+select a+b from (select 1 as a,1 as b union select 1,1) as q order by a limit
+1;
+
diff --git 
a/sql/test/BugTracker-2014/Tests/orderby_on_constant.Bug-3554.stable.out 
b/sql/test/BugTracker-2014/Tests/orderby_on_constant.Bug-3554.stable.out
--- a/sql/test/BugTracker-2014/Tests/orderby_on_constant.Bug-3554.stable.out
+++ b/sql/test/BugTracker-2014/Tests/orderby_on_constant.Bug-3554.stable.out
@@ -31,6 +31,13 @@ Ready.
 % smallint # type
 % 1 # length
 [ 2]
+#select a+b from (select 1 as a,1 as b union select 1,1) as q order by a limit
+#1;
+% .L3 # table_name
+% L3 # name
+% smallint # type
+% 1 # length
+[ 2]
 
 # 19:40:07   
 # 19:40:07   Done.
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Oct2014 - handle psm expressions in exp_print and exp_c...

2014-08-27 Thread Niels Nes
Changeset: f900af1e70a0 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f900af1e70a0
Added Files:
sql/test/BugTracker-2014/Tests/div_by_zero_in_return.Bug-3555.sql
sql/test/BugTracker-2014/Tests/div_by_zero_in_return.Bug-3555.stable.err
sql/test/BugTracker-2014/Tests/div_by_zero_in_return.Bug-3555.stable.out
Modified Files:
sql/server/rel_dump.c
sql/server/rel_optimizer.c
sql/server/rel_psm.c
Branch: Oct2014
Log Message:

handle psm expressions in exp_print and exp_case_fixup (solving the
div_by_zero bug 3555)


diffs (238 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
@@ -26,6 +26,7 @@
 #include rel_prop.h
 #include rel_select.h
 #include rel_semantic.h
+#include rel_psm.h
 
 static void
 print_indent(mvc *sql, stream *fout, int depth)
@@ -80,6 +81,28 @@ exp_print(mvc *sql, stream *fout, sql_ex
if (!e)
return;
switch(e-type) {
+   case e_psm: {
+   if (e-flag  PSM_SET) {
+   /* todo */
+   } else if (e-flag  PSM_VAR) {
+   /* todo */
+   } else if (e-flag  PSM_RETURN) {
+   mnstr_printf(fout, return );
+   exp_print(sql, fout, e-l, depth, 0, 0);
+   } else if (e-flag  PSM_WHILE) {
+   mnstr_printf(fout, while );
+   exp_print(sql, fout, e-l, depth, 0, 0);
+   exps_print(sql, fout, e-r, depth, alias, 0);
+   } else if (e-flag  PSM_IF) {
+   mnstr_printf(fout, if );
+   exp_print(sql, fout, e-l, depth, 0, 0);
+   exps_print(sql, fout, e-r, depth, alias, 0);
+   if (e-f)
+   exps_print(sql, fout, e-f, depth, alias, 0);
+   } else if (e-flag  PSM_REL) {
+   }
+   break;
+   }
case e_convert: {
char *to_type = sql_subtype_string(e-tpe);
mnstr_printf(fout, %s[, to_type);
@@ -340,7 +363,7 @@ rel_print_(mvc *sql, stream  *fout, sql_
rel_print_(sql, fout, rel-l, depth+1, refs);
if (rel-r)
rel_print_(sql, fout, rel-r, depth+1, refs);
-   if (rel-exps) 
+   if (rel-exps  rel-flag == DDL_PSM) 
exps_print(sql, fout, rel-exps, depth, 1, 0);
break;
case op_join: 
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
@@ -27,6 +27,7 @@
 #include rel_select.h
 #include rel_updates.h
 #include rel_planner.h
+#include rel_psm.h
 #include sql_env.h
 
 #define new_func_list(sa) sa_list(sa)
@@ -2324,6 +2325,25 @@ static sql_exp *
 exp_case_fixup( mvc *sql, sql_exp *e )
 {
/* only functions need fix up */
+   if (e-type == e_psm) {
+   if (e-flag  PSM_SET) {
+   /* todo */
+   } else if (e-flag  PSM_VAR) {
+   /* todo */
+   } else if (e-flag  PSM_RETURN) {
+   e-l = exp_case_fixup(sql, e-l);
+   } else if (e-flag  PSM_WHILE) {
+   e-l = exp_case_fixup(sql, e-l);
+   e-r = exps_case_fixup(sql, e-r, NULL, 0);
+   } else if (e-flag  PSM_IF) {
+   e-l = exp_case_fixup(sql, e-l);
+   e-r = exps_case_fixup(sql, e-r, NULL, 0);
+   if (e-f)
+   e-f = exps_case_fixup(sql, e-f, NULL, 0);
+   } else if (e-flag  PSM_REL) {
+   }
+   return e;
+   }
if (e-type == e_func  e-l  !is_rank_op(e) ) {
list *l = new_exp_list(sql-sa), *args = e-l;
node *n;
@@ -2395,7 +2415,7 @@ rel_case_fixup(int *changes, mvc *sql, s
 {

(void)changes; /* only go through it once, ie don't mark for changes */
-   if (is_project(rel-op)  rel-exps) {
+   if ((is_project(rel-op) || (rel-op == op_ddl  rel-flag == 
DDL_PSM))  rel-exps) {
list *exps = rel-exps;
node *n;
int needed = 0;
@@ -2404,7 +2424,7 @@ rel_case_fixup(int *changes, mvc *sql, s
sql_exp *e = n-data;
 
if (e-type == e_func || e-type == e_convert ||
-   e-type == e_aggr) 
+   e-type == e_aggr || e-type == e_psm) 
needed = 1;
}
if (!needed)
@@ -7038,7 +7058,7 @@ static sql_rel *
 #endif
 
/* simple merging of projects */
-   if (gp.cnt[op_project]) {
+   if (gp.cnt[op_project] || gp.cnt[op_ddl]) {
rel = rewrite(sql, rel, rel_merge_projects, 

MonetDB: Oct2014 - removed use of tunique

2014-08-29 Thread Niels Nes
Changeset: f415598131c3 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f415598131c3
Modified Files:
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_statement.c
sql/backends/monet5/sql_statement.h
Branch: Oct2014
Log Message:

removed use of tunique


diffs (172 lines):

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
@@ -501,15 +501,13 @@ exp_bin(mvc *sql, sql_exp *e, stmt *left
if (!as) 
return NULL;
if (need_distinct(e)){ 
-   if (grp) {
-   stmt *g = stmt_group(sql-sa, 
as, grp, ext, cnt);
-   stmt *next = 
stmt_result(sql-sa, g, 1); 
+   stmt *g = stmt_group(sql-sa, as, grp, 
ext, cnt);
+   stmt *next = stmt_result(sql-sa, g, 
1); 

-   as = stmt_project(sql-sa, 
next, as);
+   as = stmt_project(sql-sa, next, as);
+   if (grp)
grp = stmt_project(sql-sa, 
next, grp);
-   stmt_group_done(g);
-   } else
-   as = stmt_unique(sql-sa, as);
+   stmt_group_done(g);
}
append(l, as);
}
diff --git a/sql/backends/monet5/sql_gencode.c 
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -1742,43 +1742,6 @@ static int
}
}
break;
-   case st_unique:{
-   int l;
-
-   if ((l = _dumpstmt(sql, mb, s-op1))  0)
-   return -1;
-
-   if (s-op2) {
-   int grp, ext;
-
-   if ((grp = _dumpstmt(sql, mb, s-op2))  0)
-   return -1;
-   if ((ext = _dumpstmt(sql, mb, s-op3))  0)
-   return -1;
-
-   q = newStmt2(mb, groupRef, subgroupRef);
-   /* push second result */
-   q = pushReturn(mb, q, newTmpVariable(mb, 
TYPE_any));
-   q = pushReturn(mb, q, newTmpVariable(mb, 
TYPE_any));
-   q = pushArgument(mb, q, l);
-   q = pushArgument(mb, q, grp);
-   if (q == NULL)
-   return -1;
-   grp = getDestVar(q);
-   ext = getArg(q, 1);
-
-   q = newStmt2(mb, algebraRef, leftfetchjoinRef);
-   q = pushArgument(mb, q, ext);
-   q = pushArgument(mb, q, l);
-   } else {
-   q = newStmt2(mb, algebraRef, tuniqueRef);
-   q = pushArgument(mb, q, l);
-   }
-   if (q == NULL)
-   return -1;
-   s-nr = getDestVar(q);
-   break;
-   }
case st_convert:{
list *types = s-op4.lval;
sql_subtype *f = types-h-data;
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
@@ -122,7 +122,6 @@ st_type2string(st_type type)
 
ST(group);
 
-   ST(unique);
ST(convert);
ST(Nop);
ST(func);
@@ -325,7 +324,6 @@ stmt_deps(list *dep_list, stmt *s, int d
case st_join:
case st_join2:
case st_joinN:
-   case st_unique:
case st_append:
case st_rs_column:
 
@@ -826,21 +824,6 @@ stmt_reorder(sql_allocator *sa, stmt *s,
 }
 
 stmt *
-stmt_unique(sql_allocator *sa, stmt *s)
-{
-   stmt *ns = stmt_create(sa, st_unique);
-
-   ns-op1 = s;
-   ns-op2 = NULL;
-   ns-op3 = NULL;
-   ns-op4.stval = NULL;
-   ns-nrcols = s-nrcols;
-   ns-key = 1;
-   ns-aggr = s-aggr;
-   return ns;
-}

MonetDB: Oct2014 - no need for SelectNoNil ie aggr operations in...

2014-08-29 Thread Niels Nes
Changeset: 63d2f103279a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=63d2f103279a
Modified Files:
gdk/gdk_aggr.c
monetdb5/modules/atoms/json.c
monetdb5/modules/kernel/aggr.mal
sql/backends/monet5/sql.c
sql/backends/monet5/sql_gencode.c
sql/benchmarks/ssbm/Tests/01-explain.stable.out
sql/benchmarks/ssbm/Tests/02-explain.stable.out
sql/benchmarks/ssbm/Tests/03-explain.stable.out
sql/benchmarks/tpch/Tests/06-explain.stable.out
sql/benchmarks/tpch/Tests/11-explain.stable.out
sql/benchmarks/tpch/Tests/14-explain.stable.out
sql/benchmarks/tpch/Tests/15-explain.stable.out
sql/benchmarks/tpch/Tests/17-explain.stable.out
sql/benchmarks/tpch/Tests/19-explain.stable.out
sql/benchmarks/tpch/Tests/22-explain.stable.out
sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
Branch: Oct2014
Log Message:

no need for SelectNoNil ie aggr operations include the skip nil functionality.


diffs (truncated from 832 to 300 lines):

diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -2324,7 +2324,13 @@ BATgroupquantile(BAT *b, BAT *g, BAT *e,
BATseqbase(bn, min);
} else { /* quantiles for entire BAT b, EZ */
 
-   BUN index = BUNfirst(b) + (BUN) ((BATcount(b) - 1)  * quantile);
+   BUN index, r = 0, p = BUNlast(b);
+
+   if (skip_nils) {
+   while (r  p  (*atomcmp)(BUNtail(bi, BUNfirst(b) + 
r), nil) == 0)
+   r++;
+   }
+   index = BUNfirst(b) + (BUN) (r + (p-r-1) * quantile);
v = BUNtail(bi, index);
BUNappend(bn, v, FALSE);
BATseqbase(bn, 0);
diff --git a/monetdb5/modules/atoms/json.c b/monetdb5/modules/atoms/json.c
--- a/monetdb5/modules/atoms/json.c
+++ b/monetdb5/modules/atoms/json.c
@@ -1706,7 +1706,7 @@ JSONgroupStr(str *ret, const bat *bid)
BAT *b;
BUN p, q;
const char *t = NULL;
-   size_t len, size = BUFSIZ, offset;
+   size_t len, size = BUFSIZ, offset, cnt = 0;
str buf = GDKmalloc(size);
BATiter bi;
const char *err = NULL;
@@ -1724,24 +1724,27 @@ JSONgroupStr(str *ret, const bat *bid)
offset = 0;
bi = bat_iterator(b);
BATloop(b, p, q) {
-   int n = 0;
+   int n = 0, nil = 0;
 
switch (b-ttype) {
case TYPE_str:
t = (const char *) BUNtail(bi, p);
+   nil = (strNil(t));
break;
case TYPE_dbl:
val = (const double *) BUNtail(bi, p);
-   snprintf(temp, sizeof(temp), %f, *val);
+   nil = (*val == dbl_nil);
+   if (!nil)
+   snprintf(temp, sizeof(temp), %f, *val);
t = (const char *) temp;
break;
}
 
-   //t = (const char *) BUNtail(bi, p);
-
-   if (strNil(t))
+   if (nil)
continue;
-   len = strlen(t) + 1;
+   if (!cnt)
+   offset = snprintf(buf, size, [ );
+   len = strlen(t) + 1 + 4; /* closing bracket and optional ',' */
if (len = size - offset) {
str nbuf;
size += len + 128;
@@ -1752,40 +1755,21 @@ JSONgroupStr(str *ret, const bat *bid)
}
buf = nbuf;
}
+   if (cnt)
+   offset += snprintf(buf + offset, size - offset, , );
switch (b-ttype) {
case TYPE_str:
-   if (offset == 0) {
-   if (BATcount(b) == 1) {
-   n = snprintf(buf, size, [ \%s\ ], 
t);
-   } else {
-   n = snprintf(buf, size, [ \%s\, t);
-   }
-   } else {
-   if (p == BUNlast(b) - 1) {
-   n = snprintf(buf + offset, size - 
offset, , \%s\ ], t);
-   } else {
-   n = snprintf(buf + offset, size - 
offset, , \%s\, t);
-   }
-   }
+   n = snprintf(buf + offset, size - offset, \%s\, t);
break;
case TYPE_dbl:
-   if (offset == 0) {
-   if (BATcount(b) == 1) {
-   n = snprintf(buf, size, [ %s ], t);
-   } else {
-   n = snprintf(buf, 

MonetDB: mosaic - fixes for persistent compressed bats.

2014-09-01 Thread Niels Nes
Changeset: 9bed3972fc5b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9bed3972fc5b
Modified Files:
monetdb5/modules/mal/mosaic.c
sql/backends/monet5/sql.c
sql/storage/bat/bat_storage.c
Branch: mosaic
Log Message:

fixes for persistent compressed bats.

assumptions/limitations for compress/decompress alter statements
1) auto commit mode
2) read only columns
3) single transaction (active)
4) directly create persistent compressed bats
Decompress now fails as it creates a transient bat, where
we expect an persistent.


diffs (105 lines):

diff --git a/monetdb5/modules/mal/mosaic.c b/monetdb5/modules/mal/mosaic.c
--- a/monetdb5/modules/mal/mosaic.c
+++ b/monetdb5/modules/mal/mosaic.c
@@ -233,7 +233,7 @@ MOScompressInternal(Client cntxt, int *r
// It should always take less space then the orginal column.
// But be prepared that a last block header may  be stored
// use a size overshoot. Also be aware of possible dictionary headers
-   bn = BATnew( TYPE_void, b-ttype, cnt + 3 *  MosaicBlkSize + 
MosaicHdrSize, b-batPersistence);
+   bn = BATnew( TYPE_void, b-ttype, cnt + 3 *  MosaicBlkSize + 
MosaicHdrSize, PERSISTENT /*current logger doesn't handle compression calls, ie 
make persistent before entering log b-batPersistence*/);
if (bn == NULL) {
BBPreleaseref(b-batCacheid);
throw(MAL,mosaic.compress, MAL_MALLOC_FAIL);
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -585,10 +585,10 @@ alter_table(Client cntxt, mvc *sql, char
if (c-t-access == TABLE_WRITABLE) 
return sql_message(40002!ALTER TABLE: SET 
STORAGE for column %s.%s only allowed on READ or INSERT ONLY tables, 
c-t-base.name, c-base.name);
 
-   if( c-storage_type)
-   msg = MOScompressInternal(cntxt, bid, 
b-batCacheid, c-storage_type);
-   else
-   msg = MOSdecompressInternal(cntxt, 
bid, b-batCacheid);
+   if( c-storage_type)
+   msg = MOScompressInternal(cntxt, bid, 
b-batCacheid, c-storage_type);
+   else
+   msg = MOSdecompressInternal(cntxt, bid, 
b-batCacheid);
if (msg)
return msg;
allocate_delta(sql-session-tr, nc);
diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c
--- a/sql/storage/bat/bat_storage.c
+++ b/sql/storage/bat/bat_storage.c
@@ -1910,6 +1910,24 @@ update_table(sql_trans *tr, sql_table *f
return ok;
 }
 
+static int
+tr_log_storage( sql_trans *tr, sql_delta *cbat )
+{
+   int ok = LOG_OK;
+   BAT *b;
+
+   (void)tr;
+   assert(tr-parent == gtrans);
+   assert(store_nr_active == 1);
+
+   /* log new snapshot */
+   b = temp_descriptor(cbat-bid);
+   logger_add_bat(bat_logger, b, cbat-name);
+   ok = log_bat_persists(bat_logger, b, cbat-name);
+   bat_destroy(b);
+   return ok;
+}
+
 static int 
 tr_log_delta( sql_trans *tr, sql_delta *cbat, int cleared)
 {
@@ -1984,7 +2002,10 @@ log_table(sql_trans *tr, sql_table *ft)
 
if (!cc-base.wtime || !cc-base.allocated) 
continue;
-   ok = tr_log_delta(tr, cc-data, ft-cleared);
+   if (ft-access  TABLE_WRITABLE) /* TODO we need a proper way 
to check for changes off the storage */
+   ok = tr_log_storage(tr, cc-data);
+   else
+   ok = tr_log_delta(tr, cc-data, ft-cleared);
}
if (ok == LOG_OK  ft-idxs.set) {
for (n = ft-idxs.set-h; ok == LOG_OK  n; n = n-next) {
@@ -2001,6 +2022,22 @@ log_table(sql_trans *tr, sql_table *ft)
 }
 
 static int 
+tr_snapshot_storage( sql_trans *tr, sql_delta *cbat)
+{
+   int ok = LOG_OK;
+   BAT *b = temp_descriptor(cbat-bid);
+
+   assert(tr-parent == gtrans);
+   assert(store_nr_active == 1);
+
+   (void)tr;
+   bat_set_access(b, BAT_READ);
+   BATmode(b, PERSISTENT);
+   bat_destroy(b);
+   return ok;
+}
+
+static int 
 tr_snapshot_bat( sql_trans *tr, sql_delta *cbat)
 {
int ok = LOG_OK;
@@ -2035,7 +2072,10 @@ snapshot_table(sql_trans *tr, sql_table 
 
if (!cc-base.wtime || !cc-base.allocated) 
continue;
-   tr_snapshot_bat(tr, cc-data);
+   if (ft-access  TABLE_WRITABLE) /* TODO we need a proper way 
to check for changes off the storage */
+   tr_snapshot_storage(tr, cc-data);
+   else
+   tr_snapshot_bat(tr, cc-data);
}
if (ok == LOG_OK  ft-idxs.set) {
for (n = 

MonetDB: Oct2014 - small optimizations (reduce amount of nil/sor...

2014-09-03 Thread Niels Nes
Changeset: 34e4b974ad06 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=34e4b974ad06
Modified Files:
gdk/gdk_join.c
Branch: Oct2014
Log Message:

small optimizations (reduce amount of nil/sort checks for once we know it has 
nils or isn't sorted)


diffs (28 lines):

diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -2770,17 +2770,22 @@ project_##TYPE(BAT *bn, BAT *l, BAT *r, 
if (nilcheck  v == TYPE##_nil  bn-T-nonil) { \
bn-T-nonil = 0;   \
bn-T-nil = 1; \
+   nilcheck = 0;   \
}   \
if (sortcheck  lo   \
(bn-trevsorted | bn-tsorted | bn-tkey)) { \
if (v  prev) { \
bn-trevsorted = 0; \
-   if (!bn-tsorted)   \
+   if (!bn-tsorted) { \
bn-tkey = 0; /* can't be sure 
*/ \
+   sortcheck = 0;  \
+   }   \
} else if (v  prev) {  \
bn-tsorted = 0;\
-   if (!bn-trevsorted)\
+   if (!bn-trevsorted) {  \
bn-tkey = 0; /* can't be sure 
*/ \
+   sortcheck = 0;  \
+   }   \
} else {\
bn-tkey = 0; /* definitely */  \
}   \
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Oct2014 - only push down group by's down outer-joins (n...

2014-09-03 Thread Niels Nes
Changeset: 40d2e5b14efe for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=40d2e5b14efe
Modified Files:
sql/benchmarks/tpch/Tests/02-explain.stable.out
sql/benchmarks/tpch/Tests/02-plan.stable.out
sql/benchmarks/tpch/Tests/17-explain.stable.out
sql/benchmarks/tpch/Tests/17-plan.stable.out
sql/benchmarks/tpch/Tests/20-explain.stable.out
sql/benchmarks/tpch/Tests/20-plan.stable.out
sql/server/rel_optimizer.c
Branch: Oct2014
Log Message:

only push down group by's down outer-joins (not usualy size reducing joins)


diffs (truncated from 843 to 300 lines):

diff --git a/sql/benchmarks/tpch/Tests/02-explain.stable.out 
b/sql/benchmarks/tpch/Tests/02-explain.stable.out
--- a/sql/benchmarks/tpch/Tests/02-explain.stable.out
+++ b/sql/benchmarks/tpch/Tests/02-explain.stable.out
@@ -67,167 +67,168 @@ Ready.
 % 823 # length
 function user.s2_1{autoCommit=true}(A0:int,A1:str,A2:str,A3:str):void;
 X_6 := sql.mvc();
-X_10 := sql.bind(X_6,sys,part,p_type,0);
-X_19 := sql.bind(X_6,sys,part,p_size,0);
-X_7:bat[:oid,:oid]  := sql.tid(X_6,sys,part);
-X_334 := algebra.subselect(X_19,X_7,A0,A0,true,true,false);
-(X_21,r1_25) := sql.bind(X_6,sys,part,p_size,2);
-X_335 := algebra.subselect(r1_25,A0,A0,true,true,false);
-X_23 := sql.bind(X_6,sys,part,p_size,1);
-X_336 := algebra.subselect(X_23,X_7,A0,A0,true,true,false);
-X_24 := sql.subdelta(X_334,X_7,X_21,X_335,X_336);
-X_337 := algebra.likesubselect(X_10,X_24,A1,,false);
-(X_13,r1_13) := sql.bind(X_6,sys,part,p_type,2);
-X_338 := algebra.likesubselect(r1_13,A1,,false);
-X_16 := sql.bind(X_6,sys,part,p_type,1);
-X_339 := algebra.likesubselect(X_16,X_24,A1,,false);
-X_26 := sql.subdelta(X_337,X_24,X_13,X_338,X_339);
-X_27 := sql.bind(X_6,sys,part,p_partkey,0);
-(X_29,r1_36) := sql.bind(X_6,sys,part,p_partkey,2);
-X_31 := sql.bind(X_6,sys,part,p_partkey,1);
-X_32 := sql.projectdelta(X_26,X_27,X_29,r1_36,X_31);
-X_33:bat[:oid,:oid]  := sql.tid(X_6,sys,nation);
-X_36 := sql.bind_idxbat(X_6,sys,nation,nation_n_regionkey_fkey,0);
-(X_39,r1_48) := 
sql.bind_idxbat(X_6,sys,nation,nation_n_regionkey_fkey,2);
-X_42 := sql.bind_idxbat(X_6,sys,nation,nation_n_regionkey_fkey,1);
-X_44 := sql.projectdelta(X_33,X_36,X_39,r1_48,X_42);
-X_47 := sql.bind(X_6,sys,region,r_name,0);
-X_45:bat[:oid,:oid]  := sql.tid(X_6,sys,region);
-X_340 := algebra.subselect(X_47,X_45,A3,A3,true,true,false);
-(X_49,r1_59) := sql.bind(X_6,sys,region,r_name,2);
-X_341 := algebra.subselect(r1_59,A3,A3,true,true,false);
-X_51 := sql.bind(X_6,sys,region,r_name,1);
-X_342 := algebra.subselect(X_51,X_45,A3,A3,true,true,false);
-X_52 := sql.subdelta(X_340,X_45,X_49,X_341,X_342);
-X_55 := X_52;
-(X_56,r1_69) := algebra.join(X_44,X_55);
-X_58 := algebra.leftfetchjoin(X_56,X_33);
-X_59:bat[:oid,:oid]  := sql.tid(X_6,sys,supplier);
-X_61 := 
sql.bind_idxbat(X_6,sys,supplier,supplier_s_nationkey_fkey,0);
-(X_63,r1_76) := 
sql.bind_idxbat(X_6,sys,supplier,supplier_s_nationkey_fkey,2);
-X_66 := 
sql.bind_idxbat(X_6,sys,supplier,supplier_s_nationkey_fkey,1);
-X_67 := sql.projectdelta(X_59,X_61,X_63,r1_76,X_66);
-(X_68,r1_82) := algebra.join(X_58,X_67);
-X_70 := algebra.leftfetchjoin(r1_82,X_59);
-X_71:bat[:oid,:oid]  := sql.tid(X_6,sys,partsupp);
-X_73 := sql.bind_idxbat(X_6,sys,partsupp,partsupp_ps_suppkey_fkey,0);
-(X_76,r1_90) := 
sql.bind_idxbat(X_6,sys,partsupp,partsupp_ps_suppkey_fkey,2);
-X_79 := sql.bind_idxbat(X_6,sys,partsupp,partsupp_ps_suppkey_fkey,1);
-X_81 := sql.projectdelta(X_71,X_73,X_76,r1_90,X_79);
-(X_82,r1_97) := algebra.join(X_70,X_81);
-X_84 := sql.bind(X_6,sys,partsupp,ps_partkey,0);
-(X_86,r1_101) := sql.bind(X_6,sys,partsupp,ps_partkey,2);
-X_88 := sql.bind(X_6,sys,partsupp,ps_partkey,1);
-X_89 := sql.projectdelta(X_71,X_84,X_86,r1_101,X_88);
-X_90 := algebra.leftfetchjoin(r1_97,X_89);
-(X_91,r1_107,r2_107) := group.subgroupdone(X_90);
-X_94 := algebra.leftfetchjoin(r1_107,X_90);
-X_109 := sql.bind(X_6,sys,partsupp,ps_supplycost,0);
-(X_112,r1_130) := sql.bind(X_6,sys,partsupp,ps_supplycost,2);
-X_115 := sql.bind(X_6,sys,partsupp,ps_supplycost,1);
-X_117 := sql.projectdelta(X_71,X_109,X_112,r1_130,X_115);
-X_119 := algebra.leftfetchjoin(r1_97,X_117);
-X_120:bat[:oid,:lng]  := aggr.submin(X_119,X_91,r1_107,true);
-(X_95,r1_111) := algebra.join(X_32,X_94);
-X_97 := X_26;
-X_98 := algebra.leftfetchjoin(X_95,X_97);
-X_100 := 
sql.bind_idxbat(X_6,sys,partsupp,partsupp_ps_partkey_fkey,0);
-(X_102,r1_119) := 
sql.bind_idxbat(X_6,sys,partsupp,partsupp_ps_partkey_fkey,2);
-X_105 := 
sql.bind_idxbat(X_6,sys,partsupp,partsupp_ps_partkey_fkey,1);
-X_106 := sql.projectdelta(X_71,X_100,X_102,r1_119,X_105);
-(X_107,r1_125) := algebra.join(X_98,X_106);
-X_118 := 

MonetDB: Oct2014 - merged

2014-09-03 Thread Niels Nes
Changeset: 38bae7f3938b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=38bae7f3938b
Modified Files:
sql/backends/monet5/bam/bam_loader.c
Branch: Oct2014
Log Message:

merged


diffs (12 lines):

diff --git a/sql/backends/monet5/bam/bam_loader.c 
b/sql/backends/monet5/bam/bam_loader.c
--- a/sql/backends/monet5/bam/bam_loader.c
+++ b/sql/backends/monet5/bam/bam_loader.c
@@ -543,7 +543,7 @@ bam_loader_files(Client cntxt, MalBlkPtr
 
FILE *f = NULL;
 
-   char cur;
+   int cur;
int line_size;
str line = NULL;
size_t line_buf_size = 0;
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Oct2014 - merged

2014-09-03 Thread Niels Nes
Changeset: df60a79c660a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=df60a79c660a
Modified Files:
sql/server/sql_mvc.c
Branch: Oct2014
Log Message:

merged


diffs (12 lines):

diff --git a/sql/server/sql_mvc.c b/sql/server/sql_mvc.c
--- a/sql/server/sql_mvc.c
+++ b/sql/server/sql_mvc.c
@@ -223,7 +223,7 @@ build up the hash (not copyied in the tr
qc_clean(m-qc);
m-session-schema = find_sql_schema(m-session-tr, 
m-session-schema_name);
if (mvc_debug)
-   fprintf(stderr, #mvc_commit %s done\n, (name) ? name 
: );
+   fprintf(stderr, #mvc_commit %s done\n, name);
return 0;
}
 
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Oct2014 - compute type once outside loop

2014-09-03 Thread Niels Nes
Changeset: b33a229823f9 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b33a229823f9
Modified Files:
gdk/gdk_join.c
Branch: Oct2014
Log Message:

compute type once outside loop


diffs (31 lines):

diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -1437,6 +1437,13 @@ hashjoin(BAT *r1, BAT *r2, BAT *l, BAT *
r1-trevsorted = 0;
}
} else {
+   int t = r-htype;
+   if (t != ATOMstorage(t) 
+   ATOMnilptr(ATOMstorage(t)) == ATOMnilptr(t) 
+   BATatoms[ATOMstorage(t)].atomCmp == BATatoms[t].atomCmp 
+   BATatoms[ATOMstorage(t)].atomHash == BATatoms[t].atomHash)
+   t = ATOMstorage(t);
+
for (lo = lstart - BUNfirst(l) + l-hseqbase; lstart  lend; 
lo++) {
if (l-ttype == TYPE_void) {
if (l-tseqbase != oid_nil)
@@ -1460,13 +1467,6 @@ hashjoin(BAT *r1, BAT *r2, BAT *l, BAT *
break;
}
} else {
-   int t = r-htype;
-   if (t != ATOMstorage(t) 
-   ATOMnilptr(ATOMstorage(t)) == ATOMnilptr(t) 

-   BATatoms[ATOMstorage(t)].atomCmp == 
BATatoms[t].atomCmp 
-   BATatoms[ATOMstorage(t)].atomHash == 
BATatoms[t].atomHash)
-   t = ATOMstorage(t);
-
switch (t) {
case TYPE_int:
if (!nil_matches  *(const int*)v == 
int_nil) {
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Oct2014 - remove use of BATselect from bat_table code

2014-09-06 Thread Niels Nes
Changeset: ec21c0d4c501 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ec21c0d4c501
Modified Files:
sql/storage/bat/bat_table.c
sql/storage/store.c
sql/test/BugTracker-2009/Tests/primekeyconstraint.SF-2783425.stable.err
Branch: Oct2014
Log Message:

remove use of BATselect from bat_table code


diffs (truncated from 440 to 300 lines):

diff --git a/sql/storage/bat/bat_table.c b/sql/storage/bat/bat_table.c
--- a/sql/storage/bat/bat_table.c
+++ b/sql/storage/bat/bat_table.c
@@ -23,79 +23,95 @@
 #include bat_storage.h
 
 static BAT *
-delta_full_bat_( sql_column *c, sql_delta *bat, int temp, BAT *d, BAT *s)
+delta_cands(sql_trans *tr, sql_table *t)
+{
+   sql_column *c = t-columns.set-h-data;
+   /* create void,void bat with length and oid's set */
+   BAT *tids = BATnew(TYPE_void, TYPE_void, 0, TRANSIENT);
+   size_t nr = store_funcs.count_col(tr, c, 1);
+
+   tids-H-seq = 0;
+   tids-T-seq = 0;
+   BATsetcount(tids, (BUN) nr);
+   tids-H-revsorted = 0;
+   tids-T-revsorted = 0;
+
+   tids-T-key = 1;
+   tids-T-dense = 1;
+   tids-H-key = 1;
+   tids-H-dense = 1;
+
+   if (store_funcs.count_del(tr, t)) {
+   BAT *d = store_funcs.bind_del(tr, t, RD_INS);
+   BAT *diff = BATkdiff(tids, BATmirror(d));
+
+   bat_destroy(tids);
+   tids = BATmirror(BATmark(diff, 0));
+   bat_destroy(diff);
+   bat_destroy(d);
+   }
+   return tids;
+}
+
+static BAT *
+delta_full_bat_( sql_column *c, sql_delta *bat, int temp)
 {
/* return full normalized column bat
-
-   if (s) {
-   b := b.semijoin(s);
-   i := i.semijoin(s);
-   u := u.semijoin(s);
-   }
-   b := b.kunion(i);
-   b := b.kdiff(u);
-   b := b.kunion(u);
-   b := b.kdiff(reverse(d));
+*  b := b.copy()
+   b := b.append(i);
+   b := b.replace(u);
*/
BAT *r, *b, *u, *i = temp_descriptor(bat-ibid);
+   int needcopy = 1;
+
r = i; 
-   if (temp) {
-   if (s) {
-   r = BATsemijoin(i,s);
-   bat_destroy(i);
-   }
+   if (temp) 
return r;
-   }
b = temp_descriptor(bat-bid);
u = temp_descriptor(bat-ubid);
-   if (s) {
-   BAT *t;
-
-   t = BATsemijoin(b,s); bat_destroy(b); b = t;
-   t = BATsemijoin(i,s); bat_destroy(i); i = t;
-   t = BATsemijoin(u,s); bat_destroy(u); u = t;
-   }
if (!b) {
b = i;
} else {
if (BATcount(i)) {
-   r = BATkunion(b,i); bat_destroy(b); b = r;
+   r = BATcopy(b, b-htype, b-ttype, 1, TRANSIENT); 
+   bat_destroy(b); 
+   b = r;
+   BATappend(b, i, TRUE); 
+   needcopy = 0;
}
bat_destroy(i); 
}
if (BATcount(u)) {
-   r = BATkdiff(b,u); bat_destroy(b); b = r;
-   assert(b-ttype == u-ttype);
-   r = BATkunion(b,u); bat_destroy(b); b = r;
+   if (needcopy) {
+   r = BATcopy(b, b-htype, b-ttype, 1, TRANSIENT); 
+   bat_destroy(b); 
+   b = r;
+   }
+   BATreplace(b, u, TRUE);
}
bat_destroy(u); 
-   if (d  BATcount(d)) {
-   r = BATkdiff(b,BATmirror(d)); bat_destroy(b); b = r;
-   }
(void)c;
-   if (!bat-cached  !s) 
+   if (!bat-cached) 
bat-cached = temp_descriptor(b-batCacheid);
return b;
 }
 
 static BAT *
-delta_full_bat( sql_column *c, sql_delta *bat, int temp, BAT *d, BAT *s)
+delta_full_bat( sql_column *c, sql_delta *bat, int temp)
 {
-   if (bat-cached  s) 
-   return BATsemijoin(bat-cached, s);
if (bat-cached) 
return temp_descriptor(bat-cached-batCacheid);
-   return delta_full_bat_( c, bat, temp, d, s);
+   return delta_full_bat_( c, bat, temp);
 }
 
 static BAT *
-full_column(sql_trans *tr, sql_column *c, BAT *d, BAT *s )
+full_column(sql_trans *tr, sql_column *c)
 {
if (!c-data) {
sql_column *oc = tr_find_column(tr-parent, c);
c-data = oc-data;
}
-   return delta_full_bat(c, c-data, isTemp(c), d, s);
+   return delta_full_bat(c, c-data, isTemp(c));
 }
 
 static oid column_find_row(sql_trans *tr, sql_column *c, void *value, ...);
@@ -103,39 +119,31 @@ static oid
 column_find_row(sql_trans *tr, sql_column *c, void *value, ...)
 {
va_list va;
-   BUN q;
-   BAT *b = NULL, *s = NULL, *r = NULL, *d = NULL;
+   BAT *b = NULL, *s = NULL, *r = NULL;
oid rid = 

MonetDB: default - merged changes from Oct2014

2014-09-07 Thread Niels Nes
Changeset: eaca160265ed for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=eaca160265ed
Modified Files:
gdk/gdk.h
gdk/gdk_aggr.c
gdk/gdk_atoms.c
gdk/gdk_bat.c
gdk/gdk_batop.c
gdk/gdk_group.c
gdk/gdk_select.c
gdk/gdk_setop.c
gdk/gdk_value.c
monetdb5/mal/mal_instruction.c
sql/storage/bat/bat_table.c
sql/storage/store.c
sql/test/BugTracker-2009/Tests/primekeyconstraint.SF-2783425.stable.err
Branch: default
Log Message:

merged changes from Oct2014


diffs (truncated from 872 to 300 lines):

diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -1359,6 +1359,12 @@ gdk_export bte ATOMelmshift(int sz);
(b)-batCount++;\
} while (0)
 
+#define bunfastapp_nocheck_inc(b, p, t)\
+   do {\
+   bunfastapp_nocheck(b, p, t, Tsize(b));  \
+   p++;\
+   } while (0)
+
 #define bunfastapp(b, t)   \
do {\
register BUN _p = BUNlast(b);   \
@@ -2594,7 +2600,8 @@ gdk_export BAT *BATattach(int tt, const 
 #define putenv _putenv
 #endif
 
-/* also see VALget */
+/* Return a pointer to the value contained in V.  Also see VALget
+ * which returns a void *. */
 static inline const void *
 VALptr(const ValRecord *v)
 {
@@ -3346,7 +3353,6 @@ gdk_export BAT *BATsample(BAT *b, BUN n)
 /*
  *
  */
-#define ILLEGALVALUE   ((ptr)-1L)
 #define MAXPARAMS  32
 
 #ifndef NDEBUG
diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -1497,6 +1497,8 @@ BATgroupavg(BAT **bnp, BAT **cntsp, BAT 
(*cntsp)-tkey = BATcount(*cntsp) = 1;
(*cntsp)-tsorted = BATcount(*cntsp) = 1;
(*cntsp)-trevsorted = BATcount(*cntsp) = 1;
+   (*cntsp)-T-nil = 0;
+   (*cntsp)-T-nonil = 1;
}
BATsetcount(bn, ngrp);
BATseqbase(bn, min);
diff --git a/gdk/gdk_atoms.c b/gdk/gdk_atoms.c
--- a/gdk/gdk_atoms.c
+++ b/gdk/gdk_atoms.c
@@ -348,11 +348,9 @@ ATOMformat(int t, const void *p, char **
 {
int (*tostr) (str *, int *, const void *);
 
-   if (p  0 = t  t  GDKatomcnt 
-   (tostr = BATatoms[t].atomToStr)) {
-   int sz = 0, l = (*tostr) (buf, sz, p);
-
-   return l;
+   if (p  0 = t  t  GDKatomcnt  (tostr = BATatoms[t].atomToStr)) {
+   int sz = 0;
+   return (*tostr) (buf, sz, p);
}
*buf = GDKmalloc(4);
if (*buf == NULL)
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -967,35 +967,35 @@ BATcopy(BAT *b, int ht, int tt, int writ
if (ATOMtype(ht) == ATOMtype(b-htype)) {
ALIGNsetH(bn, b);
} else if (ATOMtype(ATOMstorage(ht)) == 
ATOMtype(ATOMstorage(b-htype))) {
-   bn-hsorted = b-hsorted || (cnt = 1  
BATatoms[b-htype].linear);
-   bn-hrevsorted = b-hrevsorted || (cnt = 1  
BATatoms[b-htype].linear);
+   bn-hsorted = b-hsorted;
+   bn-hrevsorted = b-hrevsorted;
bn-hdense = b-hdense  ATOMtype(bn-htype) == TYPE_oid;
if (b-hkey)
BATkey(bn, TRUE);
bn-H-nonil = b-H-nonil;
} else {
-   bn-hsorted = bn-hrevsorted = (cnt = 1  
BATatoms[b-htype].linear);
+   bn-hsorted = bn-hrevsorted = 0; /* set based on count later */
bn-hdense = bn-H-nonil = 0;
}
if (ATOMtype(tt) == ATOMtype(b-ttype)) {
ALIGNsetT(bn, b);
} else if (ATOMtype(ATOMstorage(tt)) == 
ATOMtype(ATOMstorage(b-ttype))) {
-   bn-tsorted = b-tsorted || (cnt = 1  
BATatoms[b-ttype].linear);
-   bn-trevsorted = b-trevsorted || (cnt = 1  
BATatoms[b-ttype].linear);
+   bn-tsorted = b-tsorted;
+   bn-trevsorted = b-trevsorted;
bn-tdense = b-tdense  ATOMtype(bn-ttype) == TYPE_oid;
if (b-tkey)
BATkey(BATmirror(bn), TRUE);
bn-T-nonil = b-T-nonil;
} else {
-   bn-tsorted = bn-trevsorted = (cnt = 1  
BATatoms[b-ttype].linear);
+   bn-tsorted = bn-trevsorted = 0; /* set based on count later */
bn-tdense = bn-T-nonil = 0;
}
if (BATcount(bn) = 1) {
-   bn-hsorted = 1;
-   bn-hrevsorted = 1;
+   bn-hsorted = BATatoms[b-htype].linear;
+   bn-hrevsorted = BATatoms[b-htype].linear;
bn-hkey = 1;
-   bn-tsorted = 1;
-   bn-trevsorted = 1;
+   bn-tsorted = BATatoms[b-ttype].linear;
+   bn-trevsorted = 

MonetDB: default - generalized filter functions (old version was...

2014-09-07 Thread Niels Nes
Changeset: b132e9477d66 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b132e9477d66
Modified Files:
monetdb5/modules/mal/pcre.mal
sql/backends/monet5/LSST/Tests/lsst_htmxmatch.sql
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_statement.c
sql/backends/monet5/sql_statement.h
sql/benchmarks/tpch/Tests/02-plan.stable.out
sql/benchmarks/tpch/Tests/09-plan.stable.out.int128
sql/benchmarks/tpch/Tests/13-plan.stable.out
sql/benchmarks/tpch/Tests/16-plan.stable.out
sql/benchmarks/tpch/Tests/17-explain.stable.out.int128
sql/benchmarks/tpch/Tests/17-plan.stable.out.int128
sql/benchmarks/tpch/Tests/20-explain.stable.out.int128
sql/benchmarks/tpch/Tests/20-plan.stable.out.int128
sql/server/rel_dump.c
sql/server/rel_exp.c
sql/server/rel_exp.h
sql/server/rel_optimizer.c
sql/server/rel_select.c
sql/server/sql_parser.y
sql/test/BugTracker-2009/Tests/primekeyconstraint.SF-2783425.stable.err
sql/test/leaks/Tests/check1.stable.out.int128
sql/test/leaks/Tests/check2.stable.out.int128
sql/test/leaks/Tests/check3.stable.out.int128
sql/test/leaks/Tests/check4.stable.out.int128
sql/test/leaks/Tests/check5.stable.out.int128
sql/test/leaks/Tests/select1.stable.out.int128
sql/test/leaks/Tests/select2.stable.out.int128
Branch: default
Log Message:

generalized filter functions (old version was limited to l filter (r, option),
ie for like filters).
New syntax is  [ l0, l1 .., ln ] Filter_Op [ r0, r1, .., rn ] where
l0 and r0 are the columns to join/select over.
Extra columns/options can be passed using the l1 to ln and r1 to rn.

Currently the filter functions could be added to the system using
create filter function name( scalar types) external name mod.name;
In mal we assume (require) mod.name functions to exist for the subselect
and subjoin variations. See subjoin/select and likesubselect variants.

Also bit returning map operators are needed (if select/join isn't the first
operator on a relation). These have the form (l0, ..ln, r0, ..rn):= bit.
For now the name should be 'mod'.sqlname. Where the sqlname is the name
given to the function within sql.

Probably we cleanup this requirement and add some documentation ;-).


diffs (truncated from 1839 to 300 lines):

diff --git a/monetdb5/modules/mal/pcre.mal b/monetdb5/modules/mal/pcre.mal
--- a/monetdb5/modules/mal/pcre.mal
+++ b/monetdb5/modules/mal/pcre.mal
@@ -118,6 +118,25 @@ address BATPCREnotilike;
 command batstr.not_ilike(s:bat[:oid,:str], pat:str):bat[:oid,:bit]
 address BATPCREnotilike2;
 
+command algebra.like(s:str, pat:str, esc:str):bit address PCRElike3;
+command algebra.like(s:str, pat:str):bit address PCRElike2;
+command algebra.not_like(s:str, pat:str, esc:str):bit address PCREnotlike3;
+command algebra.not_like(s:str, pat:str):bit address PCREnotlike2;
+command algebra.ilike(s:str, pat:str, esc:str):bit address PCREilike3;
+command algebra.ilike(s:str, pat:str):bit address PCREilike2;
+command algebra.not_ilike(s:str, pat:str, esc:str):bit address PCREnotilike3;
+command algebra.not_ilike(s:str, pat:str):bit address PCREnotilike2;
+
+module batalgebra;
+command batalgebra.like(s:bat[:oid,:str], pat:str, esc:str):bat[:oid,:bit] 
address BATPCRElike;
+command batalgebra.like(s:bat[:oid,:str], pat:str):bat[:oid,:bit] address 
BATPCRElike2;
+command batalgebra.not_like(s:bat[:oid,:str], pat:str, esc:str):bat[:oid,:bit] 
address BATPCREnotlike;
+command batalgebra.not_like(s:bat[:oid,:str], pat:str):bat[:oid,:bit] address 
BATPCREnotlike2;
+command batalgebra.ilike(s:bat[:oid,:str], pat:str, esc:str):bat[:oid,:bit] 
address BATPCREilike;
+command batalgebra.ilike(s:bat[:oid,:str], pat:str):bat[:oid,:bit] address 
BATPCREilike2;
+command batalgebra.not_ilike(s:bat[:oid,:str], pat:str, 
esc:str):bat[:oid,:bit] address BATPCREnotilike;
+command batalgebra.not_ilike(s:bat[:oid,:str], pat:str):bat[:oid,:bit] address 
BATPCREnotliike2;
+
 command algebra.likesubselect(b:bat[:oid,:str], pat:str, esc:str, 
caseignore:bit, anti:bit) :bat[:oid,:oid]
 address PCRElikesubselect1
 comment Select all head values for which the tail value is \like\
diff --git a/sql/backends/monet5/LSST/Tests/lsst_htmxmatch.sql 
b/sql/backends/monet5/LSST/Tests/lsst_htmxmatch.sql
--- a/sql/backends/monet5/LSST/Tests/lsst_htmxmatch.sql
+++ b/sql/backends/monet5/LSST/Tests/lsst_htmxmatch.sql
@@ -5,9 +5,9 @@ insert into htm values (120), (121), (12
 insert into htm values (130), (131), (132), (133);
 
 -- select identical pairs
-select  * from htm a, htm b where a.id xmatch(0) b.id;
+select  * from htm a, htm b where [a.id] xmatch [b.id,0];
 
 -- select pairs at distance one
-select  * from htm a, htm b where a.id xmatch(1) b.id;
+select  * from htm a, htm b where [a.id] xmatch [b.id,1];
 
 drop table htm;
diff --git 

MonetDB: Oct2014 - split update bat within the catalog interface...

2014-09-09 Thread Niels Nes
Changeset: 1c3d356ffdc2 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1c3d356ffdc2
Modified Files:
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql.c
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_optimizer.c
sql/backends/monet5/sql_statistics.c
sql/include/sql_catalog.h
sql/storage/bat/bat_storage.c
Branch: Oct2014
Log Message:

split update bat within the catalog interface to remove dependency on
BATselect.


diffs (truncated from 395 to 300 lines):

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
@@ -733,7 +733,7 @@ stmt_col( mvc *sql, sql_column *c, stmt 
   (c-base.flag != TR_NEW || c-t-base.flag != TR_NEW /* alter */) 
   (c-t-persistence == SQL_PERSIST || c-t-persistence == 
SQL_DECLARED_TABLE)  !c-t-commit_action) {
stmt *i = stmt_bat(sql-sa, c, RD_INS);
-   stmt *u = stmt_bat(sql-sa, c, RD_UPD);
+   stmt *u = stmt_bat(sql-sa, c, RD_UPD_ID);
sc = stmt_project_delta(sql-sa, sc, u, i);
sc = stmt_project(sql-sa, del, sc);
} else if (del) { /* always handle the deletes */
@@ -751,7 +751,7 @@ stmt_idx( mvc *sql, sql_idx *i, stmt *de
   (i-base.flag != TR_NEW || i-t-base.flag != TR_NEW /* alter */) 
   (i-t-persistence == SQL_PERSIST || i-t-persistence == 
SQL_DECLARED_TABLE)  !i-t-commit_action) {
stmt *ic = stmt_idxbat(sql-sa, i, RD_INS);
-   stmt *u = stmt_idxbat(sql-sa, i, RD_UPD);
+   stmt *u = stmt_idxbat(sql-sa, i, RD_UPD_ID);
sc = stmt_project_delta(sql-sa, sc, u, ic);
sc = stmt_project(sql-sa, del, sc);
} else if (del) { /* always handle the deletes */
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -489,7 +489,7 @@ table_has_updates(sql_trans *tr, sql_tab
 
for ( n = t-columns.set-h; !cnt  n; n = n-next) {
sql_column *c = n-data;
-   BAT *b = store_funcs.bind_col(tr, c, RD_UPD);
+   BAT *b = store_funcs.bind_col(tr, c, RD_UPD_ID);
cnt |= BATcount(b)  0;
BBPunfix(b-batCacheid);
}
@@ -1644,6 +1644,7 @@ mvc_bind_wrap(Client cntxt, MalBlkPtr mb
bn = BATslice(b, part_nr * psz, (part_nr + 1 == 
nr_parts) ? cnt : ((part_nr + 1) * psz));
BATseqbase(bn, part_nr * psz);
} else {
+   /* BAT b holds the UPD_ID bat */
oid l, h;
BAT *c = mvc_bind(m, *sname, *tname, *cname, 0);
cnt = BATcount(c);
@@ -1651,23 +1652,39 @@ mvc_bind_wrap(Client cntxt, MalBlkPtr mb
l = part_nr * psz;
h = (part_nr + 1 == nr_parts) ? cnt : ((part_nr 
+ 1) * psz);
h--;
-   bn = BATmirror(BATselect(BATmirror(b), l, h));
+   bn = BATsubselect(b, NULL, l, h, 1, 0, 0);
BBPreleaseref(c-batCacheid);
}
BBPreleaseref(b-batCacheid);
b = bn;
+   } else if (upd) {
+   BAT *uv = mvc_bind(m, *sname, *tname, *cname, 
RD_UPD_VAL);
+   int *uvl = (int *) getArgReference(stk, pci, 1);
+
+   BBPkeepref(*bid = b-batCacheid);
+   BBPkeepref(*uvl = uv-batCacheid);
+   return MAL_SUCCEED;
}
if (upd) {
int *uvl = (int *) getArgReference(stk, pci, 1);
 
if (BATcount(b)) {
-   BAT *id = BATmirror(BATmark(b, 0));
-   BAT *vl = BATmirror(BATmark(BATmirror(b), 0));
+   BAT *uv = mvc_bind(m, *sname, *tname, *cname, 
RD_UPD_VAL);
+   BAT *ui = mvc_bind(m, *sname, *tname, *cname, 
RD_UPD_ID);
+   BAT *id = BATproject(b, ui); 
+   BAT *vl = BATproject(b, uv);
+   bat_destroy(b);
+   bat_destroy(ui);
+   bat_destroy(uv);
BBPkeepref(*bid = id-batCacheid);
BBPkeepref(*uvl = vl-batCacheid);
} else {
+   sql_schema *s = mvc_bind_schema(m, *sname);
+   sql_table *t = mvc_bind_table(m, s, *tname);
+   sql_column *c = mvc_bind_column(m, t, *cname);
+
 

MonetDB: Oct2014 - fixed bug with double bat unfix.

2014-09-10 Thread Niels Nes
Changeset: 9b25271d202e for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9b25271d202e
Modified Files:
sql/backends/monet5/sql.c
Branch: Oct2014
Log Message:

fixed bug with double bat unfix.


diffs (37 lines):

diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -1652,7 +1652,7 @@ mvc_bind_wrap(Client cntxt, MalBlkPtr mb
l = part_nr * psz;
h = (part_nr + 1 == nr_parts) ? cnt : ((part_nr 
+ 1) * psz);
h--;
-   bn = BATsubselect(b, NULL, l, h, 1, 0, 0);
+   bn = BATsubselect(b, NULL, l, h, 1, 1, 0);
BBPreleaseref(c-batCacheid);
}
BBPreleaseref(b-batCacheid);
@@ -1673,7 +1673,6 @@ mvc_bind_wrap(Client cntxt, MalBlkPtr mb
BAT *ui = mvc_bind(m, *sname, *tname, *cname, 
RD_UPD_ID);
BAT *id = BATproject(b, ui); 
BAT *vl = BATproject(b, uv);
-   bat_destroy(b);
bat_destroy(ui);
bat_destroy(uv);
BBPkeepref(*bid = id-batCacheid);
@@ -1736,7 +1735,7 @@ mvc_bind_idxbat_wrap(Client cntxt, MalBl
l = part_nr * psz;
h = (part_nr + 1 == nr_parts) ? cnt : ((part_nr 
+ 1) * psz);
h--;
-   bn = BATsubselect(b, NULL, l, h, 1, 0, 0);
+   bn = BATsubselect(b, NULL, l, h, 1, 1, 0);
BBPreleaseref(c-batCacheid);
}
BBPreleaseref(b-batCacheid);
@@ -1756,7 +1755,6 @@ mvc_bind_idxbat_wrap(Client cntxt, MalBl
BAT *ui = mvc_bind_idxbat(m, *sname, *tname, 
*iname, RD_UPD_ID);
BAT *id = BATproject(b, ui); 
BAT *vl = BATproject(b, uv);
-   bat_destroy(b);
bat_destroy(ui);
bat_destroy(uv);
BBPkeepref(*bid = id-batCacheid);
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Oct2014 - make sure we only remove the arguments of the...

2014-09-10 Thread Niels Nes
Changeset: 580357e42f8c for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=580357e42f8c
Modified Files:
sql/storage/store.c
Branch: Oct2014
Log Message:

make sure we only remove the arguments of the function we
are dropping


diffs (12 lines):

diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -3597,7 +3597,7 @@ sys_drop_func(sql_trans *tr, sql_func *f
if (IS_AGGR(func) || 1) {
sql_table *sys_tab_args = find_sql_table(syss, args);
sql_column *sys_args_col = find_sql_column(sys_tab_args, 
func_id);
-   rids *args = table_funcs.rids_select(tr, sys_args_col, 
func-base.id, NULL, NULL);
+   rids *args = table_funcs.rids_select(tr, sys_args_col, 
func-base.id, func-base.id, NULL);
oid r = oid_nil;
 
 
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Oct2014 - make sure we don't mark the epression func = ...

2014-09-12 Thread Niels Nes
Changeset: 010d1ad2adcd for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=010d1ad2adcd
Modified Files:
sql/backends/monet5/sql.c
Branch: Oct2014
Log Message:

make sure we don't mark the epression func = const
as a point query


diffs (15 lines):

diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -63,8 +63,9 @@ exp_is_point_select(sql_exp *e)
return 1;
if (e-type == e_cmp  !e-f  e-flag == (int) cmp_equal) {
sql_exp *r = e-r;
-
-   if (r-card = CARD_AGGR)
+   sql_exp *l = e-l;
+
+   if (!is_func(l-type)  r-card = CARD_AGGR)
return 1;
}
return 0;
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: mosaic - removed special storage functions (not needed ...

2014-09-14 Thread Niels Nes
Changeset: c237ca2bf7f4 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c237ca2bf7f4
Modified Files:
sql/storage/bat/bat_storage.c
Branch: mosaic
Log Message:

removed special storage functions (not needed as compression is done inplace 
now)


diffs (123 lines):

diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c
--- a/sql/storage/bat/bat_storage.c
+++ b/sql/storage/bat/bat_storage.c
@@ -1620,23 +1620,6 @@ gtr_minmax( sql_trans *tr )
 }
 
 static int 
-tr_update_storage( sql_trans *tr, sql_delta *obat, sql_delta *cbat)
-{
-   int ok = LOG_OK;
-
-   (void)tr;
-   assert(store_nr_active==1);
-
-   assert (obat-bid != 0  cbat-bid != 0);
-   assert (obat-cached == NULL  cbat-cached == NULL);
-   temp_destroy(obat-bid);
-   obat-bid = cbat-bid;
-   temp_dup(cbat-bid);
-   assert(obat-ibid == cbat-ibid);
-   return ok;
-}
-
-static int 
 tr_update_delta( sql_trans *tr, sql_delta *obat, sql_delta *cbat, int unique)
 {
int ok = LOG_OK;
@@ -1832,10 +1815,7 @@ update_table(sql_trans *tr, sql_table *f
}
} else {
assert(oc-base.allocated);
-   if ((cc-storage_type  (!oc-storage_type || 
(strcmp(cc-storage_type, oc-storage_type) != 0))) || (!cc-storage_type  
oc-storage_type))
-   tr_update_storage(tr, oc-data, cc-data);
-   else
-   tr_update_delta(tr, oc-data, cc-data, 
cc-unique == 1);
+   tr_update_delta(tr, oc-data, cc-data, cc-unique == 
1);
}
 
oc-null = cc-null;
@@ -1880,10 +1860,7 @@ update_table(sql_trans *tr, sql_table *f
}
} else {
assert(oi-base.allocated);
-   if (ci-storage_type  (!ci-storage_type || 
strcmp(ci-storage_type, oi-storage_type) != 0))
-   tr_update_storage(tr, oi-data, 
ci-data);
-   else
-   tr_update_delta(tr, oi-data, ci-data, 
0);
+   tr_update_delta(tr, oi-data, ci-data, 0);
}
 
if (oi-base.rtime  ci-base.rtime)
@@ -1905,24 +1882,6 @@ update_table(sql_trans *tr, sql_table *f
return ok;
 }
 
-static int
-tr_log_storage( sql_trans *tr, sql_delta *cbat )
-{
-   int ok = LOG_OK;
-   BAT *b;
-
-   (void)tr;
-   assert(tr-parent == gtrans);
-   assert(store_nr_active == 1);
-
-   /* log new snapshot */
-   b = temp_descriptor(cbat-bid);
-   logger_add_bat(bat_logger, b, cbat-name);
-   ok = log_bat_persists(bat_logger, b, cbat-name);
-   bat_destroy(b);
-   return ok;
-}
-
 static int 
 tr_log_delta( sql_trans *tr, sql_delta *cbat, int cleared)
 {
@@ -1997,10 +1956,7 @@ log_table(sql_trans *tr, sql_table *ft)
 
if (!cc-base.wtime || !cc-base.allocated) 
continue;
-   if (ft-access  TABLE_WRITABLE) /* TODO we need a proper way 
to check for changes off the storage */
-   ok = tr_log_storage(tr, cc-data);
-   else
-   ok = tr_log_delta(tr, cc-data, ft-cleared);
+   ok = tr_log_delta(tr, cc-data, ft-cleared);
}
if (ok == LOG_OK  ft-idxs.set) {
for (n = ft-idxs.set-h; ok == LOG_OK  n; n = n-next) {
@@ -2017,22 +1973,6 @@ log_table(sql_trans *tr, sql_table *ft)
 }
 
 static int 
-tr_snapshot_storage( sql_trans *tr, sql_delta *cbat)
-{
-   int ok = LOG_OK;
-   BAT *b = temp_descriptor(cbat-bid);
-
-   assert(tr-parent == gtrans);
-   assert(store_nr_active == 1);
-
-   (void)tr;
-   bat_set_access(b, BAT_READ);
-   BATmode(b, PERSISTENT);
-   bat_destroy(b);
-   return ok;
-}
-
-static int 
 tr_snapshot_bat( sql_trans *tr, sql_delta *cbat)
 {
int ok = LOG_OK;
@@ -2067,10 +2007,7 @@ snapshot_table(sql_trans *tr, sql_table 
 
if (!cc-base.wtime || !cc-base.allocated) 
continue;
-   if (ft-access  TABLE_WRITABLE) /* TODO we need a proper way 
to check for changes off the storage */
-   tr_snapshot_storage(tr, cc-data);
-   else
-   tr_snapshot_bat(tr, cc-data);
+   tr_snapshot_bat(tr, cc-data);
}
if (ok == LOG_OK  ft-idxs.set) {
for (n = ft-idxs.set-h; ok == LOG_OK  n; n = n-next) {
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - merged with Oct2014

2014-09-14 Thread Niels Nes
Changeset: c56b9b975224 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c56b9b975224
Added Files:
sql/test/BugTracker-2014/Tests/aggr-with-limit.Bug-3498.sql
sql/test/BugTracker-2014/Tests/aggr-with-limit.Bug-3498.stable.err
sql/test/BugTracker-2014/Tests/aggr-with-limit.Bug-3498.stable.out
Modified Files:
sql/backends/monet5/sql.c
sql/test/BugTracker-2014/Tests/All
Branch: default
Log Message:

merged with Oct2014


diffs (168 lines):

diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -63,8 +63,9 @@ exp_is_point_select(sql_exp *e)
return 1;
if (e-type == e_cmp  !e-f  e-flag == (int) cmp_equal) {
sql_exp *r = e-r;
-
-   if (r-card = CARD_AGGR)
+   sql_exp *l = e-l;
+
+   if (!is_func(l-type)  r-card = CARD_AGGR)
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
@@ -40,3 +40,4 @@ orderby_on_constant.Bug-3554
 div_by_zero_in_return.Bug-3555
 round-sorted.Bug-3562
 locate-offset.Bug-3563
+aggr-with-limit.Bug-3498
diff --git a/sql/test/BugTracker-2014/Tests/aggr-with-limit.Bug-3498.sql 
b/sql/test/BugTracker-2014/Tests/aggr-with-limit.Bug-3498.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2014/Tests/aggr-with-limit.Bug-3498.sql
@@ -0,0 +1,9 @@
+START TRANSACTION;
+
+CREATE TABLE simple_table(id INTEGER);
+INSERT INTO simple_table VALUES (1),(2),(3),(4),(5);
+SELECT COUNT(*) AS val FROM simple_table ORDER BY val DESC;
+SELECT COUNT(*) AS val FROM simple_table ORDER BY val DESC LIMIT 5;
+SELECT COUNT(*) AS val FROM simple_table HAVING 1  0 ORDER BY val DESC LIMIT 
5;
+
+ROLLBACK;
diff --git a/sql/test/BugTracker-2014/Tests/aggr-with-limit.Bug-3498.stable.err 
b/sql/test/BugTracker-2014/Tests/aggr-with-limit.Bug-3498.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2014/Tests/aggr-with-limit.Bug-3498.stable.err
@@ -0,0 +1,37 @@
+stderr of test 'aggr-with-limit.Bug-3498` in directory 
'sql/test/BugTracker-2014` itself:
+
+
+# 16:07:42   
+# 16:07:42   mserver5 --debug=10 --set gdk_nr_threads=0 --set 
mapi_open=true --set mapi_port=36743 --set 
mapi_usock=/var/tmp/mtest-7574/.s.monetdb.36743 --set monet_prompt= 
--forcemito --set mal_listing=2 
--dbpath=/ufs/sjoerd/Monet-candidate/var/MonetDB/mTests_sql_test_BugTracker-2014
 --set mal_listing=0 --set embedded_r=yes
+# 16:07:42   
+
+# builtin opt  gdk_dbpath = 
/ufs/sjoerd/Monet-candidate/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 = 36743
+# cmdline opt  mapi_usock = /var/tmp/mtest-7574/.s.monetdb.36743
+# cmdline opt  monet_prompt = 
+# cmdline opt  mal_listing = 2
+# cmdline opt  gdk_dbpath = 
/ufs/sjoerd/Monet-candidate/var/MonetDB/mTests_sql_test_BugTracker-2014
+# cmdline opt  mal_listing = 0
+# cmdline opt  embedded_r = yes
+# cmdline opt  gdk_debug = 536870922
+
+# 16:07:43   
+# 16:07:43   mclient -lsql -ftest -Eutf-8 -i -e 
--host=/var/tmp/mtest-7574 --port=36743
+# 16:07:43   
+
+
+# 16:07:43   
+# 16:07:43   Done.
+# 16:07:43   
+
diff --git a/sql/test/BugTracker-2014/Tests/aggr-with-limit.Bug-3498.stable.out 
b/sql/test/BugTracker-2014/Tests/aggr-with-limit.Bug-3498.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2014/Tests/aggr-with-limit.Bug-3498.stable.out
@@ -0,0 +1,84 @@
+stdout of test 'aggr-with-limit.Bug-3498` in directory 
'sql/test/BugTracker-2014` itself:
+
+
+# 16:07:42   
+# 16:07:42   mserver5 --debug=10 --set gdk_nr_threads=0 --set 
mapi_open=true --set mapi_port=36743 --set 
mapi_usock=/var/tmp/mtest-7574/.s.monetdb.36743 --set monet_prompt= 
--forcemito --set mal_listing=2 
--dbpath=/ufs/sjoerd/Monet-candidate/var/MonetDB/mTests_sql_test_BugTracker-2014
 --set mal_listing=0 --set embedded_r=yes
+# 16:07:42   
+
+# MonetDB 5 server v11.19.0 (hg id: ecb2e8102eee)
+# This is an unreleased version
+# Serving database 'mTests_sql_test_BugTracker-2014', using 8 threads
+# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically 
linked
+# Found 15.590 GiB available main-memory.
+# Copyright (c) 1993-July 2008 CWI.
+# Copyright (c) August 2008-2014 MonetDB B.V., all rights reserved
+# Visit http://www.monetdb.org/ for further information
+# Listening for connection requests on mapi:monetdb://madrid.ins.cwi.nl:36743/
+# Listening for UNIX domain connection requests on 

MonetDB: default - Change filter functions

2014-09-14 Thread Niels Nes
Changeset: 1f39770b506a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1f39770b506a
Modified Files:
monetdb5/modules/mal/pcre.c
monetdb5/modules/mal/pcre.mal
monetdb5/optimizer/opt_prelude.c
monetdb5/optimizer/opt_prelude.h
monetdb5/optimizer/opt_pushselect.c
monetdb5/optimizer/opt_strengthReduction.c
monetdb5/optimizer/opt_support.c
monetdb5/optimizer/opt_support.h
sql/backends/monet5/LSST/lsst.c
sql/backends/monet5/LSST/lsst.h
sql/backends/monet5/LSST/lsst.mal
sql/backends/monet5/generator/Tests/joins00.stable.out
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_scenario.c
sql/benchmarks/ssbm/Tests/01-explain.stable.out.int128
sql/benchmarks/ssbm/Tests/02-explain.stable.out.int128
sql/benchmarks/ssbm/Tests/03-explain.stable.out.int128
sql/benchmarks/ssbm/Tests/04-explain.stable.out.int128
sql/benchmarks/ssbm/Tests/05-explain.stable.out.int128
sql/benchmarks/ssbm/Tests/06-explain.stable.out.int128
sql/benchmarks/ssbm/Tests/07-explain.stable.out.int128
sql/benchmarks/ssbm/Tests/08-explain.stable.out.int128
sql/benchmarks/ssbm/Tests/09-explain.stable.out.int128
sql/benchmarks/ssbm/Tests/10-explain.stable.out.int128
sql/benchmarks/ssbm/Tests/11-explain.stable.out.int128
sql/benchmarks/ssbm/Tests/12-explain.stable.out.int128
sql/benchmarks/ssbm/Tests/13-explain.stable.out.int128
sql/benchmarks/tpch/Tests/01-explain.stable.out.int128
sql/benchmarks/tpch/Tests/02-explain.stable.out
sql/benchmarks/tpch/Tests/03-explain.stable.out.int128
sql/benchmarks/tpch/Tests/04-explain.stable.out
sql/benchmarks/tpch/Tests/05-explain.stable.out.int128
sql/benchmarks/tpch/Tests/06-explain.stable.out.int128
sql/benchmarks/tpch/Tests/07-explain.stable.out.int128
sql/benchmarks/tpch/Tests/08-explain.stable.out.int128
sql/benchmarks/tpch/Tests/09-explain.stable.out.int128
sql/benchmarks/tpch/Tests/10-explain.stable.out.int128
sql/benchmarks/tpch/Tests/11-explain.stable.out.int128
sql/benchmarks/tpch/Tests/12-explain.stable.out.int128
sql/benchmarks/tpch/Tests/13-explain.stable.out
sql/benchmarks/tpch/Tests/14-explain.stable.out.int128
sql/benchmarks/tpch/Tests/15-explain.stable.out.int128
sql/benchmarks/tpch/Tests/16-explain.stable.out
sql/benchmarks/tpch/Tests/17-explain.stable.out.int128
sql/benchmarks/tpch/Tests/18-explain.stable.out.int128
sql/benchmarks/tpch/Tests/19-explain.stable.out.int128
sql/benchmarks/tpch/Tests/20-explain.stable.out.int128
sql/benchmarks/tpch/Tests/21-explain.stable.out
sql/benchmarks/tpch/Tests/22-explain.stable.out.int128
sql/common/sql_types.c
sql/scripts/09_like.sql
sql/server/rel_optimizer.c

sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out
sql/test/BugTracker/Tests/explain.SF-1739353.stable.out
sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
Branch: default
Log Message:

Change filter functions
Filter functions require 3 different mal functions

1) returning bit (while at it create the bat'modulename'.filter version 
as well)
2) a bat[:oid,:oid] returning 'subselect' like function
3) a (l:bat[:oid,:oid]),r:bat[:oid,:oid]) returning 'subjoin' like 
function

The name of 1 should be given in the create filter function statement.
This name is extended with 'subselect' and 'subjoin' for the 2 and 3
cases.

Example

create filter function like(val string, pat string, esc string) 
external name algebra.like;


expected mal functions:

command algebra.like(s:str, pat:str, esc:str):bit address PCRElike3;

function algebra.likesubselect(b:bat[:oid,:str], cand:bat[:oid,:oid], 
pat:str, esc:str, anti:bit) :bat[:oid,:oid];

command 
algebra.likesubjoin(l:bat[:oid,:str],r:bat[:oid,:str],esc:str,sl:bat[:oid,:oid],sr:bat[:oid,:oid],nil_matches:bit,estimate:lng)
 (:bat[:oid,:oid],:bat[:oid,:oid])

optional mal function:

command batalgebra.like(s:bat[:oid,:str], pat:str, 
esc:str):bat[:oid,:bit] address BATPCRElike;


diffs (truncated from 6128 to 300 lines):

diff --git a/monetdb5/modules/mal/pcre.c b/monetdb5/modules/mal/pcre.c
--- a/monetdb5/modules/mal/pcre.c
+++ b/monetdb5/modules/mal/pcre.c
@@ -1358,7 +1358,7 @@ PCRElikesubselect2(bat *ret, bat *bid, b
if ((b = BATdescriptor(*bid)) == NULL) {
throw(MAL, algebra.likeselect, RUNTIME_OBJECT_MISSING);
}
-   if (sid  (s = BATdescriptor(*sid)) == NULL) {
+   if (sid  (*sid) != bat_nil  *sid  (s = BATdescriptor(*sid)) == 
NULL) {
BBPreleaseref(b-batCacheid);
throw(MAL, 

MonetDB: default - fix compilation on windows

2014-09-14 Thread Niels Nes
Changeset: 78e690b10401 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=78e690b10401
Modified Files:
monetdb5/optimizer/opt_support.c
Branch: default
Log Message:

fix compilation on windows


diffs (21 lines):

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
@@ -917,7 +917,7 @@ int isFragmentGroup2(InstrPtr p){
 int isSubSelect(InstrPtr p)
 {
char *func = getFunctionId(p);
-   int l = func?strlen(func):0;
+   size_t l = func?strlen(func):0;

return (l = 9  getModuleId(p)== algebraRef  
strcmp(func+l-9,subselect) == 0);
@@ -926,7 +926,7 @@ int isSubSelect(InstrPtr p)
 int isSubJoin(InstrPtr p)
 {
char *func = getFunctionId(p);
-   int l = func?strlen(func):0;
+   size_t l = func?strlen(func):0;

return (l = 7  getModuleId(p)== algebraRef  
strcmp(func+l-7,subjoin) == 0);
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Oct2014 - make sure we only apply the stringtrick in BA...

2014-09-21 Thread Niels Nes
Changeset: 39ea2e9fe4a8 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=39ea2e9fe4a8
Modified Files:
gdk/gdk_join.c
Branch: Oct2014
Log Message:

make sure we only apply the stringtrick in BATproject
when there are no nil's oids (in l).
Fixes bug 3583


diffs (12 lines):

diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -2976,7 +2976,7 @@ BATproject(BAT *l, BAT *r)
}
assert(l-ttype == TYPE_oid);
 
-   if (ATOMstorage(tpe) == TYPE_str 
+   if (ATOMstorage(tpe) == TYPE_str  l-T-nonil 
(rcount == 0 || lcount  (rcount  3))) {
/* insert strings as ints, we need to copy the string
 * heap whole sale */
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jan2014 - fixes for bug 3579 and bug 3575

2014-09-21 Thread Niels Nes
Changeset: 3c7675b36829 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3c7675b36829
Modified Files:
gdk/gdk_calc_compare.h
sql/server/rel_schema.c
Branch: Jan2014
Log Message:

fixes for bug 3579 and bug 3575


diffs (37 lines):

diff --git a/gdk/gdk_calc_compare.h b/gdk/gdk_calc_compare.h
--- a/gdk/gdk_calc_compare.h
+++ b/gdk/gdk_calc_compare.h
@@ -36,7 +36,8 @@ op_typeswitchloop(const void *lft, int t
 
assert(incr1 == 1);
assert(tp2 == TYPE_oid || incr2 == 1); /* if void, incr2==1 */
-   v = * (const oid *) lft;
+   if (lft)
+   v = * (const oid *) lft;
CANDLOOP(dst, k, TPE_nil, 0, start);
if (v == oid_nil || tp2 == TYPE_void) {
TPE res = v == oid_nil || * (const oid *) rgt == 
oid_nil ?
diff --git a/sql/server/rel_schema.c b/sql/server/rel_schema.c
--- a/sql/server/rel_schema.c
+++ b/sql/server/rel_schema.c
@@ -1007,6 +1007,9 @@ rel_create_schema(mvc *sql, dlist *auth_
sql_error(sql, 02, 42000!CREATE SCHEMA: insufficient 
privileges for user '%s', stack_get_string(sql, current_user));
return NULL;
}
+   if (!name) 
+   name = auth;
+   assert(name);
if (mvc_bind_schema(sql, name)) {
sql_error(sql, 02, 3F000!CREATE SCHEMA: name '%s' already in 
use, name);
return NULL;
@@ -1016,9 +1019,7 @@ rel_create_schema(mvc *sql, dlist *auth_
sql_schema *ss = SA_ZNEW(sql-sa, sql_schema);
sql_rel *ret;
 
-   ret = rel_schema(sql-sa, DDL_CREATE_SCHEMA, 
-  dlist_get_schema_name(auth_name),
-  schema_auth(auth_name), 0);
+   ret = rel_schema(sql-sa, DDL_CREATE_SCHEMA, name, auth, 0);
 
ss-base.name = name;
ss-auth_id = auth_id;
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jan2014 - fixed bug 3582

2014-09-21 Thread Niels Nes
Changeset: 229116aeddb0 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=229116aeddb0
Modified Files:
sql/server/rel_select.c
Branch: Jan2014
Log Message:

fixed bug 3582


diffs (15 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
@@ -3676,10 +3676,8 @@ static sql_exp *
 
if (groupby-op != op_groupby)  /* implicit groupby */
*rel = rel_project2groupby(sql, groupby);
-   if (!*rel) {
-   rel_destroy(groupby);
+   if (!*rel)
return NULL;
-   }
 
if (f == sql_where) {
char *uaname = malloc(strlen(aname) + 1);
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jan2014 - fixed compilation in gdk_calc_compare.h

2014-09-21 Thread Niels Nes
Changeset: 9e857531d690 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9e857531d690
Modified Files:
gdk/gdk_calc_compare.h
sql/server/sql_parser.y
sql/server/sql_scan.c
sql/storage/bat/bat_storage.c
sql/test/Tests/identifiers.stable.err
sql/test/Tests/identifiers.stable.out
Branch: Jan2014
Log Message:

fixed compilation in gdk_calc_compare.h

more valid_idents (ab)

fixed bug (default value)


diffs (208 lines):

diff --git a/gdk/gdk_calc_compare.h b/gdk/gdk_calc_compare.h
--- a/gdk/gdk_calc_compare.h
+++ b/gdk/gdk_calc_compare.h
@@ -32,7 +32,7 @@ op_typeswitchloop(const void *lft, int t
 
switch (tp1) {
case TYPE_void: {
-   oid v;
+   oid v = oid_nil;
 
assert(incr1 == 1);
assert(tp2 == TYPE_oid || incr2 == 1); /* if void, incr2==1 */
diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y
--- a/sql/server/sql_parser.y
+++ b/sql/server/sql_parser.y
@@ -1061,9 +1061,9 @@ opt_column:
  ;
 
 create_statement:  
-   role_def 
+   create role_def { $$ = $2; }
  | create table_def{ $$ = $2; }
- | view_def
+ | create view_def { $$ = $2; }
  | type_def
  | func_def
  | index_def
@@ -1279,18 +1279,18 @@ CREATE [ UNIQUE ] INDEX index_name
 */
 
 role_def:
-create ROLE ident opt_grantor
+ROLE ident opt_grantor
{ dlist *l = L();
- append_string(l, $3);
+ append_string(l, $2);
+ append_int(l, $3);
+ $$ = _symbol_create_list( SQL_CREATE_ROLE, l ); }
+ |  USER ident WITH opt_encrypted PASSWORD string sqlNAME string SCHEMA ident
+   { dlist *l = L();
+ append_string(l, $2);
+ append_string(l, $6);
+ append_string(l, $8);
+ append_string(l, $10);
  append_int(l, $4);
- $$ = _symbol_create_list( SQL_CREATE_ROLE, l ); }
- |  create USER ident WITH opt_encrypted PASSWORD string sqlNAME string SCHEMA 
ident
-   { dlist *l = L();
- append_string(l, $3);
- append_string(l, $7);
- append_string(l, $9);
- append_string(l, $11);
- append_int(l, $5);
  $$ = _symbol_create_list( SQL_CREATE_USER, l ); }
  ;
 
@@ -1725,12 +1725,12 @@ like_table:
  ;
 
 view_def:
-create VIEW qname opt_column_list AS query_expression opt_with_check_option
+VIEW qname opt_column_list AS query_expression opt_with_check_option
{  dlist *l = L();
+ append_list(l, $2);
  append_list(l, $3);
- append_list(l, $4);
- append_symbol(l, $6);
- append_int(l, $7);
+ append_symbol(l, $5);
+ append_int(l, $6);
  append_int(l, TRUE);  /* persistent view */
  $$ = _symbol_create_list( SQL_CREATE_VIEW, l ); 
}
diff --git a/sql/server/sql_scan.c b/sql/server/sql_scan.c
--- a/sql/server/sql_scan.c
+++ b/sql/server/sql_scan.c
@@ -928,11 +928,11 @@ valid_ident(char *s, char *dst)

if (*s == '%')
return 0;
-   /* do unescaping in the loop */
+
while (*s  (*s != '' || escaped)) {
-   if (*s == ''  s[1] == '') {
+   if (*s == '\\'  s[1] == '') {
escaped = !escaped;
-   if (!escaped) 
+   if (escaped) 
dst[p++] = *s;
} else if (*s == ''  escaped) {
escaped = 0;
@@ -941,8 +941,6 @@ valid_ident(char *s, char *dst)
escaped = 0;
dst[p++] = *s;
}
-   //if (*s == '\\') 
-   //dst[p++] = *s;
s++;
if (p = 1024)
return 0;
diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c
--- a/sql/storage/bat/bat_storage.c
+++ b/sql/storage/bat/bat_storage.c
@@ -1752,38 +1752,38 @@ update_table(sql_trans *tr, sql_table *f
sql_column *cc = n-data;
sql_column *oc = m-data;
 
-   if (!cc-base.wtime || !cc-base.allocated) {
-   cc-data = NULL;
-   cc-base.allocated = cc-base.rtime = cc-base.wtime = 
0;
-   continue;
-   }
+   if (cc-base.wtime  cc-base.allocated) {
+   assert(oc-base.wtime  cc-base.wtime);
+   if (store_nr_active  1) { /* move delta */
+   sql_delta *b = cc-data, *p = NULL;
 
-   assert(oc-base.wtime  cc-base.wtime);
-   if (store_nr_active  1) { /* move delta */
-   sql_delta *b = cc-data, *p = NULL;
-
-   cc-data = NULL;
-   b-next = oc-data;
-   oc-data = b;
-   while (b  b-wtime  oldest-stime) {
-   p = b;
-   b = b-next;
+ 

MonetDB: Oct2014 - fix for bug 3565

2014-09-21 Thread Niels Nes
Changeset: b8bc6d228e06 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b8bc6d228e06
Modified Files:
sql/server/rel_schema.c
Branch: Oct2014
Log Message:

fix for bug 3565


diffs (14 lines):

diff --git a/sql/server/rel_schema.c b/sql/server/rel_schema.c
--- a/sql/server/rel_schema.c
+++ b/sql/server/rel_schema.c
@@ -1069,7 +1069,9 @@ rel_alter_table(mvc *sql, dlist *qname, 
s = cur_schema(sql);
 
if ((t = mvc_bind_table(sql, s, tname)) == NULL) {
-   return sql_error(sql, 02, 42S02!ALTER TABLE: no such table 
'%s', tname);
+   if (mvc_bind_table(sql, mvc_bind_schema(sql, tmp), tname) != 
NULL) 
+   return sql_error(sql, 02, 42S02!ALTER TABLE: not 
supported on TEMPORARY table '%s', tname);
+   return sql_error(sql, 02, 42S02!ALTER TABLE: no such table 
'%s' in schema '%s', tname, s-base.name);
} else {
node *n;
sql_rel *res = NULL, *r;
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - fixes for alter table set null

2014-09-21 Thread Niels Nes
Changeset: fadce444aea7 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=fadce444aea7
Modified Files:
sql/backends/monet5/sql.c
sql/storage/bat/bat_table.c
sql/test/BugTracker-2009/Tests/primekeyconstraint.SF-2783425.stable.err
Branch: default
Log Message:

fixes for alter table set null
and approved output


diffs (43 lines):

diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -569,7 +569,11 @@ alter_table(mvc *sql, char *sname, sql_t
/* for non empty check for nulls */
if (c-null == 0) {
void *nilptr = 
ATOMnilptr(c-type.type-localtype);
-   if 
(table_funcs.column_find_row(sql-session-tr, nc, nilptr, NULL) != oid_nil)
+   rids *nils = 
table_funcs.rids_select(sql-session-tr, nc, nilptr, NULL, NULL);  
+   int has_nils = (table_funcs.rids_next(nils) != 
oid_nil);
+
+   table_funcs.rids_destroy(nils);
+   if (has_nils)
return sql_message(40002!ALTER TABLE: 
NOT NULL constraint violated for column %s.%s, c-t-base.name, c-base.name);
}
}
diff --git a/sql/storage/bat/bat_table.c b/sql/storage/bat/bat_table.c
--- a/sql/storage/bat/bat_table.c
+++ b/sql/storage/bat/bat_table.c
@@ -274,7 +274,7 @@ rids_select( sql_trans *tr, sql_column *
b = full_column(tr, key);
if (!kvl)
kvl = ATOMnilptr(b-ttype);
-   if (!kvh)
+   if (!kvh  key_value_low != ATOMnilptr(b-ttype))
kvh = ATOMnilptr(b-ttype);
hi = (kvl == kvh);
r = BATsubselect(b, s, kvl, kvh, 1, hi, 0);
diff --git 
a/sql/test/BugTracker-2009/Tests/primekeyconstraint.SF-2783425.stable.err 
b/sql/test/BugTracker-2009/Tests/primekeyconstraint.SF-2783425.stable.err
--- a/sql/test/BugTracker-2009/Tests/primekeyconstraint.SF-2783425.stable.err
+++ b/sql/test/BugTracker-2009/Tests/primekeyconstraint.SF-2783425.stable.err
@@ -69,9 +69,9 @@ stderr of test 'primekeyconstraint.SF-27
 # 08:02:34   mclient -lsql -umonetdb -Pmonetdb --host=eir --port=30582 
 # 08:02:34   
 
-MAPI  = (monetdb) /var/tmp/mtest-23599/.s.monetdb.33852
+MAPI  = (monetdb) /var/tmp/mtest-11898/.s.monetdb.35572
 QUERY = ALTER TABLE way_nds ADD CONSTRAINT pk_way_nds PRIMARY KEY (way, idx);
-ERROR = !UPDATE: PRIMARY KEY constraint 'way_nds.pk_way_nds' violated
+ERROR = !ALTER TABLE: NOT NULL constraint violated for column way_nds.way
 
 # 08:02:34   
 # 08:02:34   Done.
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Oct2014 - more string 2 decimal fixes. fixes bug 3558

2014-09-21 Thread Niels Nes
Changeset: a14d4678c148 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a14d4678c148
Modified Files:
sql/backends/monet5/sql_round_impl.h
sql/server/sql_decimal.c
sql/server/sql_decimal.h
sql/server/sql_parser.y
Branch: Oct2014
Log Message:

more string 2 decimal fixes. fixes bug 3558


diffs (93 lines):

diff --git a/sql/backends/monet5/sql_round_impl.h 
b/sql/backends/monet5/sql_round_impl.h
--- a/sql/backends/monet5/sql_round_impl.h
+++ b/sql/backends/monet5/sql_round_impl.h
@@ -290,7 +290,7 @@ str
 str_2dec(TYPE *res, str *val, int *d, int *sc)
 {
char *s = strip_extra_zeros(*val);
-   char *dot = strchr(s, '.');
+   char *dot = strchr(s, '.'), *end = NULL;
int digits = _strlen(s) - 1;
int scale = digits - (int) (dot - s);
lng value = 0;
@@ -305,8 +305,10 @@ str_2dec(TYPE *res, str *val, int *d, in
} else { /* we have a dot in the string */
digits--;
}
+   if (digits = 0)
+   throw(SQL, STRING(TYPE), decimal (%s) doesn't have format 
(%d.%d), *val, *d, *sc);
 
-   value = decimal_from_str(s);
+   value = decimal_from_str(s, end);
if (*s == '+' || *s == '-')
digits--;
if (scale  *sc) {
@@ -333,7 +335,7 @@ str_2dec(TYPE *res, str *val, int *d, in
throw(SQL, STRING(TYPE), rounding of decimal (%s) 
doesn't fit format (%d.%d), *val, *d, *sc);
}
}
-   if (digits  *d) {
+   if (digits = 0 || digits  *d || *end) {
throw(SQL, STRING(TYPE), decimal (%s) doesn't have format 
(%d.%d), *val, *d, *sc);
}
*res = (TYPE) value;
diff --git a/sql/server/sql_decimal.c b/sql/server/sql_decimal.c
--- a/sql/server/sql_decimal.c
+++ b/sql/server/sql_decimal.c
@@ -22,11 +22,13 @@
 #include sql_decimal.h
 
 lng
-decimal_from_str(char *dec)
+decimal_from_str(char *dec, char **end)
 {
lng res = 0;
int neg = 0;
 
+   while(isspace(*dec))
+   dec++;
if (*dec == '-') {
neg = 1;
dec++;
@@ -35,12 +37,16 @@ decimal_from_str(char *dec)
neg = 0;
dec++;
}
-   for (; *dec; dec++) {
+   for (; *dec  ((*dec = '0'  *dec = '9') || *dec == '.'); dec++) {
if (*dec != '.') {
res *= 10;
res += *dec - '0';
}
}
+   while(isspace(*dec))
+   dec++;
+   if (end)
+   *end = dec;
if (neg)
return -res;
else
diff --git a/sql/server/sql_decimal.h b/sql/server/sql_decimal.h
--- a/sql/server/sql_decimal.h
+++ b/sql/server/sql_decimal.h
@@ -24,7 +24,7 @@
 #include sql_types.h
 #include gdk.h
 
-extern lng decimal_from_str(char *dec);
+extern lng decimal_from_str(char *dec, char **end);
 extern char * decimal_to_str(lng v, sql_subtype *t);
 
 #endif /* _SQL_DECIMAL_H */
diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y
--- a/sql/server/sql_parser.y
+++ b/sql/server/sql_parser.y
@@ -4160,7 +4160,7 @@ literal:
digits = 1;
  if (digits = 18) {
double val = strtod($1,NULL);
-   lng value = decimal_from_str(s);
+   lng value = decimal_from_str(s, NULL);
 
if (*s == '+' || *s == '-')
digits --;
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jan2014 - fixed problem with rel_distinct_project2groupby

2014-09-21 Thread Niels Nes
Changeset: 9e7c6d4e336d for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9e7c6d4e336d
Modified Files:
sql/server/rel_optimizer.c

sql/test/BugTracker-2010/Tests/ORDER_BY_over_UNION_EXCEPT_INTERSECT.Bug-2606.stable.out
Branch: Jan2014
Log Message:

fixed problem with rel_distinct_project2groupby


diffs (240 lines):

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
@@ -1994,14 +1994,16 @@ rel_distinct_project2groupby(int *change
node *n;
list *exps = new_exp_list(sql-sa), *gbe = 
new_exp_list(sql-sa);
 
+   rel-l = rel_project(sql-sa, rel-l, rel-exps);
+
for (n = rel-exps-h; n; n = n-next) {
sql_exp *e = n-data;
 
if (e-card  CARD_ATOM) { /* no need to group by on 
constants */
-   append(gbe, e);
if (!exp_name(e))
exp_label(sql-sa, e, ++sql-label);
e = exp_column(sql-sa, exp_relname(e), 
exp_name(e), exp_subtype(e), exp_card(e), has_nil(e), 0);
+   append(gbe, e);
}
append(exps, e);
}
diff --git 
a/sql/test/BugTracker-2010/Tests/ORDER_BY_over_UNION_EXCEPT_INTERSECT.Bug-2606.stable.out
 
b/sql/test/BugTracker-2010/Tests/ORDER_BY_over_UNION_EXCEPT_INTERSECT.Bug-2606.stable.out
--- 
a/sql/test/BugTracker-2010/Tests/ORDER_BY_over_UNION_EXCEPT_INTERSECT.Bug-2606.stable.out
+++ 
b/sql/test/BugTracker-2010/Tests/ORDER_BY_over_UNION_EXCEPT_INTERSECT.Bug-2606.stable.out
@@ -61,14 +61,18 @@ Ready.
 % .plan # table_name
 % rel # name
 % clob # type
-% 43 # length
+% 45 # length
 project (
 | distinct union (
 | | group by (
-| | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | project (
+| | | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | ) [ t2606a.a ]
 | | ) [ t2606a.a ] [ t2606a.a ],
 | | group by (
-| | | table(sys.t2606b) [ t2606b.a ] COUNT 
+| | | project (
+| | | | table(sys.t2606b) [ t2606b.a ] COUNT 
+| | | ) [ t2606b.a ]
 | | ) [ t2606b.a ] [ t2606b.a ]
 | ) [ t2606a.a as L.a ]
 ) [ L.a ] [ L.a ASC ]
@@ -90,14 +94,18 @@ project (
 % .plan # table_name
 % rel # name
 % clob # type
-% 43 # length
+% 45 # length
 project (
 | distinct union (
 | | group by (
-| | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | project (
+| | | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | ) [ t2606a.a ]
 | | ) [ t2606a.a ] [ t2606a.a ],
 | | group by (
-| | | table(sys.t2606b) [ t2606b.a ] COUNT 
+| | | project (
+| | | | table(sys.t2606b) [ t2606b.a ] COUNT 
+| | | ) [ t2606b.a ]
 | | ) [ t2606b.a ] [ t2606b.a ]
 | ) [ t2606a.a as L.a ]
 ) [ L.a ] [ L.a ASC ]
@@ -119,14 +127,18 @@ project (
 % .plan # table_name
 % rel # name
 % clob # type
-% 43 # length
+% 45 # length
 project (
 | distinct union (
 | | group by (
-| | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | project (
+| | | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | ) [ t2606a.a ]
 | | ) [ t2606a.a ] [ t2606a.a ],
 | | group by (
-| | | table(sys.t2606b) [ t2606b.a ] COUNT 
+| | | project (
+| | | | table(sys.t2606b) [ t2606b.a ] COUNT 
+| | | ) [ t2606b.a ]
 | | ) [ t2606b.a ] [ t2606b.a ]
 | ) [ t2606a.a as L.a ]
 ) [ L.a ] [ L.a ASC ]
@@ -148,11 +160,13 @@ project (
 % .plan # table_name
 % rel # name
 % clob # type
-% 43 # length
+% 45 # length
 project (
 | except (
 | | group by (
-| | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | project (
+| | | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | ) [ t2606a.a ]
 | | ) [ t2606a.a ] [ t2606a.a ],
 | | project (
 | | | table(sys.t2606b) [ t2606b.a ] COUNT 
@@ -171,11 +185,13 @@ project (
 % .plan # table_name
 % rel # name
 % clob # type
-% 43 # length
+% 45 # length
 project (
 | except (
 | | group by (
-| | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | project (
+| | | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | ) [ t2606a.a ]
 | | ) [ t2606a.a ] [ t2606a.a ],
 | | project (
 | | | table(sys.t2606b) [ t2606b.a ] COUNT 
@@ -194,11 +210,13 @@ project (
 % .plan # table_name
 % rel # name
 % clob # type
-% 43 # length
+% 45 # length
 project (
 | except (
 | | group by (
-| | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | project (
+| | | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | ) [ t2606a.a ]
 | | ) [ t2606a.a ] [ t2606a.a ],
 | | project (
 | | | table(sys.t2606b) [ t2606b.a ] COUNT 
@@ -217,11 +235,13 @@ project (
 % .plan # table_name
 % rel # name
 % clob # type
-% 43 # length
+% 45 # length
 project (
 | intersect (
 | | group by (
-| | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | project (
+| | | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | ) [ t2606a.a ]
 | | ) [ t2606a.a ] [ t2606a.a ],
 | | project (
 | | | table(sys.t2606b) [ t2606b.a ] COUNT 
@@ -240,11 +260,13 @@ project (
 % .plan # table_name
 % rel # name
 % clob # type
-% 43 # length

MonetDB: Oct2014 - merged with Jan2014

2014-09-22 Thread Niels Nes
Changeset: 54202575eb20 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=54202575eb20
Modified Files:
gdk/gdk_calc_compare.h
sql/server/rel_optimizer.c
sql/server/rel_schema.c
sql/server/rel_select.c
sql/server/sql_parser.y
sql/server/sql_scan.c
sql/storage/bat/bat_storage.c

sql/test/BugTracker-2010/Tests/ORDER_BY_over_UNION_EXCEPT_INTERSECT.Bug-2606.stable.out
sql/test/Tests/identifiers.stable.err
sql/test/Tests/identifiers.stable.out
Branch: Oct2014
Log Message:

merged with Jan2014


diffs (truncated from 493 to 300 lines):

diff --git a/gdk/gdk_calc_compare.h b/gdk/gdk_calc_compare.h
--- a/gdk/gdk_calc_compare.h
+++ b/gdk/gdk_calc_compare.h
@@ -32,11 +32,12 @@ op_typeswitchloop(const void *lft, int t
 
switch (tp1) {
case TYPE_void: {
-   oid v;
+   oid v = oid_nil;
 
assert(incr1 == 1);
assert(tp2 == TYPE_oid || incr2 == 1); /* if void, incr2==1 */
-   v = * (const oid *) lft;
+   if (lft)
+   v = * (const oid *) lft;
CANDLOOP(dst, k, TPE_nil, 0, start);
if (v == oid_nil || tp2 == TYPE_void) {
TPE res = v == oid_nil || * (const oid *) rgt == 
oid_nil ?
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
@@ -2044,14 +2044,16 @@ rel_distinct_project2groupby(int *change
node *n;
list *exps = new_exp_list(sql-sa), *gbe = 
new_exp_list(sql-sa);
 
+   rel-l = rel_project(sql-sa, rel-l, rel-exps);
+
for (n = rel-exps-h; n; n = n-next) {
sql_exp *e = n-data;
 
if (e-card  CARD_ATOM) { /* no need to group by on 
constants */
-   append(gbe, e);
if (!exp_name(e))
exp_label(sql-sa, e, ++sql-label);
e = exp_column(sql-sa, exp_relname(e), 
exp_name(e), exp_subtype(e), exp_card(e), has_nil(e), 0);
+   append(gbe, e);
}
append(exps, e);
}
diff --git a/sql/server/rel_schema.c b/sql/server/rel_schema.c
--- a/sql/server/rel_schema.c
+++ b/sql/server/rel_schema.c
@@ -1007,6 +1007,9 @@ rel_create_schema(mvc *sql, dlist *auth_
sql_error(sql, 02, 42000!CREATE SCHEMA: insufficient 
privileges for user '%s', stack_get_string(sql, current_user));
return NULL;
}
+   if (!name) 
+   name = auth;
+   assert(name);
if (mvc_bind_schema(sql, name)) {
sql_error(sql, 02, 3F000!CREATE SCHEMA: name '%s' already in 
use, name);
return NULL;
@@ -1016,9 +1019,7 @@ rel_create_schema(mvc *sql, dlist *auth_
sql_schema *ss = SA_ZNEW(sql-sa, sql_schema);
sql_rel *ret;
 
-   ret = rel_schema(sql-sa, DDL_CREATE_SCHEMA, 
-  dlist_get_schema_name(auth_name),
-  schema_auth(auth_name), 0);
+   ret = rel_schema(sql-sa, DDL_CREATE_SCHEMA, name, auth, 0);
 
ss-base.name = name;
ss-auth_id = auth_id;
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
@@ -3845,10 +3845,8 @@ static sql_exp *
 
if (groupby-op != op_groupby)  /* implicit groupby */
*rel = rel_project2groupby(sql, groupby);
-   if (!*rel) {
-   rel_destroy(groupby);
+   if (!*rel)
return NULL;
-   }
 
if (f == sql_where) {
char *uaname = malloc(strlen(aname) + 1);
diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y
--- a/sql/server/sql_parser.y
+++ b/sql/server/sql_parser.y
@@ -1061,9 +1061,9 @@ opt_column:
  ;
 
 create_statement:  
-   role_def 
+   create role_def { $$ = $2; }
  | create table_def{ $$ = $2; }
- | view_def
+ | create view_def { $$ = $2; }
  | type_def
  | func_def
  | index_def
@@ -1279,18 +1279,18 @@ CREATE [ UNIQUE ] INDEX index_name
 */
 
 role_def:
-create ROLE ident opt_grantor
+ROLE ident opt_grantor
{ dlist *l = L();
- append_string(l, $3);
+ append_string(l, $2);
+ append_int(l, $3);
+ $$ = _symbol_create_list( SQL_CREATE_ROLE, l ); }
+ |  USER ident WITH opt_encrypted PASSWORD string sqlNAME string SCHEMA ident
+   { dlist *l = L();
+ append_string(l, $2);
+ append_string(l, $6);
+ append_string(l, $8);
+ append_string(l, $10);
  append_int(l, $4);
- $$ = _symbol_create_list( SQL_CREATE_ROLE, l ); }
- |  create USER ident WITH opt_encrypted PASSWORD string sqlNAME 

MonetDB: Oct2014 - merged with Jan2014

2014-09-22 Thread Niels Nes
Changeset: 9ebc12a6aaa3 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9ebc12a6aaa3
Modified Files:
sql/server/rel_dump.c
Branch: Oct2014
Log Message:

merged with Jan2014


diffs (12 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
@@ -772,6 +772,8 @@ exp_read(mvc *sql, sql_rel *lrel, sql_re
old = *e;
*e = 0;

+   tname = sa_strdup(sql-sa, tname);
+   cname = sa_strdup(sql-sa, cname);
if (lrel) { 
exp = rel_bind_column2(sql, lrel, tname, cname, 0);
if (!exp  rrel)
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jan2014 - fixed problem with rel_read

2014-09-22 Thread Niels Nes
Changeset: b269679b2f63 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b269679b2f63
Modified Files:
sql/server/rel_dump.c
Branch: Jan2014
Log Message:

fixed problem with rel_read


diffs (12 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
@@ -744,6 +744,8 @@ exp_read(mvc *sql, sql_rel *lrel, sql_re
old = *e;
*e = 0;

+   tname = sa_strdup(sql-sa, tname);
+   cname = sa_strdup(sql-sa, cname);
if (lrel) { 
exp = rel_bind_column2(sql, lrel, tname, cname, 0);
if (!exp  rrel)
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - merged with Oct2014

2014-09-22 Thread Niels Nes
Changeset: 69eac417e424 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=69eac417e424
Added Files:
clients/R/MonetDB.R/R/dbi.R
clients/R/MonetDB.R/R/dplyr.R
clients/R/MonetDB.R/R/mapi.R
Removed Files:
clients/R/MonetDB.R/R/monetdb.R
Modified Files:
clients/R/MonetDB.R/DESCRIPTION
clients/R/MonetDB.R/NAMESPACE
clients/R/MonetDB.R/NEWS
clients/R/Tests/dplyr.R
configure.ag
gdk/gdk_calc_compare.h
gdk/gdk_join.c
sql/backends/monet5/sql_round_impl.h
sql/server/rel_dump.c
sql/server/rel_optimizer.c
sql/server/rel_schema.c
sql/server/rel_select.c
sql/server/sql_decimal.c
sql/server/sql_decimal.h
sql/server/sql_parser.y
sql/server/sql_scan.c
sql/storage/bat/bat_storage.c

sql/test/BugTracker-2010/Tests/ORDER_BY_over_UNION_EXCEPT_INTERSECT.Bug-2606.stable.out
sql/test/Tests/identifiers.stable.err
sql/test/Tests/identifiers.stable.out
Branch: default
Log Message:

merged with Oct2014


diffs (truncated from 2917 to 300 lines):

diff --git a/clients/R/MonetDB.R/DESCRIPTION b/clients/R/MonetDB.R/DESCRIPTION
--- a/clients/R/MonetDB.R/DESCRIPTION
+++ b/clients/R/MonetDB.R/DESCRIPTION
@@ -5,6 +5,7 @@ Authors@R: c(person(Hannes Muehleisen,
person(Thomas Lumley, role = ctb),
person(Anthony Damico, role = ctb))
 Depends: DBI (= 0.3), digest (= 0.6.4), bitops (= 1.0), methods
+Suggests: dplyr(= 0.2.0.9000)
 Description: Allows to pull data from MonetDB into R
 License: MPL (== 1.1)
 URL: http://monetr.r-forge.r-project.org
diff --git a/clients/R/MonetDB.R/NAMESPACE b/clients/R/MonetDB.R/NAMESPACE
--- a/clients/R/MonetDB.R/NAMESPACE
+++ b/clients/R/MonetDB.R/NAMESPACE
@@ -4,16 +4,9 @@ import(DBI,digest,methods,bitops)
 export(MonetDB,MonetR,MonetDBR,MonetDB.R)
 export(monet.read.csv,monetdb.read.csv)
 # this one is not in the DBI
-exportMethods(dbSendUpdate,dbSendUpdateAsync,dbTransaction)
-export(monetdbGetTransferredBytes)
-export(monetdbRtype)
-export(monetdb_queryinfo)
-
-# shorthand for db connections
-export(mc)
-
-# shorthand for db queries
-export(mq)
+exportMethods(dbSendUpdate,dbSendUpdateAsync,dbTransaction,dbIsValid)
+# shorthands
+export(mc,mq)
 
 # control.R
 export(monetdb.server.setup)
@@ -22,3 +15,17 @@ export(monetdb.server.stop)
 export(monetdbd.liststatus)
 export(monetdb.liststatus)
 useDynLib(MonetDB.R)
+
+# dplyr.R
+export(src_monetdb)
+export(translate_env.src_monetdb)
+export(brief_desc.src_monetdb)
+export(tbl.src_monetdb)
+export(db_query_fields.MonetDBConnection)
+export(db_query_rows.MonetDBConnection)
+export(db_save_query.MonetDBConnection)
+export(db_insert_into.MonetDBConnection)
+export(db_create_index.MonetDBConnection)
+export(db_analyze.MonetDBConnection)
+export(db_begin.MonetDBConnection)
+export(sql_subquery.MonetDBConnection)
diff --git a/clients/R/MonetDB.R/NEWS b/clients/R/MonetDB.R/NEWS
--- a/clients/R/MonetDB.R/NEWS
+++ b/clients/R/MonetDB.R/NEWS
@@ -5,6 +5,8 @@ 0.9.5
 - DBI 0.3 compatibility (isValid etc.)
 - deprecated dbTransaction() (DBI has standardized dbBegin())
 - Back to R socket code for peace of mind
+- Code cleanup
+- dplyr integration moved to MonetDB.R
 
 0.9.4
 - dbWriteTable overhaul (thanks, Anthony)
diff --git a/clients/R/MonetDB.R/R/dbi.R b/clients/R/MonetDB.R/R/dbi.R
new file mode 100644
--- /dev/null
+++ b/clients/R/MonetDB.R/R/dbi.R
@@ -0,0 +1,657 @@
+C_LIBRARY - MonetDB.R
+
+.onLoad - function(lib, pkg) {
+  if (getOption(monetdb.clib, FALSE)) {
+library.dynam( C_LIBRARY, pkg, lib )
+.Call(mapiInit, PACKAGE=C_LIBRARY)
+  }
+}
+
+# Make S4 aware of S3 classes
+setOldClass(c(sockconn, connection, monetdb_mapi_conn))
+
+### MonetDBDriver
+setClass(MonetDBDriver, representation(DBIDriver))
+
+# allow instantiation of this driver with MonetDB to allow existing programs 
to work
+MonetR - MonetDB - MonetDBR - MonetDB.R - function() {
+  new(MonetDBDriver)
+}
+
+# dbIsValid is missing from the DBI 0.3, so redefine
+setGeneric(dbIsValid, 
+  def = function(dbObj, ...) standardGeneric(dbIsValid),
+  valueClass = logical)
+
+setMethod(dbIsValid, MonetDBDriver, def=function(dbObj, ...) {
+  return(TRUE) # driver object cannot be invalid
+})
+
+setMethod(dbUnloadDriver, MonetDBDriver, def=function(drv, ...) {
+  return(TRUE) # there is nothing to really unload here...
+})
+
+setMethod(dbGetInfo, MonetDBDriver, def=function(dbObj, ...)
+  list(name=MonetDBDriver, 
+   driver.version=packageVersion(MonetDB.R), 
+   DBI.version=packageVersion(DBI), 
+   client.version=NA, 
+   max.connections=125) # R can only handle 128 connections, three of 
which are pre-allocated
+)
+
+# shorthand for connecting to the DB, very handy, e.g. dbListTables(mc(acs))
+mc - function(dbname=demo, user=monetdb, password=monetdb, 
host=localhost, port=5L, 
+   timeout=86400L, wait=FALSE, language=sql, ...) {
+  
+  

MonetDB: Oct2014 - fixed bug string 2 decimal conversion

2014-09-23 Thread Niels Nes
Changeset: 7d00b5e5604d for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7d00b5e5604d
Modified Files:
sql/backends/monet5/sql_round_impl.h
sql/test/bugs/Tests/alter_add_column-bug.stable.err
Branch: Oct2014
Log Message:

fixed bug string 2 decimal conversion


diffs (47 lines):

diff --git a/sql/backends/monet5/sql_round_impl.h 
b/sql/backends/monet5/sql_round_impl.h
--- a/sql/backends/monet5/sql_round_impl.h
+++ b/sql/backends/monet5/sql_round_impl.h
@@ -291,8 +291,8 @@ str_2dec(TYPE *res, str *val, int *d, in
 {
char *s = strip_extra_zeros(*val);
char *dot = strchr(s, '.'), *end = NULL;
-   int digits = _strlen(s) - 1;
-   int scale = digits - (int) (dot - s);
+   int digits = _strlen(s);
+   int scale = digits - (int) (dot - s) - 1;
lng value = 0;
 
if (!dot) {
@@ -305,7 +305,7 @@ str_2dec(TYPE *res, str *val, int *d, in
} else { /* we have a dot in the string */
digits--;
}
-   if (digits = 0)
+   if (digits  0)
throw(SQL, STRING(TYPE), decimal (%s) doesn't have format 
(%d.%d), *val, *d, *sc);
 
value = decimal_from_str(s, end);
@@ -335,7 +335,7 @@ str_2dec(TYPE *res, str *val, int *d, in
throw(SQL, STRING(TYPE), rounding of decimal (%s) 
doesn't fit format (%d.%d), *val, *d, *sc);
}
}
-   if (digits = 0 || digits  *d || *end) {
+   if (value = -scales[*d] || value = scales[*d]  || *end) {
throw(SQL, STRING(TYPE), decimal (%s) doesn't have format 
(%d.%d), *val, *d, *sc);
}
*res = (TYPE) value;
diff --git a/sql/test/bugs/Tests/alter_add_column-bug.stable.err 
b/sql/test/bugs/Tests/alter_add_column-bug.stable.err
--- a/sql/test/bugs/Tests/alter_add_column-bug.stable.err
+++ b/sql/test/bugs/Tests/alter_add_column-bug.stable.err
@@ -12,9 +12,9 @@ stderr of test 'alter_add_column-bug` in
 # 23:04:06   mclient -lsql -umonetdb -Pmonetdb --host=koala --port=36740 
 # 23:04:06   
 
-MAPI  = (monetdb) /var/tmp/mtest-23209/.s.monetdb.33225
+MAPI  = (monetdb) /var/tmp/mtest-28252/.s.monetdb.32257
 QUERY = ALTER TABLE myschema.COLLECTION_INFO ADD COLUMN test_col1  
varchar(256);
-ERROR = !ALTER TABLE: no such table 'COLLECTION_INFO'
+ERROR = !ALTER TABLE: no such table 'COLLECTION_INFO' in schema 'myschema'
 
 # 23:04:06   
 # 23:04:06   Done.
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - merged with Oct2014

2014-09-23 Thread Niels Nes
Changeset: 8f10a8b13e77 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8f10a8b13e77
Modified Files:
sql/backends/monet5/sql_round_impl.h
sql/test/bugs/Tests/alter_add_column-bug.stable.err
Branch: default
Log Message:

merged with Oct2014


diffs (47 lines):

diff --git a/sql/backends/monet5/sql_round_impl.h 
b/sql/backends/monet5/sql_round_impl.h
--- a/sql/backends/monet5/sql_round_impl.h
+++ b/sql/backends/monet5/sql_round_impl.h
@@ -291,8 +291,8 @@ str_2dec(TYPE *res, str *val, int *d, in
 {
char *s = strip_extra_zeros(*val);
char *dot = strchr(s, '.'), *end = NULL;
-   int digits = _strlen(s) - 1;
-   int scale = digits - (int) (dot - s);
+   int digits = _strlen(s);
+   int scale = digits - (int) (dot - s) - 1;
lng value = 0;
 
if (!dot) {
@@ -305,7 +305,7 @@ str_2dec(TYPE *res, str *val, int *d, in
} else { /* we have a dot in the string */
digits--;
}
-   if (digits = 0)
+   if (digits  0)
throw(SQL, STRING(TYPE), decimal (%s) doesn't have format 
(%d.%d), *val, *d, *sc);
 
value = decimal_from_str(s, end);
@@ -335,7 +335,7 @@ str_2dec(TYPE *res, str *val, int *d, in
throw(SQL, STRING(TYPE), rounding of decimal (%s) 
doesn't fit format (%d.%d), *val, *d, *sc);
}
}
-   if (digits = 0 || digits  *d || *end) {
+   if (value = -scales[*d] || value = scales[*d]  || *end) {
throw(SQL, STRING(TYPE), decimal (%s) doesn't have format 
(%d.%d), *val, *d, *sc);
}
*res = (TYPE) value;
diff --git a/sql/test/bugs/Tests/alter_add_column-bug.stable.err 
b/sql/test/bugs/Tests/alter_add_column-bug.stable.err
--- a/sql/test/bugs/Tests/alter_add_column-bug.stable.err
+++ b/sql/test/bugs/Tests/alter_add_column-bug.stable.err
@@ -12,9 +12,9 @@ stderr of test 'alter_add_column-bug` in
 # 23:04:06   mclient -lsql -umonetdb -Pmonetdb --host=koala --port=36740 
 # 23:04:06   
 
-MAPI  = (monetdb) /var/tmp/mtest-23209/.s.monetdb.33225
+MAPI  = (monetdb) /var/tmp/mtest-28252/.s.monetdb.32257
 QUERY = ALTER TABLE myschema.COLLECTION_INFO ADD COLUMN test_col1  
varchar(256);
-ERROR = !ALTER TABLE: no such table 'COLLECTION_INFO'
+ERROR = !ALTER TABLE: no such table 'COLLECTION_INFO' in schema 'myschema'
 
 # 23:04:06   
 # 23:04:06   Done.
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Oct2014 - fixed handling of * and x.* in group by queries

2014-09-28 Thread Niels Nes
Changeset: cee6feb62c92 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=cee6feb62c92
Modified Files:
sql/server/rel_select.c
Branch: Oct2014
Log Message:

fixed handling of * and x.* in group by queries


diffs (51 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
@@ -194,7 +194,7 @@ exp_alias_or_copy( mvc *sql, char *tname
 
 /* return all expressions, with table name == tname */
 static list *
-rel_table_projections( mvc *sql, sql_rel *rel, char *tname )
+rel_table_projections( mvc *sql, sql_rel *rel, char *tname, int level )
 {
list *exps;
 
@@ -214,15 +214,15 @@ rel_table_projections( mvc *sql, sql_rel
case op_left:
case op_right:
case op_full:
-   exps = rel_table_projections( sql, rel-l, tname);
+   exps = rel_table_projections( sql, rel-l, tname, level+1);
if (exps)
return exps;
-   return rel_table_projections( sql, rel-r, tname);
+   return rel_table_projections( sql, rel-r, tname, level+1);
case op_apply:
case op_semi:
case op_anti:
case op_select:
-   return rel_table_projections( sql, rel-l, tname);
+   return rel_table_projections( sql, rel-l, tname, level+1);
 
case op_topn:
case op_sample:
@@ -231,8 +231,8 @@ rel_table_projections( mvc *sql, sql_rel
case op_except:
case op_inter:
case op_project:
-   if (!is_processed(rel))
-   return rel_table_projections( sql, rel-l, tname);
+   if (!is_processed(rel)  level == 0)
+   return rel_table_projections( sql, rel-l, tname, 
level+1);
/* fall through */
case op_table:
case op_basetable:
@@ -4902,7 +4902,7 @@ rel_table_exp(mvc *sql, sql_rel **rel, s
char *tname = column_e-data.lval-h-data.sval;
list *exps;

-   if ((exps = rel_table_projections(sql, *rel, tname)) != NULL)
+   if ((exps = rel_table_projections(sql, *rel, tname, 0)) != NULL)
return exps;
if (!tname)
return sql_error(sql, 02,
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Oct2014 - merged with Jan2014

2014-09-28 Thread Niels Nes
Changeset: 307281054d25 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=307281054d25
Modified Files:
sql/storage/store.c
Branch: Oct2014
Log Message:

merged with Jan2014


diffs (12 lines):

diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -2304,7 +2304,7 @@ rollforward_changeset_updates(sql_trans 
if (fs-dset) {
for (n = fs-dset-h; ok == LOG_OK  n; n = n-next) {
sql_base *fb = n-data;
-   node *tbn = cs_find_name(ts, fb-name);
+   node *tbn = cs_find_id(ts, fb-id);
 
if (tbn) {
sql_base *tb = tbn-data;
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jan2014 - added missing subuniform_dbl code

2014-09-30 Thread Niels Nes
Changeset: c1d63c67c6bb for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c1d63c67c6bb
Modified Files:
monetdb5/modules/mal/sample.c
monetdb5/modules/mal/sample.h
monetdb5/modules/mal/sample.mal
Branch: Jan2014
Log Message:

added missing subuniform_dbl code


diffs (50 lines):

diff --git a/monetdb5/modules/mal/sample.c b/monetdb5/modules/mal/sample.c
--- a/monetdb5/modules/mal/sample.c
+++ b/monetdb5/modules/mal/sample.c
@@ -132,3 +132,24 @@ SAMPLEuniform_dbl(bat *r, bat *b, dbl *p
BBPunfix(bb-batCacheid);
return SAMPLEuniform(r, b, s);
 }
+
+str
+SAMPLEsubuniform_dbl(bat *r, bat *b, dbl *p) {
+   BAT *bb;
+   double pr = *p;
+   wrd s;
+
+   if ( pr  0.0 || pr  1.0 ) {
+   throw(MAL, sample.subuniform, ILLEGAL_ARGUMENT
+p should be between 0 and 1.0 );
+   } else if (pr == 0) {/* special case */
+   s = 0;
+   return SAMPLEsubuniform(r, b, s);
+   }
+   if ((bb = BATdescriptor(*b)) == NULL) {
+   throw(MAL, sample.uniform, INTERNAL_BAT_ACCESS);
+   }
+   s = (wrd) (pr*(double)BATcount(bb));
+   BBPunfix(bb-batCacheid);
+   return SAMPLEsubuniform(r, b, s);
+}
diff --git a/monetdb5/modules/mal/sample.h b/monetdb5/modules/mal/sample.h
--- a/monetdb5/modules/mal/sample.h
+++ b/monetdb5/modules/mal/sample.h
@@ -47,4 +47,7 @@ SAMPLEsubuniform(bat *r, bat *b, wrd *s)
 sample_export str
 SAMPLEuniform_dbl(bat *r, bat *b, dbl *p);
 
+sample_export str
+SAMPLEsubuniform_dbl(bat *r, bat *b, dbl *p);
+
 #endif
diff --git a/monetdb5/modules/mal/sample.mal b/monetdb5/modules/mal/sample.mal
--- a/monetdb5/modules/mal/sample.mal
+++ b/monetdb5/modules/mal/sample.mal
@@ -34,3 +34,7 @@ comment Returns the oids of a uniform s
 command uniform(b:bat[:oid,:any],p:dbl):bat[:oid,:any]
 address SAMPLEuniform_dbl
 comment Returns a uniform sample of size = (p x count(b)), where 0 = p = 
1.0
+
+command subuniform(b:bat[:oid,:any],p:dbl):bat[:oid,:oid]
+address SAMPLEsubuniform_dbl
+comment Returns the oids of a uniform sample of size = (p x count(b)), where 
0 = p = 1.0;
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Oct2014 - Once we logged enough 'updates', we try to fl...

2014-10-01 Thread Niels Nes
Changeset: a5743f049052 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a5743f049052
Modified Files:
sql/storage/store.c
Branch: Oct2014
Log Message:

Once we logged enough 'updates', we try to flush the log as quickly as
possible (ie check for silent moment (no active transactions) every 50 msec).
In the old scheme we tried to flush only every 30seconds, but the change
for 'no active transactions' is then to small.


diffs (21 lines):

diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -1581,11 +1581,15 @@ store_manager(void)
return;
}
MT_lock_set(bs_lock, store_manager);
-   if (store_nr_active || GDKexiting() ||
-   logger_funcs.changes()  1000) {
+   if (GDKexiting() || logger_funcs.changes()  1000) {
MT_lock_unset(bs_lock, store_manager);
continue;
}
+   while (store_nr_active) { /* find a moment to flush */
+   MT_lock_unset(bs_lock, store_manager);
+   MT_sleep_ms(50);
+   MT_lock_set(bs_lock, store_manager);
+   }
logging = 1;
/* make sure we reset all transactions on re-activation */
gtrans-wstime = timestamp();
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


<    6   7   8   9   10   11   12   13   14   15   >