Changeset: ecc5043c7767 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ecc5043c7767
Modified Files:
        monetdb5/optimizer/opt_dict.c
        monetdb5/optimizer/opt_for.c
Branch: Jan2022
Log Message:

Push identity function call through compression call


diffs (39 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
@@ -112,9 +112,9 @@ OPTdictImplementation(Client cntxt, MalB
                                        freeInstruction(p);
                                        done = 1;
                                        break;
-                               } else if (getModuleId(p) == batRef && 
getFunctionId(p) == mirrorRef) {
-                                       /* id = mirror(col) with col = 
dict.decompress(o,u)
-                                        * id = mirror(o) */
+                               } else if ((getModuleId(p) == batRef && 
getFunctionId(p) == mirrorRef) || (getModuleId(p) == batcalcRef && 
getFunctionId(p) == identityRef)) {
+                                       /* id = mirror/identity(col) with col = 
dict.decompress(o,u)
+                                        * id = mirror/identity(o) */
                                        InstrPtr r = copyInstruction(p);
                                        getArg(r, j) = varisdict[k];
                                        pushInstruction(mb,r);
diff --git a/monetdb5/optimizer/opt_for.c b/monetdb5/optimizer/opt_for.c
--- a/monetdb5/optimizer/opt_for.c
+++ b/monetdb5/optimizer/opt_for.c
@@ -108,16 +108,15 @@ OPTforImplementation(Client cntxt, MalBl
                                        freeInstruction(p);
                                        done = 1;
                                        break;
-                               } else if (getModuleId(p) == batRef && 
getFunctionId(p) == mirrorRef) {
-                                       /* id = mirror(col) with col = 
for.decompress(o,min_val)
-                                        * id = mirror(o) */
+                               } else if ((getModuleId(p) == batRef && 
getFunctionId(p) == mirrorRef) || (getModuleId(p) == batcalcRef && 
getFunctionId(p) == identityRef)) {
+                                       /* id = mirror/identity(col) with col = 
for.decompress(o,min_val)
+                                        * id = mirror/identity(o) */
                                        InstrPtr r = copyInstruction(p);
                                        getArg(r, j) = varisfor[k];
                                        pushInstruction(mb,r);
                                        freeInstruction(p);
                                        done = 1;
                                        break;
-                               //} else if (isSelect(p)) {
                                } else// if (isSelect(p)) {
                                        if (getFunctionId(p) == thetaselectRef) 
{
                                                /* pos = thetaselect(col, cand, 
l, ...) with col = for.decompress(o, minval)
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to