返回顶部
首页 > 资讯 > 数据库 >PostgreSQL的插件pg_variables有什么作用
  • 652
分享到

PostgreSQL的插件pg_variables有什么作用

2024-04-02 19:04:59 652人浏览 薄情痞子
摘要

本篇内容主要讲解“postgresql的插件pg_variables有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Postgresql的插件pg_va

本篇内容主要讲解“postgresql插件pg_variables有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Postgresql的插件pg_variables有什么作用”吧!

安装
使用git下载源码,编译安装

[pg12@localhost contrib]$ git clone https://GitHub.com/postgrespro/pg_variables.git
Cloning into 'pg_variables'...
remote: Enumerating objects: 585, done.
remote: Total 585 (delta 0), reused 0 (delta 0), pack-reused 585
Receiving objects: 100% (585/585), 328.79 KiB | 75.00 KiB/s, done.
Resolving deltas: 100% (404/404), done.
[pg12@localhost contrib]$ cd pg_variables/
[pg12@localhost pg_variables]$ make USE_PGXS=1
GCc -std=gnu99 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-fORMat-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -g -O0 -DOPTIMIZER_DEBUG -g3 -gdwarf-2 -fPIC -I. -I./ -I/appdb/pg12/pg12.0/include/postgresql/server -I/appdb/pg12/pg12.0/include/postgresql/internal  -D_GNU_SOURCE -I/usr/include/libxml2   -c -o pg_variables.o pg_variables.c -MMD -MP -MF .deps/pg_variables.Po
gcc -std=gnu99 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -g -O0 -DOPTIMIZER_DEBUG -g3 -gdwarf-2 -fPIC -I. -I./ -I/appdb/pg12/pg12.0/include/postgresql/server -I/appdb/pg12/pg12.0/include/postgresql/internal  -D_GNU_SOURCE -I/usr/include/libxml2   -c -o pg_variables_record.o pg_variables_record.c -MMD -MP -MF .deps/pg_variables_record.Po
gcc -std=gnu99 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -g -O0 -DOPTIMIZER_DEBUG -g3 -gdwarf-2 -fPIC -shared -o pg_variables.so pg_variables.o pg_variables_record.o  -L/appdb/pg12/pg12.0/lib    -Wl,--as-needed -Wl,-rpath,'/appdb/pg12/pg12.0/lib',--enable-new-dtags  
cat pg_variables--1.0.sql pg_variables--1.0--1.1.sql pg_variables--1.1--1.2.sql > pg_variables--1.2.sql
[pg12@localhost pg_variables]$ make USE_PGXS=1 install
/bin/mkdir -p '/appdb/pg12/pg12.0/lib/postgresql'
/bin/mkdir -p '/appdb/pg12/pg12.0/share/postgresql/extension'
/bin/mkdir -p '/appdb/pg12/pg12.0/share/postgresql/extension'
/bin/install -c -m 755  pg_variables.so '/appdb/pg12/pg12.0/lib/postgresql/pg_variables.so'
/bin/install -c -m 644 .//pg_variables.control '/appdb/pg12/pg12.0/share/postgresql/extension/'
/bin/install -c -m 644 .//pg_variables--1.0.sql .//pg_variables--1.0--1.1.sql .//pg_variables--1.1--1.2.sql pg_variables--1.2.sql '/appdb/pg12/pg12.0/share/postgresql/extension/'
[pg12@localhost pg_variables]$ make USE_PGXS=1 installcheck
/appdb/pg12/pg12.0/lib/postgresql/pgxs/src/makefiles/../../src/test/regress/pg_regress --inputdir=./ --bindir='/appdb/pg12/pg12.0/bin'    --dbname=contrib_regression pg_variables pg_variables_any pg_variables_trans
(using postmaster on Unix Socket, default port)
============== dropping database "contrib_regression" ==============
psql: error: could not connect to server: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
command failed: "/appdb/pg12/pg12.0/bin/psql" -X -c "DROP DATABASE IF EXISTS \"contrib_regression\"" "postgres"
make: *** [installcheck] Error 2
[pg12@localhost pg_variables]$ pg_ctl start
waiting for server to start....2019-11-18 14:43:59.175 CST [2254] LOG:  starting PostgreSQL 12.0 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16), 64-bit
2019-11-18 14:43:59.175 CST [2254] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2019-11-18 14:43:59.175 CST [2254] LOG:  listening on IPv6 address "::", port 5432
2019-11-18 14:43:59.176 CST [2254] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
2019-11-18 14:43:59.769 CST [2254] LOG:  redirecting log output to logging collector process
2019-11-18 14:43:59.769 CST [2254] HINT:  Future log output will appear in directory "pg_log".
 done
