Changeset: 74f3e648d0aa for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=74f3e648d0aa
Added Files:
        monetdb5/modules/mal/oltp.c
        monetdb5/modules/mal/oltp.h
        monetdb5/modules/mal/oltp.mal
        monetdb5/optimizer/opt_oltp.c
        monetdb5/optimizer/opt_oltp.h
Modified Files:
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        clients/Tests/exports.stable.out
        monetdb5/mal/mal.c
        monetdb5/mal/mal.h
        monetdb5/modules/mal/Makefile.ag
        monetdb5/optimizer/Makefile.ag
        monetdb5/optimizer/opt_pipes.c
        monetdb5/optimizer/opt_prelude.c
        monetdb5/optimizer/opt_prelude.h
        monetdb5/optimizer/opt_support.c
        monetdb5/optimizer/opt_wrapper.c
        monetdb5/optimizer/optimizer.mal
Branch: default
Log Message:

Merge oltp-optimizer into default


diffs (truncated from 956 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
@@ -8163,6 +8163,8 @@ Ready.
 [ "optimizer", "mitosis",      "pattern optimizer.mitosis(mod:str, 
fcn:str):str ",     "OPTwrapper;",  "Modify the plan to exploit parallel 
processing on multiple cores"      ]
 [ "optimizer", "multiplex",    "pattern optimizer.multiplex():void ",  
"OPTwrapper;",  "Compiler for multiplexed instructions."        ]
 [ "optimizer", "multiplex",    "pattern optimizer.multiplex(mod:str, 
fcn:str):void ",  "OPTwrapper;",  "Compiler for multiplexed instructions."      
  ]
+[ "optimizer", "oltp", "pattern optimizer.oltp():str ",        "OPTwrapper;",  
""      ]
+[ "optimizer", "oltp", "pattern optimizer.oltp(mod:str, fcn:str):str ",        
"OPTwrapper;",  "Inject the OLTP locking primitives."   ]
 [ "optimizer", "optimize",     "pattern optimizer.optimize(mod:str, 
fcn:str):void ",   "QOToptimize;", "Optimize a specific operation" ]
 [ "optimizer", "orcam",        "pattern optimizer.orcam(mod:str, fcn:str, 
targetmod:str, targetfcn:str):void ",        "OPTorcam;",    "Inverse macro, 
find pattern and replace with a function call." ]
 [ "optimizer", "orcam",        "pattern optimizer.orcam(targetmod:str, 
targetfcn:str):void ",  "OPTorcam;",    "Inverse macro processor for current 
function"  ]
@@ -8313,21 +8315,6 @@ 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",       "catalog",      "pattern sql.catalog(type:int, grantee:str, 
role:str, grantor:int, admin:int):void ",   "SQLcatalog;",  "a grant/revoke 
role statement" ]
-[ "sql",       "catalog",      "pattern sql.catalog(type:int, iname:str, 
itype:int, sname:str, tname:str...):void ",   "SQLcatalog;",  "a create index 
catalog statement"      ]
-[ "sql",       "catalog",      "pattern sql.catalog(type:int, msname:str, 
mtname:str, psname:str, ptname:str, action:int):void ",      "SQLcatalog;",  "a 
alter table add/del table catalog statement" ]
-[ "sql",       "catalog",      "pattern sql.catalog(type:int, sname:str, 
func:int, grantee:str, privs:int, grant:int, grantor:int):void ",     
"SQLcatalog;",  "a grant/revoke function privileges statement"  ]
-[ "sql",       "catalog",      "pattern sql.catalog(type:int, sname:str, 
name:str, action:int):void ", "SQLcatalog;",  "a catalog statement"   ]
-[ "sql",       "catalog",      "pattern sql.catalog(type:int, sname:str, 
name:str, funcid:int, ft:int, action:int):void ",     "SQLcatalog;",  "a 
catalog statement"   ]
-[ "sql",       "catalog",      "pattern sql.catalog(type:int, sname:str, 
name:str, tname:str, time:int, o:int, event:int, oname:str, nname:str, 
condition:str, query:str):void ",      "SQLcatalog;",  "a catalog statement"   ]
-[ "sql",       "catalog",      "pattern sql.catalog(type:int, sname:str, 
t:ptr):void ",        "SQLcatalog;",  "a catalog statement"   ]
-[ "sql",       "catalog",      "pattern sql.catalog(type:int, sname:str, 
t:ptr, restart:lng):void ",   "SQLcatalog;",  "a catalog statement"   ]
-[ "sql",       "catalog",      "pattern sql.catalog(type:int, sname:str, 
t:ptr, temp:int):void ",      "SQLcatalog;",  "a catalog statement"   ]
-[ "sql",       "catalog",      "pattern sql.catalog(type:int, sname:str, 
tname:str):void ",    "SQLcatalog;",  "a catalog trigger statement"   ]
-[ "sql",       "catalog",      "pattern sql.catalog(type:int, sname:str, 
tname:str, access:int):void ",        "SQLcatalog;",  "a alter table access 
statement"        ]
-[ "sql",       "catalog",      "pattern sql.catalog(type:int, sname:str, 
tname:str, grantee:str, privs:int, cname:str, grant:int, grantor:int):void ", 
"SQLcatalog;",  "a grant/revoke privileges statement"   ]
-[ "sql",       "catalog",      "pattern sql.catalog(type:int, sname:str, 
tname:str, impl:str):void ",  "SQLcatalog;",  "a create type catalog statement" 
      ]
