标签: postgresql-extensions

PostgreSQL 8.4:如何判断是否安装了过程语言?

我有一个安装程序,需要 plpgsql 在 PostgreSQL 8.4 数据库中安装存储过程。我需要确保安装了语言,否则应用程序将失败。我不想放弃语言并重新添加它,因为这可能会搞砸其他一些事情。

有没有办法“轻轻”安装语言?
CREATE LANGUAGE IF NOT EXISTS似乎无效。

postgresql plpgsql functions postgresql-8.4 postgresql-extensions

6
推荐指数
1
解决办法
4514
查看次数

PostgreSQL 9.3 Amazon RDS 在使用 UUID-OSSP 扩展生成 uuid 时出错

我在 RDS 上创建了数据库实例并使用了以下功能。它在本地开发机器上使用相同的 PostgreSQL 版本时出错。

create or replace function uuid() returns uuid as 'uuid-ossp', 'uuid_generate_v1' volatile strict language C;
Run Code Online (Sandbox Code Playgroud)

这是错误日志:

ERROR:  permission denied for language c
********** Error **********

ERROR: permission denied for language c
SQL state: 42501
Run Code Online (Sandbox Code Playgroud)

我在 ruby​​ on rails 3.2 中使用此函数为我的模式生成 uuid。

postgresql postgresql-9.2 postgresql-9.3 rails postgresql-extensions

6
推荐指数
1
解决办法
6161
查看次数

为公共模式创建的扩展在数据库中不可用

所以,我创建了citext扩展schema public,我可以看到它在那里,但是它在该模式的数据库中不可用。数据库public也在其中,因为它是从postgres用户创建的,并且在创建时没有指定架构。这是包含更多数据的屏幕截图: 在此处输入图片说明

所以,您可以看到扩展程序在那里,但是一旦我连接到数据库,它就不再可用,我基本上必须将它安装在数据库中。任何想法如何使其最初也可用于数据库?

PgSQL v9.6

postgresql psql postgresql-extensions

5
推荐指数
1
解决办法
3392
查看次数

PostgreSQL Citus 扩展临时表

是否可以使用 PostgreSQL 中的 citus 扩展来创建复制到每个工作节点的临时表(如引用表)?

当我像这样运行 SQL 时:

DROP TABLE IF EXISTS mypoint; 
CREATE TEMP TABLE mypoint (mpoint geometry primary key); 
SELECT create_reference_table('mypoint');
Run Code Online (Sandbox Code Playgroud)

我收到错误:

ERROR:  unacceptable schema name "pg_temp_6"
DETAIL:  The prefix "pg_" is reserved for system schemas.
CONTEXT:  while executing command on mynode01:5432 SQL state: 42939
Run Code Online (Sandbox Code Playgroud)

我问这个问题的原因是因为之后有更多的 SQL 命令,我需要在临时表和分布式表之间进行联接(citus 扩展不允许这样做)。

postgresql postgresql-extensions citus

5
推荐指数
1
解决办法
584
查看次数

在 RDS 上升级 postgres 时出现 pg_trgm 索引错误

我想将我的产品 Postgres RDS 数据库的主要版本从 11.16 升级到 12.11。我恢复了快照来进行试运行。当尝试修改AWS上的版本时,出现以下错误:

pg_restore: from TOC entry 5375; 1259 180582003 INDEX my_index my_database
pg_restore: error: could not execute query: ERROR: permission denied for schema publicf2iwen5v79e7a7ugjf2zdrpvhvpmr9bc
Command was:
-- For binary upgrade, must preserve pg_class oids
SELECT pg_catalog.binary_upgrade_set_next_index_pg_class_oid('180582003'::pg_catalog.oid);

CREATE INDEX "my_index" ON "publicf2iwen5v79e7a7ugjf2zdrpvhvpmr9bc"."my_table" USING "gin" ("upper"("my_column") "publicf2iwen5v79e7a7ugjf2zdrpvhvpmr9bc"."gin_trgm_ops");
Run Code Online (Sandbox Code Playgroud)

删除此索引和其他 3 个 trgm 索引后,升级工作正常。

我已经检查了扩展程序的所有者,它与其他扩展程序的所有者相同,并且我没有看到这些索引和其他索引之间有任何区别,除了它们来自pg_trgm

您知道如何解决这个问题吗?显然,我想避免在升级版本之前删除真实产品数据库上的这些索引。

