所以我知道我可以查询 PostgreSQL pg_proc 表来查看注册函数的输入类型。像这样的东西:
SELECT proname, pg_get_function_arguments(oid)
FROM pg_proc
好吧,一个函数可以有一种“伪类型”,例如 any 或 void。如何检查该类型是否是这些类型之一?
所以我知道我可以查询 PostgreSQL pg_proc 表来查看注册函数的输入类型。像这样的东西:
SELECT proname, pg_get_function_arguments(oid)
FROM pg_proc
好吧,一个函数可以有一种“伪类型”,例如 any 或 void。如何检查该类型是否是这些类型之一?
您可以在函数返回的文本中尝试正则表达式:
postgres=# select proname, pg_get_function_arguments(oid)
from pg_proc
where pg_get_function_arguments(oid) similar to '%void%|%"any"%';
proname | pg_get_function_arguments
------------------------------+----------------------------------------
num_nulls | VARIADIC "any"
num_nonnulls | VARIADIC "any"
int8inc_any | bigint, "any"
int8dec_any | bigint, "any"
pg_typeof | "any"
pg_collation_for | "any"
concat | VARIADIC "any"
concat_ws | text, VARIADIC "any"
format | text, VARIADIC "any"
count | "any"
pg_column_size | "any"
any_out | "any"
void_out | void
void_send | void
json_object_agg_transfn | internal, "any", "any"
json_object_agg | "any", "any"
json_build_array | VARIADIC "any"
json_build_object | VARIADIC "any"
jsonb_object_agg_transfn | internal, "any", "any"
jsonb_object_agg | "any", "any"
jsonb_build_array | VARIADIC "any"
jsonb_build_object | VARIADIC "any"
ordered_set_transition | internal, "any"
ordered_set_transition_multi | internal, VARIADIC "any"
rank | VARIADIC "any" ORDER BY VARIADIC "any"
rank_final | internal, VARIADIC "any"
percent_rank | VARIADIC "any" ORDER BY VARIADIC "any"
percent_rank_final | internal, VARIADIC "any"
cume_dist | VARIADIC "any" ORDER BY VARIADIC "any"
cume_dist_final | internal, VARIADIC "any"
dense_rank | VARIADIC "any" ORDER BY VARIADIC "any"
dense_rank_final | internal, VARIADIC "any"
satisfies_hash_partition | oid, integer, integer, VARIADIC "any"
(33 rows)
postgres=#