Changeset: 0c0c2090ae53 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/0c0c2090ae53
Modified Files:
        monetdb5/optimizer/opt_dict.c
        monetdb5/optimizer/opt_prelude.c
        monetdb5/optimizer/opt_prelude.h
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_statement.c
Branch: dict
Log Message:

put the dict.* stuff into it own module


diffs (91 lines):

diff --git a/monetdb5/optimizer/opt_dict.c b/monetdb5/optimizer/opt_dict.c
--- a/monetdb5/optimizer/opt_dict.c
+++ b/monetdb5/optimizer/opt_dict.c
@@ -42,7 +42,7 @@ OPTdictImplementation(Client cntxt, MalB
                p = old[i];
                if( p == 0)
                        continue; //left behind by others?
-               if (p->retc == 1 && getModuleId(p) == sqlRef && 
getFunctionId(p) == dict_decompressRef) {
+               if (p->retc == 1 && getModuleId(p) == dictRef && 
getFunctionId(p) == decompressRef) {
                        // remember we have encountered a dict decompress 
function
                        k =  getArg(p,0);
                        varisdict[k] = getArg(p,1);
@@ -75,10 +75,15 @@ OPTdictImplementation(Client cntxt, MalB
                                        pushInstruction(mb,r);
                                        done = 1;
                                        break;
+                               //} else if (getModuleId(p) == algebraRef && 
getFunctionId(p) == selectRef) {
+                                       /* pos = select(col, cand, l, h, ...) 
with col = dict.decompress(o,u)
+                                        * tp = select(u, nil, l, h, ...)
+                                        * tp2 = typeconver(tp) -> bte,sht,int
+                                        * pos = semijoin(o, cand, tp2, nil) */
                                } else {
                                        /* need to decompress */
                                        int tpe = getArgType(mb, p, j);
-                                       InstrPtr r = newInstruction(mb, sqlRef, 
dict_decompressRef);
+                                       InstrPtr r = newInstruction(mb, 
dictRef, decompressRef);
                                        getArg(r, 0) = newTmpVariable(mb, tpe);
                                        r = addArgument(mb, r, varisdict[k]);
                                        r = addArgument(mb, r, vardictvalue[k]);
diff --git a/monetdb5/optimizer/opt_prelude.c b/monetdb5/optimizer/opt_prelude.c
--- a/monetdb5/optimizer/opt_prelude.c
+++ b/monetdb5/optimizer/opt_prelude.c
@@ -107,7 +107,8 @@ const char *deleteRef;
 const char *deltaRef;
 const char *dense_rankRef;
 const char *deregisterRef;
-const char *dict_decompressRef;
+const char *dictRef;
+const char *decompressRef;
 const char *diffcandRef;
 const char *differenceRef;
 const char *disconnectRef;
@@ -418,7 +419,8 @@ void optimizerInit(void)
        deltaRef = putName("delta");
        dense_rankRef = putName("dense_rank");
        deregisterRef = putName("deregister");
-       dict_decompressRef = putName("dict_decompress");
+       dictRef = putName("dict");
+       decompressRef = putName("decompress");
        diffcandRef= putName("diffcand");
        differenceRef = putName("difference");
        disconnectRef= putName("disconnect");
diff --git a/monetdb5/optimizer/opt_prelude.h b/monetdb5/optimizer/opt_prelude.h
--- a/monetdb5/optimizer/opt_prelude.h
+++ b/monetdb5/optimizer/opt_prelude.h
@@ -103,7 +103,8 @@ mal_export  const char *deleteRef;
 mal_export  const char *deltaRef;
 mal_export  const char *dense_rankRef;
 mal_export  const char *deregisterRef;
-mal_export  const char *dict_decompressRef;
+mal_export  const char *dictRef;
+mal_export  const char *decompressRef;
 mal_export  const char *diffcandRef;
 mal_export  const char *differenceRef;
 mal_export  const char *diffRef;
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
@@ -5168,8 +5168,8 @@ static mel_func sql_init_funcs[] = {
  pattern("sql", "prepared_statements_args", 
SQLsession_prepared_statements_args, false, "Available prepared statements' 
arguments in the current session", args(9,9, 
batarg("statementid",int),batarg("type",str),batarg("digits",int),batarg("scale",int),batarg("inout",bte),batarg("number",int),batarg("schema",str),batarg("table",str),batarg("column",str))),
  pattern("sql", "copy_rejects", COPYrejects, false, "", args(4,4, 
batarg("rowid",lng),batarg("fldid",int),batarg("msg",str),batarg("inp",str))),
  pattern("sql", "copy_rejects_clear", COPYrejects_clear, true, "", noargs),
- pattern("sql", "dict_compress", DICTcompress, false, "compress a sql column", 
args(0, 3, arg("schema", str), arg("table", str), arg("column", str))),
- pattern("sql", "dict_decompress", DICTdecompress, false, "decompress a 
dictionary compressed (sub)column", args(1, 3, batargany("", 1), batargany("o", 
0), batargany("u", 1))),
+ pattern("dict", "compress", DICTcompress, false, "compress a sql column", 
args(0, 3, arg("schema", str), arg("table", str), arg("column", str))),
+ pattern("dict", "decompress", DICTdecompress, false, "decompress a dictionary 
compressed (sub)column", args(1, 3, batargany("", 1), batargany("o", 0), 
batargany("u", 1))),
  command("calc", "dec_round", bte_dec_round_wrap, false, "round off the value 
v to nearests multiple of r", args(1,3, arg("",bte),arg("v",bte),arg("r",bte))),
  pattern("batcalc", "dec_round", bte_bat_dec_round_wrap, false, "round off the 
value v to nearests multiple of r", args(1,3, 
batarg("",bte),batarg("v",bte),arg("r",bte))),
  pattern("batcalc", "dec_round", bte_bat_dec_round_wrap, false, "round off the 
value v to nearests multiple of r", args(1,4, 
batarg("",bte),batarg("v",bte),arg("r",bte),batarg("s",oid))),
diff --git a/sql/backends/monet5/sql_statement.c 
b/sql/backends/monet5/sql_statement.c
--- a/sql/backends/monet5/sql_statement.c
+++ b/sql/backends/monet5/sql_statement.c
@@ -2271,7 +2271,7 @@ stmt_dict(backend *be, stmt *op1, stmt *
        if (op1->nr < 0 || op2->nr < 0)
                return NULL;
 
-       q = newStmt(mb, sqlRef, dict_decompressRef);
+       q = newStmt(mb, dictRef, decompressRef);
        q = pushArgument(mb, q, op1->nr);
        q = pushArgument(mb, q, op2->nr);
 
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to