全部產品
Search
文件中心

PolarDB:pg_type

更新時間:Jul 06, 2024

目錄pg_type儲存有關資料類型的資訊。基類和枚舉類型(標度類型)使用CREATE TYPE建立,而域使用CREATE DOMAIN建立。資料庫中的每一個表都會有一個自動建立的組合類別型,用於表示表的行結構。也可以使用CREATE TYPE AS建立組合類別型。

列名稱

列類型

描述

oid

oid

行標識符。

typname

name

資料類型的名稱。

typnamespace

oid

包含此類型的名稱空間的OID。

typowner

oid

類型的擁有者。

typlen

int2

  • 對於一個固定尺寸的類型,typlen是該類型內部表示的位元組數。

  • 對於一個變長類型,typlen為負值。

    • -1:表示一個“varlena”類型。

    • -2:表示一個以空值結尾的字串。

typbyval

bool

typbyval判斷內部常式傳遞這個類型的數值時是通過傳值還是傳引用。 如果typlen不是1、2或4(或者在Datum為8位元組的機器上為8),因此typbyval最好是假。 變長類型總是傳引用。注意即使長度允許傳值, typbyval也可以為假。

typtype

char

typtype取值範圍如下:

  • b表示一個基類;

  • c表示一個組合類別型(例如一個表的行類型);

  • d表示一個域;

  • e表示一個枚舉類型;

  • p表示一個偽類型;

  • r表示一個範圍類型。

typcategory

char

typcategory是一種任意的資料類型分類,它被分析器用來決定哪種隱式轉換“更好”。

typispreferred

bool

如果此類型在它的typcategory中是一個更好的轉換目標,此列為真。

typisdefined

bool

  • 如果此類型已被定義則為真。

  • 如果此類型只是一個表示還未定義類型的預留位置則為假。

    說明

    typisdefined為假,除了類型名字、名字空間和OID之外什麼都不能被依賴。

typdelim

char

在分析數組輸入時,分隔兩個此類型值的字元。注意該分隔字元是與數組元素資料類型相關聯的, 而不是和數組的資料類型關聯。

typrelid

oid

  • 對於複合類型(見typtype), 那麼這個列指向pg_class中定義對應表的項 (對於自由存在的複合類型,pg_class項並不表示一個表,但不管怎樣該類型的pg_attribute項需要連結到它)。

  • 對非複合類型此列為零。

typele

oid

如果typelem不為0,則它標識pg_type裡面的另外一行。 當前類型可以被加上下標得到一個值為類型typelem的數組來描述。 一個“真的”數群組類型是變長的(typlen = -1),但是一些定長的(typlen > 0)類型也擁有非零的typelem,比如namepoint。 如果一個定長類型擁有一個typelem, 則它的內部形式必須是某個typelem資料類型的值,不能有其它資料。變長數群組類型有一個由該數組子常式定義的頭。

typarray

oid

如果typarray不是0,則它標識pg_type中的另一行,這一行是一個將此類型作為元素的“真的”數群組類型。

typinput

regproc

輸入轉換函式(文字格式設定)。

typoutput

regproc

輸出轉換函式(文字格式設定)

typreceive

regproc

輸入轉換函式(二進位格式),如果沒有則為0。

typsend

regproc

輸出轉換函式(二進位格式),如果沒有則為0。

typmodin

regproc

類型修改器輸入函數,如果類型沒有提供修改器則為0。

typmodout

regproc

類型修改器輸出函數,或為0以使用標準格式。

typanalyze

regproc

自訂ANALYZE函數,0表示使用標準函數。

typalign

char

typalign是當儲存此類型值時要求的對齊性質。 它應用於磁碟儲存以及該值在本資料庫內部的大多數表現形式。 如果數值是連續存放的,比如在磁碟上的一個完整行,在這種類型的資料前會插入填充,這樣它就可以按照指定邊界儲存。 對齊引用是該序列中第一個資料的開頭。對齊引用是序列中第一個資料的開始。 可能的值為:

  • c = char對齊,即不需要對齊。

  • s = short對齊(在大部分機器上為2位元組)。

  • i = int對齊(在大部分機器上為4位元組)。

  • d = double對齊(在很多機器上為8位元組,但絕不是全部)。

typstorage

char

如果一個變長類型(typlen = -1)可被TOAST,typstorage說明這種類型的列應採取的預設策略。 可能的值是:

  • p (普通的): 值必須始終以普通方式儲存(非varlena類型總是使用這個值)。

  • e (外部的): 值可以儲存在一個次要 “TOAST” 關係中 (如果有一個關係, 參見pg_class.reltoastrelid).

  • m (主要的): 值可以被壓縮並內聯儲存。

  • x (擴充的): 值可以被壓縮和/或移動到次要關係。

x toast-able 類型的常用選項。 注意m值也可以被移動到二級儲存,但只能是作為最後一種方案(ex值會先被移動)。

typnotnull

bool

表示類型上的一個非空約束。只用於域。

typbasetype

oid

  • 如果這是一個域(見typtype),則typbasetype標識這個域基於的類。

  • 如果此類不是一個域則為0。

typtypmod

int4

域使用typtypmod來記錄被應用於它們基底類型的typmod(如果基底類型不使用typmod,則為-1)。如果此類型不是一個域則為-1。

typndims

int4

對於一個數組上的域,typndims是數組維度數(即,typbasetype是一個數群組類型)。除數群組類型上的域之外的類型的此列為0。

typcollation

oid

指定此類型的定序。如果類型不支援定序,此列為0。 一個支援定序的基底類型此處會有一個非零值,典型值為DEFAULT_COLLATION_OID

typdefaultbin

pg_node_tree

如果typdefaultbin為非空,那麼它是該類型預設運算式的nodeToString()表現形式。這個列只用於域。

typdefault

text

如果某類型沒有相關預設值,那麼typdefault為空白。如果typdefaultbin不為空白, 那麼typdefault必須包含一個typdefaultbin所指的預設運算式的人類可讀的版本。 如果typdefaultbin為空白但typdefault不為空白,則typdefault是該類型預設值的外部表格現形式, 它可以被交給該類型的輸入轉換器來產生一個常量。

typacl

aclitem[]

存取權限。

說明

對於系統資料表中使用的固定寬度類型,在pg_type定義的大小和對齊與編譯器在表示錶行的結構中布局列的方式一致。

下表列出了typcategory的系統定義值。任何未來對此列表的增加都將是大寫 ASCII 字母。所有其他 ASCII 字元都保留給使用者定義的類別。

編碼

類別

A

數群組類型。

B

布爾類型。

C

組合類別型。

D

日期/時間類型。

E

枚舉類型。

G

幾何類型。

I

網路地址類型。

N

數字類型。

P

偽類型。

R

範圍類型。

S

字串類型。

T

時間間隔類型。

U

使用者定義型別。

V

位字串類型。

X

未知 type。