MonetDB: transaction-replication - Handle correctly the default ...

2014-05-19 Thread Dimitar Nedev
Changeset: 30099e750627 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=30099e750627
Modified Files:
gdk/gdk_logger.c
Branch: transaction-replication
Log Message:

Handle correctly the default case - if the logdir path is not absolute


diffs (22 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -1065,9 +1065,15 @@ logger_new(int debug, char *fn, logger_s
lg-read32bitoid = 0;
 #endif
 
-   snprintf(filename, BUFSIZ, %s%c%s%c%s%c,
-GDKgetenv(gdk_dbpath), DIR_SEP,
-log_settings-logdir, DIR_SEP, fn, DIR_SEP);
+   /* if the logdir path is absolute, do not prefix it with the gdk_dbpath 
*/
+   if (MT_path_absolute(log_settings-logdir)) {
+   snprintf(filename, BUFSIZ, %s%c%s%c%s%c,
+   log_settings-logdir, DIR_SEP, fn, DIR_SEP);
+   } else {
+   snprintf(filename, BUFSIZ, %s%c%s%c%s%c,
+   GDKgetenv(gdk_dbpath), DIR_SEP,
+   log_settings-logdir, DIR_SEP, fn, DIR_SEP);
+   }
if ((lg-fn = GDKstrdup(fn)) == NULL ||
(lg-dir = GDKstrdup(filename)) == NULL) {
fprintf(stderr, !ERROR: logger_new: strdup failed\n);
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: transaction-replication - Merge with default branch

2014-05-19 Thread Dimitar Nedev
Changeset: 7a0efdbd5368 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7a0efdbd5368
Added Files:
sql/backends/monet5/generator/Tests/joins00.sql
sql/backends/monet5/generator/Tests/joins00.stable.err
sql/backends/monet5/generator/Tests/joins00.stable.out
sql/test/pg_regress/Tests/abstime.sql
sql/test/pg_regress/Tests/aggregates.sql
sql/test/pg_regress/Tests/alter_table.sql
sql/test/pg_regress/Tests/arrays.sql
sql/test/pg_regress/Tests/bit.sql
sql/test/pg_regress/Tests/boolean.sql
sql/test/pg_regress/Tests/box.sql
sql/test/pg_regress/Tests/btree_index.sql
sql/test/pg_regress/Tests/case.sql
sql/test/pg_regress/Tests/char.sql
sql/test/pg_regress/Tests/circle.sql
sql/test/pg_regress/Tests/cluster.sql
sql/test/pg_regress/Tests/comments.sql
sql/test/pg_regress/Tests/conversion.sql
sql/test/pg_regress/Tests/copy2.sql
sql/test/pg_regress/Tests/create_aggregate.sql
sql/test/pg_regress/Tests/create_index.sql
sql/test/pg_regress/Tests/create_misc.sql
sql/test/pg_regress/Tests/create_operator.sql
sql/test/pg_regress/Tests/create_table.sql
sql/test/pg_regress/Tests/create_type.sql
sql/test/pg_regress/Tests/create_view.sql
sql/test/pg_regress/Tests/date.sql
sql/test/pg_regress/Tests/domain.sql
sql/test/pg_regress/Tests/drop.sql
sql/test/pg_regress/Tests/errors.sql
sql/test/pg_regress/Tests/float4.sql
sql/test/pg_regress/Tests/float8.sql
sql/test/pg_regress/Tests/foreign_key.sql
sql/test/pg_regress/Tests/geometry.sql
sql/test/pg_regress/Tests/hash_index.sql
sql/test/pg_regress/Tests/horology.sql
sql/test/pg_regress/Tests/inet.sql
sql/test/pg_regress/Tests/inherit.sql
sql/test/pg_regress/Tests/insert.sql
sql/test/pg_regress/Tests/int2.sql
sql/test/pg_regress/Tests/int4.sql
sql/test/pg_regress/Tests/int8.sql
sql/test/pg_regress/Tests/interval.sql
sql/test/pg_regress/Tests/join.sql
sql/test/pg_regress/Tests/limit.sql
sql/test/pg_regress/Tests/lseg.sql
sql/test/pg_regress/Tests/mule_internal.sql
sql/test/pg_regress/Tests/name.sql
sql/test/pg_regress/Tests/namespace.sql
sql/test/pg_regress/Tests/numeric.sql
sql/test/pg_regress/Tests/numeric_big.sql
sql/test/pg_regress/Tests/numerology.sql
sql/test/pg_regress/Tests/oid.sql
sql/test/pg_regress/Tests/oidjoins.sql
sql/test/pg_regress/Tests/opr_sanity.sql
sql/test/pg_regress/Tests/path.sql
sql/test/pg_regress/Tests/plpgsql.sql
sql/test/pg_regress/Tests/point.sql
sql/test/pg_regress/Tests/polygon.sql
sql/test/pg_regress/Tests/polymorphism.sql
sql/test/pg_regress/Tests/portals.sql
sql/test/pg_regress/Tests/portals_p2.sql
sql/test/pg_regress/Tests/prepare.sql
sql/test/pg_regress/Tests/privileges.sql
sql/test/pg_regress/Tests/random.sql
sql/test/pg_regress/Tests/rangefuncs.sql
sql/test/pg_regress/Tests/reltime.sql
sql/test/pg_regress/Tests/rowtypes.sql
sql/test/pg_regress/Tests/rules.sql
sql/test/pg_regress/Tests/sanity_check.sql
sql/test/pg_regress/Tests/select.sql
sql/test/pg_regress/Tests/select_distinct.sql
sql/test/pg_regress/Tests/select_distinct_on.sql
sql/test/pg_regress/Tests/select_having.sql
sql/test/pg_regress/Tests/select_implicit.sql
sql/test/pg_regress/Tests/select_into.sql
sql/test/pg_regress/Tests/select_views.sql
sql/test/pg_regress/Tests/sequence.sql
sql/test/pg_regress/Tests/sql_ascii.sql
sql/test/pg_regress/Tests/stats.sql
sql/test/pg_regress/Tests/strings.sql
sql/test/pg_regress/Tests/strings_cast.sql
sql/test/pg_regress/Tests/strings_concat.sql
sql/test/pg_regress/Tests/strings_like.sql
sql/test/pg_regress/Tests/subselect.sql
sql/test/pg_regress/Tests/temp.sql
sql/test/pg_regress/Tests/text.sql
sql/test/pg_regress/Tests/time.sql
sql/test/pg_regress/Tests/timestamp.sql
sql/test/pg_regress/Tests/timestamptz.sql
sql/test/pg_regress/Tests/timetz.sql
sql/test/pg_regress/Tests/tinterval.sql
sql/test/pg_regress/Tests/transactions.sql
sql/test/pg_regress/Tests/triggers.sql
sql/test/pg_regress/Tests/truncate.sql
sql/test/pg_regress/Tests/type_sanity.sql
sql/test/pg_regress/Tests/union.sql
sql/test/pg_regress/Tests/update.sql
sql/test/pg_regress/Tests/vacuum.sql
sql/test/pg_regress/Tests/varchar.sql
sql/test/pg_regress/Tests/without_oid.sql
Removed Files:
sql/test/pg_regress/monetdb/abstime.sql
sql/test/pg_regress/monetdb/aggregates.sql

MonetDB: Jan2014 - Add author back.

2014-05-19 Thread Sjoerd Mullender
Changeset: fcf0be25fcd9 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=fcf0be25fcd9
Modified Files:
java/src/nl/cwi/monetdb/jdbc/MonetResultSet.java
Branch: Jan2014
Log Message:

Add author back.


diffs (11 lines):

diff --git a/java/src/nl/cwi/monetdb/jdbc/MonetResultSet.java 
b/java/src/nl/cwi/monetdb/jdbc/MonetResultSet.java
--- a/java/src/nl/cwi/monetdb/jdbc/MonetResultSet.java
+++ b/java/src/nl/cwi/monetdb/jdbc/MonetResultSet.java
@@ -47,6 +47,7 @@ import nl.cwi.monetdb.mcl.parser.*;
  * for FORWARD_ONLY result sets the memory usage will be likely lower for large
  * result sets.
  *
+ * @author Fabian Groffen fabian.grof...@cwi.nl
  * @version 0.7
  */
 public class MonetResultSet extends MonetWrapper implements ResultSet {
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: RIntegration - add a ptr to the sql_func as first argum...

2014-05-19 Thread Niels Nes
Changeset: acfebc9f7805 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=acfebc9f7805
Modified Files:
sql/backends/monet5/sql_gencode.c
sql/include/sql_catalog.h
Branch: RIntegration
Log Message:

add a ptr to the sql_func as first argument, when calling any of the
FUNC_LANG_R,C,J extentions.


diffs (91 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
@@ -90,6 +90,21 @@ constantAtom(backend *sql, MalBlkPtr mb,
return idx;
 }
 
+static InstrPtr
+pushPtr(MalBlkPtr mb, InstrPtr q, ptr val)
+{
+   int _t;
+   ValRecord cst;
+
+   if (q == NULL)
+   return NULL;
+   cst.vtype= TYPE_ptr;
+   cst.val.pval = val;
+   cst.len = 0;
+   _t = defConstant(mb, TYPE_ptr, cst);
+   return pushArgument(mb, q, _t);
+}
+
 static int
 argumentZero(MalBlkPtr mb, int tpe)
 {
@@ -684,6 +699,8 @@ dump_joinN(backend *sql, MalBlkPtr mb, s
/* filter qualifying tuples, return oids of h and tail */
q = newStmt(mb, mod, fimp);
q = pushReturn(mb, q, newTmpVariable(mb, TYPE_any));
+   if (LANG_EXT(f-lang)) 
+   q = pushPtr(mb, q, f);
if (f-lang == FUNC_LANG_R)
q = pushStr(mb, q, f-query);
q = pushArgument(mb, q, op1);
@@ -1217,6 +1234,8 @@ static int
fimp = 
sql_func_imp(s-op4.funcval-func);
 
q = newStmt(mb, mod, 
convertOperator(fimp));
+   if (LANG_EXT(f-lang)) 
+   q = pushPtr(mb, q, f);
if (f-lang == FUNC_LANG_R)
q = pushStr(mb, q, f-query);
q = pushArgument(mb, q, l);
@@ -1838,6 +1857,8 @@ static int
} else {
q = newStmt(mb, mod, fimp);
setVarType(mb, getArg(q, 0), rtype);
+   if (LANG_EXT(f-lang)) 
+   q = pushPtr(mb, q, f);
if (f-lang == FUNC_LANG_R)
q = pushStr(mb, q, f-query);
q = pushArgument(mb, q, l);
@@ -1891,6 +1912,8 @@ static int
s-nr = getDestVar(q);
} else {
q = newStmt(mb, mod, convertOperator(fimp));
+   if (LANG_EXT(f-lang)) 
+   q = pushPtr(mb, q, f);
if (f-lang == FUNC_LANG_R)
q = pushStr(mb, q, f-query);
setVarType(mb, getArg(q, 0), rtype);
@@ -1955,6 +1978,8 @@ static int
if (strcmp(fimp, round) == 0  tpe  
tpe-type-eclass == EC_DEC)
special = 1;
 
+   if (LANG_EXT(f-func-lang)) 
+   q = pushPtr(mb, q, f-func);
if (f-func-lang == FUNC_LANG_R)
q = pushStr(mb, q, f-func-query);
for (n = s-op1-op4.lval-h; n; n = n-next) {
@@ -2064,6 +2089,8 @@ static int
setVarUDFtype(mb, getArg(q, 0));
}
}
+   if (LANG_EXT(a-aggr-lang)) 
+   q = pushPtr(mb, q, a-aggr);
if (a-aggr-lang == FUNC_LANG_R){
if (!g) {
setVarType(mb, getArg(q, 0), restype);
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
@@ -290,6 +290,8 @@ typedef struct sql_arg {
 #define FUNC_LANG_C   4
 #define FUNC_LANG_J   5
 
+#define LANG_EXT(l)  (lFUNC_LANG_SQL)
+
 typedef struct sql_func {
sql_base base;
 
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - add json aggregate for double columns

2014-05-19 Thread Arjen de Rijke
Changeset: facde0cda494 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=facde0cda494
Added Files:
sql/test/json/Tests/aggregate01.sql
sql/test/json/Tests/aggregate01.stable.err
sql/test/json/Tests/aggregate01.stable.out
Modified Files:
monetdb5/modules/atoms/json.c
monetdb5/modules/atoms/json.mal
sql/scripts/40_json.sql
sql/test/json/Tests/All
sql/test/json/Tests/aggregate00.sql
Branch: default
Log Message:

add json aggregate for double columns


diffs (truncated from 401 to 300 lines):

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
@@ -1603,11 +1603,13 @@ JSONgroupStr(str *ret, const bat *bid)
 {
BAT *b;
BUN p, q;
-   const char *t;
+   const char *t = NULL;
size_t len, size = BUFSIZ, offset;
str buf = GDKmalloc(size);
BATiter bi;
const char *err = NULL;
+   char temp[128] = ;
+   const double * val = NULL;
 
if (buf == NULL)
throw(MAL, json.group,MAL_MALLOC_FAIL);
@@ -1620,9 +1622,20 @@ JSONgroupStr(str *ret, const bat *bid)
offset = 0;
bi = bat_iterator(b);
BATloop(b, p, q) {
-   int n;
+   int n = 0;
 
-   t = (const char *) BUNtail(bi, p);
+   switch (b-ttype) {
+   case TYPE_str:
+   t = (const char *) BUNtail(bi, p);
+   break;
+   case TYPE_dbl:
+   val = (const double *) BUNtail(bi, p);
+   snprintf(temp, sizeof(temp), %f, *val);
+   t = (const char *)temp;
+   break;
+   }
+
+   //t = (const char *) BUNtail(bi, p);
 
if (strNil(t))
continue;
@@ -1635,18 +1648,37 @@ JSONgroupStr(str *ret, const bat *bid)
goto failed;
}
}
-   if (offset == 0) {
-   if (BATcount(b) == 1) {
-   n = snprintf(buf, size, [ \%s\ ], t);
+   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 {
-   n = snprintf(buf, size, [ \%s\, t);
+   if (p == BUNlast(b) - 1) {
+   n = snprintf(buf + offset, size - 
offset, , \%s\ ], t);
+   } else {
+   n = snprintf(buf + offset, size - 
offset, , \%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);
+   break;
+   case TYPE_dbl:
+   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);
+   }
}
+   break;
}
offset += n;
}
@@ -1670,7 +1702,7 @@ JSONjsonaggr(BAT **bnp, BAT *b, BAT *g, 
BUN nils = 0;
int isnil;
const oid *cand = NULL, *candend = NULL;
-   const char *v;
+   const char *v = NULL;
const oid *grps, *map;
oid mapoff = 0;
oid prev;
@@ -1679,12 +1711,14 @@ JSONjsonaggr(BAT **bnp, BAT *b, BAT *g, 
char *buf = NULL;
size_t buflen, maxlen, len;
const char *err;
+   char temp[128] = ;
+   const double * val = NULL;
 
if ((err = BATgroupaggrinit(b, g, e, s, min, max, ngrp, start, end,
cnt, cand, candend)) != NULL) {
return err;
}
-   assert(b-ttype == TYPE_str);
+   assert(b-ttype == TYPE_str||b-ttype == TYPE_dbl);

MonetDB: default - add null handling for double columns and add ...

2014-05-19 Thread Arjen de Rijke
Changeset: c70d5a791521 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c70d5a791521
Modified Files:
monetdb5/modules/atoms/json.c
sql/test/json/Tests/aggregate00.sql
sql/test/json/Tests/aggregate00.stable.out
sql/test/json/Tests/aggregate01.sql
sql/test/json/Tests/aggregate01.stable.out
Branch: default
Log Message:

add null handling for double columns and add tests


diffs (217 lines):

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
@@ -1825,12 +1825,16 @@ JSONjsonaggr(BAT **bnp, BAT *b, BAT *g, 
v = (const char *) BUNtail(bi, BUNfirst(b) + 
(map ? (BUN) map[p] : p + mapoff));
break;
case TYPE_dbl:
-   val = (const double *) BUNtail(bi, BUNfirst(b) 
+ (map ? (BUN) map[p] : p + mapoff));
-   snprintf(temp, sizeof(temp), %f, *val);
-   v = (const char *)temp;
+   val = (const double *) BUNtail(bi, BUNfirst(b) 
+ (map ? (BUN) map[p] : p + mapoff));
+   if (*val != dbl_nil) {
+   snprintf(temp, sizeof(temp), %f, 
*val);
+   v = (const char *)temp;
+   } else {
+   v =  NULL;
+   } 
break;
}
-   if (strNil(v)) {
+   if (!v||strNil(v)) {
if (skip_nils)
continue;
strncpy(buf, str_nil, buflen);
diff --git a/sql/test/json/Tests/aggregate00.sql 
b/sql/test/json/Tests/aggregate00.sql
--- a/sql/test/json/Tests/aggregate00.sql
+++ b/sql/test/json/Tests/aggregate00.sql
@@ -1,21 +1,37 @@
-create table aggrtest ( col1 varchar(10), col2 integer );
+create table aggrtest00 ( col1 varchar(10), col2 integer );
 
-select json.tojsonarray(col1) from aggrtest;
+select json.tojsonarray(col1) from aggrtest00;
 
-insert into aggrtest values ('hallo', 1);
+insert into aggrtest00 values ('hallo', 1);
 
-select json.tojsonarray(col1) from aggrtest;
+select json.tojsonarray(col1) from aggrtest00;
 
-insert into aggrtest values ('world', 1);
+insert into aggrtest00 values ('world', 1);
 
-select json.tojsonarray(col1) from aggrtest;
+select json.tojsonarray(col1) from aggrtest00;
 
-select json.tojsonarray(col1) from aggrtest group by col2;
+select json.tojsonarray(col1) from aggrtest00 group by col2;
 
-insert into aggrtest values ('foobar', 2);
+insert into aggrtest00 values ('foobar', 2);
 
-select json.tojsonarray(col1) from aggrtest;
+select json.tojsonarray(col1) from aggrtest00;
 
-select json.tojsonarray(col1) from aggrtest group by col2;
+select json.tojsonarray(col1) from aggrtest00 group by col2;
 
-drop table aggrtest;
+delete from aggrtest00;
+
+insert into aggrtest00 values (NULL, 1);
+
+select json.tojsonarray(col1) from aggrtest00;
+
+insert into aggrtest00 values ('hello', 1);
+
+select json.tojsonarray(col1) from aggrtest00;
+
+insert into aggrtest00 values ('world', 2);
+
+select json.tojsonarray(col1) from aggrtest00;
+
+select json.tojsonarray(col1) from aggrtest00 group by col2;
+
+drop table aggrtest00;
diff --git a/sql/test/json/Tests/aggregate00.stable.out 
b/sql/test/json/Tests/aggregate00.stable.out
--- a/sql/test/json/Tests/aggregate00.stable.out
+++ b/sql/test/json/Tests/aggregate00.stable.out
@@ -94,6 +94,40 @@ Ready.
 % 20 # length
 [ [ \hallo\, \world\ ]   ]
 [ [ \foobar\ ] ]
+#delete from aggrtest00;
+[ 3]
+#insert into aggrtest00 values (NULL, 1);
+[ 1]
+#select json.tojsonarray(col1) from aggrtest00;
+% sys.L1 # table_name
+% L1 # name
+% clob # type
+% 0 # length
+[ NULL ]
+#insert into aggrtest00 values ('hello', 1);
+[ 1]
+#select json.tojsonarray(col1) from aggrtest00;
+% sys.L1 # table_name
+% L1 # name
+% clob # type
+% 11 # length
+[ [ \hello\ ]  ]
+#insert into aggrtest00 values ('world', 2);
+[ 1]
+#select json.tojsonarray(col1) from aggrtest00;
+% sys.L1 # table_name
+% L1 # name
+% clob # type
+% 20 # length
+[ [ \hello\, \world\ ]   ]
+#select json.tojsonarray(col1) from aggrtest00 group by col2;
+% sys.L1 # table_name
+% L1 # name
+% clob # type
+% 11 # length
+[ [ \hello\ ]  ]
+[ [ \world\ ]  ]
+#drop table aggrtest00;
 
 # 15:08:41   
 # 15:08:41   Done.
diff --git a/sql/test/json/Tests/aggregate01.sql 
b/sql/test/json/Tests/aggregate01.sql
--- a/sql/test/json/Tests/aggregate01.sql
+++ b/sql/test/json/Tests/aggregate01.sql
@@ -1,21 +1,37 @@
-create table aggrtest1 ( col1 double, col2 integer );
+create table aggrtest01 ( col1 double, col2 integer );
 
-select json.tojsonarray(col1) from aggrtest1;
+select 

MonetDB: transaction-replication - Use the shortcut notation for...

2014-05-19 Thread Dimitar Nedev
Changeset: 6f75ca6649d3 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6f75ca6649d3
Modified Files:
gdk/gdk_logger.c
Branch: transaction-replication
Log Message:

Use the shortcut notation for the char array


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
@@ -1205,7 +1205,7 @@ logger_new(int debug, char *fn, logger_s
 
if (bid) {
/* upgrade from old logger format */
-   logger_upgrade_format(fn, lg, bid, bak[0]);
+   logger_upgrade_format(fn, lg, bid, bak);
}
 
snprintf(bak, BUFSIZ, %s_catalog_bid, fn);
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: transaction-replication - Fix logger directory name str...

2014-05-19 Thread Dimitar Nedev
Changeset: d420fe5453d3 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d420fe5453d3
Modified Files:
gdk/gdk_logger.c
Branch: transaction-replication
Log Message:

Fix logger directory name string format


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
@@ -1160,7 +1160,7 @@ logger_new(int debug, char *fn, logger_s
 
/* if the logdir path is absolute, do not prefix it with the gdk_dbpath 
*/
if (MT_path_absolute(log_settings-logdir)) {
-   snprintf(filename, BUFSIZ, %s%c%s%c%s%c,
+   snprintf(filename, BUFSIZ, %s%c%s%c,
log_settings-logdir, DIR_SEP, fn, DIR_SEP);
} else {
snprintf(filename, BUFSIZ, %s%c%s%c%s%c,
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: RIntegration - R function is now called with variable n...

2014-05-19 Thread Hannes Muehleisen
Changeset: 47799986a2a9 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=47799986a2a9
Modified Files:
monetdb5/extras/rapi/Makefile.ag
monetdb5/extras/rapi/rapi.c
monetdb5/extras/rapi/rapi.mal
sql/backends/monet5/Tests/All
sql/backends/monet5/Tests/rapi01.sql
sql/backends/monet5/Tests/rapi02.sql
sql/backends/monet5/Tests/rapi02.stable.out
sql/backends/monet5/Tests/rapi03.sql
sql/backends/monet5/Tests/rapi04.sql
sql/backends/monet5/Tests/rapi05.sql
sql/backends/monet5/Tests/rapi06.sql
sql/backends/monet5/Tests/rapi06.stable.out
sql/backends/monet5/mal_backend.c
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql_scenario.c
sql/common/sql_keyword.c
sql/common/sql_list.c
sql/common/sql_mem.c
sql/include/sql_mem.h
sql/server/sql_qc.c
sql/storage/restrict/restrict_table.c
sql/storage/store.c
sql/storage/store_dependency.c
sql/storage/store_sequence.c
Branch: RIntegration
Log Message:

R function is now called with variable names that correspond the SQL function 
parameters.


diffs (truncated from 604 to 300 lines):

diff --git a/monetdb5/extras/rapi/Makefile.ag b/monetdb5/extras/rapi/Makefile.ag
--- a/monetdb5/extras/rapi/Makefile.ag
+++ b/monetdb5/extras/rapi/Makefile.ag
@@ -20,6 +20,7 @@ INCLUDES = \
../../../common/stream \
../../../gdk \
../../mal \
+   ../../../sql/include \
$(libr_CFLAGS)
 
 MTSAFE
diff --git a/monetdb5/extras/rapi/rapi.c b/monetdb5/extras/rapi/rapi.c
--- a/monetdb5/extras/rapi/rapi.c
+++ b/monetdb5/extras/rapi/rapi.c
@@ -26,6 +26,7 @@
 #include mal_stack.h
 #include mal_linker.h
 #include gdk_utils.h
+#include sql_catalog.h
 
 #include rapi.h
 
@@ -43,6 +44,8 @@
 #include string.h
 #include sys/stat.h
 
+//#define _RAPI_DEBUG_
+
 #define BAT_TO_INTSXP(bat,tpe,retsxp) { \
tpe v;  size_t j; \
retsxp = PROTECT(NEW_INTEGER(BATcount(bat))); \
@@ -148,10 +151,6 @@ void writeConsole(const char * buf, int 
 
 static int RAPIinitialize(void) {
 
-#ifdef _RAPI_DEBUG_
-   printf(# R libraries installed in %s\n,rlibs);
-#endif
-
 #ifdef RIF_HAS_RSIGHAND
R_SignalHandlers=0;
 #endif
@@ -212,6 +211,9 @@ static int RAPIinitialize(void) {
return 4;
}
}
+#ifdef _RAPI_DEBUG_
+   printf(# R libraries installed in %s\n,rlibs);
+#endif
 
PROTECT(librisexp = allocVector(STRSXP, 1));
SET_STRING_ELT(librisexp, 0, mkChar(rlibs));
@@ -236,13 +238,15 @@ static int RAPIinitialize(void) {
 }
 
 str RAPIeval(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) {
-   str exprStr = *(str*) getArgReference(stk, pci, pci-retc);
+   sql_func * sqlfun =* (sql_func**) getArgReference(stk, pci, pci-retc);
+   str exprStr = *(str*) getArgReference(stk, pci, pci-retc+1);
+
SEXP x, env, retval;
SEXP varname = R_NilValue;
SEXP varvalue = R_NilValue;
ParseStatus status;
-   int i, j, k = 1;
-   char buf[64] = rapi;
+   int i, j = 1;
+   char argbuf[64];
char argnames[1000] = ;
char* rcall;
size_t ret_rows = 0;
@@ -253,6 +257,8 @@ str RAPIeval(Client cntxt, MalBlkPtr mb,
BAT *b;
BUN cnt;
int initstatus = 0;
+   node * argnode;
+   int seengrp = FALSE;
 
// we don't need no context, but the compiler needs us to touch it (...)
(void) cntxt;
@@ -286,9 +292,36 @@ str RAPIeval(Client cntxt, MalBlkPtr mb,
env = PROTECT(eval(lang1(install(new.env)),R_GlobalEnv));
assert(env != NULL);
 
+   // first argument after the return contains the pointer to the sql_func 
structure
+   // NEW macro temporarily renamed to MNEW to allow including 
sql_catalog.h
+
+   if (!list_empty(sqlfun-ops)) {
+   int carg = pci-retc + 2;
+   argnode=  sqlfun-ops-h;
+   while (argnode ) {
+   char* argname = ((sql_arg*)argnode-data)-name;
+   args[carg] = GDKstrdup(argname);
+   carg++;
+   argnode = argnode-next;
+   }
+   }
+   // the first unknown argument is the group, we don't really care for 
the rest.
+   for (i = pci-retc + 2; i  pci-argc; i++) {
+   if (args[i] == NULL) {
+   if (!seengrp) {
+   args[i] = GDKstrdup(aggr_group);
+   seengrp = TRUE;
+   }
+   else {
+   sprintf(argbuf,arg%i,i);
+   args[i] = GDKstrdup(argbuf);
+   }
+   }
+   }
+
// install the MAL variables into the R environment
// we can basically map values to int (INTEGER) 

MonetDB: transaction-replication - Pull out logger catalog file ...

2014-05-19 Thread Dimitar Nedev
Changeset: 0d456089835a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0d456089835a
Modified Files:
gdk/gdk_logger.c
Branch: transaction-replication
Log Message:

Pull out logger catalog file creation in a separate function


diffs (122 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -1131,6 +1131,60 @@ logger_upgrade_format(char *fn, logger *
lg-seqs_val = NULL;
 }
 
+
+static int
+logger_create_catalog_file(int debug, logger *lg, char *fn, FILE *fp, char 
*filename, char *bak) {
+   log_bid bid = 0;
+   /* catalog does not exist, so the log file also
+* shouldn't exist */
+   if (fp != NULL) {
+   logger_fatal(
+   logger_new: there is no logger catalog, but 
there is a log file.\n
+   Are you sure you are using the 
correct combination of database\n
+   (--dbpath) and log directory 
(--set %s_logdir)?\n, fn,
+   0, 0);
+   return 0;
+   }
+   lg-catalog_bid = logbat_new(TYPE_int, BATSIZE);
+   lg-catalog_nme = logbat_new(TYPE_str, BATSIZE);
+   if (debug  1)
+   fprintf(stderr, #create %s catalog\n, fn);
+
+   /* Make persistent */
+   bid = lg-catalog_bid-batCacheid;
+   BBPincref(bid, TRUE);
+   BATmode(lg-catalog_bid, PERSISTENT);
+   snprintf(bak, BUFSIZ, %s_catalog_bid, fn);
+   BBPrename(lg-catalog_bid-batCacheid, bak);
+   /* Make persistent */
+   bid = lg-catalog_nme-batCacheid;
+   BBPincref(bid, TRUE);
+   BATmode(lg-catalog_nme, PERSISTENT);
+   snprintf(bak, BUFSIZ, %s_catalog_nme, fn);
+   BBPrename(lg-catalog_nme-batCacheid, bak);
+   if (!GDKcreatedir(filename)) {
+   logger_fatal(logger_new: cannot create directory for log file 
%s\n,
+   filename, 0, 0);
+   return 0;
+   }
+   if ((fp = fopen(filename, w)) == NULL) {
+   logger_fatal(logger_new: cannot create log file %s\n, 
filename, 0, 0);
+   return 0;
+   }
+   fprintf(fp, %06d\n\n, lg-version);
+   lg-id++;
+   fprintf(fp, LLFMT \n, lg-id);
+   fclose(fp);
+   fp = NULL;
+   if (bm_subcommit(lg-catalog_bid, lg-catalog_nme, lg-catalog_bid,
+   lg-catalog_nme, NULL, lg-debug) != 0) {
+   /* cannot commit catalog, so remove log */
+   unlink(filename);
+   return 0;
+   }
+   return 1;
+}
+
 static logger *
 logger_new(int debug, char *fn, logger_settings *log_settings, int version, 
preversionfix_fptr prefuncp, postversionfix_fptr postfuncp)
 {
@@ -1212,56 +1266,7 @@ logger_new(int debug, char *fn, logger_s
catalog_bid = BBPindex(bak);
 
if (catalog_bid == 0) {
-   log_bid bid = 0;
-
-   /* catalog does not exist, so the log file also
-* shouldn't exist */
-   if (fp != NULL) {
-   logger_fatal(logger_new: there is no logger catalog, 
but there is a log file.\n
-Are you sure you are using the correct 
combination of database\n
-(--dbpath) and log directory (--set 
%s_logdir)?\n,
-fn, 0, 0);
-   goto error;
-   }
-
-   lg-catalog_bid = logbat_new(TYPE_int, BATSIZE);
-   lg-catalog_nme = logbat_new(TYPE_str, BATSIZE);
-   if (debug  1)
-   fprintf(stderr, #create %s catalog\n, fn);
-
-   /* Make persistent */
-   bid = lg-catalog_bid-batCacheid;
-   BBPincref(bid, TRUE);
-   BATmode(lg-catalog_bid, PERSISTENT);
-   snprintf(bak, BUFSIZ, %s_catalog_bid, fn);
-   BBPrename(lg-catalog_bid-batCacheid, bak);
-
-   /* Make persistent */
-   bid = lg-catalog_nme-batCacheid;
-   BBPincref(bid, TRUE);
-   BATmode(lg-catalog_nme, PERSISTENT);
-   snprintf(bak, BUFSIZ, %s_catalog_nme, fn);
-   BBPrename(lg-catalog_nme-batCacheid, bak);
-
-   if (!GDKcreatedir(filename)) {
-   logger_fatal(logger_new: cannot create directory for 
log file %s\n,
-filename, 0, 0);
-   goto error;
-   }
-   if ((fp = fopen(filename, w)) == NULL) {
-   logger_fatal(logger_new: cannot create log file %s\n,
-filename, 0, 0);
-   goto error;
-   }
-   fprintf(fp, %06d\n\n, lg-version);
-   lg-id ++;
-   fprintf(fp, LLFMT \n, lg-id);
-   fclose(fp);
-   fp = 

MonetDB: transaction-replication - Pull out finding the correct ...

2014-05-19 Thread Dimitar Nedev
Changeset: 1ccce1c0ec18 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1ccce1c0ec18
Modified Files:
gdk/gdk_logger.c
Branch: transaction-replication
Log Message:

Pull out finding the correct log BAT for the sequence ID to a separate function


diffs (84 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -1222,6 +1222,39 @@ logger_find_persistent_catalog(logger *l
return 1;
 }
 
+static void
+logger_find_logbat(logger* lg, int id, log_bid seqs_id) {
+   bat seqs_val = logger_find_bat(lg, seqs_val);
+   bat snapshots_bid = logger_find_bat(lg, snapshots_bid);
+   bat snapshots_tid = logger_find_bat(lg, snapshots_tid);
+   lg-seqs_id = BATdescriptor(seqs_id);
+   if (lg-seqs_id == 0) {
+   logger_fatal(Logger_new: inconsistent database, seqs_id does 
not exist, 0, 0, 0);
+   }
+
+   lg-seqs_val = BATdescriptor(seqs_val);
+   if (lg-seqs_val == 0) {
+   logger_fatal(Logger_new: inconsistent database, seqs_val does 
not exist, 0, 0, 0);
+   }
+
+   if (BATcount(lg-seqs_id)) {
+   BUN p = BUNfndT(lg-seqs_id, id);
+   lg-id = *(lng *) Tloc(lg-seqs_val, p);
+   } else {
+   BUNappend(lg-seqs_id, id, FALSE);
+   BUNappend(lg-seqs_val, lg-id, FALSE);
+   }
+   lg-snapshots_bid = BATdescriptor(snapshots_bid);
+   if (lg-snapshots_bid == 0) {
+   logger_fatal(Logger_new: inconsistent database, snapshots_bid 
does not exist, 0, 0, 0);
+   }
+
+   lg-snapshots_tid = BATdescriptor(snapshots_tid);
+   if (lg-snapshots_tid == 0) {
+   logger_fatal(Logger_new: inconsistent database, snapshots_tid 
does not exist, 0, 0, 0);
+   }
+}
+
 static logger *
 logger_new(int debug, char *fn, logger_settings *log_settings, int version, 
preversionfix_fptr prefuncp, postversionfix_fptr postfuncp)
 {
@@ -1312,6 +1345,7 @@ logger_new(int debug, char *fn, logger_s
goto error;
}
}
+
seqs_id = logger_find_bat(lg, seqs_id);
if (seqs_id == 0) {
lg-seqs_id = logbat_new(TYPE_int, 1);
@@ -1343,30 +1377,9 @@ logger_new(int debug, char *fn, logger_s
 
bm_subcommit(lg-catalog_bid, lg-catalog_nme, lg-catalog_bid, 
lg-catalog_nme, NULL, lg-debug);
} else {
-   bat seqs_val = logger_find_bat(lg, seqs_val);
-   bat snapshots_bid = logger_find_bat(lg, snapshots_bid);
-   bat snapshots_tid = logger_find_bat(lg, snapshots_tid);
+   logger_find_logbat(lg, id, seqs_id);
+   }
 
-   lg-seqs_id = BATdescriptor(seqs_id);
-   if (lg-seqs_id == 0)
-   logger_fatal(Logger_new: inconsistent database, 
seqs_id does not exist,0,0,0);
-   lg-seqs_val = BATdescriptor(seqs_val);
-   if (lg-seqs_val == 0)
-   logger_fatal(Logger_new: inconsistent database, 
seqs_val does not exist,0,0,0);
-   if (BATcount(lg-seqs_id)) {
-   BUN p = BUNfndT(lg-seqs_id, id);
-   lg-id = *(lng *) Tloc(lg-seqs_val, p);
-   } else {
-   BUNappend(lg-seqs_id, id, FALSE);
-   BUNappend(lg-seqs_val, lg-id, FALSE);
-   }
-   lg-snapshots_bid = BATdescriptor(snapshots_bid);
-   if (lg-snapshots_bid == 0)
-   logger_fatal(Logger_new: inconsistent database, 
snapshots_bid does not exist,0,0,0);
-   lg-snapshots_tid = BATdescriptor(snapshots_tid);
-   if (lg-snapshots_tid == 0)
-   logger_fatal(Logger_new: inconsistent database, 
snapshots_tid does not exist,0,0,0);
-   }
lg-freed = BATnew(TYPE_void, TYPE_int, 1);
BATseqbase(lg-freed, 0);
snprintf(bak, BUFSIZ, %s_freed, fn);
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jan2014 - Accept _ in function name.

2014-05-19 Thread Sjoerd Mullender
Changeset: 4108b9677d4c for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4108b9677d4c
Modified Files:
clients/odbc/driver/ODBCUtil.c
Branch: Jan2014
Log Message:

Accept _ in function name.


diffs (21 lines):

diff --git a/clients/odbc/driver/ODBCUtil.c b/clients/odbc/driver/ODBCUtil.c
--- a/clients/odbc/driver/ODBCUtil.c
+++ b/clients/odbc/driver/ODBCUtil.c
@@ -565,7 +565,7 @@ ODBCTranslateSQL(ODBCDbc *dbc, const SQL
while (*p == ' ')
p++;
proc = p;
-   while (*p  isascii(*p)  isalnum(*p))
+   while (*p  isascii(*p)  (*p == '_' || isalnum(*p)))
p++;
if (p == proc ||
(isascii(*proc)  !isalpha(*proc)))
@@ -619,7 +619,7 @@ ODBCTranslateSQL(ODBCDbc *dbc, const SQL
while (*p == ' ')
p++;
scalarfunc = p;
-   while (*p  isascii(*p)  isalnum(*p))
+   while (*p  isascii(*p)  (*p == '_' || isalnum(*p)))
p++;
if (p == scalarfunc ||
(isascii(*scalarfunc)  !isalpha(*scalarfunc)))
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jan2014 - Mention timestampadd function.

2014-05-19 Thread Sjoerd Mullender
Changeset: 79541584843c for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=79541584843c
Modified Files:
clients/odbc/driver/ODBCUtil.c
Branch: Jan2014
Log Message:

Mention timestampadd function.


diffs (11 lines):

diff --git a/clients/odbc/driver/ODBCUtil.c b/clients/odbc/driver/ODBCUtil.c
--- a/clients/odbc/driver/ODBCUtil.c
+++ b/clients/odbc/driver/ODBCUtil.c
@@ -356,6 +356,7 @@ static struct scalars {
{now, 0, \now\(), },
{quarter, 1, ((\month\(\1) - 1) / 3 + 1), },
{second, 1, \second\(\1), },
+   {timestampadd, 3, NULL, },
{timestampdiff, 3, NULL, },
{week, 1, \week\(\1), },
{year, 1, \year\(\1), },
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jan2014 - Fix up information about available functions ...

2014-05-19 Thread Sjoerd Mullender
Changeset: a969b886cc71 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a969b886cc71
Modified Files:
clients/odbc/driver/SQLGetInfo.c
Branch: Jan2014
Log Message:

Fix up information about available functions in SQLGetInfo.


diffs (236 lines):

diff --git a/clients/odbc/driver/SQLGetInfo.c b/clients/odbc/driver/SQLGetInfo.c
--- a/clients/odbc/driver/SQLGetInfo.c
+++ b/clients/odbc/driver/SQLGetInfo.c
@@ -183,27 +183,53 @@ SQLGetInfo_(ODBCDbc *dbc,
/* SQL_CB_NON_NULL */
len = sizeof(SQLUSMALLINT);
break;
+   case SQL_CONVERT_TINYINT:
+   case SQL_CONVERT_SMALLINT:
+   case SQL_CONVERT_INTEGER:
case SQL_CONVERT_BIGINT:
+   nValue = SQL_CVT_BIGINT |
+   SQL_CVT_BIT |
+   SQL_CVT_CHAR |
+   SQL_CVT_DECIMAL |
+   SQL_CVT_DOUBLE |
+   SQL_CVT_FLOAT |
+   SQL_CVT_INTEGER |
+   SQL_CVT_INTERVAL_DAY_TIME |
+   SQL_CVT_INTERVAL_YEAR_MONTH |
+   SQL_CVT_LONGVARCHAR |
+   SQL_CVT_NUMERIC |
+   SQL_CVT_REAL |
+   SQL_CVT_SMALLINT |
+   SQL_CVT_TINYINT |
+   SQL_CVT_VARCHAR;
+   len = sizeof(SQLUINTEGER);
+   break;
case SQL_CONVERT_BINARY:
+   case SQL_CONVERT_LONGVARBINARY:
+   case SQL_CONVERT_VARBINARY:
+   nValue = SQL_CVT_BINARY |
+   SQL_CVT_CHAR |
+   SQL_CVT_LONGVARBINARY |
+   SQL_CVT_LONGVARCHAR |
+   SQL_CVT_VARBINARY |
+   SQL_CVT_VARCHAR;
+   /* SQL_CVT_GUID */
+   len = sizeof(SQLUINTEGER);
+   break;
case SQL_CONVERT_BIT:
+   nValue = SQL_CVT_BIGINT |
+   SQL_CVT_BIT |
+   SQL_CVT_CHAR |
+   SQL_CVT_INTEGER |
+   SQL_CVT_LONGVARCHAR |
+   SQL_CVT_SMALLINT |
+   SQL_CVT_TINYINT |
+   SQL_CVT_VARCHAR;
+   len = sizeof(SQLUINTEGER);
+   break;
case SQL_CONVERT_CHAR:
-   case SQL_CONVERT_DATE:
-   case SQL_CONVERT_DECIMAL:
-   case SQL_CONVERT_DOUBLE:
-   case SQL_CONVERT_FLOAT:
-   case SQL_CONVERT_INTEGER:
-   case SQL_CONVERT_INTERVAL_DAY_TIME:
-   case SQL_CONVERT_INTERVAL_YEAR_MONTH:
-   case SQL_CONVERT_LONGVARBINARY:
+   case SQL_CONVERT_VARCHAR:
case SQL_CONVERT_LONGVARCHAR:
-   case SQL_CONVERT_NUMERIC:
-   case SQL_CONVERT_REAL:
-   case SQL_CONVERT_SMALLINT:
-   case SQL_CONVERT_TIME:
-   case SQL_CONVERT_TIMESTAMP:
-   case SQL_CONVERT_TINYINT:
-   case SQL_CONVERT_VARBINARY:
-   case SQL_CONVERT_VARCHAR:
nValue = SQL_CVT_BIGINT |
SQL_CVT_BINARY |
SQL_CVT_BIT |
@@ -228,8 +254,91 @@ SQLGetInfo_(ODBCDbc *dbc,
/* SQL_CVT_GUID */
len = sizeof(SQLUINTEGER);
break;
+   case SQL_CONVERT_DATE:
+   nValue = SQL_CVT_CHAR |
+   SQL_CVT_DATE |
+   SQL_CVT_LONGVARCHAR |
+   SQL_CVT_TIMESTAMP |
+   SQL_CVT_VARCHAR;
+   len = sizeof(SQLUINTEGER);
+   break;
+   case SQL_CONVERT_DECIMAL:
+   case SQL_CONVERT_NUMERIC:
+   nValue = SQL_CVT_BIGINT |
+   SQL_CVT_CHAR |
+   SQL_CVT_DECIMAL |
+   SQL_CVT_DOUBLE |
+   SQL_CVT_FLOAT |
+   SQL_CVT_INTEGER |
+   SQL_CVT_INTERVAL_DAY_TIME |
+   SQL_CVT_LONGVARCHAR |
+   SQL_CVT_NUMERIC |
+   SQL_CVT_REAL |
+   SQL_CVT_SMALLINT |
+   SQL_CVT_TINYINT |
+   SQL_CVT_VARCHAR;
+   len = sizeof(SQLUINTEGER);
+   break;
+   case SQL_CONVERT_DOUBLE:
+   case SQL_CONVERT_REAL:
+   case SQL_CONVERT_FLOAT:
+   nValue = SQL_CVT_BIGINT |
+   SQL_CVT_CHAR |
+   SQL_CVT_DECIMAL |
+   SQL_CVT_DOUBLE |
+   SQL_CVT_FLOAT |
+   SQL_CVT_INTEGER |
+   SQL_CVT_LONGVARCHAR |
+   SQL_CVT_NUMERIC |
+   SQL_CVT_REAL |
+   SQL_CVT_SMALLINT |
+   SQL_CVT_TINYINT |
+   SQL_CVT_VARCHAR;
+   /* SQL_CVT_GUID */
+   len = sizeof(SQLUINTEGER);
+   break;
+   case 

MonetDB: default - Silence compilers

2014-05-19 Thread Martin Kersten
Changeset: da1dfeb8b6f4 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=da1dfeb8b6f4
Modified Files:
sql/backends/monet5/generator/Tests/generator03.stable.out
sql/backends/monet5/generator/generator.c
Branch: default
Log Message:

Silence compilers


diffs (173 lines):

diff --git a/sql/backends/monet5/generator/Tests/generator03.stable.out 
b/sql/backends/monet5/generator/Tests/generator03.stable.out
--- a/sql/backends/monet5/generator/Tests/generator03.stable.out
+++ b/sql/backends/monet5/generator/Tests/generator03.stable.out
@@ -35,9 +35,10 @@ Ready.
 % single_value # name
 % sec_interval # type
 % 0 # length
-[ 10.000   ]
-#select * from generate_series(cast( '2008-03-01 00:00' as timestamp),
-#  cast( '2008-03-04 12:00' as timestamp), 
+[ 36000.000]
+#select * from generate_series(
+#  timestamp '2008-03-01 00:00',
+#  timestamp '2008-03-04 12:00',
 #cast( '10' as 
interval hour));
 % . # table_name
 % value # name
diff --git a/sql/backends/monet5/generator/generator.c 
b/sql/backends/monet5/generator/generator.c
--- a/sql/backends/monet5/generator/generator.c
+++ b/sql/backends/monet5/generator/generator.c
@@ -18,7 +18,7 @@
  */
 
 /*
- * (c) Martin Kersten
+ * (c) Martin Kersten, Sjoerd Mullender
  * Series generating module for integer, decimal, real, double and timestamps.
  */
 
@@ -289,10 +289,11 @@ findLastAssign(MalBlkPtr mb, InstrPtr pc
 {
InstrPtr q, p = NULL;
int i;
+   str vaultRef = putName(vault,5);
 
for (i = 1; i  mb-stop; i++) {
q = getInstrPtr(mb, i);
-   if (q-argv[0] == target)
+   if (q-argv[0] == target  getModuleId(q) == vaultRef)
p = q;
if (q == pci)
return p;
@@ -759,16 +760,15 @@ str VLTgenerator_leftfetchjoin(Client cn
 
 /* The operands of a join operation can either be defined on a generator */
 #define VLTjoin(TPE) \
-   { TPE f,l,s;\
-   TPE *v,w;\
+   { TPE f,l,s; TPE *v; BUN w;\
f = *(TPE*) getArgReference(stk,p, 1);\
l = *(TPE*) getArgReference(stk,p, 2);\
s = *(TPE*) getArgReference(stk,p, 3);\
for( ; cnt 0; cnt--,os++,o++){\
v = (TPE*) Tloc(bl,BUNfirst(bl));\
-   w = floor((*v -f)/s);\
-   if ( *v = f  *v  l  f + w * s == *v ){\
-   *or++ = (oid) w;\
+   w = (BUN) floor((*v -f)/s);\
+   if ( *v = f  *v  l  f + (TPE)(w * s) == *v ){\
+   *or++ = w;\
*ol++ = *o;\
c++;\
}\
@@ -776,34 +776,46 @@ str VLTgenerator_leftfetchjoin(Client cn
 
 str VLTgenerator_join(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
 {
-   BAT *bl, *br, *bln = NULL, *brn= NULL;
+   BAT  *b, *bl = NULL, *br = NULL, *bln = NULL, *brn= NULL;
BUN cnt,c =0;
oid *o = 0, os= 0, *ol, *or;
-   int tpe,bid;
-   InstrPtr p = NULL;
+   int tpe;
+   InstrPtr p = NULL, q = NULL;
str msg = MAL_SUCCEED;
 
(void) cntxt;
// we assume at most one of the arguments to refer to the generator
-   bl = BATdescriptor(bid = *(int*) getArgReference(stk,pci,2));
-   if( bl == NULL)
-   throw(MAL,generator.join,RUNTIME_OBJECT_MISSING);
-   br = BATdescriptor(bid = *(int*) getArgReference(stk,pci,3));
-   if( br == NULL){
-   //BBPreleaseref(bl-batCacheid));
-   throw(MAL,generator.join,RUNTIME_OBJECT_MISSING);
+   p = findLastAssign(mb,pci,pci-argv[2]);
+   if( p == NULL){
+   bl = BATdescriptor(*(int*) getArgReference(stk,pci,2));
+   if( bl == NULL)
+   throw(MAL,generator.join,RUNTIME_OBJECT_MISSING);
+   }
+   q = findLastAssign(mb,pci,pci-argv[3]);
+   if ( q == NULL){
+   br = BATdescriptor(*(int*) getArgReference(stk,pci,3));
+   if( br == NULL){
+   BBPreleaseref(bl-batCacheid);
+   throw(MAL,generator.join,RUNTIME_OBJECT_MISSING);
+   }
}
 
-   p = findLastAssign(mb,pci,pci-argv[3]);
-   assert(p);
+   // in case of both generators materialize the 'smallest' one first
+   // or implement more knowledge, postponed
+   assert(!( p  q));
+   assert(p || q);
 
-   cnt = BATcount(bl);
-   tpe = br-ttype;
-   if( bl-ttype == TYPE_void)
-   os = bl-tseqbase;
+   // switch roles to have a single target bat[:oid,:any] designated 
+   // by b and reference instruction p for the generator
+   b = q? br : bl;
+   p = q? q : p;
+   cnt = BATcount(b);
+   tpe = b-ttype;
+   if( b-ttype == TYPE_void)
+   os = b-tseqbase;
else
-   o = (oid*) Tloc(bl,BUNfirst(bl));
-
+