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

Reply via email to