Changeset: af862dae1a0f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=af862dae1a0f
Modified Files:
        clients/Tests/exports.stable.out
        monetdb5/mal/Tests/tst008.stable.err
        monetdb5/mal/Tests/tst019.stable.err
        monetdb5/mal/Tests/tst038.stable.err
        monetdb5/mal/Tests/tst050.stable.err
        monetdb5/mal/Tests/tst275.stable.out
        monetdb5/mal/Tests/tst755.stable.err
        monetdb5/mal/Tests/tst760.stable.err
        monetdb5/mal/Tests/tst804.stable.err
        monetdb5/mal/Tests/tst900.stable.err
        monetdb5/mal/mal_resolve.c
        monetdb5/mal/mal_resolve.h
        monetdb5/optimizer/opt_aliases.c
        monetdb5/optimizer/opt_candidates.c
        monetdb5/optimizer/opt_coercion.c
        monetdb5/optimizer/opt_commonTerms.c
        monetdb5/optimizer/opt_constants.c
        monetdb5/optimizer/opt_costModel.c
        monetdb5/optimizer/opt_dataflow.c
        monetdb5/optimizer/opt_deadcode.c
        monetdb5/optimizer/opt_emptybind.c
        monetdb5/optimizer/opt_evaluate.c
        monetdb5/optimizer/opt_garbageCollector.c
        monetdb5/optimizer/opt_generator.c
        monetdb5/optimizer/opt_inline.c
        monetdb5/optimizer/opt_jit.c
        monetdb5/optimizer/opt_json.c
        monetdb5/optimizer/opt_macro.c
        monetdb5/optimizer/opt_matpack.c
        monetdb5/optimizer/opt_mergetable.c
        monetdb5/optimizer/opt_mitosis.c
        monetdb5/optimizer/opt_multiplex.c
        monetdb5/optimizer/opt_oltp.c
        monetdb5/optimizer/opt_postfix.c
        monetdb5/optimizer/opt_profiler.c
        monetdb5/optimizer/opt_projectionpath.c
        monetdb5/optimizer/opt_pushselect.c
        monetdb5/optimizer/opt_querylog.c
        monetdb5/optimizer/opt_reduce.c
        monetdb5/optimizer/opt_remap.c
        monetdb5/optimizer/opt_remoteQueries.c
        monetdb5/optimizer/opt_reorder.c
        monetdb5/optimizer/opt_support.c
        monetdb5/optimizer/opt_volcano.c
        monetdb5/optimizer/opt_wlc.c
        monetdb5/scheduler/run_adder.c
        sql/backends/monet5/sql_execute.c
        sql/backends/monet5/sql_scenario.c
        sql/backends/monet5/wlr.c
Branch: gdk_tracer
Log Message:

The chkTypes() now returns a proper exception message.
First exception is thrown only.


diffs (truncated from 699 to 300 lines):

diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -2071,7 +2071,7 @@ str chkDeclarations(MalBlkPtr mb);
 str chkFlow(MalBlkPtr mb);
 int chkInstruction(Module s, MalBlkPtr mb, InstrPtr p);
 str chkProgram(Module s, MalBlkPtr mb);
-void chkTypes(Module s, MalBlkPtr mb, int silent);
+str chkTypes(Module s, MalBlkPtr mb, int silent);
 str cleanupTraces(Client cntxt);
 void clearStack(MalStkPtr s);
 void clearTrace(Client cntxt);
diff --git a/monetdb5/mal/Tests/tst008.stable.err 
b/monetdb5/mal/Tests/tst008.stable.err
--- a/monetdb5/mal/Tests/tst008.stable.err
+++ b/monetdb5/mal/Tests/tst008.stable.err
@@ -38,7 +38,6 @@ QUERY = function foo();
         end foo;
 ERROR = !SyntaxException:parseError:io.printi;
         !SyntaxException:parseError:         ^'(' expected
-        !TypeException:user.foo[2]:'io.printi' undefined in:     io.printi();
 
 
 # 10:46:01 >  
diff --git a/monetdb5/mal/Tests/tst019.stable.err 
b/monetdb5/mal/Tests/tst019.stable.err
--- a/monetdb5/mal/Tests/tst019.stable.err
+++ b/monetdb5/mal/Tests/tst019.stable.err
@@ -76,8 +76,6 @@ QUERY = function welcome(lim:int):void;
         
         (x,y):= user.welcome2(1);
 ERROR = !TypeException:user.welcome[3]:type mismatch void := str
-        !TypeException:user.welcome0[3]:Multiple assignment mismatch
-        !TypeException:user.welcome4[2]:Multiple assignment mismatch
 
 # 15:16:11 >  
 # 15:16:11 >  "Done."
