Changeset: 967379f42c15 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=967379f42c15
Modified Files:
monetdb5/mal/mal_function.c
monetdb5/mal/mal_import.c
monetdb5/mal/mal_linker.c
monetdb5/mal/mal_listing.c
monetdb5/mal/mal_module.c
monetdb5/mal/mal_parser.c
monetdb5/mal/mal_runtime.c
monetdb5/mal/mal_scenario.c
monetdb5/mal/mal_session.c
monetdb5/mal/mal_session.h
monetdb5/mal/mal_stack.c
monetdb5/modules/kernel/algebra.c
monetdb5/modules/kernel/microbenchmark.c
Branch: malparsing
Log Message:
Remogve direct calls to GDKerror
Direct calls to GDKerror should be limited to the GDK layer
and the atoms introduced.
diffs (truncated from 611 to 300 lines):
diff --git a/monetdb5/mal/mal_function.c b/monetdb5/mal/mal_function.c
--- a/monetdb5/mal/mal_function.c
+++ b/monetdb5/mal/mal_function.c
@@ -590,10 +590,8 @@ setVariableScope(MalBlkPtr mb)
if( blockStart(p)){
if (getModuleId(p) && getFunctionId(p) &&
strcmp(getModuleId(p),"language")==0 && strcmp(getFunctionId(p),"dataflow")==0){
- if( dflow != -1){
- GDKerror("setLifeSpan nested dataflow
blocks not allowed" );
- mb->errors++;
- }
+ if( dflow != -1)
+ addMalException(mb,"setLifeSpan nested
dataflow blocks not allowed" );
dflow= depth;
} else
depth++;
diff --git a/monetdb5/mal/mal_import.c b/monetdb5/mal/mal_import.c
--- a/monetdb5/mal/mal_import.c
+++ b/monetdb5/mal/mal_import.c
@@ -131,7 +131,7 @@ evalFile(Client cntxt, str fname, int li
c->promptlength = 0;
msg = defaultScenario(c);
if( msg == MAL_SUCCEED){
- MSinitClientPrg(c, "user", "main"); /* create
new context */
+ (void) MSinitClientPrg(c, "user", "main"); /*
create new context */
c->listing = listing;
msg = runScenario(c);
}
@@ -199,7 +199,7 @@ compileString(Client cntxt, str s)
msg = defaultScenario(c);
if( msg == MAL_SUCCEED){
- MSinitClientPrg(c, "user", "main"); /* create new context */
+ (void) MSinitClientPrg(c, "user", "main"); /* create new
context */
c->blkmode = 1; // collect all statements
while(msg == MAL_SUCCEED && c->fdin->eof == 0){
msg = MALreader(c);
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
@@ -360,10 +360,8 @@ locate_file(const char *basename, const
for (c = 0; c < lasts; c++)
i += strlen(strs[c]) + 1; /* PATH_SEP or \0 */
fullname = GDKrealloc(fullname, i);
- if( fullname == NULL){
- GDKerror("locate_file" MAL_MALLOC_FAIL);
+ if( fullname == NULL)
return NULL;
- }
i = 0;
for (c = 0; c < lasts; c++) {
if (strstr(fullname, strs[c]) == NULL) {
diff --git a/monetdb5/mal/mal_listing.c b/monetdb5/mal/mal_listing.c
--- a/monetdb5/mal/mal_listing.c
+++ b/monetdb5/mal/mal_listing.c
@@ -47,7 +47,7 @@ renderTerm(MalBlkPtr mb, MalStkPtr stk,
buf = GDKzalloc(maxlen);
if( buf == NULL) {
- GDKerror("renderTerm:Failed to allocate");
+ addMalException(mb, "renderTerm:Failed to allocate");
return NULL;
}
// show the name when required or is used
@@ -75,7 +75,7 @@ renderTerm(MalBlkPtr mb, MalStkPtr stk,
buf= GDKrealloc(buf, maxlen =len + strlen(cv) + BUFSIZ);
if( buf == 0){
- GDKerror("renderTerm:Failed to allocate");
+ addMalException(mb,"renderTerm:Failed to allocate");
return NULL;
}
@@ -121,7 +121,7 @@ renderTerm(MalBlkPtr mb, MalStkPtr stk,
}
if( len >= maxlen)
- GDKerror("renderTerm:Value representation too large");
+ addMalException(mb,"renderTerm:Value representation too large");
return buf;
}
@@ -530,7 +530,7 @@ mal2str(MalBlkPtr mb, int first, int las
len = GDKmalloc(sizeof(int) * mb->stop);
if( txt == NULL || len == NULL){
- GDKerror("mal2str: " MAL_MALLOC_FAIL);
+ addMalException(mb,"mal2str: " MAL_MALLOC_FAIL);
if( txt ) GDKfree(txt);
if( len ) GDKfree(len);
return NULL;
@@ -549,7 +549,7 @@ mal2str(MalBlkPtr mb, int first, int las
}
ps = GDKmalloc(totlen + mb->stop + 1);
if( ps == NULL){
- GDKerror("mal2str: " MAL_MALLOC_FAIL);
+ addMalException(mb,"mal2str: " MAL_MALLOC_FAIL);
GDKfree(len);
GDKfree(txt);
return NULL;
@@ -618,7 +618,7 @@ printSignature(stream *fd, Symbol s, int
(void) fcnDefinition(s->def, p, txt, flg, txt, MAXLISTING);
mnstr_printf(fd, "%s\n", txt);
GDKfree(txt);
- } else GDKerror("printSignature"MAL_MALLOC_FAIL);
+ } else mnstr_printf(fd,"printSignature"MAL_MALLOC_FAIL);
}
void showMalBlkHistory(stream *out, MalBlkPtr mb)
diff --git a/monetdb5/mal/mal_module.c b/monetdb5/mal/mal_module.c
--- a/monetdb5/mal/mal_module.c
+++ b/monetdb5/mal/mal_module.c
@@ -50,8 +50,7 @@ static void newModuleSpace(Module scope)
fprintf(stderr,"#Add jump table to scope %s\n", scope->name);
#endif
scope->space = (Symbol *) GDKzalloc(MAXSCOPE * sizeof(Symbol));
- if( scope->space == 0)
- GDKerror("newModuleSpace:"MAL_MALLOC_FAIL);
+ // error is reported elsewhere
}
void
diff --git a/monetdb5/mal/mal_parser.c b/monetdb5/mal/mal_parser.c
--- a/monetdb5/mal/mal_parser.c
+++ b/monetdb5/mal/mal_parser.c
@@ -1449,6 +1449,7 @@ int
parseMAL(Client cntxt)
{ int cntrl = 0;
int inlineProp =0, unsafeProp = 0, sealedProp = 0;
+ str msg;
cntxt->lineptr = cntxt->line;
skipSpace(cntxt);
@@ -1479,7 +1480,9 @@ parseMAL(Client cntxt)
cntxt->curprg->def->sealedProp =
sealedProp;
if (inlineProp)
parseError(cntxt,
"parseError:INLINE ignored");
- MSinitClientPrg(cntxt, "user", "main");
+ msg = MSinitClientPrg(cntxt, "user",
"main");
+ if( msg != MAL_SUCCEED)
+ parseError(cntxt,msg);
}
return 0;
}
@@ -1560,7 +1563,9 @@ parseMAL(Client cntxt)
chkProgram(cntxt->nspace,
cntxt->curprg->def);
if( cntxt->curprg->def->errors)
parseError(cntxt,"Program
contains errors\n");
- MSinitClientPrg(cntxt, "user","main");
+ msg = MSinitClientPrg(cntxt,
"user","main");
+ if( msg != MAL_SUCCEED)
+ parseError(cntxt,msg);
return 0;
}
continue;
diff --git a/monetdb5/mal/mal_runtime.c b/monetdb5/mal/mal_runtime.c
--- a/monetdb5/mal/mal_runtime.c
+++ b/monetdb5/mal/mal_runtime.c
@@ -66,7 +66,7 @@ runtimeProfileInit(Client cntxt, MalBlkP
if ( qtop +1 == qsize )
QRYqueue = (QueryQueue) GDKrealloc( QRYqueue, sizeof (struct
QRYQUEUE) * (qsize +=256));
if ( QRYqueue == NULL){
- GDKerror("runtimeProfileInit" MAL_MALLOC_FAIL);
+ addMalException(mb,"runtimeProfileInit"
MAL_MALLOC_FAIL);
MT_lock_unset(&mal_delayLock);
return;
}
diff --git a/monetdb5/mal/mal_scenario.c b/monetdb5/mal/mal_scenario.c
--- a/monetdb5/mal/mal_scenario.c
+++ b/monetdb5/mal/mal_scenario.c
@@ -578,7 +578,10 @@ runScenarioBody(Client c)
freeException(msg);
msg = MAL_SUCCEED;
}
- showErrors(c); // GDK level errors
+ if( GDKerrbuf && GDKerrbuf[0]){
+ mnstr_printf(c->fdout,"!GDKerror: %s\n",GDKerrbuf);
+ mnstr_flush(c->fdout);
+ }
assert(c->curprg->def->errors == NULL);
c->actions++;
}
diff --git a/monetdb5/mal/mal_session.c b/monetdb5/mal/mal_session.c
--- a/monetdb5/mal/mal_session.c
+++ b/monetdb5/mal/mal_session.c
@@ -93,7 +93,7 @@ malBootstrap(void)
* was added. At the end of the session we have to garbage collect the
* BATs introduced.
*/
-static void
+static str
MSresetClientPrg(Client cntxt)
{
MalBlkPtr mb;
@@ -116,26 +116,24 @@ MSresetClientPrg(Client cntxt)
freeMalBlk(mb->history);
mb->history = 0;
}
+ return MAL_SUCCEED;
}
/*
* Create a new container block
*/
-void
+str
MSinitClientPrg(Client cntxt, str mod, str nme)
{
InstrPtr p;
MalBlkPtr mb;
- if (cntxt->curprg && idcmp(nme, cntxt->curprg->name) == 0) {
- MSresetClientPrg(cntxt);
- return;
- }
+ if (cntxt->curprg && idcmp(nme, cntxt->curprg->name) == 0)
+ return MSresetClientPrg(cntxt);
cntxt->curprg = newFunction(putName("user"), putName(nme),
FUNCTIONsymbol);
if( cntxt->curprg == 0){
- GDKerror("MSinitClientPrg" "Failed to create function");
- return;
+ throw(MAL, "initClientPrg", MAL_MALLOC_FAIL);
}
mb = cntxt->curprg->def;
p = getSignature(cntxt->curprg);
@@ -146,7 +144,10 @@ MSinitClientPrg(Client cntxt, str mod, s
setVarType(mb, findVariable(mb, nme), TYPE_void);
if (cntxt->glb == NULL )
cntxt->glb = newGlobalStack(MAXGLOBALS + mb->vsize);
+ if( cntxt->glb == NULL)
+ throw(MAL,"initClientPrg", MAL_MALLOC_FAIL);
assert(cntxt->curprg->def != NULL);
+ return MAL_SUCCEED;
}
/*
@@ -334,7 +335,7 @@ MSscheduleClient(str command, str challe
}
}
- MSinitClientPrg(c, "user", "main");
+ (void) MSinitClientPrg(c, "user", "main");
GDKfree(command);
@@ -719,7 +720,7 @@ MALparser(Client cntxt)
}
msg = cntxt->curprg->def->errors;
cntxt->curprg->def->errors = 0;
- MSinitClientPrg(cntxt,"user","main");
+ (void) MSinitClientPrg(cntxt,"user","main");
}
return msg;
diff --git a/monetdb5/mal/mal_session.h b/monetdb5/mal/mal_session.h
--- a/monetdb5/mal/mal_session.h
+++ b/monetdb5/mal/mal_session.h
@@ -13,7 +13,7 @@
mal_export str malBootstrap(void);
mal_export str MSserveClient(void *dummy);
-mal_export void MSinitClientPrg(Client cntxt, str mod, str nme);
+mal_export str MSinitClientPrg(Client cntxt, str mod, str nme);
mal_export void MSscheduleClient(str command, str challenge, bstream *fin,
stream *fout);
mal_export str MALreader(Client c);
diff --git a/monetdb5/mal/mal_stack.c b/monetdb5/mal/mal_stack.c
--- a/monetdb5/mal/mal_stack.c
+++ b/monetdb5/mal/mal_stack.c
@@ -60,10 +60,8 @@ newGlobalStack(int size)
MalStkPtr s;
s = (MalStkPtr) GDKzalloc(stackSize(size) + offsetof(MalStack, stk));
- if (!s) {
- GDKerror("newGlobalStack:"MAL_MALLOC_FAIL);
+ if (!s)
return NULL;
- }
s->stksize = size;
return s;
}
diff --git a/monetdb5/modules/kernel/algebra.c
b/monetdb5/modules/kernel/algebra.c
--- a/monetdb5/modules/kernel/algebra.c
+++ b/monetdb5/modules/kernel/algebra.c
@@ -97,22 +97,21 @@ CMDgen_group(BAT **result, BAT *gids, BA
}
-static gdk_return
+static str
slice(BAT **retval, BAT *b, lng start, lng end)
{
/* the internal BATslice requires exclusive end */
- if (start < 0) {
- GDKerror("CMDslice: start position of slice should >= 0\n");
- return GDK_FAIL;
- }
+ if (start < 0)
+ throw(MAL,"algebra.slice","start position of slice should >=
0\n");
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list