데이터베이스 내에서 현재 사용자가 접근 권한을 가진 클래스에 대해 그 메소드 정보를 보여준다.
속성명 |
데이터 타입 |
설명 |
---|---|---|
meth_name |
VARCHAR (255) |
메소드명 |
class_name |
VARCHAR (255) |
메소드가 속한 클래스명 |
meth_type |
VARCHAR (8) |
인스턴스 메소드이면 ‘INSTANCE’, 클래스 메소드이면 ‘CLASS’ |
from_class_name |
VARCHAR (255) |
상속받은 메소드이면 그 메소드가 정의되어 있는 상위 클래스명이 설정되며 그렇지 않으면 NULL |
from_meth_name |
VARCHAR (255) |
상속받은 메소드이며, 이름 충돌이 발생하여 이를 해결하기 위해 그 메소드명이 바뀐 경우, 상위 클래스에 정의된 원래 이름이 설정됨. 그 이외에는 모두 NULL |
func_name |
VARCHAR (255) |
메소드에 대한 C 함수명 |
CREATE VCLASS db_method (
meth_name, class_name, meth_type, from_class_name, from_meth_name, func_name)
AS
SELECT m.meth_name, m.class_of.class_name,
CASE WHEN m.meth_type = 0 THEN 'INSTANCE' ELSE 'CLASS' END,
m.from_class_of.class_name, m.from_meth_name, s.func_name
FROM _db_method m, _db_meth_sig s
WHERE s.meth_of = m AND
(CURRENT_USER = 'DBA' OR
{m.class_of.owner.name} subseteq (
SELECT set{CURRENT_USER} + coalesce(sum(set{t.g.name}), set{})
from db_user u, table(groups) as t(g)
where u.name = CURRENT_USER ) OR
{m.class_of} subseteq (
SELECT sum(set{au.class_of})
FROM _db_auth au
WHERE {au.grantee.name} subseteq (
SELECT set{CURRENT_USER} + coalesce(sum(set{t.g.name}), set{})
from db_user u, table(groups) as t(g)
where u.name = CURRENT_USER ) AND
au.auth_type = 'SELECT'));
다음 예제에서는 클래스 ‘db_user’의 메소드를 검색한다.
csql> select meth_name, meth_type, func_name
csql> from db_method
csql> where class_name = 'db_user'
csql> order by meth_type, meth_name;
csql> ;xrun
=== <Result of SELECT Command in Line 1> ===
meth_name meth_type func_name
==================================================================
'add_user' 'CLASS' 'au_add_user_method'
'drop_user' 'CLASS' 'au_drop_user_method'
'find_user' 'CLASS' 'au_find_user_method'
'login' 'CLASS' 'au_login_method'
'add_member' 'INSTANCE' 'au_add_member_method'
'drop_member' 'INSTANCE' 'au_drop_member_method'
'print_authorizations' 'INSTANCE' 'au_describe_user_method'
'set_password' 'INSTANCE' 'au_set_password_method'
'set_password_encoded' 'INSTANCE' 'au_set_password_encoded_method'
'set_password_encoded_sha1' 'INSTANCE' 'au_set_password_encoded_sha1_method'
10 rows selected.