Thread: AW: New SQL Datatype RECURRINGCHAR

AW: New SQL Datatype RECURRINGCHAR

From
Zeugswetter Andreas SB
Date:
 
> My feeling is that the restrictions are stringent enough to eliminate
> most of the interesting uses of views, and hence an automatic rule
> creation feature is not nearly as useful/important as it appears at
> first glance.

The most prominent of the "interesting uses" probably beeing when the views
are part of the authorization system, since views are the only standardized
mechanism to restrict access at the row level. Imho not to be neglected.
(user xxx is only allowed to manipulate rows that belong to his department,
so he is only granted access to a view, not the main table)

Andreas


Re: AW: New SQL Datatype RECURRINGCHAR

From
Hannu Krosing
Date:
Zeugswetter Andreas SB wrote:
> 
> 
> > My feeling is that the restrictions are stringent enough to eliminate
> > most of the interesting uses of views, and hence an automatic rule
> > creation feature is not nearly as useful/important as it appears at
> > first glance.
> 
> The most prominent of the "interesting uses" probably beeing when the views
> are part of the authorization system, since views are the only standardized
> mechanism to restrict access at the row level.

True, and often the views can be restricted to insert only data that
will be 
visible using this view.

> Imho not to be neglected.
> (user xxx is only allowed to manipulate rows that belong to his department,
> so he is only granted access to a view, not the main table)

This seems to be a little more complicated that Tom described (I.e. it
has 
probably more than one relation involved or uses a function to get
CURRENT_USER's 
department id)

IIRC MS Access has much broader repertoire of updatable views than
described 
by Tom. Can be it's an extension to standard SQL though.

-----------------
Hannu


Re: AW: New SQL Datatype RECURRINGCHAR

From
Tom Lane
Date:
Hannu Krosing <hannu@tm.ee> writes:
> Zeugswetter Andreas SB wrote:
>> The most prominent of the "interesting uses" probably beeing when the views
>> are part of the authorization system, since views are the only standardized
>> mechanism to restrict access at the row level.

> True, and often the views can be restricted to insert only data that
> will be visible using this view.

Right.  The interesting question is whether an automatic rule creator
could be expected to derive the correct restrictions on
insert/update/delete given the WHERE clause of the view.  Insert/delete
might not be too bad (at first thought, requiring the inserted/deleted
rows to pass the WHERE condition would do), but I'm not so sure about
update.  Is it sufficient to require both the old and new states of the
row to pass the WHERE condition?

SQL92 gives this restriction on WHERE clauses for updatable views:
           d) If the <table expression> immediately contained in QS imme-             diately contains a <where clause>
WC,then no leaf generally             underlying table of QS shall be a generally underlying table             of any
<queryexpression> contained in WC.
 

which conveys nothing to my mind :-(, except that they're restricting
sub-SELECTs in WHERE somehow.  Can anyone translate that into English?
        regards, tom lane


Re: AW: New SQL Datatype RECURRINGCHAR

From
Jan Wieck
Date:
Tom Lane wrote:
> Hannu Krosing <hannu@tm.ee> writes:
> > Zeugswetter Andreas SB wrote:
> >> The most prominent of the "interesting uses" probably beeing when the views
> >> are part of the authorization system, since views are the only standardized
> >> mechanism to restrict access at the row level.
>
> > True, and often the views can be restricted to insert only data that
> > will be visible using this view.
>
> Right.  The interesting question is whether an automatic rule creator
> could be expected to derive the correct restrictions on
> insert/update/delete given the WHERE clause of the view.  Insert/delete
> might not be too bad (at first thought, requiring the inserted/deleted
> rows to pass the WHERE condition would do), but I'm not so sure about
> update.  Is it sufficient to require both the old and new states of the
> row to pass the WHERE condition?
   Yes,  no  other  chance.  Remember that the rule on SELECT is   allways applied to the  scan  that  looks  for  the
rows to   update,  so  you'd  never  have  a  chance  to hit other rows   through the view.
 


Jan

--

#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me.                                  #
#================================================== JanWieck@Yahoo.com #



_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com



Re: AW: New SQL Datatype RECURRINGCHAR

From
Peter Eisentraut
Date:
Tom Lane writes:

> SQL92 gives this restriction on WHERE clauses for updatable views:
>
>             d) If the <table expression> immediately contained in QS imme-
>               diately contains a <where clause> WC, then no leaf generally
>               underlying table of QS shall be a generally underlying table
>               of any <query expression> contained in WC.
>
> which conveys nothing to my mind :-(, except that they're restricting
> sub-SELECTs in WHERE somehow.  Can anyone translate that into English?

No table mentioned in the FROM-clause (in PG even implicitly) of the query
expression (or view definition) is allowed to be mentioned in a subquery
in the WHERE clause of the query expression (or view definition).

The phrasing "leaf" and "generally" underlying is only to make this
statement theoretically pure because you can create generally underlying
tables that look different but do the same thing (different join syntax),
whereas a leaf generally underlying table is guaranteed to be a real base
table.

-- 
Peter Eisentraut   peter_e@gmx.net   http://funkturm.homeip.net/~peter