Changeset: ecdeafdb2aee for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ecdeafdb2aee
Modified Files:
        monetdb5/optimizer/opt_pushselect.c
        monetdb5/optimizer/opt_support.c
        monetdb5/optimizer/opt_support.h
        sql/backends/monet5/UDF/pyapi3/pyapi3.c
Branch: Jul2021
Log Message:

Use MAL namespace string in order for call to work. Also fixed embedded python 
memory leak


diffs (65 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
@@ -149,7 +149,7 @@ OPTpushselectImplementation(Client cntxt
        if( mb->errors)
                return MAL_SUCCEED;
 
-       no_mito = !isOptimizerEnabled(mb, "mitosis");
+       no_mito = !isOptimizerEnabled(mb, mitosisRef);
        (void) stk;
        (void) pci;
        vars= (int*) GDKzalloc(sizeof(int)* mb->vtop);
diff --git a/monetdb5/optimizer/opt_support.c b/monetdb5/optimizer/opt_support.c
--- a/monetdb5/optimizer/opt_support.c
+++ b/monetdb5/optimizer/opt_support.c
@@ -40,7 +40,7 @@ optimizerIsApplied(MalBlkPtr mb, str opt
  * requires inspection of the pipeline attached to a MAL block.
  */
 int
-isOptimizerEnabled(MalBlkPtr mb, str opt)
+isOptimizerEnabled(MalBlkPtr mb, const char *opt)
 {
        int i;
        InstrPtr q;
diff --git a/monetdb5/optimizer/opt_support.h b/monetdb5/optimizer/opt_support.h
--- a/monetdb5/optimizer/opt_support.h
+++ b/monetdb5/optimizer/opt_support.h
@@ -49,7 +49,7 @@ extern int isOrderby(InstrPtr q);
 extern int isSelect(InstrPtr q);
 extern int isSubJoin(InstrPtr q);
 extern int isMultiplex(InstrPtr q);
-extern int isOptimizerEnabled(MalBlkPtr mb, str opt);
+extern int isOptimizerEnabled(MalBlkPtr mb, const char *opt);
 extern int isOptimizerUsed(MalBlkPtr mb, str opt);
 
 #endif /* _OPT_SUPPORT_H */
diff --git a/sql/backends/monet5/UDF/pyapi3/pyapi3.c 
b/sql/backends/monet5/UDF/pyapi3/pyapi3.c
--- a/sql/backends/monet5/UDF/pyapi3/pyapi3.c
+++ b/sql/backends/monet5/UDF/pyapi3/pyapi3.c
@@ -185,7 +185,7 @@ static str PyAPIeval(Client cntxt, MalBl
        int retcols;
        bool gstate = 0;
        int unnamedArgs = 0;
-       bool parallel_aggregation = grouped && mapped;
+       bool parallel_aggregation = grouped && mapped, freeexprStr = false;
        int argcount = pci->argc;
 
        char *eval_additional_args[] = {"_columns", "_column_types", "_conn"};
@@ -593,6 +593,7 @@ static str PyAPIeval(Client cntxt, MalBl
                                                                          
SQLSTATE(HY013) MAL_MALLOC_FAIL " function body string.");
                                goto wrapup;
                        }
+                       freeexprStr = true;
                        if (fread(exprStr, 1, (size_t) length, fp) != (size_t) 
length) {
                                msg = createException(MAL, "pyapi3.eval",
                                                                          
SQLSTATE(PY000) "Failed to read from file \"%s\".",
@@ -1342,6 +1343,8 @@ wrapup:
                        GDKfree(args[i]);
        GDKfree(args);
        GDKfree(pycall);
+       if (freeexprStr)
+               GDKfree(exprStr);
 
        return msg;
 }
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to