-[ "sql",       "catalog",      "pattern sql.catalog(type:int, user:str, 
passwd:str, enc:int, schema:str, fullname:str):void ", "SQLcatalog;",  "a user 
catalog statement"      ]
 [ "sql",       "clear_table",  "pattern sql.clear_table(sname:str, 
tname:str):lng ",   "mvc_clear_table_wrap;",        "Clear table"   ]
 [ "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)"      ]
@@ -8453,8 +8440,12 @@ Ready.
 [ "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, 
part_nr:int, nr_parts:int):bat[:oid] ", "SQLtid;",      "Return the tables tid 
column." ]
-[ "sql",       "trans",        "pattern sql.trans(type:int, chain:int, 
name:str):void ",       "SQLtransaction;",      "A transaction statement (type 
can be commit,release,rollback or start)"        ]
 [ "sql",       "transaction",  "pattern sql.transaction():void ",      
"SQLtransaction2;",     "Start an autocommit transaction"       ]
+[ "sql",       "transaction",  "pattern sql.transaction():void ",      
"SQLtransaction2;",     "Start an autocommit transaction"       ]
+[ "sql",       "transaction_begin",    "pattern 
sql.transaction_begin(chain:int, name:str):void ",     "SQLtransaction_begin;", 
       "A transaction statement (type can be commit,release,rollback or start)" 
       ]
