Greenplum扩展-uuid-ossp实现uuid功能

 背景:

数据从postgres迁移到greenplum,源端使用存储过程中使用到uuid扩展,但是greenplum6中不支持存储过程,且默认安装没有uuid扩展

--创建函数报错
CREATE OR REPLACE FUNCTION "iitank_wrng_final"."uuid_generate_v1"()
  RETURNS "pg_catalog"."uuid" AS '$libdir/uuid-ossp', 'uuid_generate_v1'
  LANGUAGE c VOLATILE STRICT
  COST 1;



-------------------------------------------------------------
Query:
CREATE OR REPLACE FUNCTION "iitank_wrng_final"."uuid_generate_v1"()
  RETURNS "pg_catalog"."uuid" AS '$libdir/uuid-ossp', 'uuid_generate_v1'
  LANGUAGE c VOLATILE STRICT
  COST 1
Result: ERROR:  could not access file "$libdir/uuid-ossp": No such file or directory


-------------------------------------------------------------
--End--

解决

尝试增加 uuid扩展:

CREATE EXTENSION "uuid-ossp";

--报错
ERROR:  could not access file "$libdir/uuid-ossp": No such file or directory
--查看路径
[gpadmin@gsgp60 contrib]$ pg_config --pkglibdir
/usr/local/greenplum-db-6.19.1/lib/postgresql

该路径下无uuid-ossp.os文件

尝试过从pg直接复制到路径报错

正常增加扩展的过程为:

  • 下载源码到master节点,编译安装到指定目录
  • 在数据库中通过[create extension xxx;]创建扩展

网上没有找到uuid-ossp扩展

故尝试以下方法-使用python中uuid

--进入路径确定存在python
[gpadmin@gsgp60 local]$ cd /usr/local/greenplum-db-6.19.1/ext
[gpadmin@gsgp60 ext]$ ls
python

--createlang plpythonu -d databasename
[gpadmin@gsgp60 ext]$ createlang plpythonu -d test  --指定数据库

创建函数

create or replace function uuid_python1() returns varchar(32)
AS $$
  import uuid
  return uuid.uuid1()
$$ LANGUAGE plpythonu;

--测试
select uuid_python1();
--返回结果
uuid_python1
2fb74df4-1991-11ee-85ee-d4ae52b43ff7

扩展相关资源:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值