问题标签 [postgresql-12]
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.
sql - 在 C 中编写 PostgreSQL 函数:经典 SPI_execq 示例 - 不打印为日志消息?
我是用 C 编写函数以与 SQL 一起使用的新手。到目前为止,我已经看过这个使用 SPI 执行查询的示例。但是,它将结果打印为日志消息。我想知道如何更改此示例以使我将结果作为正常查询返回(正常情况就像我在 pgAdmin 中执行 SQL 查询时如何查看它一样)?
postgresql - 将 VARCHAR 值转换为格式化日期,忽略错误
我有一列包含格式的日期yyyy-mm-dd
。现在我正在运行一个SELECT
查询,将该日期转换为dd/mm/yyyy
使用TO_CHAR(dob :: DATE, 'dd/mm/yyyy') AS dob
它工作得很好。现在我遇到的问题是该列中有一些坏记录,下面是一个有好记录和坏记录的示例表:
我在 id 2 上遇到的错误是:
我想要的是有条件地检查是否可以,TO_CHAR(dob :: DATE, 'dd/mm/yyyy')
否则只需使用 dob 而不进行转换。有什么办法把它拉下来?
我正在使用 Postges 12
postgresql - 如何检查 pg_proc 中的函数输入是否具有伪类型?
所以我知道我可以查询 PostgreSQL pg_proc 表来查看注册函数的输入类型。像这样的东西:
好吧,一个函数可以有一种“伪类型”,例如 any 或 void。如何检查该类型是否是这些类型之一?
postgresql - 如何从 PostgreSQL 查询计划中获取解析和重写时间?
该文件明确指出
EXPLAIN ANALYZE 显示的 Planning time 是从解析的查询生成查询计划并对其进行优化所花费的时间。它不包括解析或重写。
那么如何获得这个不包括在内的时间(由他们自己解析和重写)?我知道一个人可以花费总查询时间,但除此之外,是否有可能以不同的方式单独获得这个时间?
我问的原因是因为我处于无法记录总时间的情况(相反,我想从计划中得出它,这似乎缺少一些信息)。
postgresql - 防止可能的 PostgreSQL GUC 参数竞争条件?
假设我有两个数据库客户端并行执行对 PostgreSQL 集群的查询。我决定让其中一个在 2 时使用max_parallel_workers_per_gather,而另一个在 6 时使用。
所以,客户端#1会做
客户#2会做
我期待序列 A->B->C->D 以便 B 和 D 使用指定的参数同时执行。但是顺序 A->C->B->D 可能吗?这会给两个客户 6,这不是我想要的!
我正在使用我认为不支持异步执行的SPI 。
json - Postgresql JSON 使用 WITH RECURSIVE
我的json是
我需要用一个数字迭代 id(仅当它为 null 且没有 id 键时)并形成与下面相同的 json,即使缺少键(id)。它必须是自动 id 生成,因为我永远不知道这个聚合中有多少元素。
我相信 RECURSIVE CTE 工作,但我无法找到解决这个问题的方法。请帮忙
sql - PostgreSQL - 如何更新嵌套的 JSONB 元素
我找到了一些资料,但有些资料没有解释清楚或例子难以理解。此示例在 PostgreSQL 12 上成功执行。要求是使用 PostgreSQL 部分更改 JSON 结构。JSONB 用作数据类型。
数据结构有以下外观
数据记录将被更改。该属性$.person.name
必须更改并将$.person.gender
添加。
结果包含相应的修改。
JSONB 列的更新语句data
如下所示
postgresql - 在 RAMdisk 上进行 PostgreSQL 基准测试?
我一直在考虑迁移到 RAMdisk 的想法。我知道它的风险,但只是想做一个小基准。我只有两个问题:(a)在读取查询计划时,它是否仍能区分磁盘命中和缓冲区命中?如果是这样,我应该假设两者都同样昂贵,还是应该假设它们之间存在差异?(b) RAM 磁盘不是持久的,但如果我想将一些结果导出到持久存储,我需要采取一些预防措施吗?它和平常一样吗,例如 COPY 命令?
postgresql - 将 PostgreSQL 11 备份恢复到 12 挂起。我该如何调试它?
我正在尝试使用复制方法将 heroku PostgreSQL 实例从 pg11 升级到 pg12,因为我的测试环境是在业余爱好实例上。在进程结束时,它似乎挂了很长时间(对于 120MB 的数据库,超过 30 分钟后不会退出)。数据存储视图表明一切都很好,我的行数相同,但存在问题。
这似乎是物化视图的错误。如果我连接到数据库并查看表和视图,只有一个看起来是空的。使用 postico,它会等待视图的结构,但不会对未填充的视图给出通常的警告。
我可以通过创建本地 pg12 数据库并尝试将 pg_restore 与最近的备份一起使用来重新创建停止行为。同样,我似乎能够通过创建一个空的本地数据库、运行所有数据库迁移、截断所有表和序列,然后--data-only --disable-triggers
从同一个备份进行加载来使其工作。不是一个特别顺利或鼓舞人心的迁移计划。使用--verbose
没有显示任何明显的错误,我得到的最后一件事是它正在创建有问题的物化视图。
我也设置log_statement
为all
,我得到的最后一个是它正在刷新有问题的视图。此时,postgres 命令开始使用 ~100% CPU。
在本地,我使用这个命令来恢复:
pg_restore --verbose --clean --no-acl --no-owner -h localhost -d database_name database_backup.dump
这是我们经常使用的命令来恢复本地开发的生产备份。
从 11 升级到 12 是否有任何已知的陷阱,或者我可能能够提取有关正在发生的事情的更多信息的方法?
postgresql - 在 CentOS 8 上安装 PostgreSQL 12 时出现问题
安装 PostgreSQL 12:
然后,contrib 包的附加功能:sudo dnf install postgresql-contrib
之后,当我尝试初始化 PostgreSQL 数据库时:
我越来越:sudo: postgresql-setup: command not found
另外,当我尝试检查状态时:
收到此错误:Unit postgresql.service could not be found.
我做错了什么?如果这种安装方式不对,在centos上安装postgresql还有别的选择吗?