自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

转载 实现PostgreSQL函数自定义例外处理

代码搬运也需要发挥想象力,让不可能变为可能,这里讲一个例子。1、 有人问PostgreSQL有没有自定义例外,Oracle是有的:--定义myex Exception;--抛出RAISE myex;--捕获WHEN myex THEN简单易用2、再来看PostgreSQL的...

2019-09-05 09:54:00 1158

转载 PostgreSQL在Windows系统下的信号处理

本篇大致捋一下PostgreSQL在Windows下的信号处理,其实只能说是模拟或者代码封装,调用的时候看起来也是 pgsignal 函数,实现了代码的跨平台,但在实现上完全跟信号无关,毕竟Windows也没有这个特性。1、PostgreSQL的Windows代码在函数 save_backe...

2019-08-22 10:37:00 146

转载 Windows下的PostgreSQL进程fork

原稿用Markdown编写,拷贝进微信平台时段落有时发生反转,段落1、2、3变成段落3、2、1,发布前可能没有检查出来,遇到别扭的地方试试反过来读。 Windows系统API我并不熟悉,所以本篇大致点出过程,更多细节还请阅读代码和详查微软文档。后边还会有一篇讲Windows下信号处理的模拟,...

2019-08-19 10:49:00 527

转载 PostgreSQL控制文件在初始化时的生成

控制文件是在初始化时生成,记录PG运行过程中的关键信息,大致分为以下几类。初始化时自动生成,运行过程中不允许修改,例如系统标识符;允许用户在初始化时一次性定制,不再允许修改,例如WAL段尺寸;记录创建数据库的编译时信息,例如catalog版本,启动此数据库的程序也必须具有相同属性;实...

2019-08-13 16:49:00 324

转载 PostgreSQL存储过程BEGIN块的事务处理

有朋友问怎么实现存储过程中的SAVEPOINT,直接调用是不可以的,因为PG不允许事务控制语句出现在存储过程中,但我们还是有办法做到一定程度的模拟。 1、用BEGIN块模拟 随便建个表: CREATE TABLE a(col1 int); 存储过程如下: CREATE OR RE...

2019-08-07 08:32:00 2240

转载 PostgreSQL参数重载信号SIGHUP的处理

前边讲过,配置文件重载可以使用SIGHUP信号,也可以使用 pg_ctl reload,后者实际上也是发送SIGHUP给postmaster。 1、postmaster 的SIGHUP处理 下边的代码位于 src/backend/postmaster/postmaster.c 中的函数 S...

2019-08-05 11:41:00 640

转载 PostgreSQL配置参数处理系统(三)参数值的变更

配置参数(或者叫GUC变量,grand unified configuration)常见的就是出现在 postgresql.conf 中的设置项,更多信息可查看文档 19. Server Configuration ,我主要讲他们在代码中是如何设置和发挥作用。 本篇主要讲参数值的变更和上下文...

2019-08-02 16:35:00 341

转载 PostgreSQL配置参数处理系统(二)初始定义及初始化

配置参数(或者叫GUC变量,grand unified configuration)常见的就是出现在 postgresql.conf 中的设置项,更多信息可查看文档 19. Server Configuration ,我主要讲他们在代码中是如何设置和发挥作用。 本篇主要讲不同类型的初始定义。...

2019-08-01 16:50:00 681

转载 [编写]PostgreSQL配置参数处理系统(一)通用结构体

配置参数(或者叫GUC变量,grand unified configuration)常见的就是出现在 postgresql.conf 中的设置项,更多信息可查看文档 19. Server Configuration ,本系列主要讲他们在代码中如何设置和发挥作用。 这个感觉要讲清楚内容会...

2019-07-29 09:26:00 192

转载 PostgreSQL程序版本号的作用

​很多人查看过程序的版本号: quanzl-mac:bin quanzl$ ./postgres -Vpostgres (PostgreSQL) 11beta2quanzl-mac:bin quanzl$ ./initdb -Vinitdb (PostgreSQL) 11beta...

2019-07-23 12:24:00 262

转载 PostgreSQL在启动时如何分配共享缓存

