Long Transactions Support This module and associated pl/pgsql functions have been implemented to provide long locking support required by Web Feature Service specification. Users must use serializable transaction level otherwise locking mechanism would break. AddAuth Add an authorization token to be used in current transaction. boolean AddAuth text auth_token Description Add an authorization token to be used in current transaction. Creates/adds to a temp table called temp_lock_have_table the current transaction identifier and authorization token key. Availability: 1.1.3 Examples SELECT LockRow('towns', '353', 'priscilla'); BEGIN TRANSACTION; SELECT AddAuth('joey'); UPDATE towns SET the_geom = ST_Translate(the_geom,2,2) WHERE gid = 353; COMMIT; ---Error-- ERROR: UPDATE where "gid" = '353' requires authorization 'priscilla' See Also CheckAuth Creates trigger on a table to prevent/allow updates and deletes of rows based on authorization token. integer CheckAuth text a_schema_name text a_table_name text a_key_column_name integer CheckAuth text a_table_name text a_key_column_name Description Creates trigger on a table to prevent/allow updates and deletes of rows based on authorization token. Identify rows using <rowid_col> column. If a_schema_name is not passed in, then searches for table in current schema. If an authorization trigger already exists on this table function errors. If Transaction support is not enabled, function throws an exception. Availability: 1.1.3 Examples SELECT CheckAuth('public', 'towns', 'gid'); result ------ 0 See Also DisableLongTransactions Disable long transaction support. This function removes the long transaction support metadata tables, and drops all triggers attached to lock-checked tables. text DisableLongTransactions Description Disable long transaction support. This function removes the long transaction support metadata tables, and drops all triggers attached to lock-checked tables. Drops meta table called authorization_table and a view called authorized_tables and all triggers called checkauthtrigger Availability: 1.1.3 Examples SELECT DisableLongTransactions(); --result-- Long transactions support disabled See Also EnableLongTransactions Enable long transaction support. This function creates the required metadata tables, needs to be called once before using the other functions in this section. Calling it twice is harmless. text EnableLongTransactions Description Enable long transaction support. This function creates the required metadata tables, needs to be called once before using the other functions in this section. Calling it twice is harmless. Creates a meta table called authorization_table and a view called authorized_tables Availability: 1.1.3 Examples SELECT EnableLongTransactions(); --result-- Long transactions support enabled See Also LockRow Set lock/authorization for specific row in table integer LockRow text a_schema_name text a_table_name text a_row_key text an_auth_token timestamp expire_dt integer LockRow text a_table_name text a_row_key text an_auth_token timestamp expire_dt integer LockRow text a_table_name text a_row_key text an_auth_token Description Set lock/authorization for specific row in table <authid> is a text value, <expires> is a timestamp defaulting to now()+1hour. Returns 1 if lock has been assigned, 0 otherwise (already locked by other auth) Availability: 1.1.3 Examples SELECT LockRow('public', 'towns', '2', 'joey'); LockRow ------- 1 --Joey has already locked the record and Priscilla is out of luck SELECT LockRow('public', 'towns', '2', 'priscilla'); LockRow ------- 0 See Also UnlockRows Remove all locks held by specified authorization id. Returns the number of locks released. integer UnlockRows text auth_token Description Remove all locks held by specified authorization id. Returns the number of locks released. Availability: 1.1.3 Examples SELECT LockRow('towns', '353', 'priscilla'); SELECT LockRow('towns', '2', 'priscilla'); SELECT UnLockRows('priscilla'); UnLockRows ------------ 2 See Also