1、源代码下载与准备 PG 词法和语法解析分别使用 flex 和 yacc脚本,也就是源代码里能看到的 .l 和 .y 文件,由他们生成 .c 和 .
1、源代码下载与准备
PG 词法和语法解析分别使用 flex 和 yacc脚本,也就是源代码里能看到的 .l 和 .y 文件,由他们生成 .c 和 .h文件。
更详细资料见:
(很不幸,这个网站是无法直接访问的,自己想办法)
这两个工具在 Windows 下的环境一直没有彻底弄好,再加上考虑它们的版本,我都是在 Linux 下生成语法引擎,操作步骤见 (2)。
参考资料:《lex与yacc》机械工业出版社
(1) 下载打包好的包,这种方式的好处是不需用 flex和bison
下载地址:
国际社区
国内镜像 ftp://www.highgo.com.cn/pub/mirrors/pgsql/source/
进入第二步,不需要在 Linux 生成任何文件。
(2) clone社区 git 代码库,需要:git flex bison
关于git,它是一个强大到一套糊涂的代码管理工具,请自行了解使用方法,官方网站:
(仍然很不幸,自己想办法)
Windows下可以安装 Cygwin,选装 git 和 openssh,在 Cygwin 环境下使用 git。
官方网站:
需要注意的是,编译开关要一致,以下 a-e 步骤需要在 Linux 下执行。
a). 克隆代码库
git clone
b). 配置编译参数,可能需要安装一些开发包,根据错误提示安装即可
./configure --prefix=/usr/local/pg93b1 \
--enable-nls="zh_CN zh_TW" \
--without-perl \
--without-python \
--without-tcl \
--without-gssapi \
--without-krb5 \
--without-pam \
--without-ldap \
--without-bonjour \
--with-openssl \
--with-libxml --with-libxslt \
--enable-thread-safety \
--with-zlib \
--without-selinux
c). 编译内核
make
d). 编译外围模组
cd contrib & make
cd ..
e). 编译隔离测试脚本
cd src/test/isolation & make
f). 将如下文件拷贝至 Windows 下源代码的相同位置
src\backend\bootstrap\bootparse.c
src\backend\bootstrap\bootscanner.c
src\backend\parser\gram.c
src\backend\parser\gram.h
src\backend\parser\scan.c
src\backend\replication\repl_gram.c
src\backend\replication\repl_scanner.c
src\backend\utils\misc\guc-file.c
src\bin\psql\psqlscan.c
contrib\cube\cubeparse.c
contrib\cube\cubescan.c
contrib\seg\segparse.c
contrib\seg\segscan.c
src\interfaces\ecpg\preproc\pgc.c
src\interfaces\ecpg\preproc\preproc.c
src\interfaces\ecpg\preproc\preproc.h
src\pl\plpgsql\src\pl_gram.c
src\pl\plpgsql\src\pl_gram.h
src\test\isolation\specparse.c
src\test\isolation\specscanner.c
2、Windows 开发包的下载与准备
Windows下编译 PostgreSQL 所需开发包列表见文档 16.1.1. Requirements
下载 OpenSSL,这里很全。
ftp://ftp.zlatkovic.com/libxml/
这里也有 openssl,但版本较老。
从这里下载可以下载到 iconv、libxml2、libxslt、zlib,推荐使用
这里下载 gettext
文档提及的 上的包更新已经远远落后于 gnu,但仍然可用。
将下载的包解压到 c:\pgbuild 目录
3、微软VC 下载,express版对我们来说足够,还是免费授权。
安装完毕后,建议打好所有补丁。
4、修改 src\tools\msvc\config_default.pl,指向我们下载到的开发包
nls => "C:\\pgbuild\\gettext"
openssl => "C:\\pgbuild\\OpenSSL"
xml => "C:\\pgbuild\\libxml2"
xslt => "C:\\pgbuild\\libxslt"
iconv => "C:\\pgbuild\\iconv"
zlib => "C:\\pgbuild\\zlib"
6、下载 ActivePerl 并安装
7、打开 程序菜单 ”Microsoft Visual Studio 2010“ -> ”Visual Studio Tools“ -> ”Visual Studio Command Prompt (2010)“
如果是其他版本,注意是 32位的那个,没有把握可以看它的属性,vcvarsall.bat 后边有参数 x86。
set path=%path%;C:\pgbuild\iconv\bin;
set path=%path%C:\ActivePerl-5.12.x\bin;
set path=%path%C:\pgbuild\gettext\bin;
进入 PostgreSQL 源代码 src\tools\msvc 运行 build.bat
编译完毕后运行: install.bat
8、至此编译完成,但是有些 dll 文件需要手工拷贝,,根据文件缺失错误提示从第二步的开发包目录中查找。

