Changeset: 790f2ac1d95e for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=790f2ac1d95e
Modified Files:
        clients/ChangeLog
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        clients/Tests/exports.stable.out
        clients/mapiclient/Makefile.ag
        clients/mapiclient/mclient.c
        clients/mapiclient/mhelp.c
        gdk/gdk_value.c
        monetdb5/ChangeLog.Dec2016
        monetdb5/extras/mal_optimizer_template/Tests/All
        
monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows
        monetdb5/mal/mal_debugger.c
        monetdb5/mal/mal_function.c
        monetdb5/mal/mal_instruction.c
        monetdb5/mal/mal_instruction.h
        monetdb5/mal/mal_interpreter.c
        monetdb5/mal/mal_listing.c
        monetdb5/mal/mal_type.c
        monetdb5/mal/mal_type.h
        monetdb5/modules/kernel/bat5.c
        monetdb5/modules/mal/iterator.c
        monetdb5/modules/mal/mdb.c
        monetdb5/modules/mal/mdb.h
        monetdb5/modules/mal/mdb.mal
        monetdb5/optimizer/Tests/All
        monetdb5/optimizer/opt_support.c
        monetdb5/optimizer/optimizer.c
        monetdb5/optimizer/optimizer.h
        monetdb5/optimizer/optimizer.mal
        sql/backends/monet5/Tests/pyapi10.stable.err
        sql/backends/monet5/Tests/pyapi10.stable.out
        sql/backends/monet5/Tests/pyapi25.stable.err
        sql/backends/monet5/Tests/pyapi25.stable.out
        sql/backends/monet5/UDF/pyapi/pytypes.c
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql_execute.c
        sql/backends/monet5/sql_gencode.c
        sql/benchmarks/ssbm/Tests/All
        sql/benchmarks/tpch/Tests/All
        sql/common/sql_mem.c
        sql/jdbc/tests/Tests/All
        sql/server/rel_exp.c
        sql/server/rel_optimizer.c
        sql/server/rel_select.c
        sql/server/rel_updates.c
        sql/server/sql_atom.c
        sql/server/sql_atom.h
        sql/server/sql_mvc.c
        
sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out.Windows
        sql/test/BugTracker-2016/Tests/All
        tools/merovingian/client/monetdb.c
        tools/merovingian/daemon/discoveryrunner.c
        tools/merovingian/daemon/multiplex-funnel.c
        tools/merovingian/utils/glob.c
        tools/merovingian/utils/glob.h
Branch: oltp
Log Message:

Merge with default


diffs (truncated from 2304 to 300 lines):

diff --git a/clients/ChangeLog b/clients/ChangeLog
--- a/clients/ChangeLog
+++ b/clients/ChangeLog
@@ -2,5 +2,5 @@
 # This file is updated with Maddlog
 
 * Sun Oct 30 2016 Martin Kersten <m...@cwi.nl>
-- Added an more elaborate \help command for SQL expressions.
+- Added a more elaborate \help command for SQL expressions.
 
