Say Joe creates a view called auview2, which depends on Mary’s view auview1. Joe grants Sue select permission on auview2.
Figure 12-2: Ownership chains and permission checking for views, case 1
Adaptive Server checks the permissions on auview2 and auview1, and finds that Sue can use them. Adaptive Server checks ownership on auview1 and authors and finds that they have the same owner. Therefore, Sue can use auview2.
Taking this example a step further, suppose that Joe’s view, auview2, depends on auview1, which depends on authors. Mary decides she likes Joe’s auview2 and creates auview3 on top of it. Both auview1 and authors are owned by Mary.
The ownership chain looks like this:
Figure 12-3: Ownership chains and permission checking for views, case 2
When Sue tries to access auview3, Adaptive Server checks permissions on auview3, auview2, and auview1. If Joe has granted permission to Sue on auview2 and Mary has granted her permission on auview3 and auview1, Adaptive Server allows the access. Adaptive Server checks permissions only if the object immediately before it in the chain has a different owner (or if it is the first object in the chain). For example, it checks auview2 because the object before it—auview3—is owned by a different user. It does not check permission on authors, because the object that immediately depends on it, auview1, is owned by the same user.