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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list