database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Tutorials 5230 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 5230
Pseudo-Types in PostgreSQL
작성자
정재익(advance)
작성일
2004-02-27 02:09ⓒ
2004-02-27 16:47ⓜ
조회수
6,464

 

Pseudo-Types

 

PostgreSQL 의 자료형에는 몇가지 특별한 목적을 가지는 자료형이 존재 하는 이들을 통틀어서  pseudo-types 이라고 부른다. pseudo- 라는 접미어는 '가짜'라는 뜻을 의미한다. 즉 실제로 DB 내에서 테이블 정의시 자료형으로서 사용할 수는 없고, 단순히 특정한 의미를 가지는 자료형이라는 뜻으로서 pseudo-type 이라고 일컫는다.

 

Pseudo-type column data type 으로 사용될수는 없다. 그러나 함수의 인자의 자료형이나 또는 result type 으로서 사용될 수 있다. 각각의 pseudo-types 들은 단순한 SQL data type 을 도려 받는 단순한 함수가 아닌경우에 아주 유용하다.  Table 8-20 에 이용가능한  pseudo-types 들을 설명하고 있다.

 

Table 8-20. Pseudo-Types

Name Description
any

 input data type 이 어떤 자료형이던 상관이 없다는 것을 의미.

anyarray  함수의 자료형이 임의의 array data type 임을 의미 (see Section 33.2.5).
anyelement 함수가 임의의 data type 을 받아 들인다는 의미 (see Section 33.2.5).
cstring  함수가 null-terminated C string 을 인자로 받고 돌려 준다는 의미.
internal  함수가 server-internal data type 을 인자로 받는다는 것을 의미.
language_handler  Procedural language call handler 를 선언하고 language_handler 돌려 준다는 것을 의미.
record

 함수가 지정되지 않은 row type 을 돌려 준다는 것을 의미

trigger  Trigger function 가 trigger 를 돌려 준다는 것을 의미.
void  함수 값을 돌려 주지 않는 다는 것을 의미.
opaque An obsolete type name that formerly served all the above purposes.

 

C 로 작성된 함수 (내장(built-in) 이든지 또는 동적으로 오려진 (dynamically loaded) 것이든지) 들은 이들 pseudo-data types 들을 받아 들이고 돌려 주도록 선언한다. 작성자는 함수의 인자형으로서 pseudo-type 을 사용할 경우 함수가 안전하게 동작할 수 있도록 작성 해야 한다.

Procedural languages 로서 작성된 함수가 pseudo-types 을 사용할 경우에는 오로지 구현된 언어에서 허용하는 경우에만 이용가능 하다. 현재 procedural languages 는 함수의 인자형으로서 pseudo-type 의 사용을 금지하고 있다. 그리고 result type으로서 voidrecord 형만을 허용한다. (추가적으로 함수가 trigger 로서 이용되는 경우 trigger 형을 허용한다.) 어떤 경우에는 anyarrayanyelement 자료형을 이용하여 다양성을 가진 함수 (polymorphic functions) 를 만들 수도 있다.

Pseudo-type 중 internal 자료형은 DBMS 에 의해서 오로지 내부적으로만 사용됨을 의미하며, 또한 SQL query 에 의해서 직접적으로 사용될 수 없는 함수임을 의미한다.

만약 함수가 최소한 하나 이상의 internal-type argument 를 가질 경우 SQL로 부터 직접적으로 호출될 수 없다. 이러한 형안전성에 대한 제한(type safety of this restriction)을 유지할려면, 다음과 같은 coding rule을 따른 것이 중요하다:

최소한 하나이상의 internal argument 를 가지기 전에는, 어떤 함수에서라도 internal type 을 돌려 주도록 선언하지 말아라.

[Top]
No.
제목
작성자
작성일
조회
5245익숙하지 않은 자료형 -bytea (binary data types) [1]
정재익
2004-03-10
9610
5233익숙하지 않은 자료형 - Array [4]
정재익
2004-03-02
10046
5232로또로 배우는 인덱스 :) [2]
김상기
2004-02-27
7168
5230Pseudo-Types in PostgreSQL
정재익
2004-02-27
6464
5192재미난 문자열 집계 함수 [8]
김상기
2004-02-05
10045
5186PostgreSQL FAQ 한글 번역판
정재익
2004-02-04
17700
5183Recent PostgreSQL Optimizer Improvements - Tom Lane [1]
김상기
2004-02-03
5738
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.046초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다