+[ "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",       "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"      ]
@@ -8462,6 +8453,44 @@ Ready.
 [ "sqlblob",   "#tostr",       "command sqlblob.#tostr():void ",       
"SQLBLOBtostr;",        ""      ]
 [ "sqlblob",   "sqlblob",      "command sqlblob.sqlblob(s:sqlblob):sqlblob ",  
"BLOBblob_blob;",       "Noop routine." ]
 [ "sqlblob",   "sqlblob",      "command sqlblob.sqlblob(s:str):sqlblob ",      
"BLOBsqlblob_fromstr;", ""      ]
+[ "sqlcatalog",        "alter_add_table",      "pattern 
sqlcatalog.alter_add_table(sname:str, mtnme:str, psnme:str, ptnme:str, 
action:int):void ",     "SQLalter_add_table;",  "Catalog operation 
alter_add_table"     ]
+[ "sqlcatalog",        "alter_del_table",      "pattern 
sqlcatalog.alter_del_table(sname:str, mtnme:str, psnme:str, ptnme:str, 
action:int):void ",     "SQLalter_del_table;",  "Catalog operation 
alter_del_table"     ]
+[ "sqlcatalog",        "alter_seq",    "pattern 
sqlcatalog.alter_seq(sname:str, seq:ptr, val:lng):void ",      "SQLalter_seq;", 
       "Catalog operation alter_seq"   ]
+[ "sqlcatalog",        "alter_set_table",      "pattern 
sqlcatalog.alter_set_table(sname:str, tnme:str, access:int):void ",    
"SQLalter_set_table;",  "Catalog operation alter_set_table"     ]
+[ "sqlcatalog",        "alter_table",  "pattern 
sqlcatalog.alter_table(sname:str, tbl:ptr, action:int):void ", 
"SQLalter_table;",      "Catalog operation alter_table" ]
+[ "sqlcatalog",        "alter_user",   "pattern 
sqlcatalog.alter_user(sname:str, passwrd:str, enc:int, schema:str, 
oldpasswrd:str):void ",     "SQLalter_user;",       "Catalog operation 
alter_user"  ]
+[ "sqlcatalog",        "create_function",      "pattern 
sqlcatalog.create_function(sname:str, fcn:ptr):void ", "SQLcreate_function;",  
"Catalog operation create_function"     ]
+[ "sqlcatalog",        "create_role",  "pattern 
sqlcatalog.create_role(sname:str, role:str, grator:int):void ",        
"SQLcreate_role;",      "Catalog operation create_role" ]
+[ "sqlcatalog",        "create_schema",        "pattern 
sqlcatalog.create_schema(sname:str, auth:str, action:int):void ",      
"SQLcreate_schema;",    "Catalog operation create_schema"       ]
+[ "sqlcatalog",        "create_seq",   "pattern 
sqlcatalog.create_seq(sname:str, seq:ptr, action:int):void ",  
"SQLcreate_seq;",       "Catalog operation create_seq"  ]
+[ "sqlcatalog",        "create_table", "pattern 
sqlcatalog.create_table(sname:str, tbl:ptr, temp:int):void ",  
"SQLcreate_table;",     "Catalog operation create_table"        ]
+[ "sqlcatalog",        "create_trigger",       "pattern 
sqlcatalog.create_trigger(sname:str, tname:str, triggername:str, time:int, 
orientation:int, event:int, old:str, new:str, cond:str, qry:str):void ",    
"SQLcreate_trigger;",   "Catalog operation create_trigger"      ]
+[ "sqlcatalog",        "create_type",  "pattern 
sqlcatalog.create_type(sname:str, nme:str, impl:str):void ",   
"SQLcreate_type;",      "Catalog operation create_type" ]
+[ "sqlcatalog",        "create_user",  "pattern 
sqlcatalog.create_user(sname:str, passwrd:str, enc:int, schema:str, 
fullname:str):void ",      "SQLcreate_user;",      "Catalog operation 
create_user" ]
+[ "sqlcatalog",        "create_view",  "pattern 
sqlcatalog.create_view(sname:str, tbl:ptr, temp:int):void ",   
"SQLcreate_view;",      "Catalog operation create_view" ]
+[ "sqlcatalog",        "drop_constraint",      "pattern 
sqlcatalog.drop_constraint(sname:str, name:str, action:int):void ",    
"SQLdrop_constraint;",  "Catalog operation drop_constraint"     ]
+[ "sqlcatalog",        "drop_function",        "pattern 
sqlcatalog.drop_function(sname:str, fname:str, fid:int, type:int, 
action:int):void ",  "SQLdrop_function;",    "Catalog operation drop_function"  
     ]
+[ "sqlcatalog",        "drop_index",   "pattern 
sqlcatalog.drop_index(sname:str, iname:str, action:int):void ",        
"SQLdrop_index;",       "Catalog operation drop_index"  ]
+[ "sqlcatalog",        "drop_role",    "pattern sqlcatalog.drop_role(auth:str, 
role:str, action:int):void ",   "SQLdrop_role;",        "Catalog operation 
drop_role"   ]
+[ "sqlcatalog",        "drop_role",    "pattern sqlcatalog.drop_role(role:str, 
action:int):void ",     "SQLdrop_role;",        "Catalog operation drop_role"   
]
+[ "sqlcatalog",        "drop_schema",  "pattern 
sqlcatalog.drop_schema(sname:str, s:str, action:int):void ",   
"SQLdrop_schema;",      "Catalog operation drop_schema" ]
+[ "sqlcatalog",        "drop_schema",  "pattern 
sqlcatalog.drop_schema(sname:str, s:str, action:int, ifexists:int):void ",     
"SQLdrop_schema;",      "Catalog operation drop_schema" ]
+[ "sqlcatalog",        "drop_seq",     "pattern sqlcatalog.drop_seq(sname:str, 
nme:str, action:int):void ",    "SQLdrop_seq;", "Catalog operation drop_seq"    
]
+[ "sqlcatalog",        "drop_table",   "pattern 
sqlcatalog.drop_table(sname:str, name:str, action:int):void ", 
"SQLdrop_table;",       "Catalog operation drop_table"  ]
+[ "sqlcatalog",        "drop_table",   "pattern 
sqlcatalog.drop_table(sname:str, name:str, action:int, ifexists:int):void ",   
"SQLdrop_table;",       "Catalog operation drop_table"  ]
+[ "sqlcatalog",        "drop_trigger", "pattern 
sqlcatalog.drop_trigger(sname:str, nme:str):void ",    "SQLdrop_trigger;",     
"Catalog operation drop_trigger"        ]
+[ "sqlcatalog",        "drop_type",    "pattern 
sqlcatalog.drop_type(sname:str, nme:str, action:int):void ",   "SQLdrop_type;", 
       "Catalog operation drop_type"   ]
+[ "sqlcatalog",        "drop_user",    "pattern 
sqlcatalog.drop_user(sname:str, action:int):void ",    "SQLdrop_user;",        
"Catalog operation drop_user"   ]
+[ "sqlcatalog",        "drop_user",    "pattern 
sqlcatalog.drop_user(sname:str, auth:str, action:int):void ",  "SQLdrop_user;", 
       "Catalog operation drop_user"   ]
+[ "sqlcatalog",        "drop_view",    "pattern 
sqlcatalog.drop_view(sname:str, name:str, action:int):void ",  "SQLdrop_view;", 
       "Catalog operation drop_view"   ]
+[ "sqlcatalog",        "drop_view",    "pattern 
sqlcatalog.drop_view(sname:str, name:str, action:int, ifexists:int):void ",    
"SQLdrop_view;",        "Catalog operation drop_view"   ]
+[ "sqlcatalog",        "grant",        "pattern sqlcatalog.grant(sname:str, 
tbl:str, grantee:str, privs:int, cname:str, gr:int, grantor:int):void ",   
"SQLgrant;",    "Catalog operation grant"       ]
+[ "sqlcatalog",        "grant_function",       "pattern 
sqlcatalog.grant_function(sname:str, fcnid:int, grantee:str, privs:int, 
grant:int, grantor:int):void ",        "SQLgrant_function;",   "Catalog 
operation grant_function"      ]
+[ "sqlcatalog",        "grant_roles",  "pattern 
sqlcatalog.grant_roles(sname:str, auth:str, grantor:int, admin:int):void ",    
"SQLgrant_roles;",      "Catalog operation grant_roles" ]
+[ "sqlcatalog",        "rename_user",  "pattern 
sqlcatalog.rename_user(sname:str, newnme:str, action:int):void ",      
"SQLrename_user;",      "Catalog operation rename_user" ]
+[ "sqlcatalog",        "revoke",       "pattern sqlcatalog.revoke(sname:str, 
tbl:str, grantee:str, privs:int, cname:str, grant:int, grantor:int):void ",     
  "SQLrevoke;",   "Catalog operation revoke"      ]
+[ "sqlcatalog",        "revoke_function",      "pattern 
sqlcatalog.revoke_function(sname:str, fcnid:int, grantee:str, privs:int, 
grant:int, grantor:int):void ",       "SQLrevoke_function;",  "Catalog 
operation revoke_function"     ]
+[ "sqlcatalog",        "revoke_roles", "pattern 
sqlcatalog.revoke_roles(sname:str, auth:str, grantor:int, admin:int):void ",   
"SQLrevoke_roles;",     "Catalog operation revoke_roles"        ]
 [ "srvpool",   "connect",      "command srvpool.connect(dbname:str):str ",     
"SRVPOOLconnect;",      "Returns the connection to the server dbname."  ]
 [ "srvpool",   "exec", "pattern srvpool.exec(fname:str, arg:any...):any... ",  
"SRVPOOLexec;", "Remote execution of the function on dbname if channel is 
free."        ]
 [ "srvpool",   "local",        "command srvpool.local(b:bit):void ",   
"SRVPOOLlocal;",        "Change location from remote to local execution"        
]
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
@@ -10525,6 +10525,8 @@ Ready.
 [ "optimizer", "mitosis",      "pattern optimizer.mitosis(mod:str, 
fcn:str):str ",     "OPTwrapper;",  "Modify the plan to exploit parallel 
processing on multiple cores"      ]
 [ "optimizer", "multiplex",    "pattern optimizer.multiplex():void ",  
"OPTwrapper;",  "Compiler for multiplexed instructions."        ]
 [ "optimizer", "multiplex",    "pattern optimizer.multiplex(mod:str, 
fcn:str):void ",  "OPTwrapper;",  "Compiler for multiplexed instructions."      
  ]
+[ "optimizer", "oltp", "pattern optimizer.oltp():str ",        "OPTwrapper;",  
""      ]
+[ "optimizer", "oltp", "pattern optimizer.oltp(mod:str, fcn:str):str ",        
"OPTwrapper;",  "Inject the OLTP locking primitives."   ]
 [ "optimizer", "optimize",     "pattern optimizer.optimize(mod:str, 
fcn:str):void ",   "QOToptimize;", "Optimize a specific operation" ]
 [ "optimizer", "orcam",        "pattern optimizer.orcam(mod:str, fcn:str, 
targetmod:str, targetfcn:str):void ",        "OPTorcam;",    "Inverse macro, 
find pattern and replace with a function call." ]
 [ "optimizer", "orcam",        "pattern optimizer.orcam(targetmod:str, 
targetfcn:str):void ",  "OPTorcam;",    "Inverse macro processor for current 
function"  ]
@@ -10675,21 +10677,6 @@ 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",       "catalog",      "pattern sql.catalog(type:int, grantee:str, 
role:str, grantor:int, admin:int):void ",   "SQLcatalog;",  "a grant/revoke 
role statement" ]
-[ "sql",       "catalog",      "pattern sql.catalog(type:int, iname:str, 
itype:int, sname:str, tname:str...):void ",   "SQLcatalog;",  "a create index 
catalog statement"      ]
-[ "sql",       "catalog",      "pattern sql.catalog(type:int, msname:str, 
mtname:str, psname:str, ptname:str, action:int):void ",      "SQLcatalog;",  "a 
alter table add/del table catalog statement" ]
-[ "sql",       "catalog",      "pattern sql.catalog(type:int, sname:str, 
func:int, grantee:str, privs:int, grant:int, grantor:int):void ",     
"SQLcatalog;",  "a grant/revoke function privileges statement"  ]
-[ "sql",       "catalog",      "pattern sql.catalog(type:int, sname:str, 
name:str, action:int):void ", "SQLcatalog;",  "a catalog statement"   ]
-[ "sql",       "catalog",      "pattern sql.catalog(type:int, sname:str, 
name:str, funcid:int, ft:int, action:int):void ",     "SQLcatalog;",  "a 
catalog statement"   ]
-[ "sql",       "catalog",      "pattern sql.catalog(type:int, sname:str, 
name:str, tname:str, time:int, o:int, event:int, oname:str, nname:str, 
condition:str, query:str):void ",      "SQLcatalog;",  "a catalog statement"   ]
-[ "sql",       "catalog",      "pattern sql.catalog(type:int, sname:str, 
t:ptr):void ",        "SQLcatalog;",  "a catalog statement"   ]
-[ "sql",       "catalog",      "pattern sql.catalog(type:int, sname:str, 
t:ptr, restart:lng):void ",   "SQLcatalog;",  "a catalog statement"   ]
-[ "sql",       "catalog",      "pattern sql.catalog(type:int, sname:str, 
t:ptr, temp:int):void ",      "SQLcatalog;",  "a catalog statement"   ]
-[ "sql",       "catalog",      "pattern sql.catalog(type:int, sname:str, 
tname:str):void ",    "SQLcatalog;",  "a catalog trigger statement"   ]
-[ "sql",       "catalog",      "pattern sql.catalog(type:int, sname:str, 
tname:str, access:int):void ",        "SQLcatalog;",  "a alter table access 
statement"        ]
-[ "sql",       "catalog",      "pattern sql.catalog(type:int, sname:str, 
tname:str, grantee:str, privs:int, cname:str, grant:int, grantor:int):void ", 
"SQLcatalog;",  "a grant/revoke privileges statement"   ]
-[ "sql",       "catalog",      "pattern sql.catalog(type:int, sname:str, 
tname:str, impl:str):void ",  "SQLcatalog;",  "a create type catalog statement" 
      ]
