//1.執行完如下語句後,'boolean'::regtype的值是 boolean。
postgres=# select 16::regtype ;
regtype
---------
boolean
(1 row)
//2.於是我就推斷:如果執行select 'boolean'::regtype應該返回的是16吧! (16是其對應的 oid 的值)
//於是執行如下語句:
postgres=# select 'boolean'::regtype ;
regtype
---------
boolean // 為什麼不是16? 為什麼 select 16::regtype 和 select 'boolean'::regtype 結果是一樣的?
//再看一條語句:
postgres=# select attname from pg_attribute where attrelid = 'foo'::regclass;//在這裡可以看出來'foo'::regclass返回是oid型別。
attname
----------
id name
ctid
xmin
cmin
xmax
cmax
tableoid
總結下問題: 當使用 oid 別名的時候(也就是形式大概是***x::reg***x ,比如上面的 16::regtype 、』boolean』::regtype 、』foo』::regclass ),
什麼時候返回的是oid,什麼時候返回的是oid對應的name呢 ?
casting to regclass is a shortcut way of saying 「this the name of a relation,顯然,高票答案也公尺有解決問題。please convert it to the oid of that relation」.
轉換成 regclass相當於以一種簡單的方式說:這是該relation(表)的名字,請將其轉換成oid。
最終確定以下兩個函式決定::regclass/regtype等別名的轉換和輸出:
regrolein 和 regroleout 這兩個函式決定的。
大概邏輯是:
16::regtype 和 『boolean』::regtype 他們都會被轉換成oid,但是只要輸出到psql命令列,就會都轉換成oid對應的name
如果不輸出到命令列,則不進行轉換,比如: where attrelid = 『foo』::regclass;就沒有轉換其對應的name(string型別,比如』boolean』而不是boolean所對應的16)即』foo』,因為只是在內部進行判斷,
而沒有進行輸出。
關於PagedDataSourced的使用
asp.net提供了三個功能強大的列表控制項 datagrid datalist和repeater控制項,但其中只有datagrid控制項提供分頁功能。相對datagrid,datalist和repeater控制項具有更高的樣式自定義性,所以很多時候我們喜歡使用datalist或repeater控制...
關於selenium base page的使用
在使用unittest框架的過程中,我們經常需要重複地寫setup和teardown函式,為了減少重複性的工作,可以將這部分 封裝起來。如下 import unittest from common.base page import basepage from common.browser impor...
關於BackgroundWorker的使用
dowork 呼叫 runworkerasync 時發生。progresschanged 呼叫 reportprogress 時發生。runworkercompleted 當後台操作已完成 被取消或引發異常時發生。先介紹一下backgroundworker的幾個屬性 方法 workerreports...