从12升级到13时出现同样的问题

postgresql postgresql-extensions amazon-rds

5
推荐指数
0
解决办法
512
查看次数

如何匹配 pg_repack 二进制文件和数据库版本

我正在使用此命令 sudo apt-get install postgresql-11-repack来安装 pg_repack(默认为 1.4.8)。

postgresql-11-repack is already the newest version (1.4.8-1.pgdg20.04+1).
Run Code Online (Sandbox Code Playgroud)

当我在 rds postgres 11 中运行“创建扩展 pg_repack”时,它默认使用版本 1.4.4 创建。

                                        List of installed extensions
     Name     | Version |   Schema   |                         Description
--------------+---------+------------+--------------------------------------------------------------
 pg_repack    | 1.4.4   | public     | Reorganize tables in PostgreSQL databases with minimal locks
Run Code Online (Sandbox Code Playgroud)

因此 pg_repack 由于 ec2 和 db 之间的版本号不匹配而失败。

ERROR: pg_repack failed with error: program 'pg_repack 1.4.8' does not match database library 'pg_repack 1.4.4'
Run Code Online (Sandbox Code Playgroud)
  1. 如何在数据库中创建版本 1.4.8 的重新打包扩展?
  2. 如果上述方法不可行,我如何将 ec2 上的 pg_repack 版本降级回与我的数据库相同的 1.4.4。 …

postgresql debian postgresql-extensions

5
推荐指数
2
解决办法
1345
查看次数

PostgreSQL 可信语言列表?

我正在尝试查找 PostgreSQL可信过程语言 (PL)的列表,因为我经常需要在非超级用户环境中使用 PL。

但我找不到确切的答案。例如,这里Postgres 文档表明 perl 有一个受信任和一个不受信任的 PL,这是一种我不太熟悉的语言。这里,它说TRUSTED关键字是您在创建 PL 语言时可以指定的内容,在某些情况下可能会被忽略。

但我也有(可能是错误的)印象,即某些 PL 语言仅受信任(例如 JavaScript PL/V8)或仅不受信任(Python)。其他帖子似乎表明可以调整 pg 以使用以下内容制作甚至是python一种可信赖的语言:

UPDATE pg_language SET lanpltrusted = true WHERE lanname = 'plpythonu';
Run Code Online (Sandbox Code Playgroud)

我的问题比理论更实际。基本上:

是否可以将任何 PL 设置为可信和不可信?

如果不是,可以设置为受信任或受信任的特定语言是什么。

“受信任”是指普通用户在 PL 语言中创建/执行/修改函数时应该具有有效的相同权限。另外,我使用的是 Postgres 9.x)

postgresql security functions postgresql-extensions

4
推荐指数
1
解决办法
2188
查看次数

我是否需要每次都执行“创建扩展 pgcrypto”?

crypt()在我的一个函数中使用了哈希用户密码。但是我在第二天启动我的电脑时观察到,同样的事情失败了,因为密码功能在重新启动时变得不可用。它显示消息,如功能gen_salt()/crypt()未知或未定义。我执行了create extension pgcrypto;一次,它开始工作。

如何在生产环境中处理这个?即使 db 重新启动,有没有办法使该模块在 db 中永久可用?

或者我是否必须指示服务器管理器运行此命令以防他们需要重新启动数据库服务器?

或者我可以在函数本身中编写此语句,以便每次使用加密函数之前都会创建扩展?

此外,我们正在使用 db 的读取副本,它不允许执行此“创建扩展”语句,因为只有读取权限。那么如何在这样的只读环境中使用这种加密功能呢?

postgresql pgcrypto read-only-database postgresql-extensions

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

临时表数据创建后去了哪里?

据我所知,temp_buffers设置用于存储临时表数据的服务。

PGDATA但是,当我创建了一个临时表时,会立即在主数据库中为其创建文件。因此,我希望能就几个问题得到帮助。

  1. a.会发生什么
    ?临时表数据是否temp_buffers 足以存储临时表数据?

    b. 临时表数据是否temp_buffers 不足以存储临时表数据?

  2. 是否存在temp_buffers 设置不足而导致溢出的情况pgsql_tmp

postgresql perl postgresql-extensions

4
推荐指数
1
解决办法
1612
查看次数

在哪里可以找到 PostgreSQL 可用扩展的列表?

只是想知道是否有可用于 PostgreSQL 的扩展的官方列表?

postgresql postgresql-extensions

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