openGauss 插件开发入门
openGauss 插件开发入门
一、插件的开发与安装
插件名为timeflux。首先创建目录timeflux:
cd openGauss-server/contrib/
mkdir timeflux
cd timeflux/
最基本的demo包括四个核心文件:timeflux.cpp、timeflux--1.0.sql、timeflux.control、Makefile。在目录timeflux下创建上述四个文件,分别写入如下内容:
- timeflux.cpp
demo的核心,对函数的功能进行实现。该demo的功能是实现函数timeflux_verify(),输出字符串信息以验证插件被成功加载。
#include "postgres.h"
#include "fmgr.h"
#include "utils/builtins.h"
#include "utils/elog.h"
PG_MODULE_MAGIC;
extern "C" Datum timeflux_verify(PG_FUNCTION_ARGS);
PG_FUNCTION_INFO_V1(timeflux_verify);
Datum timeflux_verify(PG_FUNCTION_ARGS) {
PG_RETURN_TEXT_P(cstring_to_text("[TimeFlux-Simple] SUCCESS! Plugin code is fully active and callable."));
}
void _PG_init(void) {
elog(NOTICE, "timeflux plugin loaded!");
}
void _PG_fini(void) {
elog(NOTICE, "timeflux plugin unloaded!");
}
- timeflux--1.0.sql
用于创建SQL函数timeflux_verify(),与文件timeflux.cpp中的函数进行联动,用于在数据库客户端调用。
CREATE OR REPLACE FUNCTION timeflux_verify()
RETURNS text
AS 'MODULE_PATHNAME', 'timeflux_verify'
LANGUAGE C STRICT IMMUTABLE;
- timeflux.control
demo的一些配置信息。
# timeflux extension
comment = 'TimeFlux+: Advanced Time-Series Storage Engine'
default_version = '1.0'
module_pathname = '$libdir/timeflux'
relocatable = true
- Makefile
用于构建demo
MODULES = timeflux
EXTENSION = timeflux
DATA = timeflux--1.0.sql
REGRESS = timeflux
# 使用PostgreSQL/OpenGauss的构建基础设施
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)
else
top_builddir = ../..
include $(top_builddir)/src/Makefile.global
include $(top_srcdir)/contrib/contrib-global.mk
endif
编写好上述文件后,执行编译安装:
make
make install
确保数据库服务已启动,连接数据库:
gsql -d postgres -p 5432 -r
创建插件并调用函数,出现下图输出即表示成功创建并安装插件:
CREATE EXTENSION timeflux;
SELECT timeflux_verify();

二、插件的卸载
首先在数据库中执行如下操作:
-- 1. 首先,删除插件在 pg_depend 中的依赖记录(关键步骤)
DELETE FROM pg_depend WHERE refobjid = (SELECT oid FROM pg_extension WHERE extname = 'timeflux');
-- 2. 然后,删除插件在 pg_extension 中的主记录
DELETE FROM pg_extension WHERE extname = 'timeflux';
-- 3. 验证是否删除成功。如果查询返回0行,说明清理成功。
SELECT * FROM pg_extension WHERE extname = 'timeflux';
接着退出数据库,在主机中执行如下操作:
cd openGauss-server/mppdb_temp_install/lib/postgresql/
rm -rf timeflux.so

浙公网安备 33010602011771号