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