server started
[pg12@localhost pg_variables]$ make USE_PGXS=1 installcheck
/appdb/pg12/pg12.0/lib/postgresql/pgxs/src/makefiles/../../src/test/regress/pg_regress --inputdir=./ --bindir='/appdb/pg12/pg12.0/bin'    --dbname=contrib_regression pg_variables pg_variables_any pg_variables_trans
(using postmaster on Unix socket, default port)
============== dropping database "contrib_regression" ==============
NOTICE:  database "contrib_regression" does not exist, skipping
DROP DATABASE
============== creating database "contrib_regression" ==============
CREATE DATABASE
ALTER DATABASE
============== running regression test queries        ==============
test pg_variables                 ... ok          161 ms
test pg_variables_any             ... ok           47 ms
test pg_variables_trans           ... ok          128 ms
=====================
 All 3 tests passed. 
=====================
[pg12@localhost pg_variables]$

简单使用
创建扩展

[local]:5432 pg12@testdb=# create extension pg_variables;
CREATE EXTENSION
[local]:5432 pg12@testdb=#

pg_variables中包含了多个函数

[local]:5432 pg12@testdb=# \df pgv*
                                                                                          List of functions
 Schema |        Name         |                     Result data type                     |                                        Argument data types                                         | Type 
--------+---------------------+----------------------------------------------------------+----------------------------------------------------------------------------------------------------+------
 public | pgv_delete          | boolean                                                  | package text, name text, value anynonarray                                                         | func
 public | pgv_exists          | boolean                                                  | package text                                                                                       | func
 public | pgv_exists          | boolean                                                  | package text, name text                                                                            | func
 public | pgv_free            | void                                                     |                                                                                                    | func
 public | pgv_get             | anyarray                                                 | package text, name text, var_type anyarray, strict boolean DEFAULT true                            | func
 public | pgv_get             | anynonarray                                              | package text, name text, var_type anynonarray, strict boolean DEFAULT true                         | func
 public | pgv_get_date        | date                                                     | package text, name text, strict boolean DEFAULT true                                               | func
 public | pgv_get_int         | integer                                                  | package text, name text, strict boolean DEFAULT true                                               | func
 public | pgv_get_JSONb       | jsonb                                                    | package text, name text, strict boolean DEFAULT true                                               | func
 public | pgv_get_numeric     | numeric                                                  | package text, name text, strict boolean DEFAULT true                                               | func
 public | pgv_get_text        | text                                                     | package text, name text, strict boolean DEFAULT true                                               | func
 public | pgv_get_timestamp   | timestamp without time zone                              | package text, name text, strict boolean DEFAULT true                                               | func
 public | pgv_get_timestamptz | timestamp with time zone                                 | package text, name text, strict boolean DEFAULT true                                               | func
 public | pgv_insert          | void                                                     | package text, name text, r record, is_transactional boolean DEFAULT false                          | func
 public | pgv_list            | TABLE(package text, name text, is_transactional boolean) |                                                                                                    | func
 public | pgv_remove          | void                                                     | package text                                                                                       | func
 public | pgv_remove          | void                                                     | package text, name text                                                                            | func
 public | pgv_select          | SETOF record                                             | package text, name text                                                                            | func
 public | pgv_select          | SETOF record                                             | package text, name text, value anyarray                                                            | func
 public | pgv_select          | record                                                   | package text, name text, value anynonarray                                                         | func
 public | pgv_set             | void                                                     | package text, name text, value anyarray, is_transactional boolean DEFAULT false                    | func
 public | pgv_set             | void                                                     | package text, name text, value anynonarray, is_transactional boolean DEFAULT false                 | func
 public | pgv_set_date        | void                                                     | package text, name text, value date, is_transactional boolean DEFAULT false                        | func
 public | pgv_set_int         | void                                                     | package text, name text, value integer, is_transactional boolean DEFAULT false                     | func
 public | pgv_set_jsonb       | void                                                     | package text, name text, value jsonb, is_transactional boolean DEFAULT false                       | func
 public | pgv_set_numeric     | void                                                     | package text, name text, value numeric, is_transactional boolean DEFAULT false                     | func
 public | pgv_set_text        | void                                                     | package text, name text, value text, is_transactional boolean DEFAULT false                        | func
 public | pgv_set_timestamp   | void                                                     | package text, name text, value timestamp without time zone, is_transactional boolean DEFAULT false | func
 public | pgv_set_timestamptz | void                                                     | package text, name text, value timestamp with time zone, is_transactional boolean DEFAULT false    | func
 public | pgv_stats           | TABLE(package text, allocated_memory bigint)             |                                                                                                    | func
 public | pgv_update          | boolean                                                  | package text, name text, r record                                                                  | func