diff --git a/clients/Tests/MAL-signatures.stable.out 
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -5661,43 +5661,11 @@ Ready.
 [ "batcalc",   "sign", "pattern batcalc.sign(b:bat[:sht]):bat[:bte] ", 
"CMDbatSIGN;",  "Unary sign (-1,0,1) over the tail of the bat"  ]
 [ "batcalc",   "sign", "pattern 
batcalc.sign(b:bat[:sht],s:bat[:oid]):bat[:bte] ",     "CMDbatSIGN;",  "Unary 
sign (-1,0,1) over the tail of the bat with candidates list"     ]
 [ "batcalc",   "sqlblob",      "command 
batcalc.sqlblob(v:bat[:str]):bat[:sqlblob] ",  "batstr_2_sqlblob;",    "cast to 
sqlblob"       ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:bit]):bat[:str] ",  
"CMDconvertsignal_str;",        "cast from bit to str, signal error on 
overflow"        ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:bit],s:bat[:oid]):bat[:str] 
",      "CMDconvertsignal_str;",        "cast from bit to str with candidates 
list, signal error on overflow"   ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:bte]):bat[:str] ",  
"CMDconvertsignal_str;",        "cast from bte to str, signal error on 
overflow"        ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:bte],s:bat[:oid]):bat[:str] 
",      "CMDconvertsignal_str;",        "cast from bte to str with candidates 
list, signal error on overflow"   ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:dbl]):bat[:str] ",  
"CMDconvertsignal_str;",        "cast from dbl to str, signal error on 
overflow"        ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:dbl],s:bat[:oid]):bat[:str] 
",      "CMDconvertsignal_str;",        "cast from dbl to str with candidates 
list, signal error on overflow"   ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:flt]):bat[:str] ",  
"CMDconvertsignal_str;",        "cast from flt to str, signal error on 
overflow"        ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:flt],s:bat[:oid]):bat[:str] 
",      "CMDconvertsignal_str;",        "cast from flt to str with candidates 
list, signal error on overflow"   ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:int]):bat[:str] ",  
"CMDconvertsignal_str;",        "cast from int to str, signal error on 
overflow"        ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:int],s:bat[:oid]):bat[:str] 
",      "CMDconvertsignal_str;",        "cast from int to str with candidates 
list, signal error on overflow"   ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:lng]):bat[:str] ",  
"CMDconvertsignal_str;",        "cast from lng to str, signal error on 
overflow"        ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:lng],s:bat[:oid]):bat[:str] 
",      "CMDconvertsignal_str;",        "cast from lng to str with candidates 
list, signal error on overflow"   ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:oid]):bat[:str] ",  
"CMDconvertsignal_str;",        "cast from oid to str, signal error on 
overflow"        ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:oid],s:bat[:oid]):bat[:str] 
",      "CMDconvertsignal_str;",        "cast from oid to str with candidates 
list, signal error on overflow"   ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:sht]):bat[:str] ",  
"CMDconvertsignal_str;",        "cast from sht to str, signal error on 
overflow"        ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:sht],s:bat[:oid]):bat[:str] 
",      "CMDconvertsignal_str;",        "cast from sht to str with candidates 
list, signal error on overflow"   ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:str]):bat[:str] ",  
"CMDconvertsignal_str;",        "cast from str to str, signal error on 
overflow"        ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:str],s:bat[:oid]):bat[:str] 
",      "CMDconvertsignal_str;",        "cast from str to str with candidates 
list, signal error on overflow"   ]
+[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:any]):bat[:str] ",  
"CMDconvertsignal_str;",        "cast from any to str, signal error on 
overflow"        ]
+[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:any],s:bat[:oid]):bat[:str] 
",      "CMDconvertsignal_str;",        "cast from any to str with candidates 
list, signal error on overflow"   ]
 [ "batcalc",   "str",  "pattern 
batcalc.str(eclass:int,d1:int,s1:int,has_tz:int,v:bat[:any_1],digits:int):bat[:str]
 ", "SQLbatstr_cast;",      "cast to string and check for overflow" ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:bit]):bat[:str] ",  "CMDconvert_str;",      "cast 
from bit to str"  ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:bit],s:bat[:oid]):bat[:str] ",      
"CMDconvert_str;",      "cast from bit to str with candidates list"     ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:bte]):bat[:str] ",  "CMDconvert_str;",      "cast 
from bte to str"  ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:bte],s:bat[:oid]):bat[:str] ",      
"CMDconvert_str;",      "cast from bte to str with candidates list"     ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:dbl]):bat[:str] ",  "CMDconvert_str;",      "cast 
from dbl to str"  ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:dbl],s:bat[:oid]):bat[:str] ",      
"CMDconvert_str;",      "cast from dbl to str with candidates list"     ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:flt]):bat[:str] ",  "CMDconvert_str;",      "cast 
from flt to str"  ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:flt],s:bat[:oid]):bat[:str] ",      
"CMDconvert_str;",      "cast from flt to str with candidates list"     ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:int]):bat[:str] ",  "CMDconvert_str;",      "cast 
from int to str"  ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:int],s:bat[:oid]):bat[:str] ",      
"CMDconvert_str;",      "cast from int to str with candidates list"     ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:lng]):bat[:str] ",  "CMDconvert_str;",      "cast 
from lng to str"  ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:lng],s:bat[:oid]):bat[:str] ",      
"CMDconvert_str;",      "cast from lng to str with candidates list"     ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:oid]):bat[:str] ",  "CMDconvert_str;",      "cast 
from oid to str"  ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:oid],s:bat[:oid]):bat[:str] ",      
"CMDconvert_str;",      "cast from oid to str with candidates list"     ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:sht]):bat[:str] ",  "CMDconvert_str;",      "cast 
from sht to str"  ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:sht],s:bat[:oid]):bat[:str] ",      
"CMDconvert_str;",      "cast from sht to str with candidates list"     ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:str]):bat[:str] ",  "CMDconvert_str;",      "cast 
from str to str"  ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:str],s:bat[:oid]):bat[:str] ",      
"CMDconvert_str;",      "cast from str to str with candidates list"     ]
+[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:any]):bat[:str] ",  "CMDconvert_str;",      "cast 
from any to str"  ]
+[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:any],s:bat[:oid]):bat[:str] ",      
"CMDconvert_str;",      "cast from any to str with candidates list"     ]
 [ "batcalc",   "strings",      "command batcalc.strings(v:bat[:str]):bat[:str] 
",      "BATSTRstrings;",       "Return the strings"    ]
 [ "batcalc",   "sub_noerror",  "pattern 
batcalc.sub_noerror(b1:bat[:bte],b2:bat[:bte]):bat[:bte] ",    "CMDbatSUB;",   
"Return B1 - B2, overflow causes NIL value"     ]
 [ "batcalc",   "sub_noerror",  "pattern 
batcalc.sub_noerror(b1:bat[:bte],b2:bat[:bte],s:bat[:oid]):bat[:bte] ",        
"CMDbatSUB;",   "Return B1 - B2 with candidates list, overflow causes NIL 
value"        ]
@@ -7329,16 +7297,7 @@ Ready.
 [ "calc",      "sqlblob",      "command calc.sqlblob(b:sqlblob):sqlblob ",     
"BLOBblob_blob;",       ""      ]
 [ "calc",      "sqlblob",      "command calc.sqlblob(s:str):sqlblob ", 
"BLOBsqlblob_fromstr;", ""      ]
 [ "calc",      "sqlblob",      "command calc.sqlblob(v:str):sqlblob ", 
"str_2_sqlblob;",       "cast to sqlblob"       ]
-[ "calc",      "str",  "pattern calc.str(v:bit):str ", "CMDvarCONVERT;",       
"Cast VALUE to str"     ]
-[ "calc",      "str",  "pattern calc.str(v:bte):str ", "CMDvarCONVERT;",       
"Cast VALUE to str"     ]
-[ "calc",      "str",  "pattern calc.str(v:dbl):str ", "CMDvarCONVERT;",       
"Cast VALUE to str"     ]
-[ "calc",      "str",  "pattern calc.str(v:flt):str ", "CMDvarCONVERT;",       
"Cast VALUE to str"     ]
-[ "calc",      "str",  "pattern calc.str(v:int):str ", "CMDvarCONVERT;",       
"Cast VALUE to str"     ]
-[ "calc",      "str",  "pattern calc.str(v:lng):str ", "CMDvarCONVERT;",       
"Cast VALUE to str"     ]
-[ "calc",      "str",  "pattern calc.str(v:oid):str ", "CMDvarCONVERT;",       
"Cast VALUE to str"     ]
-[ "calc",      "str",  "pattern calc.str(v:sht):str ", "CMDvarCONVERT;",       
"Cast VALUE to str"     ]
-[ "calc",      "str",  "pattern calc.str(v:str):str ", "CMDvarCONVERT;",       
"Cast VALUE to str"     ]
-[ "calc",      "str",  "pattern calc.str(v:void):str ",        
"CMDvarCONVERT;",       "Cast VALUE to str"     ]
+[ "calc",      "str",  "pattern calc.str(v:any):str ", "CMDvarCONVERT;",       
"Cast VALUE to str"     ]
 [ "calc",      "str",  "command calc.str(v:date):str ",        
"SQLdate_2_str;",       "cast date to str"      ]
 [ "calc",      "str",  "command calc.str(v:sqlblob):str ",     
"SQLsqlblob_2_str;",    "cast sqlblob to str"   ]
 [ "calc",      "str",  "pattern 
calc.str(eclass:int,d1:int,s1:int,has_tz:int,v:any_1,digits:int):str ",        
"SQLstr_cast;", "cast to string and check for overflow" ]
@@ -7962,7 +7921,6 @@ Ready.
 [ "mdb",       "getStackFrame",        "pattern mdb.getStackFrame() 
(X_0:bat[:str],X_1:bat[:str]) ",   "MDBgetStackFrame;",    "Collect variable 
binding of current (n-th) stack frame."       ]
 [ "mdb",       "getStackFrame",        "pattern mdb.getStackFrame(i:int) 
(X_0:bat[:str],X_1:bat[:str]) ",      "MDBgetStackFrameN;",   ""      ]
 [ "mdb",       "getStackTrace",        "pattern mdb.getStackTrace() 
(X_0:bat[:int],X_1:bat[:str]) ",   "MDBStkTrace;", ""      ]
-[ "mdb",       "grab", "pattern mdb.grab():void ",     "mdbGrab;",     "Call 
debugger for a suspended process."        ]
 [ "mdb",       "inspect",      "pattern mdb.inspect(mod:str,fcn:str):void ",   
"MDBinspect;",  "Run the debugger on a specific function"       ]
 [ "mdb",       "list", "pattern mdb.list(M:str,F:str):void ",  "MDBlist3;",    
"Dump the routine M.F on standard out." ]
 [ "mdb",       "list", "pattern mdb.list():void ",     "MDBlist;",     "Dump 
the current routine on standard out."     ]
@@ -7973,14 +7931,11 @@ Ready.
 [ "mdb",       "setDebug",     "command mdb.setDebug(flg:str):int ",   
"MDBsetDebugStr;",      "Set the kernel debugging bit-set and return its 
previous value.\nThe recognized options are: threads, memory, properties,\nio, 
transactions, modules, algorithms, estimates."  ]
 [ "mdb",       "setTrace",     "pattern mdb.setTrace(b:bit):void ",    
"MDBsetTrace;", "Turn on/off tracing of current routine"        ]
 [ "mdb",       "setTrace",     "pattern mdb.setTrace(b:str):void ",    
"MDBsetVarTrace;",      "Turn on/off tracing of a variable "    ]
-[ "mdb",       "setTrap",      "pattern 
mdb.setTrap(mod:str,fcn:str,b:bit):void ",     "MDBtrapFunction;",     "Suspend 
upon a call to the MAL function."      ]
-[ "mdb",       "setTrap",      "pattern mdb.setTrap(idx:int):void ",   
"mdbTrapClient;",       "Call debugger for a specific process." ]
 [ "mdb",       "start",        "pattern mdb.start():void ",    "MDBstart;",    
"Start interactive debugger"    ]
 [ "mdb",       "start",        "pattern mdb.start(clientid:int):void ",        
"MDBstart;",    "Start interactive debugger on a client"        ]
 [ "mdb",       "start",        "pattern mdb.start(mod:str,fcn:str):void ",     
"MDBstartFactory;",     "Start interactive debugger on a running factory"       
]
 [ "mdb",       "stop", "pattern mdb.stop():void ",     "MDBstop;",     "Stop 
the interactive debugger" ]
 [ "mdb",       "traceOptimizer",       "command 
mdb.traceOptimizer(flg:str):void ",    "OPTsetDebugStr;",      "Otherwise it is 
considered a request to trace the optimizers,\nwhich requires a comma separated 
list or pipeline name."        ]
-[ "mdb",       "trap", "pattern mdb.trap():void ",     "mdbTrap;",     "A 
suspended process for debugging."    ]
 [ "mdb",       "var",  "pattern mdb.var(M:str,F:str):void ",   "MDBvar3;",     
"Dump the symboltable of routine M.F on standard out."  ]
 [ "mdb",       "var",  "pattern mdb.var():void ",      "MDBvar;",      "Dump 
the symboltable of current routine on standard out."      ]
 [ "mkey",      "bulk_rotate_xor_hash", "command 
mkey.bulk_rotate_xor_hash(h:bat[:lng],nbits:int,b:bat[:any_1]):bat[:lng] ",    
"MKEYbulk_rotate_xor_hash;",    "pre:  h and b should be synced on head\n       
  post: [:xor=]([:rotate=](h, nbits), [hash](b))"       ]
@@ -8241,9 +8196,6 @@ Ready.
 [ "optimizer", "reorder",      "pattern optimizer.reorder(mod:str,fcn:str):str 
",      "OPTwrapper;",  "Reorder by dataflow dependencies"      ]
 [ "optimizer", "selcrack",     "pattern optimizer.selcrack():str ",    
"OPTwrapper;",  ""      ]
 [ "optimizer", "selcrack",     "pattern 
optimizer.selcrack(mod:str,fcn:str):str ",     "OPTwrapper;",  "Selection 
cracking"    ]
-[ "optimizer", "showFlowGraph",        "pattern 
optimizer.showFlowGraph(M:str,F:str,s:str):void ",     "QOTshowFlowGraph;",    
"Dump the data flow of the function \n\tM.F in a format recognizable by the 
\n\tcommand 'dot' on the file s"    ]
-[ "optimizer", "showPlan",     "pattern optimizer.showPlan():void ",   
"QOTshowPlan;", "Illustrate the plan derived so far"    ]
-[ "optimizer", "showPlan",     "pattern 
optimizer.showPlan(M:str,F:str,s:str):void ",  "QOTshowPlan;", ""      ]
 [ "optimizer", "sql_append",   "pattern optimizer.sql_append():str ",  
"OPTsql_append;",       "Avoid extra BAT copy with sql.append() whenever 
possible."     ]
 [ "optimizer", "sql_append",   "pattern 
optimizer.sql_append(mod:str,fcn:str):str ",   "OPTsql_append;",       "Avoid 
extra BAT copy with sql.append() whenever possible."     ]
 [ "optimizer", "trace",        "pattern optimizer.trace():str ",       
"OPTwrapper;",  ""      ]
diff --git a/clients/Tests/MAL-signatures.stable.out.int128 
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -10282,7 +10282,6 @@ Ready.
 [ "mdb",       "getStackFrame",        "pattern mdb.getStackFrame() 
(X_0:bat[:str],X_1:bat[:str]) ",   "MDBgetStackFrame;",    "Collect variable 
binding of current (n-th) stack frame."       ]
 [ "mdb",       "getStackFrame",        "pattern mdb.getStackFrame(i:int) 
(X_0:bat[:str],X_1:bat[:str]) ",      "MDBgetStackFrameN;",   ""      ]
 [ "mdb",       "getStackTrace",        "pattern mdb.getStackTrace() 
(X_0:bat[:int],X_1:bat[:str]) ",   "MDBStkTrace;", ""      ]
-[ "mdb",       "grab", "pattern mdb.grab():void ",     "mdbGrab;",     "Call 
debugger for a suspended process."        ]
 [ "mdb",       "inspect",      "pattern mdb.inspect(mod:str,fcn:str):void ",   
"MDBinspect;",  "Run the debugger on a specific function"       ]
 [ "mdb",       "list", "pattern mdb.list(M:str,F:str):void ",  "MDBlist3;",    
"Dump the routine M.F on standard out." ]
 [ "mdb",       "list", "pattern mdb.list():void ",     "MDBlist;",     "Dump 
the current routine on standard out."     ]
@@ -10293,14 +10292,11 @@ Ready.
 [ "mdb",       "setDebug",     "command mdb.setDebug(flg:str):int ",   
"MDBsetDebugStr;",      "Set the kernel debugging bit-set and return its 
previous value.\nThe recognized options are: threads, memory, properties,\nio, 
transactions, modules, algorithms, estimates."  ]
 [ "mdb",       "setTrace",     "pattern mdb.setTrace(b:bit):void ",    
"MDBsetTrace;", "Turn on/off tracing of current routine"        ]
 [ "mdb",       "setTrace",     "pattern mdb.setTrace(b:str):void ",    
"MDBsetVarTrace;",      "Turn on/off tracing of a variable "    ]
-[ "mdb",       "setTrap",      "pattern 
mdb.setTrap(mod:str,fcn:str,b:bit):void ",     "MDBtrapFunction;",     "Suspend 
upon a call to the MAL function."      ]
-[ "mdb",       "setTrap",      "pattern mdb.setTrap(idx:int):void ",   
"mdbTrapClient;",       "Call debugger for a specific process." ]
 [ "mdb",       "start",        "pattern mdb.start():void ",    "MDBstart;",    
"Start interactive debugger"    ]
 [ "mdb",       "start",        "pattern mdb.start(clientid:int):void ",        
"MDBstart;",    "Start interactive debugger on a client"        ]
 [ "mdb",       "start",        "pattern mdb.start(mod:str,fcn:str):void ",     
"MDBstartFactory;",     "Start interactive debugger on a running factory"       
]
 [ "mdb",       "stop", "pattern mdb.stop():void ",     "MDBstop;",     "Stop 
the interactive debugger" ]
 [ "mdb",       "traceOptimizer",       "command 
mdb.traceOptimizer(flg:str):void ",    "OPTsetDebugStr;",      "Otherwise it is 
considered a request to trace the optimizers,\nwhich requires a comma separated 
list or pipeline name."        ]
-[ "mdb",       "trap", "pattern mdb.trap():void ",     "mdbTrap;",     "A 
suspended process for debugging."    ]
 [ "mdb",       "var",  "pattern mdb.var(M:str,F:str):void ",   "MDBvar3;",     
"Dump the symboltable of routine M.F on standard out."  ]
 [ "mdb",       "var",  "pattern mdb.var():void ",      "MDBvar;",      "Dump 
the symboltable of current routine on standard out."      ]
 [ "mkey",      "bulk_rotate_xor_hash", "command 
mkey.bulk_rotate_xor_hash(h:bat[:lng],nbits:int,b:bat[:any_1]):bat[:lng] ",    
"MKEYbulk_rotate_xor_hash;",    "pre:  h and b should be synced on head\n       
  post: [:xor=]([:rotate=](h, nbits), [hash](b))"       ]
@@ -10562,9 +10558,6 @@ Ready.
 [ "optimizer", "reorder",      "pattern optimizer.reorder(mod:str,fcn:str):str 
",      "OPTwrapper;",  "Reorder by dataflow dependencies"      ]
 [ "optimizer", "selcrack",     "pattern optimizer.selcrack():str ",    
"OPTwrapper;",  ""      ]
 [ "optimizer", "selcrack",     "pattern 
optimizer.selcrack(mod:str,fcn:str):str ",     "OPTwrapper;",  "Selection 
cracking"    ]
-[ "optimizer", "showFlowGraph",        "pattern 
optimizer.showFlowGraph(M:str,F:str,s:str):void ",     "QOTshowFlowGraph;",    
"Dump the data flow of the function \n\tM.F in a format recognizable by the 
\n\tcommand 'dot' on the file s"    ]
-[ "optimizer", "showPlan",     "pattern optimizer.showPlan():void ",   
"QOTshowPlan;", "Illustrate the plan derived so far"    ]
-[ "optimizer", "showPlan",     "pattern 
optimizer.showPlan(M:str,F:str,s:str):void ",  "QOTshowPlan;", ""      ]
 [ "optimizer", "sql_append",   "pattern optimizer.sql_append():str ",  
"OPTsql_append;",       "Avoid extra BAT copy with sql.append() whenever 
possible."     ]
 [ "optimizer", "sql_append",   "pattern 
optimizer.sql_append(mod:str,fcn:str):str ",   "OPTsql_append;",       "Avoid 
extra BAT copy with sql.append() whenever possible."     ]
 [ "optimizer", "trace",        "pattern optimizer.trace():str ",       
"OPTwrapper;",  ""      ]
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
@@ -1373,7 +1373,6 @@ str MDBgetExceptionReason(str *ret, str 
 str MDBgetExceptionVariable(str *ret, str *msg);
 str MDBgetStackFrame(Client cntxt, MalBlkPtr m, MalStkPtr s, InstrPtr p);
 str MDBgetStackFrameN(Client cntxt, MalBlkPtr m, MalStkPtr s, InstrPtr p);
-str MDBgrapTrappedProcess(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
 str MDBinspect(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
 str MDBlist(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
 str MDBlist3(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
@@ -1389,7 +1388,6 @@ str MDBshowFlowGraph(Client cntxt, MalBl
 str MDBstart(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
 str MDBstartFactory(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
 str MDBstop(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
-str MDBtrapFunction(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 str MDBvar(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
 str MDBvar3(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
 str MKEYbathash(bat *res, const bat *bid);
@@ -1623,8 +1621,6 @@ int QLOGisset(void);
 str QLOGissetFcn(int *ret);
 str QOTgetStatistics(bat *ret, str *nme);
 str QOToptimize(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
-str QOTshowFlowGraph(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
-str QOTshowPlan(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
 void QOTstatisticsExit(void);
 void QOTupdateStatistics(str nme, int prop, lng val);
 QueryQueue QRYqueue;
@@ -2112,7 +2108,7 @@ str generatorRef;
 MALfcn getAddress(stream *out, str filename, str fcnname, int silent);
 str getArgDefault(MalBlkPtr mb, InstrPtr p, int idx);
 ptr getArgReference(MalStkPtr stk, InstrPtr pci, int k);
-int getAtomIndex(str nme, int len, int deftpe);
+int getAtomIndex(const char *nme, int len, int deftpe);
 lng getBatSpace(BAT *b);
 int getBitConstant(MalBlkPtr mb, bit val);
 int getBlockBegin(MalBlkPtr mb, int pc);
@@ -2344,7 +2340,7 @@ InstrPtr newStmt(MalBlkPtr mb, const cha
 Symbol newSymbol(str nme, int kind);
 int newTmpVariable(MalBlkPtr mb, malType type);
 int newTypeVariable(MalBlkPtr mb, malType type);
-int newVariable(MalBlkPtr mb, str name, size_t len, malType type);
+int newVariable(MalBlkPtr mb, const char *name, size_t len, malType type);
 str nextRef;
 str notRef;
 str not_ilikeRef;
@@ -2394,7 +2390,7 @@ str projectionRef;
 str projectionpathRef;
 void promptInstruction(stream *fd, MalBlkPtr mb, MalStkPtr stk, InstrPtr p, 
int flg);
 InstrPtr pushArgument(MalBlkPtr mb, InstrPtr p, int varid);
-InstrPtr pushArgumentId(MalBlkPtr mb, InstrPtr p, str name);
+InstrPtr pushArgumentId(MalBlkPtr mb, InstrPtr p, const char *name);
 InstrPtr pushBit(MalBlkPtr mb, InstrPtr q, bit val);
 InstrPtr pushBte(MalBlkPtr mb, InstrPtr q, bte val);
 InstrPtr pushDbl(MalBlkPtr mb, InstrPtr q, dbl val);
diff --git a/clients/mapiclient/Makefile.ag b/clients/mapiclient/Makefile.ag
--- a/clients/mapiclient/Makefile.ag
+++ b/clients/mapiclient/Makefile.ag
@@ -13,7 +13,7 @@ lib_mcutil = {
 }
 
 bin_mclient = {
-       SOURCES = mclient.c ReadlineTools.c ReadlineTools.h
+       SOURCES = mclient.c ReadlineTools.c ReadlineTools.h mhelp.c mhelp.h
        LIBS = libmcutil ../mapilib/libmapi \
                ../../common/stream/libstream \
                ../../common/utils/libmutils \
diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -190,7 +190,7 @@ static char *nullstring = default_nullst
 #define my_isspace(c)  ((c) == '\f' || (c) == '\n' || (c) == ' ')
 
 #include <ctype.h>
-#include "mhelp.c"
+#include "mhelp.h"
 
 static timertype
 gettime(void)
@@ -2093,17 +2093,18 @@ static void
 showCommands(void)
 {
        /* shared control options */
-       mnstr_printf(toConsole, "\\?      - show this message\n");
+       mnstr_printf(toConsole, "\\?       - show this message\n");
        if (mode == MAL)
-               mnstr_printf(toConsole, "?pat    - MAL function help. 
pat=[modnme[.fcnnme][(][)]] wildcard *\n");
-       mnstr_printf(toConsole, "\\<file  - read input from file\n");
-       mnstr_printf(toConsole, "\\>file  - save response in file, or stdout if 
no file is given\n");
+               mnstr_printf(toConsole, "?pat  - MAL function help. 
pat=[modnme[.fcnnme][(][)]] wildcard *\n");
+       mnstr_printf(toConsole, "\\<file   - read input from file\n");
+       mnstr_printf(toConsole, "\\>file   - save response in file, or stdout 
if no file is given\n");
 #ifdef HAVE_POPEN
-       mnstr_printf(toConsole, "\\|cmd   - pipe result to process, or stop 
when no command is given\n");
+       mnstr_printf(toConsole, "\\|cmd    - pipe result to process, or stop 
when no command is given\n");
 #endif
 #ifdef HAVE_LIBREADLINE
-       mnstr_printf(toConsole, "\\h      - show the readline history\n");
+       mnstr_printf(toConsole, "\\history - show the readline history\n");
 #endif
+       mnstr_printf(toConsole, "\\help    - synopsis of the SQL syntax\n");
 #if 0
        mnstr_printf(toConsole, "\\t      - toggle timer\n");
 #endif
@@ -2719,9 +2720,9 @@ doFile(Mapi mid, stream *fp, int useinse
                                        pager = strdup(line);
                                        continue;
 #endif
-#ifdef HAVE_LIBREADLINE
                                case 'h':
                                {
+#ifdef HAVE_LIBREADLINE
                                        int h;
                                        char *nl;
 
@@ -2732,10 +2733,12 @@ doFile(Mapi mid, stream *fp, int useinse
                                                                
mnstr_printf(toConsole, "%d %s\n", h, nl);
                                                }
                                        } else
-                                               sql_help(line);
+#endif
+                                               sql_help(line, toConsole);
                                        continue;
                                }
 /* for later
+#ifdef HAVE_LIBREADLINE
                                case '!':
                                {
                                        char *nl;
@@ -2749,8 +2752,8 @@ doFile(Mapi mid, stream *fp, int useinse
                                        mnstr_printf(toConsole, "Expansion 
needs work\n");
                                        continue;
                                }
+#endif
 */
-#endif
                                case 'e':
                                        echoquery = 1;
                                        continue;
diff --git a/clients/mapiclient/mhelp.c b/clients/mapiclient/mhelp.c
--- a/clients/mapiclient/mhelp.c
+++ b/clients/mapiclient/mhelp.c
@@ -12,7 +12,23 @@
  * The SQL syntax help synopsis.
  */
 
-/* produce a synposis of the SQL syntax, inspired by a competing product */
+/* produce a synposis of the SQL syntax, inspired by a competing product.
+ * Use the conventional grammar constructs:
+ * [ A | B ]   optionally token A or B or none
+ * { A | B }   exactly one of the options should be chosen
+ * A [ ',' ...]  a comma separate lists of A elements
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to