Linux CentOS 7 PostgreSQL 10 安装plpgsql_check扩展(源码编译)

前言

之前的博客记录了Linux CentOS 7 安装PostgreSQL 9.5(Linux CentOS 7 安装PostgreSQL 9.5),本博客记录一下Linux CentOS 7下 PostgreSQL 10通过源码编译的形式安装plpgsql_check扩展。

下载

打开网址:https://pgxn.org/dist/plpgsql_check,点击下载图标进行下载。

下载完成后上传至CentOS服务器的指定目录即可。

配置编译安装

1、解压缩。

[root@localhost opt]# unzip plpgsql_check-1.2.3.zip

2、权限赋postgres

[root@localhost opt]# chown -R postgres:postgres plpgsql_check-1.2.3

 3、移动到扩展目录

[root@localhost opt]# mv plpgsql_check-1.2.3 /opt/postgresql-10.0/contrib

 4、postgres用户进入目录进行编译(执行失败,检查环境变量)

cd plpgsql_check-1.2.3/

make clean

make install

 

启动和创建check扩展

1、重启数据库

[postgres@localhost plpgsql_check-1.2.3]$ pg_ctl restart

2、进入psql

[postgres@localhost plpgsql_check-1.2.3]$ psql

3、创建、测试

postgres=# load 'plpgsql'; -- 1.1 and higher doesn't need it
LOAD
postgres=# CREATE EXTENSION plpgsql_check;
LOAD
postgres=# CREATE TABLE t1(a int, b int);
CREATE TABLE

postgres=#
CREATE OR REPLACE FUNCTION public.f1()
RETURNS void
LANGUAGE plpgsql
AS $function$
DECLARE r record;
BEGIN
  FOR r IN SELECT * FROM t1
  LOOP
    RAISE NOTICE '%', r.c; -- there is bug - table t1 missing "c" column
  END LOOP;
END;
$function$;

CREATE FUNCTION

postgres=# select f1(); -- execution doesn't find a bug due to empty table t1
  f1 
 ────

 (1 row)

postgres=# \x
Expanded display is on.
postgres=# select * from plpgsql_check_function_tb('f1()');
─[ RECORD 1 ]───────────────────────────
functionid │ f1
lineno     │ 6
statement  │ RAISE
sqlstate   │ 42703
message    │ record "r" has no field "c"
detail     │ [null]
hint       │ [null]
level      │ error
position   │ 0
query      │ [null]

postgres=# \sf+ f1
    CREATE OR REPLACE FUNCTION public.f1()
     RETURNS void
     LANGUAGE plpgsql
1       AS $function$
2       DECLARE r record;
3       BEGIN
4         FOR r IN SELECT * FROM t1
5         LOOP
6           RAISE NOTICE '%', r.c; -- there is bug - table t1 missing "c" column
7         END LOOP;
8       END;
9       $function$

如上,plpgsql_check扩展安装完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值