SQL

在PostgreSQL 16 / PolarDB-PG 16中,如何在分区表的父表上并发创建索引?

我一直在使用 PolarDB for PostgreSQL 14 (PolarDB-PG 14),在其中我能够在分区表的 父表 上运行 CREATE INDEX CONCURRENTLY,并且没有出错。 最近,我升级到了 PolarDB-PG 16,发现同样的语句在以下错误信息下失败: ERROR: cannot create index on partitioned table "measurement" concurrently 我在开源的PostgreSQL 16上使用 dbfiddle 测试了这一

为什么在捕获到异常后执行COMMIT时,PostgreSQL会悄悄回滚?在PolarDB for PostgreSQL上也观察到了这一现象

我在使用 PolarDB for PostgreSQL 开发一个Python应用程序(阿里云的PostgreSQL兼容数据库,基于PostgreSQL 16、采用共享存储架构)。我遇到了一个令人困惑的事务行为,并在PostgreSQL 16(由REL_16_STABLE构建)上也确认存在,因此这似乎是PostgreSQL的核心设计。 最小可复现示例: import psycopg2 conn = psycopg2.connect("dbname=mydb") conn.autocommit = False

如何使用带参数的视图进行连接?

我有一个参数化视图: CREATE OR REPLACE VIEW "q_UFTrans" ( IN TableName NVARCHAR(30), IN LangInt int ) AS SELECT T0."FldValue", T3."Trans", T0."Descr" FROM "UFD1" T0 LEFT JOIN "CUFD" T1 ON (T0."FieldID" = T1."FieldID" AND T0."TableID" = T1."TableID") LEFT JOIN "OMLT

PostgreSQL(PolarDB PG 16)在通过JDBC执行SELECT now() 时,总是返回Asia/Shanghai时区,即使数据库时区设置为UTC

我正在使用 PolarDB for PostgreSQL 16,以及一个使用PostgreSQL JDBC驱动的Java应用。 在我的Java代码中,我执行一个简单查询: String query = "SELECT now();"; try { conn2 = driver2.connect(url2, info2); stmt2 = conn2.prepareStatement(query); rs2 = stmt2.executeQuery(); while (rs2.next()) { Strin

在PostgreSQL的分区表上修改varchar的长度会导致索引被重新创建——这是为什么?

我在PostgreSQL中观察到,当把 varchar 列的长度提高时,非分区表与分区表之间的行为有所不同。 对于 non‑partitioned tables,扩大 varchar 的长度限制似乎只是一次轻量级的元数据变更:它几乎可以立即执行,现有索引保持不变——它们的物理存储 (relfilenode) 也未改变。 test=# create table t(a varchar(10)); CREATE TABLE test=# create index t_idx on t(a); CREATE I