Changeset: c997d3a05c02 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c997d3a05c02
Modified Files:
monetdb5/mal/mal_linker.c
monetdb5/mal/mal_resolve.c
Branch: Jun2020
Log Message:
Throwing a better error message at the MAL linker. If the user has enabled
embbeded python, but didn't install it before (ie pyapi3 module missing), throw
a better error message
diffs (68 lines):
diff --git a/monetdb5/mal/mal_linker.c b/monetdb5/mal/mal_linker.c
--- a/monetdb5/mal/mal_linker.c
+++ b/monetdb5/mal/mal_linker.c
@@ -439,9 +439,9 @@ MSP_locate_sqlscript(const char *filenam
return locate_file(filename, SQL_EXT, recurse);
}
-
int
-malLibraryEnabled(str name) {
+malLibraryEnabled(str name)
+{
if (strcmp(name, "pyapi3") == 0) {
const char *val = GDKgetenv("embedded_py");
return val && (strcmp(val, "3") == 0 ||
@@ -451,9 +451,12 @@ malLibraryEnabled(str name) {
return true;
}
-char*
-malLibraryHowToEnable(str name) {
+char *
+malLibraryHowToEnable(str name)
+{
if (strcmp(name, "pyapi3") == 0) {
+ if (malLibraryEnabled(name))
+ return "Embedded Python 3 has not been installed.
Please install it first, then start server with --set embedded_py=3";
return "Embedded Python 3 has not been enabled. Start server
with --set embedded_py=3";
}
return "";
diff --git a/monetdb5/mal/mal_resolve.c b/monetdb5/mal/mal_resolve.c
--- a/monetdb5/mal/mal_resolve.c
+++ b/monetdb5/mal/mal_resolve.c
@@ -536,7 +536,7 @@ typeChecker(Module scope, MalBlkPtr mb,
*/
if (!isaSignature(p) && !getInstrPtr(mb, 0)->polymorphic) {
if (!silent) {
- char *errsig;
+ char *errsig = NULL;
if (!malLibraryEnabled(p->modname)) {
mb->errors = createMalException(mb,
idx, TYPE,
"'%s%s%s' library error in: %s",
@@ -544,13 +544,21 @@ typeChecker(Module scope, MalBlkPtr mb,
(getModuleId(p) ? "." : ""),
getFunctionId(p), malLibraryHowToEnable(p->modname));
} else {
- errsig = instruction2str(mb,0,p,
(LIST_MAL_NAME | LIST_MAL_TYPE | LIST_MAL_VALUE));
+ bool free_errsig = false,
special_undefined = false;
+ errsig =
malLibraryHowToEnable(p->modname);
+ if (!strcmp(errsig, "")) {
+ errsig =
instruction2str(mb,0,p, (LIST_MAL_NAME | LIST_MAL_TYPE | LIST_MAL_VALUE));
+ free_errsig = true;
+ } else {
+ special_undefined = true;
+ }
mb->errors = createMalException(mb,
idx, TYPE,
-
"'%s%s%s' undefined in: %s",
+
"'%s%s%s' undefined%s: %s",
(getModuleId(p) ? getModuleId(p) : ""),
(getModuleId(p) ? "." : ""),
-
getFunctionId(p), errsig?errsig:"failed instruction2str()");
- GDKfree(errsig);
+
getFunctionId(p), special_undefined ? "" : " in", errsig?errsig:"failed
instruction2str()");
+ if (free_errsig)
+ GDKfree(errsig);
}
}
p->typechk = TYPE_UNKNOWN;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list