Functions

什麼是類型轉換?

  • July 6, 2018

PostgreSQL 11TRANSFORM FOR TYPE從 HP 的這些文件中引入了PostgreSQL 11 New_Features

postgres=# CREATE EXTENSION jsonb_plperl CASCADE ;
NOTICE: installing required extension "plperl"
CREATE EXTENSION

postgres=> CREATE OR REPLACE FUNCTION fperl(val jsonb)
RETURNS jsonb
TRANSFORM FOR TYPE jsonb
LANGUAGE plperl
AS $$
return $_[0] ;
$$ ;
CREATE FUNCTION

postgres=> SELECT fperl('{"1":1,"example": null}'::jsonb) ;
fperl
---------------------------
{"1": 1, "example": null}
(1 row)

但是,如果我刪除,這似乎會以同樣的方式工作TRANSFORM FOR TYPE jsonb

這是一個完全沒用的例子。我相信TRANSFORM FOR TYPE應該支持的是這樣的東西,

postgres=> CREATE OR REPLACE FUNCTION fperl(val jsonb)
RETURNS jsonb
TRANSFORM FOR TYPE jsonb
LANGUAGE plperl
AS $$
return $_[0]->{foo};
$$ ;

SELECT fperl('{"foo":"bar"}'::jsonb) ;

您可以在上面看到,我們實際上將 jsonb 對象視為 perl 雜湊並且可以訪問成員。

jsonb_plperl是這裡的新東西。CREATE TRANSFORM可追溯到 PostgreSQL 9.5。

引用自:https://dba.stackexchange.com/questions/211574