MonetDB: default - no need to fix the scales of floats

2014-06-11 Thread Niels Nes
Changeset: 2fba80fe4e34 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2fba80fe4e34
Modified Files:
sql/common/sql_types.c
Branch: default
Log Message:

no need to fix the scales of floats


diffs (15 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
@@ -320,7 +320,10 @@ subtype_cmp(sql_subtype *t1, sql_subtype
return -1;
if ( !(t1-type-eclass == t2-type-eclass  
   t1-type-eclass == EC_INTERVAL) 
- (t1-digits != t2-digits || t1-scale != t2-scale) )
+ (t1-digits != t2-digits || 
+ (!(t1-type-eclass == t2-type-eclass  
+  t1-type-eclass == EC_FLT) 
+  t1-scale != t2-scale)) )
return -1;
 
/* subtypes are only equal iff
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - push subslice under projectdelta

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

push subslice under projectdelta


diffs (30 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
@@ -457,6 +457,26 @@ OPTpushselectImplementation(Client cntxt
vars[res] = i;
}
 
+   /* push subslice under projectdelta */
+   if (isSlice(p)  p-retc == 1) {
+   int var = getArg(p, 1);
+   InstrPtr q = old[vars[var]];
+   if (getModuleId(q) == sqlRef  getFunctionId(q) == 
projectdeltaRef) {
+   InstrPtr r = copyInstruction(p);
+   InstrPtr s = copyInstruction(q);
+
+   /* subslice the candidates */
+   getArg(r, 0) = newTmpVariable(mb, 
newBatType(TYPE_oid, TYPE_oid));
+   getArg(r, 1) = getArg(s, 1); 
+   pushInstruction(mb,r);
+
+   /* dummy result for the old q, will be removed 
by deadcode optimizer */
+   getArg(q, 0) = newTmpVariable(mb, 
getArgType(mb, q, 0));
+
+   getArg(s, 1) = getArg(r, 0); /* use result of 
subslice */
+   pushInstruction(mb, s);
+   }
+   }
/* c = delta(b, uid, uvl, ins)
 * s = subselect(c, C1..)
 *
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - Turn off debugging for centipede

2014-06-11 Thread Martin Kersten
Changeset: 36e2091c6f54 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=36e2091c6f54
Modified Files:
monetdb5/optimizer/opt_centipede.c
sql/test/centipede/Tests/olap.stable.out
Branch: default
Log Message:

Turn off debugging for centipede
add an expected output file.


diffs (74 lines):

diff --git a/monetdb5/optimizer/opt_centipede.c 
b/monetdb5/optimizer/opt_centipede.c
--- a/monetdb5/optimizer/opt_centipede.c
+++ b/monetdb5/optimizer/opt_centipede.c
@@ -32,8 +32,8 @@
 #include mal_interpreter.h
 #include algebra.h
 
-#define DEBUG_OPT_DETAIL
-#define _DEBUG_OPT_CENTIPEDE_ 
+//#define DEBUG_OPT_DETAIL
+//#define _DEBUG_OPT_CENTIPEDE_ 
 
 #define BLOCKED 1  // Instruction should remain in main routine
 #define PARTITION 2// Instruction is part of the fragment routine
diff --git a/sql/test/centipede/Tests/olap.stable.out 
b/sql/test/centipede/Tests/olap.stable.out
--- a/sql/test/centipede/Tests/olap.stable.out
+++ b/sql/test/centipede/Tests/olap.stable.out
@@ -56,6 +56,8 @@ Ready.
 [ 5]
 #insert into Sc values (1,1), (1,3);
 [ 2]
+#insert into Tc values (1,1,1), (2,2,3), (2,2,4), (2,2,5), (3,3,3);
+[ 5]
 #select * from Rc;
 % sys.rc,  sys.rc # table_name
 % i,   j # name
@@ -73,6 +75,16 @@ Ready.
 % 1,   1 # length
 [ 1,   1   ]
 [ 1,   3   ]
+#select * from Tc;
+% sys.tc,  sys.tc, sys.tc # table_name
+% x,   y,  z # name
+% int, int,int # type
+% 1,   1,  1 # length
+[ 1,   1,  1   ]
+[ 2,   2,  3   ]
+[ 2,   2,  4   ]
+[ 2,   2,  5   ]
+[ 3,   3,  3   ]
 #set optimizer='centipede_pipe';
 #select i,count(*) from Rc group by i;
 % sys.rc,  sys.L1 # table_name
@@ -224,6 +236,30 @@ Ready.
 % 1,   1 # length
 [ 1,   1   ]
 [ 3,   1   ]
+#select x,y,count(*) from Tc group by x,y;
+% sys.tc,  sys.tc, sys.L1 # table_name
+% x,   y,  L1 # name
+% int, int,wrd # type
+% 1,   1,  1 # length
+[ 1,   1,  1   ]
+[ 2,   2,  3   ]
+[ 3,   3,  1   ]
+#select x,y,max(z) from Tc group by x,y;
+% sys.tc,  sys.tc, sys.L1 # table_name
+% x,   y,  L1 # name
+% int, int,int # type
+% 1,   1,  1 # length
+[ 1,   1,  1   ]
+[ 2,   2,  4   ]
+[ 3,   3,  3   ]
+#select x,y,sum(z) from Tc group by x,y;
+% sys.tc,  sys.tc, sys.L1 # table_name
+% x,   y,  L1 # name
+% int, int,bigint # type
+% 1,   1,  1 # length
+[ 1,   1,  1   ]
+[ 2,   2,  12  ]
+[ 3,   3,  3   ]
 #drop table Rc;
 #drop table Sc;
 
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - fixed new push down slice code. Shouldn't pus...

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

fixed new push down slice code. Shouldn't push down a subslice and only start 
from zero.


diffs (20 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
@@ -464,10 +464,15 @@ OPTpushselectImplementation(Client cntxt
if (getModuleId(q) == sqlRef  getFunctionId(q) == 
projectdeltaRef) {
InstrPtr r = copyInstruction(p);
InstrPtr s = copyInstruction(q);
+   ValRecord cst;
 
-   /* subslice the candidates */
+   /* slice the candidates */
+   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);
+   cst.val.wval = 0;
+   getArg(r, 2) = defConstant(mb, cst.vtype, 
cst); /* start from zero */
pushInstruction(mb,r);
 
