* Stephen Frost ([email protected]) wrote: > Attached are two test scripts and results from them. The gist of it is > this:
Now with the attachements. Apologies about that. Note that you'll need
to create the temp tablespace first.
Thanks,
Stephen
test_tblspace.sql
Description: application/sql
test_tblspace2.sql
Description: application/sql
current_user
--------------
sfrost
(1 row)
role
------
none
(1 row)
temp_tablespaces
------------------
rn_temp_01
(1 row)
List of tablespaces
Name | Owner | Location | Access
privileges | Description
------------+--------+-------------------------------------------+-------------------+-------------
rn_temp_01 | sfrost | /var/lib/postgresql/rn_tblspcs/rn_temp_01 |
|
(1 row)
create temporary table test1 (a int);
CREATE TABLE
select relname,reltablespace from pg_class where relname = test1;
relname | reltablespace
---------+---------------
test1 | 36578
(1 row)
drop role if exists test_role;
DROP ROLE
create role test_role;
CREATE ROLE
set role test_role;
SET
create temporary table test3 (a int);
ERROR: permission denied for tablespace rn_temp_01
current_user
--------------
sfrost
(1 row)
role
------
none
(1 row)
temp_tablespaces
------------------
rn_temp_01
(1 row)
List of tablespaces
Name | Owner | Location | Access
privileges | Description
------------+--------+-------------------------------------------+-------------------+-------------
rn_temp_01 | sfrost | /var/lib/postgresql/rn_tblspcs/rn_temp_01 |
|
(1 row)
create function test_func () returns int language plpgsql security definer as
begin create temporary table test2 (a int); return 1; end;;
CREATE FUNCTION
List of functions
Schema | Name | Result data type | Argument data types | Type |
Volatility | Owner | Language | Source code
| Description
--------+-----------+------------------+---------------------+--------+------------+--------+----------+------------------------------------------------------------+-------------
public | test_func | integer | | normal |
volatile | sfrost | plpgsql | begin create temporary table test2 (a int);
return 1; end; |
(1 row)
drop role if exists test_role;
DROP ROLE
create role test_role;
CREATE ROLE
set role test_role;
SET
create temporary table test (a int);
CREATE TABLE
relname | reltablespace
---------+---------------
test | 0
(1 row)
test_func
-----------
1
(1 row)
relname | reltablespace
---------+---------------
test2 | 0
(1 row)
signature.asc
Description: Digital signature
