PostgreSQL 全局临时表 - pgtt 问题

PostgresQL 数据库目前不支持全局临时表,当在迁移 Oracle 数据库时,经常会遇到全局临时表的问题,因此,基本上都会借助 pgtt 来解决这个问题。最近在折腾这个插件时发现了一些问题,本文对这些问题进行了整理。
最近被朋友问到 pg_parse_query()
函数在什么情况下会返回多个 RawStmt
,因为在大多数情况下,该函数仅会返回一个 RawStmt
。这个问题与之前另一个朋友咨询的 pg_rewrite_query()
有点类似,但当时自己并没有整理记录,因此借着这个机会对这两个问题稍微整理一下。
最近遇到一个比较有意思的问题,我在运行 PostgreSQL 的回归测试时发现 collate.icu.utf8
这个测试用例在 REL_14_STABLE
分支始终无法跑过,但是在 REL_15_STABLE
却可以正常运行。同时由于 collate.icu.utf8
失败还将导致 foreign_data
测试用例也失败了。
本文简要记录一下 PostgreSQL 中关于表空间的备份,主要涉及到了 pg_basebackup
和 pg_probackup
两种备份方式。
在上一篇文章中,我们聊到了 PostgreSQL 的认证机制,其中提到了 SCRAM-SHA-256 认证,在我写那篇文章的前两天,PostgreSQL 支持了 SCRAM 迭代次数的修改,它引入了一个 scram_iterations
参数来定义 SCRAM 的迭代次数。
本文将简单的聊聊 PostgreSQL 的密码存储以及认证过程。在 PostgreSQL 10 之前,密码存储是采用明文和 MD5 进行存储的,在 10 版本之后则采用 MD5 和 SCRAM 进行存储,废弃了明文存储。
PostgreSQL 数据库提供了 timestamp
和 timestamptz
两种时间戳,它们的区别在于后者是带了时区信息,而前者没有时区信息。本文将对两种类型的时间戳进行分析。