m6米乐安卓版下载-米乐app官网下载
暂无图片
3

postgresql编写自定义extension -m6米乐安卓版下载

原创 阎书利 2021-12-12
2958

众所周知,pg数据库可以添加许多扩展,用的比较多的有pg_show_plans,pg_stat_statments, 扩展提供给我们很多的便利,这篇文章,是我整理的一篇怎样编写自定义的extension,希望对大家有帮助。

举个例子 pg_show_plans插件,在目录中,它最主要的四个文件如图黄框里所示。
1639316255655.png

一个格式为extension_name.control的控制文件,它告诉postgres关于您的扩展程序的一些基础知识
一个扩展程序的sql脚本文件,格式为extension--version.sql
一个c实现的extension_name.c文件,可以根据功能需求编写
一个makefile文件帮助编译

在本文中,我定义了一个名为ysl的extension,比较简单,扩展包含一个表和一个函数,这边没给表里加入数据,仅仅用一个函数验证extension的功能是否正常。(根据输入的数值来输出:如果数值>10,输出 ‘edg niubi’,如果数值<10,则输出 ‘edg lakua’)

在/opt/postgresql-12.1/contrib/目录下创建ysl目录,并创建如下四个文件。

/* contrib/ysl/ysl--1.0.sql */
--complain if script is sourced in psql rather than via alter extension
\echo use "create extension ysl" to load this file. \quit
create table tab_ysl(oid integer,namespace_oid integer,name text,time timestamp);        /* 创建一个表格 */
create function fun_ysl(int)           /* 创建一个函数 */
returns text
as '$libdir/ysl'
language c strict parallel restricted;
# ysl extension
comment = 'edg test '
default_version = '1.0'
module_pathname = '$libdir/ysl'
relocatable = true
# contrib/ysl/makefile
modules = ysl
extension =ysl
data = ysl--1.0.sql
modules = ysl
pg_config = pg_config
pgxs := $(shell $(pg_config) --pgxs)
include $(pgxs)
#include "postgres.h"
#include "fmgr.h"
#include "utils/builtins.h"
#ifdef pg_module_magic
pg_module_magic;
#endif
pg_function_info_v1(fun_ysl);
datum fun_ysl(pg_function_args);
datum fun_ysl(pg_function_args)
{
        int  a;
        a=pg_getarg_int32(0);
  if (a > 10)
  {
    pg_return_text_p(cstring_to_text("edg niubi"));
  }
  else
  {
    pg_return_text_p(cstring_to_text("edg lakua"));
  }
}

确认文件无误后

make&&make install

进入数据库

 create extension ysl;

1639317094453.png

可以看到ysl的extension创建成功,包含一个表和一个函数。
1639317120623.png

1639317163214.png

1639317185723.png

1639317269971.png

功能正常

最后修改时间:2021-12-12 22:47:31
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【米乐app官网下载的版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

网站地图