-[ "sql",       "catalog",      "pattern sql.catalog(type:int, user:str, 
passwd:str, enc:int, schema:str, fullname:str):void ", "SQLcatalog;",  "a user 
catalog statement"      ]
 [ "sql",       "clear_table",  "pattern sql.clear_table(sname:str, 
tname:str):lng ",   "mvc_clear_table_wrap;",        "Clear table"   ]
 [ "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)"      ]
@@ -10817,8 +10804,12 @@ Ready.
 [ "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, 
part_nr:int, nr_parts:int):bat[:oid] ", "SQLtid;",      "Return the tables tid 
column." ]
-[ "sql",       "trans",        "pattern sql.trans(type:int, chain:int, 
name:str):void ",       "SQLtransaction;",      "A transaction statement (type 
can be commit,release,rollback or start)"        ]
 [ "sql",       "transaction",  "pattern sql.transaction():void ",      
"SQLtransaction2;",     "Start an autocommit transaction"       ]
+[ "sql",       "transaction",  "pattern sql.transaction():void ",      
"SQLtransaction2;",     "Start an autocommit transaction"       ]
+[ "sql",       "transaction_begin",    "pattern 
sql.transaction_begin(chain:int, name:str):void ",     "SQLtransaction_begin;", 
       "A transaction statement (type can be commit,release,rollback or start)" 
       ]
