Changeset: 9d358b84f3c6 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9d358b84f3c6
Added Files:
        sql/test/BugTracker-2017/Tests/All
        sql/test/BugTracker-2017/Tests/avggroupbysq.Bug-6178.sql
        sql/test/BugTracker-2017/Tests/avggroupbysq.Bug-6178.stable.err
        sql/test/BugTracker-2017/Tests/avggroupbysq.Bug-6178.stable.out
        sql/test/BugTracker-2017/Tests/shutdown.Bug-6182.sql
        sql/test/BugTracker-2017/Tests/shutdown.Bug-6182.stable.err
        sql/test/BugTracker-2017/Tests/shutdown.Bug-6182.stable.out
Modified Files:
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        clients/Tests/exports.stable.out
        gdk/ChangeLog
        gdk/gdk.h
        gdk/gdk_aggr.c
        gdk/gdk_atoms.c
        gdk/gdk_bat.c
        gdk/gdk_bbp.c
        gdk/gdk_bbp.h
        gdk/gdk_interprocess.c
        gdk/gdk_interprocess.h
        gdk/gdk_logger.c
        gdk/gdk_tm.c
        gdk/gdk_value.c
        monetdb5/mal/mal.h
        monetdb5/mal/mal_client.c
        monetdb5/mal/mal_debugger.c
        monetdb5/mal/mal_factory.c
        monetdb5/mal/mal_interpreter.c
        monetdb5/mal/mal_linker.c
        monetdb5/mal/mal_linker.h
        monetdb5/mal/mal_parser.c
        monetdb5/mal/mal_resolve.c
        monetdb5/modules/kernel/aggr.c
        monetdb5/modules/mal/clients.c
        monetdb5/modules/mal/groupby.c
        monetdb5/modules/mal/mal_mapi.c
        monetdb5/modules/mal/orderidx.c
        monetdb5/modules/mal/tablet.c
        monetdb5/modules/mal/tokenizer.c
        monetdb5/optimizer/opt_mergetable.c
        monetdb5/optimizer/opt_statistics.c
        monetdb5/scheduler/run_memo.c
        sql/backends/monet5/UDF/pyapi/connection.c
        sql/backends/monet5/UDF/pyapi/conversion.c
        sql/backends/monet5/UDF/pyapi/conversion.h
        sql/backends/monet5/UDF/pyapi/emit.c
        sql/backends/monet5/UDF/pyapi/formatinput.c
        sql/backends/monet5/UDF/pyapi/pyapi.c
        sql/backends/monet5/UDF/pyapi/pyapi.h
        sql/backends/monet5/UDF/pyapi/pyheader.h
        sql/backends/monet5/UDF/pyapi/pyloader.c
        sql/backends/monet5/UDF/pyapi/pytypes.c
        sql/backends/monet5/UDF/pyapi/type_conversion.c
        sql/backends/monet5/UDF/pyapi/unicode.c
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_statement.c
        sql/backends/monet5/vaults/lidar/lidar.c
        sql/backends/monet5/vaults/netcdf/netcdf.c
        sql/backends/monet5/vaults/shp/shp.c
        sql/common/sql_mem.c
        sql/include/sql_mem.h
        sql/server/rel_optimizer.c
        sql/server/rel_psm.c
        sql/server/sql_mvc.c
        sql/server/sql_parser.y
        sql/storage/bat/bat_utils.c
        sql/storage/bat/res_table.c
        
sql/test/BugTracker/Tests/groupby_orderby_nonselected.SF-1723863.stable.err
        sql/test/BugTracker/Tests/subquery_orderby.SF-1688915.stable.err
        sql/test/BugTracker/Tests/subquery_orderby.SF-1688915.stable.out
        testing/Mtest.py.in
        tools/mserver/shutdowntest.c
Branch: wlcr
Log Message:

merge with default