/* dummy result for the old q, will be removed 
by deadcode optimizer */
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - indent and approve test output

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

indent and approve test output


diffs (162 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
@@ -1793,57 +1793,57 @@ JSONjsonaggr(BAT **bnp, BAT *b, BAT *g, 
map = (const oid *) Tloc(t2, BUNfirst(t2));
}
if (g  BATtdense(g)) {
- for (p = 0, q = BATcount(g); p  q; p++) {
-   switch(b-ttype) {
+   for (p = 0, q = BATcount(g); p  q; p++) {
+   switch(b-ttype) {
case  TYPE_str:
-   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));
-   if (*val != dbl_nil) {
-   snprintf(temp, sizeof(temp), %f, 
*val);
-   v = (const char *)temp;
-   } else {
-   v =  NULL;
+   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));
+   if (*val != dbl_nil) {
+   snprintf(temp, sizeof(temp), 
%f, *val);
+   v = (const char *)temp;
+   } else {
+   v =  NULL;
+   }
+   break;
}
-   break;
-   }
-   if (!v||strNil(v)) {
-   if (skip_nils)
-   continue;
-   strncpy(buf, str_nil, buflen);
-   isnil = 1;
-   } else {
-   len = strlen(v);
-   if (len = maxlen - buflen) {
-   maxlen += len + BUFSIZ;
-   buf = GDKrealloc(buf, maxlen);
-   if (buf == NULL) {
-   err = MAL_MALLOC_FAIL;
-   goto bunins_failed;
+   if (!v||strNil(v)) {
+   if (skip_nils)
+   continue;
+   strncpy(buf, str_nil, buflen);
+   isnil = 1;
+   } else {
+   len = strlen(v);
+   if (len = maxlen - buflen) {
+   maxlen += len + BUFSIZ;
+   buf = GDKrealloc(buf, maxlen);
+   if (buf == NULL) {
+   err = MAL_MALLOC_FAIL;
+   goto bunins_failed;
+   }
+   }
+   switch (b-ttype) {
+   case TYPE_str:
+   len = snprintf(buf + buflen, 
maxlen - buflen, [ \%s\ ], v);
+   buflen += len;
+   break;
+   case TYPE_dbl:
+   len = snprintf(buf + buflen, 
maxlen - buflen, [ %s ], v);
+   buflen += len;
+   break;
}
}
-   switch (b-ttype) {
-   case TYPE_str:
- len = snprintf(buf + buflen, maxlen - buflen, 
[ \%s\ ], v);
- buflen += len;
- break;
-

MonetDB: rdf - Linnea's modification by using the final relation...

2014-06-11 Thread Minh-Duc Pham
Changeset: 5db096d299ac for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5db096d299ac
Modified Files:
monetdb5/extras/rdf/rdflabels.c
monetdb5/extras/rdf/rdflabels.h
monetdb5/extras/rdf/rdfschema.c
Branch: rdf
Log Message:

Linnea's modification by using the final relationships.


diffs (178 lines):

diff --git a/monetdb5/extras/rdf/rdflabels.c b/monetdb5/extras/rdf/rdflabels.c
--- a/monetdb5/extras/rdf/rdflabels.c
+++ b/monetdb5/extras/rdf/rdflabels.c
@@ -305,66 +305,6 @@ Relation*** initRelationMetadata(int** r
return relationMetadata;
 }
 
-/* Calculate frequency per foreign key relationship. */
-static
-Relation*** initRelationMetadata2(int** relationMetadataCount, CSrel* 
csRelBetweenMergeFreqSet, CSset* freqCSset) {
-   int i, j, k;
-   Relation*** relationMetadata;
-
-   relationMetadata = (Relation ***) malloc(sizeof(Relation **) * 
freqCSset-numCSadded);
-   if (!relationMetadata) fprintf(stderr, ERROR: Couldn't malloc 
memory!\n);
-   for (i = 0; i  freqCSset-numCSadded; ++i) { // CS
-   CS cs;
-   if (i == -1) continue; // ignore
-   cs = (CS) freqCSset-items[i];
-   relationMetadata[i] = (Relation **) malloc (sizeof(Relation *) 
* cs.numProp);
-   if (!relationMetadata[i]) fprintf(stderr, ERROR: Couldn't 
malloc memory!\n);
-   for (j = 0; j  cs.numProp; ++j) { // propNo in CS order
-   int sum = 0;
-   relationMetadataCount[i][j] = 0;
-   relationMetadata[i][j] = NULL;
-   for (k = 0; k  csRelBetweenMergeFreqSet[i].numRef; 
++k) { // propNo in CSrel
-
-   if (csRelBetweenMergeFreqSet[i].lstPropId[k] == 
cs.lstProp[j]) {
-   int toId = 
csRelBetweenMergeFreqSet[i].lstRefFreqIdx[k];
-   if (toId == -1) continue; // ignore
-   relationMetadataCount[i][j] += 1;
-
-   // alloc/realloc
-   if (relationMetadataCount[i][j] == 1) {
-   // alloc
-   relationMetadata[i][j] = 
(Relation *) malloc (sizeof(Relation));
-   if (!relationMetadata[i][j]) 
fprintf(stderr, ERROR: Couldn't malloc memory!\n);
-   relationMetadata[i][j][0].to = 
toId;
-   relationMetadata[i][j][0].from 
= i;
-   relationMetadata[i][j][0].freq 
= csRelBetweenMergeFreqSet[i].lstCnt[k];
-   
relationMetadata[i][j][0].percent = -1;
-   } else {
-   // realloc
-   relationMetadata[i][j] = 
(Relation *) realloc(relationMetadata[i][j], sizeof(Relation) * 
relationMetadataCount[i][j]);
-   if (!relationMetadata[i][j]) 
fprintf(stderr, ERROR: Couldn't realloc memory!\n);
-   
relationMetadata[i][j][relationMetadataCount[i][j] - 1].to = toId;
-   
relationMetadata[i][j][relationMetadataCount[i][j] - 1].from = i;
-   
relationMetadata[i][j][relationMetadataCount[i][j] - 1].freq = 
csRelBetweenMergeFreqSet[i].lstCnt[k];
-   
relationMetadata[i][j][relationMetadataCount[i][j] - 1].percent = -1;
-   }
-   }
-   }
-
-   // get total count of values
-   for (k = 0; k  relationMetadataCount[i][j]; ++k) {
-   sum += relationMetadata[i][j][k].freq;
-   }
-   // assign percentage values for every value
-   for (k = 0; k  relationMetadataCount[i][j]; ++k) {
-   relationMetadata[i][j][k].percent = (int) 
(100.0 * relationMetadata[i][j][k].freq / sum + 0.5);
-   }
-   }
-   }
-
-   return relationMetadata;
-}
-
 static
 IncidentFKs* initLinks(int csCount) {
int i;
@@ -1158,7 +1098,7 @@ void createOntologyLookupResult(oid** re
  * Call GraphViz to create the graphic: dot -Tpdf -O UMLxxx.dot to create 
UMLxxx.dot.pdf
  */
 static
-void printUML2(CStableStat *cstablestat, CSPropTypes* csPropTypes, int 
freqThreshold, CSrel *csRelMergeFreqSet, BATiter mapi, BAT *mbat, int 
numTables, int* mTblIdxFreqIdxMapping, int* csTblIdxMapping, CSset* freqCSset) {
+void printUML2(CStableStat 

MonetDB: RIntegration-default - make sure we try aggregates when...

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

make sure we try aggregates when binairy function fail.


diffs (35 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
@@ -3639,17 +3639,23 @@ rel_binop(mvc *sql, sql_rel **rel, symbo
return rel_aggr(sql, rel, se, f);
}
 
+   if (sname)
+   s = mvc_bind_schema(sql, sname);
+
+   if (type == F_FUNC) {
+   sql_subfunc *func = sql_find_func(sql-sa, s, fname, 2, F_AGGR);
+   if (func) {
+   if (!l || !r) { /* reset error */
+   sql-session-status = 0;
+   sql-errstr[0] = '\0';
+   }
+   return _rel_aggr(sql, rel, 0, s, fname, dl-next, f);
+   }
+   }
+
if (!l || !r) 
return NULL;
 
-   if (sname)
-   s = mvc_bind_schema(sql, sname);
-
-   if (type == F_FUNC) {
-   sql_subfunc *func = sql_find_func(sql-sa, s, fname, 2, F_AGGR);
-   if (func)
-   return _rel_aggr(sql, rel, 0, s, fname, dl-next, f);
-   }
return rel_binop_(sql, l, r, s, fname, ek.card);
 }
 
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list