问题标签 [postgresql-10]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
postgresql - 在 PostgreSQL 中查询分区表的竞争条件?
假设 PostgreSQL 10.3 和已提交读:在分区表被另一个进程修改的情况下,对分区表的查询是否会引入竞争条件?
例如,给定这个模式:
假设我有一个查询的进程:
另一个过程:
第一个进程是否有可能在分区中找不到匹配的行foo_pending
(因为它在另一个进程提交之前获取)并且也没有匹配的行foo_ready
(因为它在另一个进程提交之后获取)?
Do I need SERIALIZABLE
(or REPEATABLE READ
) to overcome this issue?
postgresql - Postgres 命令行 - 清除/删除我正在输入的查询
有没有办法快速删除我一直在输入的整个查询?
澄清一下,这将是我仍在输入的查询,而不是当前正在运行的查询。
例如在 bash 中,您可以点击CTRL+C并杀死您当前的行,例如:
按CTRL+后C,它会停止我之前输入的内容而不执行。
这只是我习惯于快速切换思路的一件事(“哦,如果我这样做而不是这个呢?”),但是postgres 终端中的CTRL+C只是终止了该过程。
linux - 更改 PostgreSQL 服务名称 - Linux
我有两个不同的 PostgreSQL 10 服务器在 CentOS 6/7 系统上的同一系统上运行(使用不同的端口)。有人能告诉我如何以不同的方式命名这些 PostgreSQL 服务吗?就像我ps
在系统上运行 a 时一样,它应该显示以不同名称运行的两个服务。现在它将两个服务名称都显示为postgres
. 有人能告诉我如何在 Linux 上重命名 postgres 服务吗?
我知道如何在 Windows 上做到这一点pg_ctl.exe register -N Postgres_1
(-N 参数让我们选择 Postgres 服务的名称)所以基本上当我们注册服务时,我们可以在 Windows 上给它一个自定义名称......但是有人可以告诉我如何在 Linux 上做同样的事情?
提前致谢。
json - PostgreSQL jsonb 字符串格式
我正在使用 PostgreSQL jsonb 并且在我的数据库记录中有以下内容:
并且下面的两个SELECT 语句都没有检索到结果:
我不知道是因为在json数组字符串中添加了额外的反斜杠,或者SELECT语句不正确。
我在 Windows 10 上运行“PostgreSQL 10.1,由 Visual C++ build 1800 编译,64 位”。
PostgreSQL 文档在这里。
postgresql - 将 now() 作为参数传递给函数时如何进行评估
我有一个表,该表在带有时区字段的时间戳上进行范围分区。我很惊讶地发现以下 where 条件导致规划器查询分区中的每个“子”表:
据我所知,计划器不知道 now() 在执行时会是什么,因此它会生成查询每个子表的计划。这是可以理解的,但这违背了首先设置分区的目的!如果我发出 reading_time > '2018-03-31',它只会对具有满足这些条件的数据的表进行索引扫描。
如果我创建以下函数会发生什么
然后我可以用
now() 什么时候被评估?或者,换句话说,文字时间值(例如,2018-03-31 1:01:01+5)是否被传递到函数中?如果是字面值,那么 Postgres 只会查询相应的子表,对吧?但是,如果它在函数内部评估 now(),那么我将回到扫描每个子表的索引的计划。似乎很难看到规划者在函数中做了什么。那是对的吗?
postgresql - 节点和数据库之间的 AWS RDS PostgreSQL 10 外部表不起作用
我有三台运行 PostgreSQL 10.1 的 RDS 服务器(于 2018 年 3 月在 AWS 中创建)。我需要在每个节点上的数据库之间以及不同节点上的数据库之间创建外部表。这是我的 sql 示例来设置它
执行时我得到的错误是这个(来自rds1):
是
无论我尝试查询位于同一 RDS 上还是不同 RDS 上的外部表,我都会收到此错误。
我认为这是 postgres 用户的权限问题,但我尝试授予所有内容,但没有任何乐趣。
有人对这可能是什么有任何见解吗?我在这上面花了很多时间。
rds1 和 rds2 不是真正的主机名,我使用的是实际的主机名。
postgresql - JSONB查询如何检查至少一个数组包含
如何让下面的查询返回“true”以反映我需要右侧数组中的至少一个值包含在左侧数组中?
上面的返回false
(因为'x'不在左边的数组中)。
我已经尝试过?|
运营商链接
但 postgres 返回错误
错误:运算符不存在:jsonb?| jsonb LINE 2: SELECT
'["fun", "movies"]'::jsonb ?| '[“乐趣”、“电影”、“x...提示:没有运算符与给定名称和参数类型匹配。您可能需要添加显式类型转换。SQL 状态:42883 字符:147
postgresql - 在数据库迁移期间对该表进行 ALTER 编辑后,我可以“重新编译”表返回函数吗?
我有一个返回记录类型的存储过程。如果我 ALTER 这个存储过程返回的表(假设我添加了一个列),我必须断开我的数据库会话或重新运行CREATE OR REPLACE
. 当我不这样做时,我会得到错误wrong record type supplied in RETURN NEXT
。
这是我在单个psql
会话中运行时失败的脚本:
是否有可以自动重新编译存储过程的 Postgres 命令或设置?我尝试了@vao-tsunDISCARD PLANS
在迁移后运行的建议,但不幸的是它没有帮助。
json - 如何在 postgresql 的 JSONB 列中的所有插入和更新请求中插入创建日期和更新日期
我创建了一个如下表:
因此,在所有插入请求中,我必须插入 created_at 时间,并且在所有更新请求中,我必须将 last_update_time 插入 json 数据。我不确定我们如何才能做到类似于关系数据库。