diffs (truncated from 2622 to 300 lines):

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
@@ -8309,7 +8309,7 @@ Ready.
 [ "sql",       "analyze",      "pattern sql.analyze(minmax:int, sample:lng, 
sch:str):void ",   "sql_analyze;", ""      ]
 [ "sql",       "analyze",      "pattern sql.analyze(minmax:int, sample:lng, 
sch:str, tbl:str):void ",  "sql_analyze;", ""      ]
 [ "sql",       "analyze",      "pattern sql.analyze(minmax:int, sample:lng, 
sch:str, tbl:str, col:str):void ", "sql_analyze;", "Update the database 
statistics table"  ]
-[ "sql",       "append",       "pattern sql.append(mvc:int, sname:str, 
tname:str, cname:str, ins:any):int ",   "mvc_append_wrap;",     "Append b to 
the column tname.cname (possibly optimized to replace the insert bat of 
tname.cname (returns sequence number for order dependence)"        ]
+[ "sql",       "append",       "pattern sql.append(mvc:int, sname:str, 
tname:str, cname:str, ins:any):int ",   "mvc_append_wrap;",     "Append to the 
column tname.cname (possibly optimized to replace the insert bat of 
tname.cname. Returns sequence number for order dependence."  ]
 [ "sql",       "argRecord",    "pattern sql.argRecord():str ", 
"SQLargRecord;",        "Glue together the calling sequence"    ]
 [ "sql",       "argRecord",    "pattern sql.argRecord(a:any...):str ", 
"SQLargRecord;",        "Glue together the calling sequence"    ]
 [ "sql",       "assert",       "pattern sql.assert(b:bit, msg:str):void ",     
"SQLassert;",   "Generate an exception when b==true"    ]
@@ -8323,7 +8323,7 @@ Ready.
 [ "sql",       "bind_idxbat",  "pattern sql.bind_idxbat(mvc:int, schema:str, 
table:str, index:str, access:int):bat[:any_1] ",  "mvc_bind_idxbat_wrap;",      
  "Bind the 'schema.table.index' BAT with access kind:\n\t0 - base table\n\t1 - 
inserts\n\t2 - updates"   ]
 [ "sql",       "bind_idxbat",  "pattern sql.bind_idxbat(mvc:int, schema:str, 
table:str, index:str, access:int, part_nr:int, nr_parts:int) (uid:bat[:oid], 
uval:bat[:any_1]) ", "mvc_bind_idxbat_wrap;",        "Bind the 
'schema.table.index' BAT with access kind:\n\t0 - base table\n\t1 - 
inserts\n\t2 - updates"   ]
 [ "sql",       "bind_idxbat",  "pattern sql.bind_idxbat(mvc:int, schema:str, 
table:str, index:str, access:int, part_nr:int, nr_parts:int):bat[:any_1] ",     
  "mvc_bind_idxbat_wrap;",        "Bind the 'schema.table.index' BAT with 
access kind:\n\t0 - base table\n\t1 - inserts\n\t2 - updates"   ]
-[ "sql",       "clear_table",  "pattern sql.clear_table(sname:str, 
tname:str):lng ",   "mvc_clear_table_wrap;",        "Clear table"   ]
+[ "sql",       "clear_table",  "pattern sql.clear_table(sname:str, 
tname:str):lng ",   "mvc_clear_table_wrap;",        "Clear the table 
sname.tname."  ]
 [ "sql",       "commit",       "pattern sql.commit():void ",   "SQLcommit;",   
"Trigger the commit operation for a MAL block"  ]
 [ "sql",       "copy_from",    "pattern sql.copy_from(t:ptr, sep:str, 
rsep:str, ssep:str, ns:str, fname:str, nr:lng, offset:lng, locked:int, 
best:int):bat[:any]... ", "mvc_import_table_wrap;",       "Import a table from 
bstream s with the \n\tgiven tuple and seperators (sep/rsep)"      ]
 [ "sql",       "copy_rejects", "pattern sql.copy_rejects() (rowid:bat[:lng], 
fldid:bat[:int], msg:bat[:str], inp:bat[:str]) ", "COPYrejects;", ""      ]
@@ -8341,7 +8341,7 @@ Ready.
 [ "sql",       "dec_round",    "command sql.dec_round(v:lng, r:lng):lng ",     
"lng_dec_round_wrap;",  "round off the value v to nearests multiple of r"       
]
 [ "sql",       "dec_round",    "command sql.dec_round(v:sht, r:sht):sht ",     
"sht_dec_round_wrap;",  "round off the value v to nearests multiple of r"       
]
 [ "sql",       "declaredTable",        "pattern 
sql.declaredTable(name:str):int ",     "mvc_declared_table_wrap;",     "Prepare 
a declared table"      ]
-[ "sql",       "delete",       "pattern sql.delete(mvc:int, sname:str, 
tname:str, b:any):int ",        "mvc_delete_wrap;",     "delete from table"     
]
+[ "sql",       "delete",       "pattern sql.delete(mvc:int, sname:str, 
tname:str, b:any):int ",        "mvc_delete_wrap;",     "Delete a row from a 
table. Returns sequence number for order dependece."       ]
 [ "sql",       "delta",        "command sql.delta(col:bat[:any_3], 
uid:bat[:oid], uval:bat[:any_3]):bat[:any_3] ",     "DELTAbat2;",   "Return 
column bat with delta's applied."       ]
 [ "sql",       "delta",        "command sql.delta(col:bat[:any_3], 
uid:bat[:oid], uval:bat[:any_3], ins:bat[:any_3]):bat[:any_3] ",    
"DELTAbat;",    "Return column bat with delta's applied."       ]
 [ "sql",       "dense_rank",   "pattern sql.dense_rank(b:any_1, p:bit, 
o:bit):int ",   "SQLdense_rank;",       "return the densely ranked groups"      
]
@@ -8377,7 +8377,7 @@ Ready.
 [ "sql",       "export_table", "pattern sql.export_table(fname:str, fmt:str, 
colsep:str, recsep:str, qout:str, nullrep:str, tbl:bat[:str], attr:bat[:str], 
tpe:bat[:str], len:bat[:int], scale:bat[:int], cols:bat[:any]...):int ",    
"mvc_export_table_wrap;",       "Prepare a table result set for the COPY INTO 
stream"   ]
 [ "sql",       "flush_log",    "command sql.flush_log():void ",        
"SQLflush_log;",        "flush the log now"     ]
 [ "sql",       "getVariable",  "pattern sql.getVariable(mvc:int, 
varname:str):any_1 ", "getVariable;", "Get the value of a session variable"   ]
-[ "sql",       "getVersion",   "command sql.getVersion(clientid:int):lng ",    
"mvc_getVersion;",      "Return the database version identifier for a client"   
]
+[ "sql",       "getVersion",   "command sql.getVersion(clientid:int):lng ",    
"mvc_getVersion;",      "Return the database version identifier for a client."  
]
 [ "sql",       "get_value",    "pattern sql.get_value(sname:str, 
sequence:str):lng ",  "mvc_get_value;",       "return the current value of the 
sequence"      ]
 [ "sql",       "importTable",  "pattern sql.importTable(sname:str, tname:str, 
fname:str...):bat[:any]... ",    "mvc_bin_import_table_wrap;",   "Import a 
table from the files (fname)" ]
 [ "sql",       "include",      "pattern sql.include(fname:str):void ", 
"SQLinclude;",  "Compile and execute a sql statements on the file"      ]
@@ -8404,8 +8404,8 @@ Ready.
 [ "sql",       "rank", "pattern sql.rank(b:any_1, p:bit, o:bit):int ", 
"SQLrank;",     "return the ranked groups"      ]
 [ "sql",       "register",     "pattern sql.register(mod:str, fname:str, 
rel_stmt:str, sig:str):int ", "RAstatement2;",        "Compile the relational 
statement (rel_smt) and register it as mal function, mod.fname(signature)"      
]
 [ "sql",       "restart",      "pattern sql.restart(sname:str, sequence:str, 
start:lng):lng ", "mvc_restart_seq;",     "restart the sequence with value 
start" ]
-[ "sql",       "resultSet",    "pattern sql.resultSet(tbl:bat[:str], 
attr:bat[:str], tpe:bat[:str], len:bat[:int], scale:bat[:int], cols:any...):int 
",        "mvc_row_result_wrap;", "Prepare a table result set"    ]
-[ "sql",       "resultSet",    "pattern sql.resultSet(tbl:str, attr:str, 
tpe:str, len:int, scale:int, eclass:int, val:any):int ",      
"mvc_scalar_value_wrap;",       "Prepare a table result set"    ]
+[ "sql",       "resultSet",    "pattern sql.resultSet(tbl:bat[:str], 
attr:bat[:str], tpe:bat[:str], len:bat[:int], scale:bat[:int], cols:any...):int 
",        "mvc_row_result_wrap;", "Prepare a table result set for the client 
front-end"   ]
+[ "sql",       "resultSet",    "pattern sql.resultSet(tbl:str, attr:str, 
tpe:str, len:int, scale:int, eclass:int, val:any):int ",      
"mvc_scalar_value_wrap;",       "Prepare a table result set for the client 
front-end."  ]
 [ "sql",       "resultSet",    "pattern sql.resultSet(tbl:bat[:str], 
attr:bat[:str], tpe:bat[:str], len:bat[:int], scale:bat[:int], 
cols:bat[:any]...):int ",  "mvc_table_result_wrap;",       "Prepare a table 
result set for the client in default CSV format"       ]
 [ "sql",       "reuse",        "pattern sql.reuse(sch:str, tbl:str):void ",    
"SQLreuse;",    "Consolidate the deletion table over all columns reusing 
deleted slots" ]
 [ "sql",       "round",        "command sql.round(v:bte, d:int, s:int, 
r:bte):bte ",   "bte_round_wrap;",      "round off the decimal v(d,s) to r 
digits behind the dot (if r < 0, before the dot)"    ]
@@ -8446,7 +8446,7 @@ Ready.
 [ "sql",       "sysmon_stop",  "pattern sql.sysmon_stop(tag:int):void ",       
"SYSMONstop;",  ""      ]
 [ "sql",       "sysmon_stop",  "pattern sql.sysmon_stop(tag:lng):void ",       
"SYSMONstop;",  ""      ]
 [ "sql",       "sysmon_stop",  "pattern sql.sysmon_stop(tag:sht):void ",       
"SYSMONstop;",  ""      ]
-[ "sql",       "tid",  "pattern sql.tid(mvc:int, sname:str, 
tname:str):bat[:oid] ",    "SQLtid;",      "Return the tables tid column." ]
+[ "sql",       "tid",  "pattern sql.tid(mvc:int, sname:str, 
tname:str):bat[:oid] ",    "SQLtid;",      "Return a column with the valid 
tuple identifiers associated with the table sname.tname."       ]
 [ "sql",       "tid",  "pattern sql.tid(mvc:int, sname:str, tname:str, 
part_nr:int, nr_parts:int):bat[:oid] ", "SQLtid;",      "Return the tables tid 
column." ]
 [ "sql",       "transaction",  "pattern sql.transaction():void ",      
"SQLtransaction2;",     "Start an autocommit transaction"       ]
 [ "sql",       "transaction",  "pattern sql.transaction():void ",      
"SQLtransaction2;",     "Start an autocommit transaction"       ]
@@ -8454,7 +8454,7 @@ Ready.
 [ "sql",       "transaction_commit",   "pattern 
sql.transaction_commit(chain:int, name:str):void ",    
"SQLtransaction_commit;",       "A transaction statement (type can be 
commit,release,rollback or start)"        ]
 [ "sql",       "transaction_release",  "pattern 
sql.transaction_release(chain:int, name:str):void ",   
"SQLtransaction_release;",      "A transaction statement (type can be 
commit,release,rollback or start)"        ]
 [ "sql",       "transaction_rollback", "pattern 
sql.transaction_rollback(chain:int, name:str):void ",  
"SQLtransaction_rollback;",     "A transaction statement (type can be 
commit,release,rollback or start)"        ]
-[ "sql",       "update",       "pattern sql.update(mvc:int, sname:str, 
tname:str, cname:str, rids:any, upd:any):int ", "mvc_update_wrap;",     "Update 
the values of the column tname.cname"   ]
+[ "sql",       "update",       "pattern sql.update(mvc:int, sname:str, 
tname:str, cname:str, rids:any, upd:any):int ", "mvc_update_wrap;",     "Update 
the values of the column tname.cname. Returns sequence number for order 
dependence)"    ]
 [ "sql",       "vacuum",       "pattern sql.vacuum(sch:str, tbl:str):void ",   
"SQLvacuum;",   "Choose an approach to consolidate the deletions"       ]
 [ "sql",       "zero_or_one",  "command sql.zero_or_one(col:bat[:any_1]):any_1 
",      "zero_or_one;", "if col contains exactly one value return this. Incase 
of more raise an exception else return nil"      ]
 [ "sqlblob",   "#fromstr",     "command sqlblob.#fromstr():void ",     
"SQLBLOBfromstr;",      ""      ]
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
@@ -10671,7 +10671,7 @@ Ready.
 [ "sql",       "analyze",      "pattern sql.analyze(minmax:int, sample:lng, 
sch:str):void ",   "sql_analyze;", ""      ]
 [ "sql",       "analyze",      "pattern sql.analyze(minmax:int, sample:lng, 
sch:str, tbl:str):void ",  "sql_analyze;", ""      ]
 [ "sql",       "analyze",      "pattern sql.analyze(minmax:int, sample:lng, 
sch:str, tbl:str, col:str):void ", "sql_analyze;", "Update the database 
statistics table"  ]
-[ "sql",       "append",       "pattern sql.append(mvc:int, sname:str, 
tname:str, cname:str, ins:any):int ",   "mvc_append_wrap;",     "Append b to 
the column tname.cname (possibly optimized to replace the insert bat of 
tname.cname (returns sequence number for order dependence)"        ]
+[ "sql",       "append",       "pattern sql.append(mvc:int, sname:str, 
tname:str, cname:str, ins:any):int ",   "mvc_append_wrap;",     "Append to the 
column tname.cname (possibly optimized to replace the insert bat of 
tname.cname. Returns sequence number for order dependence."  ]
 [ "sql",       "argRecord",    "pattern sql.argRecord():str ", 
"SQLargRecord;",        "Glue together the calling sequence"    ]
 [ "sql",       "argRecord",    "pattern sql.argRecord(a:any...):str ", 
"SQLargRecord;",        "Glue together the calling sequence"    ]
 [ "sql",       "assert",       "pattern sql.assert(b:bit, msg:str):void ",     
"SQLassert;",   "Generate an exception when b==true"    ]
@@ -10685,7 +10685,7 @@ Ready.
 [ "sql",       "bind_idxbat",  "pattern sql.bind_idxbat(mvc:int, schema:str, 
table:str, index:str, access:int):bat[:any_1] ",  "mvc_bind_idxbat_wrap;",      
  "Bind the 'schema.table.index' BAT with access kind:\n\t0 - base table\n\t1 - 
inserts\n\t2 - updates"   ]
 [ "sql",       "bind_idxbat",  "pattern sql.bind_idxbat(mvc:int, schema:str, 
table:str, index:str, access:int, part_nr:int, nr_parts:int) (uid:bat[:oid], 
uval:bat[:any_1]) ", "mvc_bind_idxbat_wrap;",        "Bind the 
'schema.table.index' BAT with access kind:\n\t0 - base table\n\t1 - 
inserts\n\t2 - updates"   ]
 [ "sql",       "bind_idxbat",  "pattern sql.bind_idxbat(mvc:int, schema:str, 
table:str, index:str, access:int, part_nr:int, nr_parts:int):bat[:any_1] ",     
  "mvc_bind_idxbat_wrap;",        "Bind the 'schema.table.index' BAT with 
access kind:\n\t0 - base table\n\t1 - inserts\n\t2 - updates"   ]
-[ "sql",       "clear_table",  "pattern sql.clear_table(sname:str, 
tname:str):lng ",   "mvc_clear_table_wrap;",        "Clear table"   ]
+[ "sql",       "clear_table",  "pattern sql.clear_table(sname:str, 
tname:str):lng ",   "mvc_clear_table_wrap;",        "Clear the table 
sname.tname."  ]
 [ "sql",       "commit",       "pattern sql.commit():void ",   "SQLcommit;",   
"Trigger the commit operation for a MAL block"  ]
 [ "sql",       "copy_from",    "pattern sql.copy_from(t:ptr, sep:str, 
rsep:str, ssep:str, ns:str, fname:str, nr:lng, offset:lng, locked:int, 
best:int):bat[:any]... ", "mvc_import_table_wrap;",       "Import a table from 
bstream s with the \n\tgiven tuple and seperators (sep/rsep)"      ]
 [ "sql",       "copy_rejects", "pattern sql.copy_rejects() (rowid:bat[:lng], 
fldid:bat[:int], msg:bat[:str], inp:bat[:str]) ", "COPYrejects;", ""      ]
@@ -10704,7 +10704,7 @@ Ready.
 [ "sql",       "dec_round",    "command sql.dec_round(v:lng, r:lng):lng ",     
"lng_dec_round_wrap;",  "round off the value v to nearests multiple of r"       
]
 [ "sql",       "dec_round",    "command sql.dec_round(v:sht, r:sht):sht ",     
"sht_dec_round_wrap;",  "round off the value v to nearests multiple of r"       
]
 [ "sql",       "declaredTable",        "pattern 
sql.declaredTable(name:str):int ",     "mvc_declared_table_wrap;",     "Prepare 
a declared table"      ]
-[ "sql",       "delete",       "pattern sql.delete(mvc:int, sname:str, 
tname:str, b:any):int ",        "mvc_delete_wrap;",     "delete from table"     
]
+[ "sql",       "delete",       "pattern sql.delete(mvc:int, sname:str, 
tname:str, b:any):int ",        "mvc_delete_wrap;",     "Delete a row from a 
table. Returns sequence number for order dependece."       ]
 [ "sql",       "delta",        "command sql.delta(col:bat[:any_3], 
uid:bat[:oid], uval:bat[:any_3]):bat[:any_3] ",     "DELTAbat2;",   "Return 
column bat with delta's applied."       ]
 [ "sql",       "delta",        "command sql.delta(col:bat[:any_3], 
uid:bat[:oid], uval:bat[:any_3], ins:bat[:any_3]):bat[:any_3] ",    
"DELTAbat;",    "Return column bat with delta's applied."       ]
 [ "sql",       "dense_rank",   "pattern sql.dense_rank(b:any_1, p:bit, 
o:bit):int ",   "SQLdense_rank;",       "return the densely ranked groups"      
]
@@ -10740,7 +10740,7 @@ Ready.
 [ "sql",       "export_table", "pattern sql.export_table(fname:str, fmt:str, 
colsep:str, recsep:str, qout:str, nullrep:str, tbl:bat[:str], attr:bat[:str], 
tpe:bat[:str], len:bat[:int], scale:bat[:int], cols:bat[:any]...):int ",    
"mvc_export_table_wrap;",       "Prepare a table result set for the COPY INTO 
stream"   ]
 [ "sql",       "flush_log",    "command sql.flush_log():void ",        
"SQLflush_log;",        "flush the log now"     ]
 [ "sql",       "getVariable",  "pattern sql.getVariable(mvc:int, 
varname:str):any_1 ", "getVariable;", "Get the value of a session variable"   ]
-[ "sql",       "getVersion",   "command sql.getVersion(clientid:int):lng ",    
"mvc_getVersion;",      "Return the database version identifier for a client"   
]
+[ "sql",       "getVersion",   "command sql.getVersion(clientid:int):lng ",    
"mvc_getVersion;",      "Return the database version identifier for a client."  
]
 [ "sql",       "get_value",    "pattern sql.get_value(sname:str, 
sequence:str):lng ",  "mvc_get_value;",       "return the current value of the 
sequence"      ]
 [ "sql",       "importTable",  "pattern sql.importTable(sname:str, tname:str, 
fname:str...):bat[:any]... ",    "mvc_bin_import_table_wrap;",   "Import a 
table from the files (fname)" ]
 [ "sql",       "include",      "pattern sql.include(fname:str):void ", 
"SQLinclude;",  "Compile and execute a sql statements on the file"      ]
@@ -10767,8 +10767,8 @@ Ready.
 [ "sql",       "rank", "pattern sql.rank(b:any_1, p:bit, o:bit):int ", 
"SQLrank;",     "return the ranked groups"      ]
 [ "sql",       "register",     "pattern sql.register(mod:str, fname:str, 
rel_stmt:str, sig:str):int ", "RAstatement2;",        "Compile the relational 
statement (rel_smt) and register it as mal function, mod.fname(signature)"      
]
 [ "sql",       "restart",      "pattern sql.restart(sname:str, sequence:str, 
start:lng):lng ", "mvc_restart_seq;",     "restart the sequence with value 
start" ]
-[ "sql",       "resultSet",    "pattern sql.resultSet(tbl:bat[:str], 
attr:bat[:str], tpe:bat[:str], len:bat[:int], scale:bat[:int], cols:any...):int 
",        "mvc_row_result_wrap;", "Prepare a table result set"    ]
-[ "sql",       "resultSet",    "pattern sql.resultSet(tbl:str, attr:str, 
tpe:str, len:int, scale:int, eclass:int, val:any):int ",      
"mvc_scalar_value_wrap;",       "Prepare a table result set"    ]
+[ "sql",       "resultSet",    "pattern sql.resultSet(tbl:bat[:str], 
attr:bat[:str], tpe:bat[:str], len:bat[:int], scale:bat[:int], cols:any...):int 
",        "mvc_row_result_wrap;", "Prepare a table result set for the client 
front-end"   ]
+[ "sql",       "resultSet",    "pattern sql.resultSet(tbl:str, attr:str, 
tpe:str, len:int, scale:int, eclass:int, val:any):int ",      
"mvc_scalar_value_wrap;",       "Prepare a table result set for the client 
front-end."  ]
 [ "sql",       "resultSet",    "pattern sql.resultSet(tbl:bat[:str], 
attr:bat[:str], tpe:bat[:str], len:bat[:int], scale:bat[:int], 
cols:bat[:any]...):int ",  "mvc_table_result_wrap;",       "Prepare a table 
result set for the client in default CSV format"       ]
 [ "sql",       "reuse",        "pattern sql.reuse(sch:str, tbl:str):void ",    
"SQLreuse;",    "Consolidate the deletion table over all columns reusing 
deleted slots" ]
 [ "sql",       "round",        "command sql.round(v:bte, d:int, s:int, 
r:bte):bte ",   "bte_round_wrap;",      "round off the decimal v(d,s) to r 
digits behind the dot (if r < 0, before the dot)"    ]
@@ -10810,7 +10810,7 @@ Ready.
 [ "sql",       "sysmon_stop",  "pattern sql.sysmon_stop(tag:int):void ",       
"SYSMONstop;",  ""      ]
 [ "sql",       "sysmon_stop",  "pattern sql.sysmon_stop(tag:lng):void ",       
"SYSMONstop;",  ""      ]
 [ "sql",       "sysmon_stop",  "pattern sql.sysmon_stop(tag:sht):void ",       
"SYSMONstop;",  ""      ]
-[ "sql",       "tid",  "pattern sql.tid(mvc:int, sname:str, 
tname:str):bat[:oid] ",    "SQLtid;",      "Return the tables tid column." ]
+[ "sql",       "tid",  "pattern sql.tid(mvc:int, sname:str, 
tname:str):bat[:oid] ",    "SQLtid;",      "Return a column with the valid 
tuple identifiers associated with the table sname.tname."       ]
 [ "sql",       "tid",  "pattern sql.tid(mvc:int, sname:str, tname:str, 
part_nr:int, nr_parts:int):bat[:oid] ", "SQLtid;",      "Return the tables tid 
column." ]
 [ "sql",       "transaction",  "pattern sql.transaction():void ",      
"SQLtransaction2;",     "Start an autocommit transaction"       ]
 [ "sql",       "transaction",  "pattern sql.transaction():void ",      
"SQLtransaction2;",     "Start an autocommit transaction"       ]
@@ -10818,7 +10818,7 @@ Ready.
 [ "sql",       "transaction_commit",   "pattern 
sql.transaction_commit(chain:int, name:str):void ",    
"SQLtransaction_commit;",       "A transaction statement (type can be 
commit,release,rollback or start)"        ]
 [ "sql",       "transaction_release",  "pattern 
sql.transaction_release(chain:int, name:str):void ",   
"SQLtransaction_release;",      "A transaction statement (type can be 
commit,release,rollback or start)"        ]
 [ "sql",       "transaction_rollback", "pattern 
sql.transaction_rollback(chain:int, name:str):void ",  
"SQLtransaction_rollback;",     "A transaction statement (type can be 
commit,release,rollback or start)"        ]
-[ "sql",       "update",       "pattern sql.update(mvc:int, sname:str, 
tname:str, cname:str, rids:any, upd:any):int ", "mvc_update_wrap;",     "Update 
the values of the column tname.cname"   ]
+[ "sql",       "update",       "pattern sql.update(mvc:int, sname:str, 
tname:str, cname:str, rids:any, upd:any):int ", "mvc_update_wrap;",     "Update 
the values of the column tname.cname. Returns sequence number for order 
dependence)"    ]
 [ "sql",       "vacuum",       "pattern sql.vacuum(sch:str, tbl:str):void ",   
"SQLvacuum;",   "Choose an approach to consolidate the deletions"       ]
 [ "sql",       "zero_or_one",  "command sql.zero_or_one(col:bat[:any_1]):any_1 
",      "zero_or_one;", "if col contains exactly one value return this. Incase 
of more raise an exception else return nil"      ]
 [ "sqlblob",   "#fromstr",     "command sqlblob.#fromstr():void ",     
"SQLBLOBfromstr;",      ""      ]
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
@@ -186,10 +186,9 @@ BAT *BATunique(BAT *b, BAT *s);
 BBPrec *BBP[N_BBPINIT];
 void BBPaddfarm(const char *dirname, int rolemask);
 void BBPclear(bat bid);
-int BBPdecref(bat b, int logical);
 BAT *BBPdescriptor(bat b);
+int BBPfix(bat b);
 int BBPin;
-int BBPincref(bat b, int logical);
 bat BBPindex(const char *nme);
 void BBPkeepref(bat i);
 bat BBPlimit;
@@ -199,11 +198,14 @@ int BBPout;
 str BBPphysical(bat b, str buf);
 BAT *BBPquickdesc(bat b, int delaccess);
 int BBPreclaim(BAT *b);
+int BBPrelease(bat b);
 int BBPrename(bat bid, const char *nme);
 void BBPresetfarms(void);
+int BBPretain(bat b);
 gdk_return BBPsave(BAT *b);
 void BBPshare(bat b);
 gdk_return BBPsync(int cnt, bat *subcommit);
+int BBPunfix(bat b);
 void BBPunlock(void);
 gdk_return BUNappend(BAT *b, const void *right, bit force);
 gdk_return BUNdelete(BAT *b, oid o);
@@ -2247,6 +2249,8 @@ str mal2str(MalBlkPtr mb, int first, int
 int malAtomSize(int size, int align, char *name);
 int malBootstrap(void);
 str malCommandCall(MalStkPtr stk, InstrPtr pci);
+int malLibraryEnabled(str name);
+char *malLibraryHowToEnable(str name);
 int malProfileMode;
 str malRef;
 MT_Lock mal_beatLock;
diff --git a/gdk/ChangeLog b/gdk/ChangeLog
--- a/gdk/ChangeLog
+++ b/gdk/ChangeLog
@@ -1,6 +1,10 @@
 # ChangeLog file for MonetDB
 # This file is updated with Maddlog
 
+* Tue Jan  3 2017 Sjoerd Mullender <sjo...@acm.org>
+- Replaced BBPincref/BBPdecref with BBPfix/BBPunfix for physical reference
+  count and BBPretain/BBPrelease for logical reference count maintenance.
+
 * Fri Dec 16 2016 Sjoerd Mullender <sjo...@acm.org>
 - Removed automatic conversion of 32-bit OIDs to 64 bits on 64-bit
   architectures.
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -1617,9 +1617,9 @@ gdk_export void GDKqsort_rev(void *h, vo
  * @item int
  * @tab BBPunfix (bat bi)
  * @item int
- * @tab BBPincref (bat bi, int logical)
+ * @tab BBPretain (bat bi)
  * @item int
- * @tab BBPdecref (bat bi, int logical)
+ * @tab BBPrelease (bat bi)
  * @item str
  * @tab BBPname (bat bi)
  * @item bat
@@ -1708,8 +1708,6 @@ gdk_export BBPrec *BBP[N_BBPINIT];
         "")
 #define BBPvalid(i)    (BBP_logical(i) != NULL && *BBP_logical(i) != '.')
 #define BATgetId(b)    BBPname((b)->batCacheid)
-#define BBPfix(i)      BBPincref((i), FALSE)
-#define BBPunfix(i)    BBPdecref((i), FALSE)
 
 #define BBPRENAME_ALREADY      (-1)
 #define BBPRENAME_ILLEGAL      (-2)
diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -1386,7 +1386,8 @@ BATgroupavg(BAT **bnp, BAT **cntsp, BAT 
                return GDK_SUCCEED;
        }
 
-       if ((e == NULL ||
+       if ((!skip_nils || cntsp == NULL || b->tnonil) &&
+           (e == NULL ||
             (BATcount(e) == BATcount(b) && e->hseqbase == b->hseqbase)) &&
            (BATtdense(g) || (g->tkey && g->tnonil))) {
                /* trivial: singleton groups, so all results are equal
diff --git a/gdk/gdk_atoms.c b/gdk/gdk_atoms.c
--- a/gdk/gdk_atoms.c
+++ b/gdk/gdk_atoms.c
@@ -114,16 +114,16 @@ hgeHash(const hge *v)
 /*
  * @+ Standard Atoms
  */
-static inline int
+static int
 batFix(const bat *b)
 {
-       return BBPincref(*b, TRUE);
+       return BBPretain(*b);
 }
 
-static inline int
+static int
 batUnfix(const bat *b)
 {
-       return BBPdecref(*b, TRUE);
+       return BBPrelease(*b);
 }
 
 /*
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -1934,9 +1934,9 @@ BATmode(BAT *b, int mode)
                }
                /* persistent BATs get a logical reference */
                if (mode == PERSISTENT) {
-                       BBPincref(bid, TRUE);
+                       BBPretain(bid);
                } else if (b->batPersistence == PERSISTENT) {
-                       BBPdecref(bid, TRUE);
+                       BBPrelease(bid);
                }
                MT_lock_set(&GDKswapLock(bid));
                if (mode == PERSISTENT) {
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -59,9 +59,8 @@
  *
  * @item reference counting
  * Bats use have two kinds of references: logical and physical
- * (pointer) ones.  Both are administered with the BBPincref/BBPdecref
- * routines. For backward compatibility, we maintain BBPfix/BBPunfix
- * as shorthands for the adjusting the pointer references.
+ * (pointer) ones.  The logical references are administered by
+ * BBPretain/BBPrelease, the physical ones by BBPfix/BBPunfix.
  *
  * @item share counting
  * Views use the heaps of there parent bats. To save guard this, the
@@ -2044,7 +2043,7 @@ incref(bat i, int logical, int lock)
                return 0;
        }
 
-       if (!BBPcheck(i, "BBPincref"))
+       if (!BBPcheck(i, logical ? "BBPretain" : "BBPfix"))
                return 0;
 
        if (lock) {
@@ -2084,7 +2083,7 @@ incref(bat i, int logical, int lock)
                         * lock.  Set the BBPLOADING flag so that
                         * other threads will wait until we're
                         * done. */
-                       BBP_status_on(i, BBPLOADING, "BBPincref");
+                       BBP_status_on(i, BBPLOADING, "BBPfix");
                        load = 1;
                }
        }
@@ -2112,17 +2111,25 @@ incref(bat i, int logical, int lock)
                        (void) getBBPdescriptor(tvp, lock);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to