Postgresql源码(119)PL/pgSQL中ExprContext的生命周期
前言 在PL/pgSQL语言中,执行任何SQL都需要通过SPI调用SQL层解析执行,例如在SQL层执行表达式的入口: static boolexec_eval_simple_expr(PLpgSQL_execstate *estate, PLpgSQL_expr *expr, Datum *result, bool *isNull, Oid *rettype, int32 *rettypmod){ ExprCo...
【PostgreSQL】从零开始:(三十九)约束-主键
类型包括自增长整数(如自增长的ID字段)、GUID(全局唯一标识符)等。 主键约束指示一列或一组列可用作表中行的唯一标识符。这要求值既是唯一的,又不是 null。因此,以下两个表定义接受相同的数据: PostgreSQL中的主键 PostgreSQL中的主键是用于唯一标识表中记录的一列或一组列。主键具有以下特点: 主键必须是唯一的,每个记录必须有一个唯一的主键值。主键不能为NULL,每个记录必须有一个非空的主键值。主...
【PostgreSQL】从零开始:(三十)数据类型-Arrays数组类型
元素可以通过索引访问,索引通常从0开始。数组可以用于存储和操作大量数据,提供了快速访问和修改元素的能力。有些编程语言还提供了一些方便的方法和函数来处理数组,如排序、查找、插入和删除元素等。 数组类型 PostgreSQL支持数组类型,允许在单个列中存储多个值。数组类型可以包含各种数据类型的元素,如整数、文本、日期等。数组类型在存储和检索多个相关值时非常有用。 在创建表时,可以使用数组类型定义列。以下是使用数组类型定义...
postgreSQL单机部署
一、环境准备 1、官网下载源码包 https://www.postgresql.org/download/ 2、操作系统参数修改 2.1 sysctl.conf配置 vi /etc/sysctl.confkernel.sysrq = 1#basic setting#net.ipv6.conf.all.disable_ipv6 = 1#net.ipv6.conf.default.disable_ipv6 = ...
postgresql|数据库|LVM快照热备冷恢复数据库的思考
的同学就不需要看下面的内容了(冷恢复,指的是恢复还原的时候,数据库完全停止,lvm快照的恢复方式决定了在恢复的时候必须要卸载源分区,数据库自然就停掉了) 下面将在VMware里模拟一个在虚拟机内运行的postgresql数据库,利用lvm快照备份和还原的例子 二, lvm快照使用前的一些基本概念 1,什么是LVM LVM是 Logical Volume Manager(逻辑卷管理)的简写,该技术使得动态管理磁盘成为一...
【PostgreSQL】从零开始:(三十一)数据类型-复合类型
地址。指针可以指向任何其他类型的数据,包括数组、结构体和函数。通过指针,可以间接访问指向的数据,并进行对数据的操作。 复合类型在C语言中提供了更多的灵活性和功能,使得程序员可以更好地组织和处理数据。 postgresql中的复合类型 PostgreSQL支持复合类型,也称为复合数据类型。复合类型是一种创建用户自定义数据类型的方式,它可以包含多个字段,每个字段可以有不同的数据类型。 CREATE TYPE comple...
PostgreSQL 常用函数学习
, LENGTH('egg'); 2、合并字符串CONCAT(s1,s2,…),CONCAT_WS(x,s1,s2,…) 使用CONCAT函数连接字符串,输入语句如下: SELECT CONCAT('PostgreSQL', '9.15'),CONCAT('Postgre',NULL, 'SQL'); 使用CONCAT_WS函数连接带分隔符的字符串,输入语句如下: SELECT CONCAT_WS('-', '1st...
【PostgreSQL】从零开始:(二十五)数据类型-比特类型
483648到2147483647的整数。 总结来说,数据类型是用来表示数据的分类或类别的概念,而比特类型是计算机中存储和处理数据的最小单位。比特类型的大小决定了数据类型在内存中占用的空间大小。 在 PostgreSQL 中,bit 类型是一种可以用来存储位序列的数据类型。它可以用来表示固定长度的位序列,比如用来存储二进制数据或者表示一组开关状态等。 bit 类型有两种变种:bit(n) 和 bit varying(...
(CVE-2019-9193)PostgreSQL 高权限命令执行漏洞的复现
漏洞概述 PostgreSQL是一个功能强大对象关系数据库管理系统(ORDBMS)。由于9.3增加一个“COPY TO/FROM PROGRAM”功能。这个功能就是允许数据库的超级用户以及pg_read_server_files组中的任何用户执行操作系统命令。 影响版本 9.3-11.2 环境搭建 1. 本次漏洞环境使用vulhub中的docker搭建,vulhub下载地址: GitHub - vul...
Postgresql源码(118)elog/ereport报错跳转功能分析
1 日志接口 elog.c完成PG中日志的生产、记录工作,对外常用接口如下: 1.1 最常用的ereport和elog ereport(ERROR, (errcode(ERRCODE_UNDEFINED_TABLE), errmsg("relation \"%s\" does not exist", relation->relname))); elog(ERROR, "unexpected enrtype: %d"...