Functions
什麼是類型轉換?
PostgreSQL 11
TRANSFORM FOR TYPE
從 HP 的這些文件中引入了PostgreSQL 11 New_Featurespostgres=# 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。