kylin-v10sp2-Babelfish for PostgreSQL

2024-06-20 22:36

本文主要是介绍kylin-v10sp2-Babelfish for PostgreSQL,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

环境准备

x86_linux_kylin v10 sp2

1、依赖

yum makecache
yum install -y uuid-devel

2、源代码

下载支持babelfish的pg,也是babelfish社区维护更新

cd /opt#pg源码,支持babelfish版
git clone https://github.com/babelfish-for-postgresql/postgresql_modified_for_babelfish.git#babelfish扩展
git clone https://github.com/babelfish-for-postgresql/babelfish_extensions.git

git clone https://github.com/babelfish-for-postgresql/postgresql_modified_for_babelfish.git

git clone https://github.com/babelfish-for-postgresql/babelfish_extensions.git

 3、安装cmake和antlr

babelfishpg_tsql需要antlr,建议安装和babelfish编译相同的版本,antlr-4.9.2

3.1、utfcpp(antlr依赖)可以连接外网忽略此步

cd /usr/src/
wget https://github.com/nemtrif/utfcpp/archive/refs/tags/v3.1.1.tar.gz
tar -xvf v3.1.1.tar.gz
cd utfcpp-3.1.1
cmake -B bin -DUTF8_TESTS=OFF
cmake --build bin --config Debug
cmake --install bin --config Debug#环境变量  暂时未测试
export UTFCPP_HOME=/usr/local/utfcpp-3.1.1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/include

3.2、安装antlr

cd /opt
wget https://codeload.github.com/antlr/antlr4/zip/refs/tags/4.9.3
unzip 4.9.3
cd antlr4-4.9.3/runtime/Cpp
mkdir build && cd build
EXTENSIONS_SOURCE_CODE_PATH=/opt/babelfish_extensions
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/antlr-4.9.3 \
-DANTLR_JAR_LOCATION=/opt/babelfish_extensions/contrib/babelfishpg_tsql/antlr/thirdparty/antlr/antlr-4.9.3-complete.jar#修改git源  https://github.com/antlr/antlr4/pull/3192
#git config --global url.https://github.com/.insteadOf git://github.com/
make -j4
make install

4、编译babelfish的pg


#创建安装目录
INSTALLATION_PATH=/usr/local/pgsql 
mkdir $INSTALLATION_PATH#构建配置
cd /opt/postgresql_modified_for_babelfish./configure CFLAGS="-ggdb" \
--prefix=$INSTALLATION_PATH \
--enable-debug \
--with-libxml \
--with-uuid=ossp \
--with-icu \
--with-extra-version="Babelfish for PostgreSQL"#编译pg
make -j4 && make install   #编译pg扩展
cd contrib 
make -j4 && make install#copy antlr
cp /usr/local/antlr-4.9.3/lib/libantlr4-runtime.so /usr/local/pgsql/lib/
cp /usr/local/antlr-4.9.3/lib/libantlr4-runtime.so.4.9.3 /usr/local/pgsql/lib/

5、构建安装babelfish扩展

设置临时环境变量 

export PG_CONFIG=$INSTALLATION_PATH/bin/pg_config
export PG_SRC=/opt/postgresql_modified_for_babelfish
export cmake=/usr/local/cmake-3.21.1/bin/cmake#antlr
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/antlr-4.9.3/include/antlr4-runtime
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/antlr-4.9.3/lib

编译

#babelfishpg_money
cd /opt/babelfish_extensions/contrib/babelfishpg_money
make
make install#babelfishpg_common
cd /opt/babelfish_extensions/contrib/babelfishpg_common
make 
make install#babelfishpg_tds
cd /opt/babelfish_extensions/contrib/babelfishpg_tds
make 
make install#babelfishpg_tsql
cd /opt/babelfish_extensions/contrib/babelfishpg_tsql
make
make install

编辑babelfishpg_tsql可能出现的错误:

