Changeset: 99d40ce7b757 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=99d40ce7b757
Modified Files:
monetdb5/extras/mal_optimizer_template/opt_sql_append.c
monetdb5/mal/mal_builder.c
monetdb5/optimizer/opt_commonTerms.c
monetdb5/optimizer/opt_emptybind.c
monetdb5/optimizer/opt_macro.c
monetdb5/scheduler/run_adder.c
Branch: default
Log Message:
Added a few missing exception catchers and avoid using NULL instrPtr.
diffs (201 lines):
diff --git a/monetdb5/extras/mal_optimizer_template/opt_sql_append.c
b/monetdb5/extras/mal_optimizer_template/opt_sql_append.c
--- a/monetdb5/extras/mal_optimizer_template/opt_sql_append.c
+++ b/monetdb5/extras/mal_optimizer_template/opt_sql_append.c
@@ -294,8 +294,8 @@ str OPTsql_append(Client cntxt, MalBlkPt
actions= OPTsql_appendImplementation(cntxt, mb,stk,p);
/* Defense line against incorrect plans */
- chkTypes(cntxt->usermodule, mb, FALSE);
- chkFlow(mb);
+ msg = chkTypes(cntxt->usermodule, mb, FALSE);
+ if( msg == MAL_SUCCEED) msg = chkFlow(mb);
if( msg == MAL_SUCCEED) msg = chkDeclarations(mb);
#ifdef DEBUG_OPT_OPTIMIZERS
mnstr_printf(cntxt->fdout,"=FINISHED sql_append %d\n",actions);
diff --git a/monetdb5/mal/mal_builder.c b/monetdb5/mal/mal_builder.c
--- a/monetdb5/mal/mal_builder.c
+++ b/monetdb5/mal/mal_builder.c
@@ -24,9 +24,14 @@ InstrPtr
newAssignment(MalBlkPtr mb)
{
InstrPtr q = newInstruction(mb,NULL,NULL);
+ int k;
+
assert(q);
- if ((getArg(q,0)= newTmpVariable(mb,TYPE_any)) < 0)
+ k = newTmpVariable(mb,TYPE_any);
+ if (k < 0) {
addMalException(mb, createException(MAL, "newAssignment", "Can
not allocate variable"));
+ } else
+ getArg(q,0) = k;
pushInstruction(mb, q);
return q;
}
@@ -66,9 +71,14 @@ InstrPtr
newReturnStmt(MalBlkPtr mb)
{
InstrPtr q = newInstruction(mb, NULL, NULL);
+ int k;
+
assert(q);
- if ((getArg(q,0)= newTmpVariable(mb,TYPE_any)) < 0 )
+ k = newTmpVariable(mb,TYPE_any);
+ if (k < 0 )
addMalException(mb, createException(MAL, "newReturnStmt", "Can
not allocate return variable"));
+ else
+ getArg(q,0) = k;
q->barrier= RETURNsymbol;
pushInstruction(mb, q);
return q;
@@ -117,13 +127,18 @@ newCatchStmt(MalBlkPtr mb, str nme)
{
InstrPtr q = newAssignment(mb);
int i= findVariable(mb,nme);
+ int k;
assert(q);
q->barrier = CATCHsymbol;
if ( i< 0) {
- if ((getArg(q,0)= newVariable(mb, nme, strlen(nme),TYPE_str)) <
0 )
+ k = newVariable(mb, nme, strlen(nme),TYPE_str);
+ if (k<0)
addMalException(mb, createException(MAL,
"newCatchStmt", "Can not allocate variable"));
- setVarUDFtype(mb,getArg(q,0));
+ else{
+ getArg(q,0) = k;
+ setVarUDFtype(mb,getArg(q,0));
+ }
} else getArg(q,0) = i;
return q;
}
@@ -133,12 +148,16 @@ newRaiseStmt(MalBlkPtr mb, str nme)
{
InstrPtr q = newAssignment(mb);
int i= findVariable(mb,nme);
+ int k;
assert(q);
q->barrier = RAISEsymbol;
if ( i< 0) {
- if ((getArg(q,0)= newVariable(mb, nme, strlen(nme),TYPE_str)) <
0 || mb->errors != MAL_SUCCEED)
+ k = newVariable(mb, nme, strlen(nme),TYPE_str);
+ if (k< 0 || mb->errors != MAL_SUCCEED)
addMalException(mb, createException(MAL,
"newRaiseStmt", "Can not allocate variable"));
+ else
+ getArg(q,0) = k;
} else
getArg(q,0) = i;
return q;
@@ -149,12 +168,16 @@ newExitStmt(MalBlkPtr mb, str nme)
{
InstrPtr q = newAssignment(mb);
int i= findVariable(mb,nme);
+ int k;
assert(q);
q->barrier = EXITsymbol;
if ( i< 0) {
- if ((getArg(q,0)= newVariable(mb, nme,strlen(nme),TYPE_str)) <
0 )
+ k= newVariable(mb, nme,strlen(nme),TYPE_str);
+ if (k < 0 )
addMalException(mb, createException(MAL, "newExitStmt",
"Can not allocate variable"));
+ else
+ getArg(q,0) = k;
} else
getArg(q,0) = i;
return q;
diff --git a/monetdb5/optimizer/opt_commonTerms.c
b/monetdb5/optimizer/opt_commonTerms.c
--- a/monetdb5/optimizer/opt_commonTerms.c
+++ b/monetdb5/optimizer/opt_commonTerms.c
@@ -223,7 +223,7 @@ OPTcommonTermsImplementation(Client cntx
if( actions > 0){
msg = chkTypes(cntxt->usermodule, mb, FALSE);
if (!msg)
- chkFlow(mb);
+ msg = chkFlow(mb);
if (!msg)
msg = chkDeclarations(mb);
}
diff --git a/monetdb5/optimizer/opt_emptybind.c
b/monetdb5/optimizer/opt_emptybind.c
--- a/monetdb5/optimizer/opt_emptybind.c
+++ b/monetdb5/optimizer/opt_emptybind.c
@@ -20,15 +20,6 @@
#include "opt_deadcode.h"
#include "mal_builder.h"
-#define addresult(I)
\
- do {
\
- int tpe = getVarType(mb,getArg(p,I)); \
- q= newStmt(mb, batRef, newRef);
\
- getArg(q,0)= getArg(p,I);
\
- q = pushType(mb, q, getBatType(tpe)); \
- empty[getArg(q,0)]= i;
\
- } while (0)
-
#define emptyresult(I)
\
do {
\
int tpe = getVarType(mb,getArg(p,I)); \
@@ -37,10 +28,11 @@
setFunctionId(p,newRef);
\
p->argc = p->retc;
\
p = pushType(mb,p, getBatType(tpe)); \
- setVarType(mb, getArg(p,0), tpe);
\
- setVarFixed(mb, getArg(p,0));
\
- empty[getArg(p,0)]= i;
\
- } while (0)
+ if( p) {
\
+ setVarType(mb, getArg(p,0), tpe);
\
+ setVarFixed(mb, getArg(p,0));
\
+ empty[getArg(p,0)]= i;
\
+ } } while (0)
str
diff --git a/monetdb5/optimizer/opt_macro.c b/monetdb5/optimizer/opt_macro.c
--- a/monetdb5/optimizer/opt_macro.c
+++ b/monetdb5/optimizer/opt_macro.c
@@ -477,7 +477,7 @@ OPTorcamImplementation(Client cntxt, Mal
str OPTmacro(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p){
Symbol t;
- str msg,mod,fcn;
+ str msg = MAL_SUCCEED, mod, fcn;
lng clk= GDKusec();
char buf[256];
lng usec = GDKusec();
@@ -508,8 +508,8 @@ str OPTmacro(Client cntxt, MalBlkPtr mb,
}
/* Defense line against incorrect plans */
- chkTypes(cntxt->usermodule, mb, FALSE);
- chkFlow(mb);
+ msg = chkTypes(cntxt->usermodule, mb, FALSE);
+ if( msg == MAL_SUCCEED) msg = chkFlow(mb);
if( msg == MAL_SUCCEED) msg = chkDeclarations(mb);
usec += GDKusec() - clk;
/* keep all actions taken as a post block comment */
@@ -550,8 +550,8 @@ str OPTorcam(Client cntxt, MalBlkPtr mb,
msg= OPTorcamImplementation(cntxt,mb,stk,p);
if( msg)
return msg;
- chkTypes(cntxt->usermodule, mb, FALSE);
- chkFlow(mb);
+ msg = chkTypes(cntxt->usermodule, mb, FALSE);
+ if( msg == MAL_SUCCEED) msg = chkFlow(mb);
if( msg == MAL_SUCCEED) msg = chkDeclarations(mb);
usec += GDKusec() - clk;
/* keep all actions taken as a post block comment */
diff --git a/monetdb5/scheduler/run_adder.c b/monetdb5/scheduler/run_adder.c
--- a/monetdb5/scheduler/run_adder.c
+++ b/monetdb5/scheduler/run_adder.c
@@ -121,8 +121,8 @@ RUNadder(Client cntxt, MalBlkPtr mb, Mal
mb->stop += (oldtop-pc)-1;
/* check new statments for sanity */
- chkTypes(cntxt->usermodule, mb, FALSE);
- chkFlow(mb);
+ msg = chkTypes(cntxt->usermodule, mb, FALSE);
+ if( msg == MAL_SUCCEED) msg = chkFlow(mb);
if( msg == MAL_SUCCEED) msg = chkDeclarations(mb);
GDKfree(old);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list