MySQL和PostgreSQL:在Web开发中的最佳实践引言:在现代的Web开发领域中,数据库是必不可少的组成部分。在选择数据库时,常见的选择是MySQL和PostgreSQL。本文将介绍在Web开发中使用MySQL和PostgreSQL的最佳实践,并提供一些代码示例。一、适用场景MySQL适用于大多数Web应用程序,特别是那些需要高性能、可扩展性和易于使

MySQL和PostgreSQL:性能对比与优化技巧在开发web应用程序时,数据库是不可或缺的组成部分。而在选择数据库管理系统时,MySQL和PostgreSQL是两个常见的选择。他们都是开源的关系型数据库管理系统(RDBMS),但在性能和优化方面有一些不同之处。本文将比较MySQL和PostgreSQL的性能,并提供一些优化技巧。性能对比在比较两个数据库管

随着数据库技术的发展,数据库管理系统也呈现出多种多样的选择,开发人员可以根据自己的需求和喜好选择最适合自己的数据库。而PostgreSQL作为一种先进的开源关系型数据库系统,越来越受到开发人员的关注和使用。那么,在PHP编程中如何使用PostgreSQL数据库呢?一、安装和配置PostgreSQL数据库在使用PostgreSQL之前,需要先安装和配置它。首先

MySQL和PostgreSQL:数据安全与备份策略引言:在现代社会中,数据成为了企业和个人生活中不可或缺的一部分。对于数据库管理系统来说,数据安全与备份策略是至关重要的,既能保护数据免受丢失或损坏,也能确保恢复数据的可靠性和完整性。本文将重点讨论MySQL和PostgreSQL两种主流关系型数据库系统的数据安全性和备份策略。一、数据安全性方面:(一)用户权

Go语言是一种快速、高效的编程语言,适合构建Web服务和后端应用程序。而PostgreSQL是一个开源的关系型数据库管理系统,承诺提供更高的可靠性、可扩展性和数据安全性。在本文中,我们将深入探讨如何在Go语言中使用PostgreSQL,并提供一些实用的代码示例和技巧。安装和设置PostgreSQL首先,我们需要安装和设置PostgreSQL。可以在官方网

学习Go语言中的数据库函数并实现PostgreSQL数据的增删改查操作在现代的软件开发中,数据库是不可或缺的一部分。Go语言作为一门强大的编程语言,提供了丰富的数据库操作函数和工具包,可以轻松地实现数据库的增删改查操作。本文将介绍如何学习Go语言中的数据库函数,并使用PostgreSQL数据库进行实际的操作。第一步:安装数据库驱动程序在Go语言中,每个数据库

随着互联网的发展,数据量持续增长,数据管理的需求变得日益迫切。关系型数据库是数据管理的一种重要方式,而其中的PostgreSQL因其灵活性、可扩展性及安全性而备受欢迎。本文介绍了如何利用PHP语言实现一个开源的PostgreSQL关系型数据库,希望对有相应需求的开发者有所帮助。概述PostgreSQL是一种强大的关系型数据库系统,它是遵循SQL标准的且具有许

MySQL和PostgreSQL:如何优化数据库查询性能?概述:在开发应用程序时,数据库查询性能是一个重要的考虑因素。良好的查询性能可以提高应用程序的响应速度和用户体验。本文将介绍一些优化数据库查询性能的方法,重点涵盖MySQL和PostgreSQL两种常用数据库。数据库索引的优化:数据库索引是提高查询性能的重要因素。索引可以加快数据的查找速度,减少查询时扫


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

禅工作室 13.0.1
功能强大的PHP集成开发环境

SublimeText3汉化版
中文版,非常好用

SublimeText3 Linux新版
SublimeText3 Linux最新版

记事本++7.3.1
好用且免费的代码编辑器

Dreamweaver CS6
视觉化网页开发工具