对PostgreSQL SPI例子的学习

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介:

SPI 的例子里面没有说,是如何编译和部署的,我这里补充下:

编译与部署:

复制代码
[root@localhost soft]# export LD_LIBRARY_PATH=/usr/local/pgsql/lib
[root@localhost soft]# echo $LD_LIBRARY_PATH
/usr/local/pgsql/lib


[root@localhost test]# cc -fpic -I/usr/local/pgsql/include/server/ -shared -o execq.so execq.c
[root@localhost test]# ls
execq.c  execq.so
[root@localhost test]# 



[root@localhost test]# cp execq.so /usr/local/pgsql/lib
[root@localhost test]# 
复制代码

运行:

复制代码
postgres=# create function execq(text,integer) returns integer as '/usr/local/pgsql/lib/execq.so','execq' language c strict;
CREATE FUNCTION
postgres=# 


postgres=# select execq('create table abc(id integer)',0);
 execq 
-------
0
(1 row)

postgres=# 


postgres=# insert into abc values( execq('insert into abc values(0)',0));
INSERT 0 1
postgres=# 



postgres=# insert into abc values( execq('insert into abc values(0)',0));
INSERT 0 1
postgres=# select * from abc;
 id 
----
0
1
(2 rows)

postgres=# 



postgres=# select execq('select * from abc',0);
INFO:  EXECQ:  0 
INFO:  EXECQ:  1 
 execq 
-------
2
(1 row)

postgres=# 



postgres=# select execq('insert into abc select id+2 from abc',1);
 execq 
-------
2
(1 row)

postgres=# select * from abc;
 id 
----
0
1
2
3
(4 rows)

postgres=# 



postgres=# select execq('select * from abc', 10);
INFO:  EXECQ:  0 
INFO:  EXECQ:  1 
INFO:  EXECQ:  2 
INFO:  EXECQ:  3 
 execq 
-------
4
(1 row)

postgres=# 
复制代码
相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
关系型数据库 数据库 C语言
PostgreSQL服务端开发学习 -- Datum
在使用C语言开发PostgreSQL后端、客户端应用时,Datum无处不在,所以必须要对Datum有很清楚的了解。
|
关系型数据库 分布式数据库 数据库
沉浸式学习PostgreSQL|PolarDB 19: 体验最流行的开源企业ERP软件 odoo
本文主要教大家怎么用好数据库, 而不是怎么运维管理数据库、怎么开发数据库内核.
1309 2
|
SQL 关系型数据库 测试技术
沉浸式学习PostgreSQL|PolarDB 20: 学习成为数据库大师级别的优化技能
在上一个实验《沉浸式学习PostgreSQL|PolarDB 19: 体验最流行的开源企业ERP软件 odoo》 中, 学习了如何部署odoo和polardb|pg. 由于ODOO是非常复杂的ERP软件, 对于关系数据库的挑战也非常大, 所以通过odoo业务可以更快速提升同学的数据库优化能力, 发现业务对数据库的使用问题(如索引、事务对锁的运用逻辑问题), 数据库的代码缺陷, 参数或环境配置问题, 系统瓶颈等.
1091 1
|
存储 关系型数据库 物联网
沉浸式学习PostgreSQL|PolarDB 14: 共享单车、徒步、旅游、网约车轨迹查询
本文的目的是帮助你了解如何设计轨迹表, 如何高性能的写入、查询、分析轨迹数据.
845 0
|
人工智能 关系型数据库 分布式数据库
沉浸式学习PostgreSQL|PolarDB 16: 植入通义千问大模型+文本向量化模型, 让数据库具备AI能力
本文将带领大家来体验一下如何将“千问大模型+文本向量化模型”植入到PG|PolarDB中, 让数据库具备AI能力.
25817 21
沉浸式学习PostgreSQL|PolarDB 16: 植入通义千问大模型+文本向量化模型, 让数据库具备AI能力
|
关系型数据库 C语言 PostgreSQL
PostgreSQL服务端开发学习 --- 常用结构及宏定义1
本篇主要讲解使用C语言开发PostgreSQL服务端应用(libpq、自定义函数、扩展)常用到的结构及宏定义。
|
关系型数据库 定位技术 分布式数据库
沉浸式学习PostgreSQL|PolarDB 18: 通过GIS轨迹相似伴随|时态分析|轨迹驻点识别等技术对拐卖、诱骗场景进行侦查
本文主要教大家怎么用好数据库, 而不是怎么运维管理数据库、怎么开发数据库内核.
1525 1
|
人工智能 关系型数据库 分布式数据库
沉浸式学习PostgreSQL|PolarDB 17: 向量数据库, 通义大模型AI的外脑
本文所涉及的实验体验的就是怎么建设AI的外脑?向量数据库的核心价值:AI外脑
1711 4
|
SQL 存储 关系型数据库
新手如何入门学习PostgreSQL?
新手如何入门学习PostgreSQL?
178 1
|
SQL 存储 关系型数据库
PostgreSQL核心之SQL基础学习
PostgreSQL核心之SQL基础学习
266 3

推荐镜像

更多