temporarily separate qt-client locking from web client locking
[xtuple] / enyo-client / database / source / xt / functions / pg_advisory_unlock.sql
1 create or replace function xt.pg_advisory_unlock(oid integer, id integer) returns boolean as $$
2   var sql = "select pg_catalog.pg_advisory_unlock($1, $2) as result;";
3   return plv8.execute(sql, [oid, id])[0].result;
4   /* temporary: let qt client use advisory locks but web client use xt.lock */
5
6   var pid = plv8.execute("select pg_backend_pid() as pid;")[0].pid,
7     username = plv8.execute("select geteffectivextuser() as username;")[0].username,
8     sql = "select * from xt.lock where lock_table_oid = $1 and lock_record_id = $2 and lock_username = $3 and lock_pid = $4;",
9     data = Object.create(XT.Data),
10     query = plv8.execute(sql, [oid, id, username, pid]);
11
12   if (query.length) {
13     data.releaseLock({key: query[0].lock_id});
14     return true;
15   }
16   return false;
17   
18 $$ language plv8;