/usr/bin/ld: src/pl_comp-2.o:/opt/babelfish_extensions/contrib/babelfishpg_tsql/src/pl_comp-2.c:27: multiple definition of `pltsql_curr_compile_body_lineno'; src/pl_comp.o:/opt/babelfish_extensions/contrib/babelfishpg_tsql/src/pl_comp.c:65: first defined here
/usr/bin/ld: src/backend_parser/gram-backend.o:(.bss+0x20): multiple definition of `pgtsql_base_yydebug'; src/backend_parser/parser.o:(.bss+0x0): first defined here

参考官方PR修改记录Could not compile extensions with LLVM · Issue #2423 · babelfish-for-postgresql/babelfish_extensions (github.com)

不知道什么原因代码没有合并到分支,修改后即可通过编译。

6、创建postgres用户,修改pg配置

6.1、创建用户

useradd postgres -m

6.2、环境变量

vi /home/postgres/.bash_profile
export INSTALLATION_PATH=/usr/local/pgsql
export PGHOME=$INSTALLATION_PATH
export PGDATA=$PGHOME/data
export PATH=$PGHOME/bin:$PATH
source /home/postgres/.bash_profile

6.3、修改配置

初始化 

initdb

修改auto.conf 

vi /usr/local/pgsql/data/postgresql.auto.conf
listen_addresses = '*'
port = 5432
shared_preload_libraries = 'babelfishpg_tds'

修改hba.conf 

vi data/pg_hba.confhost    all             all             0.0.0.0/0                md5

启动 

pg_ctl start[postgres@baidu pgsql]$ psql
psql (16.3Babelfish for PostgreSQL)
Type "help" for help.postgres=# select version();version
----------------------------------------------------------------------------------------------------------------------------------PostgreSQL 16.3Babelfish for PostgreSQL on x86_64-pc-linux-gnu, compiled by gcc (GCC) 10.3.1 20210422 (Red Hat 10.3.1-1), 64-bit
(1 row)

7、创建扩展

migration_mode有2种模式,在single-db的情况下,MS SQL数据库被映射到PostgreSQL中的模式。在multi-db情况下,可使用多个数据库。

--创建用户
create user testuser superuser password 'testuser';
--创建目标库
create database testdb owner testuser;
--切换到新库
\c testdb--创建 Babelfish 扩展
create extension if not exists "babelfishpg_tds" cascade;--设置 Babelfish 数据库名称
alter system set babelfishpg_tsql.database_name = 'testdb';--设置数据库迁移模式---支持多数据库模式
alter database testdb set babelfishpg_tsql.migration_mode = 'multi-db';--重新加载 PostgreSQL 配置,使之前的配置生效
select pg_reload_conf();--初始化 Babelfish,设置必要的系统对象和配置
call sys.initialize_babelfish('testuser');

注意:一旦初始化成功,比如想删掉用户之类的,需要tsql 或 sqlcmd,通过发送sql的方式连接pg删除。

8、使用tsql测试

#安装tsql
yum install freetds -y[root@baidu /]# tsql -S localhost -U testuser -P testuser;
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
Changed database context to 'master'.
1> select version();
2> go
version
Babelfish for PostgreSQL with SQL Server Compatibility - 12.0.2000.8
Jun 19 2024 15:51:16
Copyright (c) Amazon Web Services
PostgreSQL 16.3Babelfish for PostgreSQL on x86_64-pc-linux-gnu (Babelfish 4.3.0)
(1 row affected)
1> exit

这篇关于kylin-v10sp2-Babelfish for PostgreSQL的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1079452

相关文章

对postgresql日期和时间的比较

《对postgresql日期和时间的比较》文章介绍了在数据库中处理日期和时间类型时的一些注意事项,包括如何将字符串转换为日期或时间类型,以及在比较时自动转换的情况,作者建议在使用数据库时,根据具体情况... 目录PostgreSQL日期和时间比较DB里保存到时分秒,需要和年月日比较db里存储date或者ti

PostgreSQL如何查询表结构和索引信息