(31 rows)

可以看到,该插件支持常规的数据类型,而对于复杂数据类型,则使用jsonb。
上述函数中,其中重要的函数主要有两个:pgv_set和pgv_get

[local]:5432 pg12@testdb=# \df pgv_get
                                                    List of functions
 Schema |  Name   | Result data type |                            Argument data types                             | Type 
--------+---------+------------------+----------------------------------------------------------------------------+------
 public | pgv_get | anyarray         | package text, name text, var_type anyarray, strict boolean DEFAULT true    | func
 public | pgv_get | anynonarray      | package text, name text, var_type anynonarray, strict boolean DEFAULT true | func
(2 rows)
[local]:5432 pg12@testdb=# \df pgv_set
                                                        List of functions
 Schema |  Name   | Result data type |                                Argument data types                                 | Type 
--------+---------+------------------+------------------------------------------------------------------------------------+------
 public | pgv_set | void             | package text, name text, value anyarray, is_transactional boolean DEFAULT false    | func
 public | pgv_set | void             | package text, name text, value anynonarray, is_transactional boolean DEFAULT false | func
(2 rows)
[local]:5432 pg12@testdb=# select pgv_set('pk1','pk1_var1',1);
 pgv_set 
---------
(1 row)
[local]:5432 pg12@testdb=# select pgv_get('pk1','pk1_var1',null::int);
 pgv_get 
---------
       1
(1 row)
[local]:5432 pg12@testdb=# select pgv_set('pk1','pk1_var1',101);
 pgv_set 
---------
(1 row)
[local]:5432 pg12@testdb=# select pgv_get('pk1','pk1_var1',null::int);
 pgv_get 
---------
     101
(1 row)
[local]:5432 pg12@testdb=#

而且变量的作用域只在当前session中有效

[root@localhost ~]# su - pg12
Last login: Mon Nov 18 14:39:19 CST 2019 on pts/0
[pg12@localhost ~]$ psql -d testdb
Expanded display is used automatically.
psql (12.0)
Type "help" for help.
[local]:5432 pg12@testdb=# select pgv_get('pk1','pk1_var1',null::int);
ERROR:  unrecognized package "pk1"
[local]:5432 pg12@testdb=#

到此,相信大家对“PostgreSQL的插件pg_variables有什么作用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

您可能感兴趣的文档:

--结束END--

本文标题: PostgreSQL的插件pg_variables有什么作用

