Re: pl/pgsql enabled by default

Mike Mascari <mascarm@mascari.com>

From: Mike Mascari <mascarm@mascari.com>
To: Neil Conway <neilc@samurai.com>
Cc: Andrew Sullivan <ajs@crankycanuck.ca>, pgsql-hackers@postgresql.org
Date: 2005-05-08T02:20:55Z
Lists: pgsql-hackers
Neil Conway wrote:
> Mike Mascari wrote:
> 
>> People who use views to achieve row security, which is a rather common 
>> paradigm, cannot allow users to create functions with side effects.
> 
> 
> Can you elaborate? I'm not sure I follow you.
> 
> (I'll note anyway that (1) SQL functions can have side effects: CREATE 
> FUNCTION foo() RETURNS VOID AS 'DELETE FROM ...', for example 

Wow. That's a problem IMHO. Many people use views to allow userA to 
query his salary without seeing userB's. If userA can just:

1. Create a SQL function which inserts into another table its arguments

2. Issue a query like:

SELECT *
FROM view_of_salaries_based_on_current_user
WHERE my_side_effect_function_that_inserts_into_a_temp_table(salary, 
employee);

and that function is writable with just 'SQL', then many, many people 
have a serious security risk on their hands. Perhaps this is why 
Oracle's standard UDFs cannot perform inserts, updates, or deletes.

Mike Mascari