《PostgreSQL如何查询表结构和索引信息》文章介绍了在PostgreSQL中查询表结构和索引信息的几种方法,包括使用`d`元命令、系统数据字典查询以及使用可视化工具DBeaver... 目录前言使用\d元命令查看表字段信息和索引信息通过系统数据字典查询表结构通过系统数据字典查询索引信息查询所有的表名可

PostgreSQL如何用psql运行SQL文件

《PostgreSQL如何用psql运行SQL文件》文章介绍了两种运行预写好的SQL文件的方式:首先连接数据库后执行,或者直接通过psql命令执行,需要注意的是,文件路径在Linux系统中应使用斜杠/... 目录PostgreSQ编程L用psql运行SQL文件方式一方式二总结PostgreSQL用psql运

PostgreSQL核心功能特性与使用领域及场景分析

PostgreSQL有什么优点? 开源和免费 PostgreSQL是一个开源的数据库管理系统,可以免费使用和修改。这降低了企业的成本,并为开发者提供了一个活跃的社区和丰富的资源。 高度兼容 PostgreSQL支持多种操作系统(如Linux、Windows、macOS等)和编程语言(如C、C++、Java、Python、Ruby等),并提供了多种接口(如JDBC、ODBC、ADO.NET等

PostgreSQL中的多版本并发控制(MVCC)深入解析

引言 PostgreSQL作为一款强大的开源关系数据库管理系统,以其高性能、高可靠性和丰富的功能特性而广受欢迎。在并发控制方面,PostgreSQL采用了多版本并发控制(MVCC)机制,该机制为数据库提供了高效的数据访问和更新能力,同时保证了数据的一致性和隔离性。本文将深入解析PostgreSQL中的MVCC功能,探讨其工作原理、使用场景,并通过具体SQL示例来展示其在实际应用中的表现。 一、

PostgreSQL入门介绍

一、PostgreSQL 背景及主要功能介绍 1、背景 PG数据库,全称为PostgreSQL数据库,是一款开源的关系型数据库管理系统(RDBMS)。其起源可以追溯到20世纪80年代末和90年代初,由加拿大的计算机科学家Michael Stonebraker及其团队在加州大学伯克利分校启动。该项目旨在创建一个强大的、开源的关系型数据库管理系统,作为早期关系型数据库系统Ingres的继承者。Mi

PostgreSQL索引介绍

梦中彩虹   博客园首页新随笔联系管理 随笔 - 131  文章 - 1  评论 - 14 PostgreSQL索引介绍 INDEX 索引是增强数据库性能的常用方法。索引使得数据库在查找和检索数据库的特定行的时候比没有索引快的多。但索引也增加了整个数据库系统的开销,所以应该合理使用。 介绍 假设我们有一个类似这样的表: CREATE TABLE test1 (id integ

PostgreSQL分区表(partitioning)应用实例详解

https://www.jb51.net/article/97937.htm   PostgreSQL分区表(partitioning)应用实例详解  更新时间:2016年11月22日 10:25:58   作者:小灯光环    我要评论   这篇文章主要为大家详细介绍了PostgreSQL分区表(partitioning)应用实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

PostgreSql中WITH语句的使用

https://blog.csdn.net/chuan_day/article/details/44809125 PostgreSql中WITH语句的使用 With语句是为庞大的查询语句提供了辅助的功能。这些语句通常是引用了表表达式或者CTEs(一种临时数据的存储方式),可以看做是一个查询语句的临时表。在With语句中可以使用select,insert,update,delete语句。当然wit

PostgreSQL 17即将发布,新功能Top 3

按照计划,PostgreSQL 17 即将在 2024 年 9 月 26 日发布,目前已经发布了第一个 RC 版本,新版本的功能增强可以参考 Release Notes。 本文给大家分享其中 3 个重大的新增功能。 MERGE 语句增强 MERGE 语句是 PostgreSQL 15 增加的一个新功能,它可以在单个语句中实现 INSERT、UPDATE 以及 DELETE 操作,非常适合数据