Changeset: ed590df4a564 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ed590df4a564
Modified Files:
monetdb5/extras/rdf/rdfalgebra.c
monetdb5/extras/rdf/rdftypes.c
monetdb5/extras/rdf/rdftypes.h
sql/backends/monet5/sql.c
sql/backends/monet5/sql.h
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_rdf.c
sql/backends/monet5/sql_rdf_jgraph.c
Branch: rdf
Log Message:
Fix bug for BSBM q3 with using rdfscan
diffs (truncated from 363 to 300 lines):
diff --git a/monetdb5/extras/rdf/rdfalgebra.c b/monetdb5/extras/rdf/rdfalgebra.c
--- a/monetdb5/extras/rdf/rdfalgebra.c
+++ b/monetdb5/extras/rdf/rdfalgebra.c
@@ -257,7 +257,7 @@ str RDFmultiway_merge_outerjoins(int np,
// that there are multi-valued prop in pso.
// In that case, a recursive program need to run to generate
// all the combinations of the output candidates
- int maxNumExcept = 20; //TODO: This need to be verified
+ int maxNumExcept = 10000; //TODO: This need to be verified
oid **tmpCand;
int *numCand;
oid *cand;
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
@@ -578,6 +578,38 @@ encodeValueInOid(ValPtr vrPtrRealValue,
}
}
+static ObjectType getObjType_fromValRec(ValRecord v){
+ ObjectType objT;
+ switch (v.vtype){
+ case TYPE_bit:
+ case TYPE_bte:
+ case TYPE_sht:
+ case TYPE_int:
+ case TYPE_wrd:
+ case TYPE_lng:
+ objT = INTEGER;
+ break;
+ case TYPE_oid:
+ objT = URI;
+ break;
+ case TYPE_dbl:
+ case TYPE_flt:
+ objT = DOUBLE;
+ case TYPE_str: //Have not handle this case
+ assert(0);
+ default:
+ assert(0);
+ }
+
+ return objT;
+}
+
+
+void get_encodedOid_from_atom(atom *at, oid *ret){
+ ValRecord vrec = at->data;
+ ObjectType objT = getObjType_fromValRec(vrec);
+ encodeValueInOid(&vrec, objT, ret);
+}
void
decodeValueFromOid(BUN bun, ObjectType objType, ValPtr vrPtrRealValue){
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
@@ -25,6 +25,7 @@
#define _RDFTYPES_H_
#include <mtime.h>
+#include <sql_atom.h>
#ifdef WIN32
#ifndef LIBRDF
@@ -83,6 +84,9 @@ encodeValueInOid(ValPtr vrPtrRealValue,
rdf_export void
decodeValueFromOid(BUN bun, ObjectType objType, ValPtr vrPtrRealValue);
+rdf_export void
+get_encodedOid_from_atom(atom *at, oid *ret);
+
rdf_export int
convertDateTimeToTimeT(char *sDateTime, int len, time_t *t);
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
@@ -130,7 +130,7 @@ sql_symbol2relation(mvc *c, symbol *sym)
if (1) c->emode = m_normal;
- if (1) c->emod = mod_explain;
+ if (0) c->emod = mod_explain;
}
}
else {
@@ -650,7 +650,7 @@ alter_table(mvc *sql, char *sname, sql_t
return MAL_SUCCEED;
}
-static char *
+char *
drop_table(mvc *sql, char *sname, char *tname, int drop_action)
{
sql_schema *s = NULL;
@@ -1176,7 +1176,6 @@ SQLcatalog(Client cntxt, MalBlkPtr mb, M
case DDL_DROP_TABLE:{
int action = *getArgReference_int(stk, pci, 4);
str name = *getArgReference_str(stk, pci, 3);
-
msg = drop_table(sql, sname, name, action);
break;
}
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
@@ -99,6 +99,8 @@ 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 drop_table(mvc *sql, char *sname, char *tname, int
drop_action); //For RDF
+
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 UPGcreate_view(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci);
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
@@ -207,7 +207,7 @@ dump_table(MalBlkPtr mb, sql_table *t)
}
static int
-drop_table(MalBlkPtr mb, str n)
+drop_table1(MalBlkPtr mb, str n)
{
InstrPtr k = newStmt1(mb, sqlRef, "dropDeclaredTable");
int nr = getDestVar(k);
@@ -2475,7 +2475,7 @@ static int
if (!s->op2) {
/* drop declared table */
- s->nr = drop_table(mb, vn);
+ s->nr = drop_table1(mb, vn);
if (s->nr < 0)
return -1;
break;
diff --git a/sql/backends/monet5/sql_rdf.c b/sql/backends/monet5/sql_rdf.c
--- a/sql/backends/monet5/sql_rdf.c
+++ b/sql/backends/monet5/sql_rdf.c
@@ -1517,18 +1517,26 @@ void get_full_outerjoin_p_slices(oid *ls
for (i = 0; i < np; i++){
getSlides_per_P(pso_propstat, &(lstprops[i]),full_obat,
full_sbat, &(obats[i]), &(sbats[i]));
- printf("Slides of P = "BUNFMT"\n", lstprops[i]);
- if (sbats[i]) BATprint(sbats[i]);
- if (obats[i]) BATprint(obats[i]);
+ printf("Slides of P = "BUNFMT "\n", lstprops[i]);
+ if (sbats[i]){
+ printf(" contains "BUNFMT " rows in sbat\n",
BATcount(sbats[i]));
+ //BATprint(sbats[i]);
+ }
+ if (obats[i]){
+ printf(" contains "BUNFMT " rows in obat\n",
BATcount(obats[i]));
+ //BATprint(obats[i]);
+ }
}
RDFmultiway_merge_outerjoins(np, sbats, obats, r_sbat, (*r_obats));
- printf("Outer join result: \n");
- BATprint(*r_sbat);
+ printf("Outer join result: ("BUNFMT" rows) \n", BATcount(*r_sbat));
+ //BATprint(*r_sbat);
+ /*
for (i = 0; i < np; i++){
BATprint((*r_obats)[i]);
}
+ */
}
@@ -1599,6 +1607,13 @@ void fetch_result(BAT **r_obats, oid **o
}
+
+static
+void setBasicProps(BAT *b){
+ b->hdense = 1;
+ b->hseqbase = 0;
+ b->hsorted = 1;
+}
/*
* Combine exceptioins and regular tables
* */
@@ -1623,9 +1638,11 @@ void combine_exception_and_regular_table
//Init return BATs
*r_sbat = BATnew(TYPE_void, TYPE_oid, BATcount(sbat), TRANSIENT);
+ setBasicProps(*r_sbat);
*r_obats = (BAT **) malloc(sizeof(BAT*) * nP);
for (i = 0; i < nP; i++){
(*r_obats)[i] = BATnew(TYPE_void, TYPE_oid, BATcount(sbat),
TRANSIENT);
+ setBasicProps((*r_obats)[i]);
}
@@ -1697,7 +1714,7 @@ void combine_exception_and_regular_table
}
}
- printf("At row "BUNFMT" of table %d for sbt "BUNFMT"...", tmpS,
tid, sbt);
+ //printf("At row "BUNFMT" of table %d for sbt "BUNFMT"...",
tmpS, tid, sbt);
accept = 1;
for (j = 0; j < nP; j++){
if (obatCursors[j][pos] == oid_nil){
@@ -1719,7 +1736,7 @@ void combine_exception_and_regular_table
oid *tmpres = (oid *) malloc(sizeof(oid) * nP);
oid r_obat_oldsize = BATcount((*r_obats)[0]);
oid r_obat_newsize = BUN_NONE;
- printf("Accepted\n");
+ //printf("Accepted\n");
for (j = 0; j < nP; j++){
tmpres[j] = oid_nil;
}
@@ -1729,7 +1746,7 @@ void combine_exception_and_regular_table
BUNappend(*r_sbat, &sbt, TRUE);
}
} else {
- printf("Rejected\n");
+ //printf("Rejected\n");
}
@@ -1822,16 +1839,17 @@ SQLrdfScan(Client cntxt, MalBlkPtr mb, M
combine_exception_and_regular_tables(m, &m_sbat, &m_obats,
r_sbat, r_obats, lstProps, *nP, *nRP);
- BATprint(m_sbat);
+ //BATprint(m_sbat);
for (i = 0; i < (*nP); i++){
- BATprint(m_obats[i]);
+ //BATprint(m_obats[i]);
b[2*i] = BATcopy(m_sbat, m_sbat->htype, m_sbat->ttype,
FALSE, TRANSIENT);
b[2*i+1] = BATcopy(m_obats[i], m_obats[i]->htype,
m_obats[i]->ttype, FALSE, TRANSIENT);
}
}
- printf("Return the resusting BATs\n");
+ printf("Return the resusting BATs...");
bat2return(stk, pci, b);
+ printf("... done\n");
GDKfree(b);
return MAL_SUCCEED;
@@ -2081,8 +2099,8 @@ void build_PsoPropStat(BAT *full_pbat, i
}
}
printf("Number of P in PSO is: "BUNFMT"\n",
BATcount(pso_propstat->pBat));
- BATprint(pso_propstat->pBat);
- BATprint(pso_propstat->offsetBat);
+ //BATprint(pso_propstat->pBat);
+ //BATprint(pso_propstat->offsetBat);
if (0) //Testing only
{
int np = 5;
@@ -2174,7 +2192,7 @@ str SQLrdfprepare(Client cntxt, MalBlkPt
global_c_propstat = getPropStat_C_simpleCSset(global_csset);
- print_simpleCSset(global_csset);
+ //print_simpleCSset(global_csset);
printf("Done preparation\n");
diff --git a/sql/backends/monet5/sql_rdf_jgraph.c
b/sql/backends/monet5/sql_rdf_jgraph.c
--- a/sql/backends/monet5/sql_rdf_jgraph.c
+++ b/sql/backends/monet5/sql_rdf_jgraph.c
@@ -220,6 +220,11 @@ sql_table *create_dummy_table(mvc *c, st
if ((tbl = mvc_bind_table(c, sch, tblname)) == NULL){
printf("The dummy table does not exist --> Create new one\n");
tbl = mvc_create_table(c, sch, tblname, tt_table, 0,
SQL_PERSIST, 0, 3);
+ //tbl = mvc_create_table(c, sch, tblname, tt_view, 0,
SQL_PERSIST, 0, 3);
+ //tbl = mvc_create_table(c, sch, tblname, tt_table, 0,
SQL_LOCAL_TEMP, 0, 3);
+ } else {
+ drop_table(c, schema, tblname, 0);
+ tbl = mvc_create_table(c, sch, tblname, tt_table, 0,
SQL_PERSIST, 0, 3);
}
//create columns
@@ -518,9 +523,8 @@ list* remove_p_from_proj_exps(mvc *c, li
for (en = exps->h; en; en = en->next){
sql_exp *e = (sql_exp *) en->data;
- if (e->type == e_column && strcmp(e->name, "p") == 0){ //e.g.,
sys.rdf_idtostr(s10_t0.s) as L.product, sys.rdf_idtostr(s10_t0.o) as L.label
- continue;
- } else if (e->type == e_column && strcmp(e->name, "o") != 0 &&
strcmp(e->name, "s") != 0){
+ if ((e->type == e_column && strcmp(e->name, "p") == 0) ||
+ (e->type == e_column && strcmp(e->name, "%TID%") == 0)){
//e.g., sys.rdf_idtostr(s10_t0.s) as L.product, sys.rdf_idtostr(s10_t0.o) as
L.label
continue;
} else {
sql_exp *newexp = exp_copy(sa, e);
@@ -1171,6 +1175,9 @@ void get_col_name_from_p (char **col, ch
* UPDATE: oid[s12_t0.o] = sys.rdf_strtoid(char(85) "<http://www/Product9>"
* will be convert to tbl1.p = type_of_column_p[sys.rdf_strtoid(char(85)
"<http://www/Product9>"]
*
+ * UPDATE:
+ * As everything will be stored as oid, we have to remove
+ *
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list