+[ "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",       "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"      ]
@@ -10826,6 +10817,44 @@ Ready.
 [ "sqlblob",   "#tostr",       "command sqlblob.#tostr():void ",       
"SQLBLOBtostr;",        ""      ]
 [ "sqlblob",   "sqlblob",      "command sqlblob.sqlblob(s:sqlblob):sqlblob ",  
"BLOBblob_blob;",       "Noop routine." ]
 [ "sqlblob",   "sqlblob",      "command sqlblob.sqlblob(s:str):sqlblob ",      
"BLOBsqlblob_fromstr;", ""      ]
+[ "sqlcatalog",        "alter_add_table",      "pattern 
sqlcatalog.alter_add_table(sname:str, mtnme:str, psnme:str, ptnme:str, 
action:int):void ",     "SQLalter_add_table;",  "Catalog operation 
alter_add_table"     ]
+[ "sqlcatalog",        "alter_del_table",      "pattern 
sqlcatalog.alter_del_table(sname:str, mtnme:str, psnme:str, ptnme:str, 
action:int):void ",     "SQLalter_del_table;",  "Catalog operation 
alter_del_table"     ]
+[ "sqlcatalog",        "alter_seq",    "pattern 
sqlcatalog.alter_seq(sname:str, seq:ptr, val:lng):void ",      "SQLalter_seq;", 
       "Catalog operation alter_seq"   ]
+[ "sqlcatalog",        "alter_set_table",      "pattern 
sqlcatalog.alter_set_table(sname:str, tnme:str, access:int):void ",    
"SQLalter_set_table;",  "Catalog operation alter_set_table"     ]
+[ "sqlcatalog",        "alter_table",  "pattern 
sqlcatalog.alter_table(sname:str, tbl:ptr, action:int):void ", 
"SQLalter_table;",      "Catalog operation alter_table" ]
+[ "sqlcatalog",        "alter_user",   "pattern 
sqlcatalog.alter_user(sname:str, passwrd:str, enc:int, schema:str, 
oldpasswrd:str):void ",     "SQLalter_user;",       "Catalog operation 
alter_user"  ]
+[ "sqlcatalog",        "create_function",      "pattern 
sqlcatalog.create_function(sname:str, fcn:ptr):void ", "SQLcreate_function;",  
"Catalog operation create_function"     ]
+[ "sqlcatalog",        "create_role",  "pattern 
sqlcatalog.create_role(sname:str, role:str, grator:int):void ",        
"SQLcreate_role;",      "Catalog operation create_role" ]
+[ "sqlcatalog",        "create_schema",        "pattern 
sqlcatalog.create_schema(sname:str, auth:str, action:int):void ",      
"SQLcreate_schema;",    "Catalog operation create_schema"       ]
+[ "sqlcatalog",        "create_seq",   "pattern 
sqlcatalog.create_seq(sname:str, seq:ptr, action:int):void ",  
"SQLcreate_seq;",       "Catalog operation create_seq"  ]
+[ "sqlcatalog",        "create_table", "pattern 
sqlcatalog.create_table(sname:str, tbl:ptr, temp:int):void ",  
"SQLcreate_table;",     "Catalog operation create_table"        ]
+[ "sqlcatalog",        "create_trigger",       "pattern 
sqlcatalog.create_trigger(sname:str, tname:str, triggername:str, time:int, 
orientation:int, event:int, old:str, new:str, cond:str, qry:str):void ",    
"SQLcreate_trigger;",   "Catalog operation create_trigger"      ]
+[ "sqlcatalog",        "create_type",  "pattern 
sqlcatalog.create_type(sname:str, nme:str, impl:str):void ",   
"SQLcreate_type;",      "Catalog operation create_type" ]
+[ "sqlcatalog",        "create_user",  "pattern 
sqlcatalog.create_user(sname:str, passwrd:str, enc:int, schema:str, 
fullname:str):void ",      "SQLcreate_user;",      "Catalog operation 
create_user" ]
+[ "sqlcatalog",        "create_view",  "pattern 
sqlcatalog.create_view(sname:str, tbl:ptr, temp:int):void ",   
"SQLcreate_view;",      "Catalog operation create_view" ]
+[ "sqlcatalog",        "drop_constraint",      "pattern 
sqlcatalog.drop_constraint(sname:str, name:str, action:int):void ",    
"SQLdrop_constraint;",  "Catalog operation drop_constraint"     ]
+[ "sqlcatalog",        "drop_function",        "pattern 
sqlcatalog.drop_function(sname:str, fname:str, fid:int, type:int, 
action:int):void ",  "SQLdrop_function;",    "Catalog operation drop_function"  
     ]
+[ "sqlcatalog",        "drop_index",   "pattern 
sqlcatalog.drop_index(sname:str, iname:str, action:int):void ",        
"SQLdrop_index;",       "Catalog operation drop_index"  ]
+[ "sqlcatalog",        "drop_role",    "pattern sqlcatalog.drop_role(auth:str, 
role:str, action:int):void ",   "SQLdrop_role;",        "Catalog operation 
drop_role"   ]
+[ "sqlcatalog",        "drop_role",    "pattern sqlcatalog.drop_role(role:str, 
action:int):void ",     "SQLdrop_role;",        "Catalog operation drop_role"   
]
+[ "sqlcatalog",        "drop_schema",  "pattern 
sqlcatalog.drop_schema(sname:str, s:str, action:int):void ",   
"SQLdrop_schema;",      "Catalog operation drop_schema" ]
+[ "sqlcatalog",        "drop_schema",  "pattern 
sqlcatalog.drop_schema(sname:str, s:str, action:int, ifexists:int):void ",     
"SQLdrop_schema;",      "Catalog operation drop_schema" ]
+[ "sqlcatalog",        "drop_seq",     "pattern sqlcatalog.drop_seq(sname:str, 
nme:str, action:int):void ",    "SQLdrop_seq;", "Catalog operation drop_seq"    
]
+[ "sqlcatalog",        "drop_table",   "pattern 
sqlcatalog.drop_table(sname:str, name:str, action:int):void ", 
"SQLdrop_table;",       "Catalog operation drop_table"  ]
+[ "sqlcatalog",        "drop_table",   "pattern 
sqlcatalog.drop_table(sname:str, name:str, action:int, ifexists:int):void ",   
"SQLdrop_table;",       "Catalog operation drop_table"  ]
+[ "sqlcatalog",        "drop_trigger", "pattern 
sqlcatalog.drop_trigger(sname:str, nme:str):void ",    "SQLdrop_trigger;",     
"Catalog operation drop_trigger"        ]
+[ "sqlcatalog",        "drop_type",    "pattern 
sqlcatalog.drop_type(sname:str, nme:str, action:int):void ",   "SQLdrop_type;", 
       "Catalog operation drop_type"   ]
+[ "sqlcatalog",        "drop_user",    "pattern 
sqlcatalog.drop_user(sname:str, action:int):void ",    "SQLdrop_user;",        
"Catalog operation drop_user"   ]
+[ "sqlcatalog",        "drop_user",    "pattern 
sqlcatalog.drop_user(sname:str, auth:str, action:int):void ",  "SQLdrop_user;", 
       "Catalog operation drop_user"   ]
+[ "sqlcatalog",        "drop_view",    "pattern 
sqlcatalog.drop_view(sname:str, name:str, action:int):void ",  "SQLdrop_view;", 
       "Catalog operation drop_view"   ]
+[ "sqlcatalog",        "drop_view",    "pattern 
sqlcatalog.drop_view(sname:str, name:str, action:int, ifexists:int):void ",    
"SQLdrop_view;",        "Catalog operation drop_view"   ]
+[ "sqlcatalog",        "grant",        "pattern sqlcatalog.grant(sname:str, 
tbl:str, grantee:str, privs:int, cname:str, gr:int, grantor:int):void ",   
"SQLgrant;",    "Catalog operation grant"       ]
+[ "sqlcatalog",        "grant_function",       "pattern 
sqlcatalog.grant_function(sname:str, fcnid:int, grantee:str, privs:int, 
grant:int, grantor:int):void ",        "SQLgrant_function;",   "Catalog 
operation grant_function"      ]
+[ "sqlcatalog",        "grant_roles",  "pattern 
sqlcatalog.grant_roles(sname:str, auth:str, grantor:int, admin:int):void ",    
"SQLgrant_roles;",      "Catalog operation grant_roles" ]
+[ "sqlcatalog",        "rename_user",  "pattern 
sqlcatalog.rename_user(sname:str, newnme:str, action:int):void ",      
"SQLrename_user;",      "Catalog operation rename_user" ]
+[ "sqlcatalog",        "revoke",       "pattern sqlcatalog.revoke(sname:str, 
tbl:str, grantee:str, privs:int, cname:str, grant:int, grantor:int):void ",     
  "SQLrevoke;",   "Catalog operation revoke"      ]
+[ "sqlcatalog",        "revoke_function",      "pattern 
sqlcatalog.revoke_function(sname:str, fcnid:int, grantee:str, privs:int, 
grant:int, grantor:int):void ",       "SQLrevoke_function;",  "Catalog 
operation revoke_function"     ]
+[ "sqlcatalog",        "revoke_roles", "pattern 
sqlcatalog.revoke_roles(sname:str, auth:str, grantor:int, admin:int):void ",   
"SQLrevoke_roles;",     "Catalog operation revoke_roles"        ]
 [ "srvpool",   "connect",      "command srvpool.connect(dbname:str):str ",     
"SRVPOOLconnect;",      "Returns the connection to the server dbname."  ]
 [ "srvpool",   "exec", "pattern srvpool.exec(fname:str, arg:any...):any... ",  
"SRVPOOLexec;", "Remote execution of the function on dbname if channel is 
free."        ]
 [ "srvpool",   "local",        "command srvpool.local(b:bit):void ",   
"SRVPOOLlocal;",        "Change location from remote to local execution"        
]
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
@@ -1541,6 +1541,14 @@ str OIDXgetorderidx(Client cntxt, MalBlk
 str OIDXhasorderidx(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 str OIDXmerge(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 str OIDXorderidx(bat *ret, const bat *bid, const bit *stable);
+str OLTPdisable(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
+str OLTPenable(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
+str OLTPinit(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
+str OLTPis_enabled(int *ret);
+str OLTPlock(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
+str OLTPrelease(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
+str OLTPreset(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
+str OLTPtable(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 void OPTaliasRemap(InstrPtr p, int *alias);
 int OPTaliasesImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
 int OPTcandidatesImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
@@ -1565,6 +1573,7 @@ int OPTmergetableImplementation(Client c
 int OPTmitosisImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
 int OPTmultiplexImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 str OPTmultiplexSimple(Client cntxt, MalBlkPtr mb);
+int OPToltpImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
 str OPTorcam(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
 int OPTorcamImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
p);
 int OPTprofilerImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
@@ -2041,7 +2050,6 @@ str deleteRef;
 void deleteSymbol(Module scope, Symbol prg);
 str deltaRef;
 str dense_rankRef;
-str depositRef;
 malType destinationType(MalBlkPtr mb, InstrPtr p);
 str diffRef;
 str differenceRef;
@@ -2255,6 +2263,7 @@ void mal_instruction_reset(void);
 void mal_linker_reset(void) __attribute__((__visibility__("hidden")));
 void mal_module_reset(void) __attribute__((__visibility__("hidden")));
 void mal_namespace_reset(void) __attribute__((__visibility__("hidden")));
+MT_Lock mal_oltpLock;
 MT_Lock mal_profileLock;
 str mal_quote(const char *msg, size_t size);
 MT_Lock mal_remoteLock;
@@ -2348,6 +2357,7 @@ str not_likeRef;
 str not_uniqueRef;
 str oidRef;
 void oldmoveInstruction(InstrPtr dst, InstrPtr src);
+str oltpRef;
 str openProfilerStream(stream *fd, int mode);
 str openRef;
 int open_block_stream(Stream *S, Stream *is);
diff --git a/monetdb5/mal/mal.c b/monetdb5/mal/mal.c
--- a/monetdb5/mal/mal.c
+++ b/monetdb5/mal/mal.c
@@ -44,6 +44,7 @@ MT_Lock       mal_profileLock MT_LOCK_INITIA
 MT_Lock     mal_copyLock MT_LOCK_INITIALIZER("mal_copyLock");
 MT_Lock     mal_delayLock MT_LOCK_INITIALIZER("mal_delayLock");
 MT_Lock     mal_beatLock MT_LOCK_INITIALIZER("mal_beatLock");
+MT_Lock     mal_oltpLock MT_LOCK_INITIALIZER("mal_oltpLock");
 
 /*
  * Initialization of the MAL context
@@ -87,6 +88,7 @@ int mal_init(void){
        MT_lock_init( &mal_copyLock, "mal_copyLock");
        MT_lock_init( &mal_delayLock, "mal_delayLock");
        MT_lock_init( &mal_beatLock, "mal_beatLock");
+       MT_lock_init( &mal_oltpLock, "mal_beatLock");
 #endif
 
        tstAligned();
diff --git a/monetdb5/mal/mal.h b/monetdb5/mal/mal.h
--- a/monetdb5/mal/mal.h
+++ b/monetdb5/mal/mal.h
@@ -80,6 +80,7 @@ mal_export MT_Lock  mal_profileLock ;
 mal_export MT_Lock  mal_copyLock ;
 mal_export MT_Lock  mal_delayLock ;
 mal_export MT_Lock  mal_beatLock ;
+mal_export MT_Lock  mal_oltpLock ;
 
 
 mal_export int mal_init(void);
@@ -259,4 +260,9 @@ typedef struct MALSTK {
        ValRecord stk[FLEXIBLE_ARRAY_MEMBER];
 } MalStack, *MalStkPtr;
 
+#define MAXOLTPLOCKS  1024
+typedef unsigned char OLTPlocks[MAXOLTPLOCKS];
+
+#define OLTPclear(X)  memset((char*)X, 0, sizeof(X))
+
 #endif /*  _MAL_H*/
diff --git a/monetdb5/modules/mal/Makefile.ag b/monetdb5/modules/mal/Makefile.ag
--- a/monetdb5/modules/mal/Makefile.ag
+++ b/monetdb5/modules/mal/Makefile.ag
@@ -35,6 +35,7 @@ lib_mal = {
                mdb.c mdb.h \
                mkey.c mkey.h \
                manifold.c manifold.h \
+               oltp.c oltp.h \
                pcre.c \
                profiler.c profiler.h \
                querylog.c querylog.h \
@@ -58,7 +59,7 @@ headers_mal = {
                inspect.mal manual.mal mal_io.mal mkey.mal manifold.mal \
                iterator.mal clients.mal \
                factories.mal groupby.mal mdb.mal pcre.mal mat.mal \
-               transaction.mal \
+               transaction.mal oltp.mal \
                mal_mapi.mal sabaoth.mal remote.mal  \
                txtsim.mal \
                tokenizer.mal sample.mal json_util.mal \
diff --git a/monetdb5/modules/mal/oltp.c b/monetdb5/modules/mal/oltp.c
new file mode 100644
--- /dev/null
+++ b/monetdb5/modules/mal/oltp.c
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to