MonetDB: default - no need to fix the scales of floats
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
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
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...
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
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...
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...
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