diff --git a/monetdb5/mal/Tests/tst038.stable.err 
b/monetdb5/mal/Tests/tst038.stable.err
--- a/monetdb5/mal/Tests/tst038.stable.err
+++ b/monetdb5/mal/Tests/tst038.stable.err
@@ -41,7 +41,6 @@ QUERY = #test the capability to deal wit
         #The call to tst2 fails at runtime
         user.tst2(b);
 ERROR = !TypeException:user.tst2[1]:'bat.append' undefined in:     
bat.append(b:bat[:int], "hello":str);
-        !TypeException:user.main[0]:Error in cloned function
         !TypeException:user.main[4]:'user.tst2' undefined in:     
user.tst2(b:bat[:int]);
 
 # 11:43:41 >  
diff --git a/monetdb5/mal/Tests/tst050.stable.err 
b/monetdb5/mal/Tests/tst050.stable.err
--- a/monetdb5/mal/Tests/tst050.stable.err
+++ b/monetdb5/mal/Tests/tst050.stable.err
@@ -56,11 +56,8 @@ QUERY = # Variables names may be tagged 
         l:flt := "wrong";
         end l;
 ERROR = !TypeException:user.g[1]:type mismatch sht := lng
-        !TypeException:user.h[1]:type mismatch lng := sht
-        !TypeException:user.k[1]:'bat.new' undefined in:     y:bat[:str] := 
bat.new(:int);
-        !TypeException:user.l[1]:type mismatch flt := str
 
-# 22:14:56 >  
-# 22:14:56 >  "Done."
-# 22:14:56 >  
+# 14:22:43 >  
+# 14:22:43 >  "Done."
+# 14:22:43 >  
 
diff --git a/monetdb5/mal/Tests/tst275.stable.out 
b/monetdb5/mal/Tests/tst275.stable.out
--- a/monetdb5/mal/Tests/tst275.stable.out
+++ b/monetdb5/mal/Tests/tst275.stable.out
@@ -33,8 +33,8 @@ stdout of test 'tst275` in directory 'mo
 # t    t       t  # name
 # void str     str  # type
 #--------------------------#
-[ 0@0, "batId",        "tmp_264"       ]
-[ 1@0, "batCacheid",   "180"   ]
+[ 0@0, "batId",        "tmp_267"       ]
+[ 1@0, "batCacheid",   "183"   ]
 [ 2@0, "tparentid",    "0"     ]
 [ 3@0, "batSharecnt",  "0"     ]
 [ 4@0, "batCount",     "0"     ]
@@ -69,7 +69,7 @@ stdout of test 'tst275` in directory 'mo
 [ 33@0,        "tail.size",    "1024"  ]
 [ 34@0,        "tail.storage", "malloced"      ]
 [ 35@0,        "tail.newstorage",      "malloced"      ]
-[ 36@0,        "tail.filename",        "02/264.tail"   ]
+[ 36@0,        "tail.filename",        "02/267.tail"   ]
 [ 37@0,        "tvheap->dirty",        "clean" ]
 #~EndVariableOutput~#
 #--------------------------#
diff --git a/monetdb5/mal/Tests/tst755.stable.err 
b/monetdb5/mal/Tests/tst755.stable.err
--- a/monetdb5/mal/Tests/tst755.stable.err
+++ b/monetdb5/mal/Tests/tst755.stable.err
@@ -42,7 +42,6 @@ QUERY = # Polymorphic function tests
         c:= bat.new(:str);
         user.test(c,"hello");
 ERROR = !TypeException:user.test[1]:'calc.+' undefined in:     k:any := 
calc.+(1:int, "wrong":str);
-        !TypeException:user.main[0]:Error in cloned function
         !TypeException:user.main[5]:'user.test' undefined in:     
user.test(c:bat[:str], "hello":str);
 
 # 09:29:50 >  
diff --git a/monetdb5/mal/Tests/tst760.stable.err 
b/monetdb5/mal/Tests/tst760.stable.err
--- a/monetdb5/mal/Tests/tst760.stable.err
+++ b/monetdb5/mal/Tests/tst760.stable.err
@@ -41,7 +41,6 @@ QUERY = # Polymorphic function tests
         c:= bat.new(:str);
         user.test(c,"hello");
 ERROR = !TypeException:user.test[1]:'calc.+' undefined in:     k:any := 
calc.+(1:int, c:str);
-        !TypeException:user.main[0]:Error in cloned function
         !TypeException:user.main[4]:'user.test' undefined in:     
user.test(c:bat[:str], "hello":str);
 
 # 09:29:51 >  
diff --git a/monetdb5/mal/Tests/tst804.stable.err 
b/monetdb5/mal/Tests/tst804.stable.err
--- a/monetdb5/mal/Tests/tst804.stable.err
+++ b/monetdb5/mal/Tests/tst804.stable.err
@@ -44,7 +44,6 @@ ERROR = !SyntaxException:parseError:func
         !SyntaxException:parseError:                      ^<module> name not 
