[질문]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값을 넣는것 같은데요;

그럼 역시 하나하나씩 스키마값을 대입해 보는 방법 밖에
없다는 말씀 이신가요..? ㅠㅠ
(그래도.. 몰랐던 걸 하나 더 알게 되었네요ㅋ 감사~ ㅎ)

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.