|
Neohapsis is currently accepting applications for employment. For more information, please visit our website www.neohapsis.com or email hr@neohapsis.com |
Re: AW: Scoping and object resolution
From: John Singleton (jsinglet
johnsingleton.com)
Date: Thu Jun 10 2004 - 10:55:03 CDT
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
>
>
>It looks nearly correct.
>But public synonym would not be level 4, but level 2, increasing the levels of search in dba2 and dba.
>
Hurm. Okay, then how does it find something like this?
Catalog:
Users:
DBA.DBA
DBA.DBAUSER (RESOURCE)
DBA.DBA2 (DBA)
DBA2.USERDBA2 (RESOURCE)
Objects:
DBAUSER.SOMETABLE (Table)
DBAUSER.S_SOMETABLE (Public Synonym)
If USERDBA2 searches for the table "SOMETABLE" it will never be found.
However, if USERDBA2 searches for S_SOMETABLE, it will be found. My
guess was that there was a special synonym searching step... what
explains this behavior?
Best,
JLS
Zabach, Elke wrote:
>John Singleton wrote:
>
>
>>Hello all,
>>
>>So I think I've pretty much got MaxDB's name resolution system down. But
>>I just wanted to post to the list to make sure :)
>>
>>So, from what I've been able to determine, it works like this:
>>
>>1) Say I have three users. DBA, DBA2, and DBA2USER. DBA creates DBA2
>>then DBA2 creates the resource user DBA2USER.
>>The ownership looks like this:
>>DBA
>> DBA2
>> DBA2USER
>>
>>1) As user DBA2USER I issue the query, "Select * from sometable"
>>
>>
>>(Please excuse the pseudo-code :) )
>>
>>Level 1:
>>Searches for an object named "sometable" owned by DBA2USER.
>>
>>IF FOUND
>> RETURN SUCCESS
>>ELSE
>> CONTINUE TO LEVEL 2
>>
>>Level 2:
>>Searches for an object named "sometable" owned by DBA2 (the owner of
>>DBA2USER)
>>
>>IF FOUND
>> IF DBA2USER HAS PRIVILEGES
>> RETURN SUCCESS
>> ELSE
>> RETURN FAIL
>>ELSE
>> CONTINUE TO LEVEL3
>>
>>Level3:
>>Searches for an object "sometable" owned by DBA (the owner of DBA2)
>>
>>IF FOUND
>> IF DBA2USER HAS PRIVILEGES
>> RETURN SUCCESS
>> ELSE
>> RETURN FAIL
>>ELSE
>> CONTINUE TO LEVEL 4
>>
>>Level 4:
>>Searches for a public synonym named "sometable"
>>
>>IF EXISTS A PUBLIC SYNONYM "SOMETABLE"
>> IF DBA2USER HAS PRIVILEGES
>> RETURN SUCCESS
>> ELSE
>> RETURN FAIL
>> ELSE
>> RETURN FAIL
>>
>>
>>Test Questions:
>>1) How does this look? This model has been working in all of my tests
>>so far.
>>
>>
>
>It looks nearly correct.
>But public synonym would not be level 4, but level 2, increasing the levels of search in dba2 and dba.
>
>
>
>>2) Some statements do not perform resolution. For example, the CREATE
>>SYNONYM statement does not perform resolution. The Select statement,
>>however, does.
>>
>>Example:
>>Given the catalog:
>> DBA.SOMETABLE
>> DBA.DBA2
>> DBA2.DBA2USER (where the user DBA2USER has all privileges on
>>DBA.SOMETABLE)
>>
>>If DBA2USER does: "select * from SOMETABLE" then the query succeeds.
>>However if DBA2USER does, "CREATE PUBLIC SYNONYM S_SOMETABLE FOR
>>SOMETABLE" then the query fails.
>>
>>Is there a list of statements that do not perform name resolution?
>>
>>
>>
>
>Yes, DDL does not perform name resolution
>
>Elke
>SAP Labs Berlin
>
>
>
>>Many many thanks,
>>
>>JLS
>>
>>
>>
>>--
>>MaxDB Discussion Mailing List
>>For list archives: http://lists.mysql.com/maxdb
>>To unsubscribe: http://lists.mysql.com/maxdb?unsub=elke.zabach
sap.com
>>
>>
--
MaxDB Discussion Mailing List
For list archives: http://lists.mysql.com/maxdb
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]