defined
         !SyntaxException:parseError:end message;
         !SyntaxException:parseError:   ^non matching end label
-        !TypeException:user.foo[1]:'wrong.message' undefined in:     
wrong.message();
 
 # 15:26:53 >  
 # 15:26:53 >  "Done."
diff --git a/monetdb5/mal/Tests/tst900.stable.err 
b/monetdb5/mal/Tests/tst900.stable.err
--- a/monetdb5/mal/Tests/tst900.stable.err
+++ b/monetdb5/mal/Tests/tst900.stable.err
@@ -45,7 +45,6 @@ ERROR = !SyntaxException:parseError:d:= 
         !SyntaxException:parseError:    ^operator expected
         !SyntaxException:parseError:a:= b [+] b;
         !SyntaxException:parseError:      ^operator expected
-        !TypeException:user.foo[2]:'multiplex.+' undefined in:     x:any := 
multiplex.+(b:bat[:lng], b:bat[:lng]);
 
 # 13:26:15 >  
 # 13:26:15 >  "Done."
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
@@ -640,20 +640,25 @@ typeChecker(Module scope, MalBlkPtr mb, 
  * as well, because a dynamically typed instruction should later on not
  * lead to a re-check when it was already fully analyzed.
  */
-void
+str
 chkTypes(Module s, MalBlkPtr mb, int silent)
 {
        InstrPtr p = 0;
        int i;
+       str msg= MAL_SUCCEED;
 
        for (i = 0; i < mb->stop; i++) {
                p = getInstrPtr(mb, i);
                assert (p != NULL);
                if (p->typechk != TYPE_RESOLVED)
                        typeChecker(s, mb, p, i, silent);
-               if (mb->errors)
-                       return;
+               if (mb->errors){
+                       msg = mb->errors;
+                       mb->errors = NULL;
+                       return msg;
+               }
        }
+       return msg;
 }
 
 /*
@@ -681,12 +686,9 @@ chkProgram(Module s, MalBlkPtr mb)
                mb->typefixed = mb->stop == chk; ignored END */
 /*     if( mb->flowfixed == 0)*/
 
-       chkTypes(s, mb, FALSE);
-       if (mb->errors)
-               return msg;
-       msg = chkFlow(mb);
-       if (mb->errors)
-               return msg;
+       msg = chkTypes(s, mb, FALSE);
+       if( msg == MAL_SUCCEED)
+               msg = chkFlow(mb);
        if(msg == MAL_SUCCEED)
                msg = chkDeclarations(mb);
        return msg;
diff --git a/monetdb5/mal/mal_resolve.h b/monetdb5/mal/mal_resolve.h
--- a/monetdb5/mal/mal_resolve.h
+++ b/monetdb5/mal/mal_resolve.h
@@ -18,7 +18,7 @@
 
 mal_export str chkProgram(Module s, MalBlkPtr mb);
 mal_export int chkInstruction(Module s, MalBlkPtr mb, InstrPtr p);
-mal_export void chkTypes(Module s, MalBlkPtr mb, int silent);
+mal_export str chkTypes(Module s, MalBlkPtr mb, int silent);
 mal_export void typeChecker(Module scope, MalBlkPtr mb, InstrPtr p, int p_idx, 
int silent);
 
 /*
diff --git a/monetdb5/optimizer/opt_aliases.c b/monetdb5/optimizer/opt_aliases.c
--- a/monetdb5/optimizer/opt_aliases.c
+++ b/monetdb5/optimizer/opt_aliases.c
@@ -73,7 +73,7 @@ OPTaliasesImplementation(Client cntxt, M
 
        /* Defense line against incorrect plans */
        /* Plan is unaffected */
-       //chkTypes(cntxt->usermodule, mb, FALSE);
+       // if( msg == MAL_SUCCEED) msg = chkTypes(cntxt->usermodule, mb, FALSE);
        // if ( msg == MAL_SUCCEED) msg = chkFlow(mb);
        // if ( msg == MAL_SUCCEED) msg = chkDeclarations(mb);
        //
diff --git a/monetdb5/optimizer/opt_candidates.c 
b/monetdb5/optimizer/opt_candidates.c
--- a/monetdb5/optimizer/opt_candidates.c
+++ b/monetdb5/optimizer/opt_candidates.c
@@ -82,7 +82,7 @@ OPTcandidatesImplementation(Client cntxt
 
     /* Defense line against incorrect plans */
        /* plan remains unaffected */
-       //chkTypes(cntxt->usermodule, mb, FALSE);
+       // if( msg == MAL_SUCCEED) msg = chkTypes(cntxt->usermodule, mb, FALSE);
        // if( msg == MAL_SUCCEED) msg = chkFlow(mb);
        // if( msg == MAL_SUCCEED) msg = chkDeclarations(mb);
 
diff --git a/monetdb5/optimizer/opt_coercion.c 
b/monetdb5/optimizer/opt_coercion.c
--- a/monetdb5/optimizer/opt_coercion.c
+++ b/monetdb5/optimizer/opt_coercion.c
@@ -163,7 +163,7 @@ OPTcoercionImplementation(Client cntxt,M
 
     /* Defense line against incorrect plans */
     if( actions > 0){
-               chkTypes(cntxt->usermodule, mb, FALSE);
+               msg = chkTypes(cntxt->usermodule, mb, FALSE);
         if( msg == MAL_SUCCEED) msg = chkFlow(mb);
         if( msg == MAL_SUCCEED) msg = chkDeclarations(mb);
     } 
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
@@ -202,7 +202,7 @@ OPTcommonTermsImplementation(Client cntx
                        freeInstruction(old[i]);
     /* Defense line against incorrect plans */
     if( actions > 0){
-        chkTypes(cntxt->usermodule, mb, FALSE);
+        msg = chkTypes(cntxt->usermodule, mb, FALSE);
         if( msg == MAL_SUCCEED) 
                        msg = chkFlow(mb);
         if( msg == MAL_SUCCEED) 
diff --git a/monetdb5/optimizer/opt_constants.c 
b/monetdb5/optimizer/opt_constants.c
--- a/monetdb5/optimizer/opt_constants.c
+++ b/monetdb5/optimizer/opt_constants.c
@@ -85,7 +85,7 @@ OPTconstantsImplementation(Client cntxt,
 
     /* Defense line against incorrect plans */
        /* Plan remains unaffected */
-       //chkTypes(cntxt->usermodule, mb, FALSE);
+       // msg = chkTypes(cntxt->usermodule, mb, FALSE);
        // if( msg == MAL_SUCCEED) msg = chkFlow(mb);
        // if( msg == MAL_SUCCEED) msg = chkDeclarations(mb);
     
diff --git a/monetdb5/optimizer/opt_costModel.c 
b/monetdb5/optimizer/opt_costModel.c
--- a/monetdb5/optimizer/opt_costModel.c
+++ b/monetdb5/optimizer/opt_costModel.c
@@ -144,7 +144,7 @@ OPTcostModelImplementation(Client cntxt,
        }
     /* Defense line against incorrect plans */
        /* plan remains unaffected */
-       //chkTypes(cntxt->usermodule, mb, FALSE);
+       //c msg = hkTypes(cntxt->usermodule, mb, FALSE);
        // if( msg == MAL_SUCCEED)  msg = chkFlow(mb);
        // if( msg == MAL_SUCCEED) msg = chkDeclarations(mb);
     /* keep all actions taken as a post block comment */
diff --git a/monetdb5/optimizer/opt_dataflow.c 
b/monetdb5/optimizer/opt_dataflow.c
--- a/monetdb5/optimizer/opt_dataflow.c
+++ b/monetdb5/optimizer/opt_dataflow.c
@@ -286,7 +286,7 @@ OPTdataflowImplementation(Client cntxt, 
                        freeInstruction(old[i]);
     /* Defense line against incorrect plans */
     if( actions > 0){
-        chkTypes(cntxt->usermodule, mb, FALSE);
+        msg = chkTypes(cntxt->usermodule, mb, FALSE);
         if( msg == MAL_SUCCEED)
                        msg = chkFlow(mb);
         if( msg == MAL_SUCCEED) 
diff --git a/monetdb5/optimizer/opt_deadcode.c 
b/monetdb5/optimizer/opt_deadcode.c
--- a/monetdb5/optimizer/opt_deadcode.c
+++ b/monetdb5/optimizer/opt_deadcode.c
@@ -129,7 +129,7 @@ OPTdeadcodeImplementation(Client cntxt, 
     /* Defense line against incorrect plans */
        /* we don't create or change existing structures */
     //if( actions > 0){
-        chkTypes(cntxt->usermodule, mb, FALSE);
+        msg = chkTypes(cntxt->usermodule, mb, FALSE);
         if( msg == MAL_SUCCEED)
                        msg = chkFlow(mb);
         if( msg == MAL_SUCCEED)
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
@@ -254,7 +254,7 @@ OPTemptybindImplementation(Client cntxt,
        GDKfree(empty);
        GDKfree(updated);
     /* Defense line against incorrect plans */
-       chkTypes(cntxt->usermodule, mb, FALSE);
+       msg = chkTypes(cntxt->usermodule, mb, FALSE);
        if( msg == MAL_SUCCEED)
                msg = chkFlow(mb);
        if( msg == MAL_SUCCEED) 
diff --git a/monetdb5/optimizer/opt_evaluate.c 
b/monetdb5/optimizer/opt_evaluate.c
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to