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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list