相信很多人知道 shared_buffers 这个参数,它设置共享缓存的大小,本篇简单讲一下它是怎样分配的。 1、参数设置(src/backend/utils/misc/guc.c) /* * We sometimes multiply the number of shared b...

2019-07-22 13:17:00 302

转载 PostgreSQL系统表及其TOAST是如何定义的

本文只是讲PG怎样定义系统表,而不是修改系统表甚至是定义自己的系统表。PG系统表,比如:pg_class、pg_attribute、pg_type 等等这几个表相互关联,后两者要在pg_class记录自己的表定义,而pg_class又需要在后两者记录自己的字段和类型,看起来是个死扣。关于...

2019-07-19 08:54:00 498

转载 由test_decoding学习如何编写PostgreSQL逻辑解码插件

PostgreSQL提供很多接口,允许用户定制自己需要的功能,很多时候文档并不能让我们完全理解和把握它们的使用。如果需要开发一个自己的功能,该如何下手?下边是我作为一名代码搬运工的工作方式,供参考。 1、以逻辑复制插件为例,先看一下它是怎么运行的: 创建逻辑槽,默认使用test_decod...

2019-07-18 08:36:00 1331

转载 使用已编译PostgreSQL二进制包编译mysql_fdw

上周写的帖子:为PostgreSQL编译Windows下的mysql_fdw 还是有人不会,所以再写一篇用二进制包编译。 1、下载 PostgreSQL 二进制包: Download PostgreSQL Binaries,点击 下载。 这是EnterpriseDB公司下载地址,不用担心我...

2019-07-17 10:42:00 206

转载 PostgreSQL如何实现跨平台代码

我们知道,PostgreSQL可以支持几乎(这个词似乎可以不要)所有主流平台,平台间尤其Windows与*nix之间的API差异巨大,PG是怎么做到的呢,用一个简单的例子解释。 前边我写怎么在Windows下编译mysql_fdw提到过的修改: #include "dynloader.h"...

2019-07-17 08:43:00 230

转载 PostgreSQL外部C语言函数载入过程

上篇文章我们提到: quanzl-mac:postgresql.builtin_pool quanzl$ nm lib/plpgsql.so ...0000000000007e10 T _pg_finfo_plpgsql_call_handler000000000001c888 ...

2019-07-15 14:26:00 845

转载 PostgreSQL外部模块载入过程

PostgreSQL如何加载extension,例如 PL/pgSQL、postgres_fdw,查看它们的symbol: quanzl-mac:postgresql.builtin_pool quanzl$ nm lib/plpgsql.so U _A...

2019-07-12 10:51:00 343

转载 为PostgreSQL编译Windows下的mysql_fdw

(大约今天8点20发) 这里提供一个蹩脚的mysql_fdw在Windows下的编译方法,说蹩脚是因为这个步骤不是自动化的。所有的Windows编译脚本都在 src/tools/msvc 下边,有兴趣可以读一读,主要是Perl脚本,不难理解。 1、下载安装mysql客户端 https:/...

2019-07-11 07:57:00 700

转载 PostgreSQL时间戳与Oracle的不同

PG有两种时间戳:1、timestamp without time zone;2、timestamp with time zone;实际在内部存储上它们并没有什么不同。内部名字分别是timestamp和timestamptz(类型名字问题以前博文讲过,请自行阅读),OID分别是1114和118...

2019-07-09 14:45:00 567

转载 PostgreSQL兼容性函数的实现

有不少人问兼容实现的问题,其他数据库上的应用在向PG迁移的过程中,会发现有很多函数上的差异,比如Sybase的datediff、dateadd,Oracle的add_month、nvl、decode。 以nvl为例,阅读文档和运行验证都可以确定,Oracle函数的输入参数决定着返回值的类型,...

2019-07-09 11:41:00 941

转载 PostgreSQL中的USER关键字

有人从MySQL改用PG,用户表大概这么个结构 CREATE TABLE "user"(userid int,username text,...) 不加双引号是不可以的,USER是保留关键字。 猜测建表用的是某种GUI工具,自动给表名加双引号,所以创建是没有问题的。 通过...

2019-07-08 13:34:00 949

转载 PostgreSQL标识符如何作为函数参数

看PostgreSQL文档: SELECT EXTRACT(CENTURY FROM TIMESTAMP '2000-12-16 12:21:13');Result: 20SELECT EXTRACT(CENTURY FROM TIMESTAMP '2001-02-16 20:38:...

2019-07-08 11:18:00 491

转载 PostgreSQL词法语法解析器与dblink简易实现的关联

昨天有人说没明白那个Op是怎么回事,我们再仔细捋捋。代码在 src/backend/parser 下边,打开他们细细品味,非常简单。 scan.l与gram.y是截然不同的,当然是这样,前者是flex脚本,而后者是yacc脚本;前者是词法分析,而后者是语法分析。 来看scan.l中的操作符...

2019-07-08 08:48:00 95

转载 PostgreSQL利用FDW实现简易dblink

1、介绍 Oracle DATABASE LINK可以访问其他数据库(实例)的对象,使用简单而且方便,很多现有应用会涉及到它。 2、常见用法 远程表 SELECT col_list FROM table_remote@dblink;程序列 远程序列 SELECT seq_...

2019-07-07 10:50:00 219

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除