【发布时间】:2019-10-25 14:31:34
【问题描述】:
创建包含未命名参数的过程不会导致 PG_PROC_INFO.proargnames 包含该参数的空字符串。
这不符合 PostgreSQL 文档中对 proargnames 列的描述 https://www.postgresql.org/docs/8.0/catalog-pg-proc.html.
有人知道这是不是故意的吗?
示例 使用以下参数定义过程
CREATE PROCEDURE testunnamed (IN INTEGER, IN p2 INTEGER)
为 proargnames 提供以下值。
- PostgreSQL:{"","p2"}
- 红移:{"p2"}
对于 redshift,视图 PG_PROC_INFO 和表 PG_PROC 中都有相同的值。
从 PG_PROC_INFO 中的数据生成“(IN INTEGER, IN p2 INTEGER)”需要该信息。在 postgreSQL 中有一个函数 pg_get_function_arguments 在 redshift 中不可用。
原因 - 驱动程序问题 因为我确实开始怀疑这是驱动程序问题(使用 RedshiftJDBC 01.02.27.1051 运行) 我通过使用 PostgreSQL 驱动程序运行与 Redshift 的连接进行了测试。 这似乎是正确的。我现在得到了预期的输出。
SELECT p.proname, p.pronargs, p.proargnames FROM pg_catalog.pg_proc_info p
WHERE p.proname LIKE 'testunnamed%' ;
Driver proname pronargs proargnames
------- ----------- -------- -----------
PostgresSQL testunnamed 2 {"","p2"}
Redshift testunnamed 2 {"p2"}
【问题讨论】:
-
您的问题/挑战/疑问是什么? Redshift Postgres(包括 v8)
-
谢谢,刚刚在说明中添加了这个。
标签: amazon-redshift