[질문]postgreSQL의 Fuction 구분법
postgreSQL에서
postgres=# \df
라고 입력하면 많은 수의 펑션들이 표시 됩니다.
그런데.. 여기서 보면
List of functions
Schema | Name | Result data type | Argument data types
------------+------------------------------------+-----------------------------+---------------------------------------
.
.
.
pg_catalog | RI_FKey_setnull_del | "trigger" |
pg_catalog | RI_FKey_setnull_upd | "trigger" |
pg_catalog | abbrev | text | inet
pg_catalog | abs | bigint | bigint
.
.
.
public | gcwr | numeric | character, numeric, numeric
public | get_commission | numeric | character, numeric
public | get_commission_with_request | numeric | character, numeric, numeric
public | get_estimate | integer | numeric, numeric
.
.
.
이렇게 Schema가 pg_catalog 인 부분과 public 인 부분으로 나뉘는데,
여기서 pg_catalog 는 기존의(?) Fuction들이고
public 는 후에 직접 만들어서 입력한 Function이라고 보는게 맞는건가요..?
다른 사람이 입력한 기존의 Fuction 들을 분석하고 싶은데..
pg_catalog라는 부분이 셀 수도 없이 많아서..
사람이 만든것과 기존에 있던걸 어떻게 구분해야 할지 알 도리가 없네요;;
직접 쿼리를
직접 쿼리를 해보시는 법이 있는데요~ 시스템 카탈로그를 뒤지셔야 합니다.
psql을 실행하실때요 psql -E 옵션을 붙여서 주시면 \dt 하실 때 어떤 쿼리가 내부적으로 실행되는지 표시됩니다.
카탈로그 테이블들이 어떻게 움직이는지 아실 수 있겠죠 ㅎㅎ
psql -E 옵션을 줘서 나온 쿼리를 조작하셔서 원하는 스키마에서만 함수들을 가져오게 하실 수 있습니다.
\df+ 는 아시죠? ㅎㅎ
답변 감사드립니다~ 그런데.. 추가 질문이;;
답변 감사드립니다~ 그런데.. 추가 질문이 ^^;
일단 psql -E
후에 아래와 같이 나왔습니다.
postgres=# \dt
********* QUERY **********
SELECT n.nspname as "Schema",
c.relname as "Name",
CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' END as "Type",
u.usename as "Owner"
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_user u ON u.usesysid = c.relowner
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','')
AND n.nspname NOT IN ('pg_catalog', 'pg_toast')
AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1,2;
**************************
그리고..
그리고.. TABLE 들이 나열 되었는데요..
카탈로그 테이블들이 어떻게 움직이는지 아실 수 있겠죠 ㅎㅎ
...카탈로그 테이블들이 어떻게 움직이는지 잘;;
그리고 카탈로그 테이블은 그냥 일반 테이블을 말씀하시는 건가요..?
psql -E 옵션을 줘서 나온 쿼리를 조작하셔서 원하는 스키마에서만 함수들을 가져오게 하실 수 있습니다.
...라고 하셨는데.. 가장 윗줄에 as "Schema"
라는 부분에 Function 의 Schema값을 넣는것 같은데요;
그럼 역시 하나하나씩 스키마값을 대입해 보는 방법 밖에
없다는 말씀 이신가요..? ㅠㅠ
(그래도.. 몰랐던 걸 하나 더 알게 되었네요ㅋ 감사~ ㅎ)
댓글 달기