小编jla*_*rcy的帖子

PostgreSQL:将表作为函数中的参数传递

TYPE在 PostgreSQL 中发现。我有一个TABLE TYPE某些表必须尊重的(接口)。例如:

CREATE TYPE dataset AS(
    ChannelId INTEGER
   ,GranulityIdIn INTEGER
   ,GranulityId INTEGER
   ,TimeValue TIMESTAMP
   ,FloatValue FLOAT
   ,Status BIGINT
   ,QualityCodeId INTEGER
   ,DataArray FLOAT[]
   ,DataCount BIGINT
   ,Performance FLOAT
   ,StepCount INTEGER
   ,TableRegClass regclass
   ,Tags TEXT[]
   ,WeightedMean FLOAT
   ,MeanData FLOAT
   ,StdData FLOAT
   ,MinData FLOAT
   ,MaxData FLOAT
   ,MedianData FLOAT
   ,Percentiles FLOAT[]
);
Run Code Online (Sandbox Code Playgroud)

我可以使用此模板创建表:

CREATE TABLE test OF dataset;
Run Code Online (Sandbox Code Playgroud)

我在API 中看到了很多选项,但我有点迷茫。我想知道是否可以将此类型分配给函数INPUT/OUTPUT参数。

假设我有一个FUNCTION调用process,它从数据集中接收记录样本TABLE source,处理它们,然后返回TABLE sink具有相同TYPE.

那就是我想知道是否有可能创建一个TYPE …

postgresql datatypes functions

11
推荐指数
2
解决办法
4万
查看次数

PostgreSQL 游标是否绑定到连接?

我想用 PostgreSQL 游标确认一点。

我必须为巨大的结果集查询(超过 1Go 的小重量行)实现一个选择工厂。因此,我已经了解了游标,并按以下方式执行查询:

我创建一个光标:

DECLARE HashedCursorName CURSOR FOR SELECT * FROM BigResultSetQuery;
Run Code Online (Sandbox Code Playgroud)

我重复获取少量结果集:

FETCH 1000 FROM HashedCursorName;
Run Code Online (Sandbox Code Playgroud)

当结果集耗尽时,我关闭游标:

CLOSE HashedCursorName;
Run Code Online (Sandbox Code Playgroud)

我需要解决并发问题,我的意思是,许多用户必须能够同时使用 API 过程中存储的相同查询。当用户执行存储的查询时,他会收到一个新连接。我首先在 API 中修改了我的游标名称,因为我认为如果调用所有选择查询,StaticCursorName我会遇到两个用户试图创建相同游标或读取相同游标的问题。一切都按预期进行。

然后我尝试将光标名称更改为静态名称,它仍然有效。我能够同时运行多个相同的查询。然后我想知道,光标是否绑定到连接?,然后PostgreSQL是通过将游标分配给会话来解决并发的吗?

postgresql concurrency cursors

3
推荐指数
1
解决办法
2726
查看次数

PostgreSQL 强制 sslmode=verify-full

我已经创建了我的 CA、服务器和客户端证书和密钥。我尝试过使用sslmode带有psql. 我已编辑该pg_hba.conf文件以强制hostssl仅使用 SSL 。现在我想设置我的服务器以强制验证为sslmode=verify-full. 我已经阅读了两次文档 I 并且不明白如何继续。他们说它由环境变量控制,但无法使其工作。我必须如何设置此变量以及如何使其持久化。有谁知道如何进行?

更新:我在 Ubuntu Server 14.04 上运行 PostgreSQL 9.3

postgresql configuration postgresql-9.3

0
推荐指数
1
解决办法
3632
查看次数