本文链接: https://lsjlt.com/news/63566.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PostgreSQL的插件pg_variables有什么作用
    本篇内容主要讲解“PostgreSQL的插件pg_variables有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PostgreSQL的插件pg_va...
    99+
    2024-04-02
  • PostgreSQL搜索插件有什么优点
    本篇内容主要讲解“PostgreSQL搜索插件有什么优点”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PostgreSQL搜索插件有什么优点”吧!git&nbs...
    99+
    2024-04-02
  • postgresql有什么作用
    小编给大家分享一下postgresql有什么作用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!PostgreSQL 是一个免费的...
    99+
    2024-04-02
  • jQuery中的validation插件有什么作用
    本篇内容介绍了“jQuery中的validation插件有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有...
    99+
    2024-04-02
  • PostgreSQL的pg_qualstats有什么作用
    这篇文章主要讲解了“PostgreSQL的pg_qualstats有什么作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PostgreSQL的pg_qua...
    99+
    2024-04-02
  • PostgreSQL的pg_promote有什么作用
    这篇文章主要讲解了“PostgreSQL的pg_promote有什么作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PostgreSQL的pg_promo...
    99+
    2024-04-02
  • PostgreSQL中的Declarations有什么作用
    本篇内容主要讲解“PostgreSQL中的Declarations有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PostgreSQL中的Declara...
    99+
    2024-04-02
  • PostgreSQL中的​Rules有什么作用
    本篇内容介绍了“PostgreSQL中的Rules有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2024-04-02
  • 怎么使用PostgreSQL的插件pgmetries
    这篇文章主要介绍“怎么使用PostgreSQL的插件pgmetries”,在日常操作中,相信很多人在怎么使用PostgreSQL的插件pgmetries问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操...
    99+
    2024-04-02
  • 怎么使用PostgreSQL的插件postgresql_anonymizer
    本篇内容主要讲解“怎么使用PostgreSQL的插件postgresql_anonymizer”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Postgr...
    99+
    2024-04-02
  • PostgreSQL中ReceiveXlogStream有什么作用
    这篇文章主要介绍“PostgreSQL中ReceiveXlogStream有什么作用”,在日常操作中,相信很多人在PostgreSQL中ReceiveXlogStream有什么作用问题上存在疑惑,小编查阅了...
    99+
    2024-04-02
  • PostgreSQL中RecordAndGetPageWithFreeSpace有什么作用
    本篇内容介绍了“PostgreSQL中RecordAndGetPageWithFreeSpace有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处...
    99+
    2024-04-02
  • PostgreSQL中pgbench有什么作用
    本篇内容主要讲解“PostgreSQL中pgbench有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PostgreSQL中pgbench有什么作用”吧...
    99+
    2024-04-02
  • PostgreSQL中pgmetrics有什么作用
    本篇内容主要讲解“PostgreSQL中pgmetrics有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PostgreSQL中pgmetrics有什么...
    99+
    2024-04-02
  • PostgreSQL中的User subroutines有什么作用
    本篇内容介绍了“PostgreSQL中的User subroutines有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔...
    99+
    2024-04-02
  • PostgreSQL的dump函数有什么作用
    本篇内容主要讲解“PostgreSQL的dump函数有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PostgreSQL的dump函数有什么作用”吧!O...
    99+
    2024-04-02
  • PostgreSQL中commit log有什么作用
    本篇内容主要讲解“PostgreSQL中commit log有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PostgreSQL中commit log有...
    99+
    2024-04-02
  • ngAnimate插件有什么用
    这篇文章主要介绍ngAnimate插件有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!ngAnimate插件是做什么的?ngAnimate插件如其名字一样是为元素提供动画的。怎...
    99+
    2024-04-02
  • PostgreSQL中的GIN索引有什么作用
    本篇内容主要讲解“PostgreSQL中的GIN索引有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PostgreSQL中的GIN索引有什么作用”吧!G...
    99+
    2024-04-02
  • PostgreSQL中的Btree索引有什么作用
    本篇内容主要讲解“PostgreSQL中的Btree索引有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PostgreSQL中的Btree索引有什么作用...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作