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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/30919.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不同拷贝【写作中】

【写作中】 .clone() 深拷贝deepcopy() 深拷贝copy() 浅拷贝

酸性设计震撼登场,让你眼前一亮!

说起酸性(ACID),你会想到什么?”我们通常会想到酸味,酸设计的视觉魅力是通过图形、颜色、排版给人复古、迷幻、黑暗、叛逆的感觉,反复几何图形和高饱和的颜色,使设计非常时尚,非常适…

css实现多行文本的展开收起

背景 在我们写需求时可能会遇到类似于这样的多行文本展开与收起的场景: 那么,如何通过纯css实现这样的效果呢? 实现的难点 (1)位于多行文本右下角的 展开收起按钮。 (2)展开和收起两种状态的…

Spatio-temporal Relation Modeling for Few-shot Action Recognition

标题:少样本动作识别的时空关系建模 源文链接:Thatipelli_Spatio-Temporal_Relation_Modeling_for_Few-Shot_Action_Recognition_CVPR_2022_paper.pdf (thecvf.com)https://openaccess.thecvf.com/content/CVPR2022/papers/Thatipelli_Spatio-Temporal_…

Pikachu靶场--RCE

参考借鉴 pikachu-RCE_pikachu rce-CSDN博客 Pikachu靶场-RCE远程命令/代码执行漏洞-CSDN博客 命令执行/代码执行/RCE(CTF教程,Web安全渗透入门)_bilibili exec"ping" 输入IP地址查看页面反应 可以在IP地址的后面拼接我们想要执行…

6.2 事件的创建,修改和删除

6.2.1 事件的概述 事件(Event)是在指定时刻才被执行的过程式数据库对象。 事件通过MySQL中一个很有特色的功能模块——事件调度器(Event Scheduler)进行监视,并确定其是否需要被调用。 MySQL的事件调度器可以精确到每秒钟执行一个任务,比操作系统的计…

CCF推荐会议必投攻略:这些顶级会议投完直通录取大门

CCF推荐会议必投攻略:这些顶级会议投完直通录取大门! 会议之眼 快讯 CCF介绍 CCF(China Computer Federation)即中国计算机学会,前身是中国电子学会计算机专业委员会,成立于1962年。这是由从事计算机及相…

MicroPython+ESP32 C3+ST7735S LCD屏 WIFI联网显示实时时间

案例地址:https://gitee.com/whltaoin_admin/MP_ESP32_ST7735S- 展示效果 ESP32LCD屏 WIFI联网并显示实时时间 TFT LCD模块参数介绍 名称:1.8 128*160 RGB_TFT驱动芯片:ST7735S ESP32 C3 参数介绍(经典款) 外观及…

Linux系统ubuntu20.04 无人机PX4 开发环境搭建(失败率很低)

Linux系统ubuntu20.04 无人机PX4 开发环境搭建 PX4固件下载开发环境搭建MAVROS安装安装地面站QGC PX4固件下载 PX4的源码处于GitHub,因为众所周知的原因git clone经常失败,此处从Gitee获取PX4源码和依赖模块。 git clone https://gitee.com/voima/PX4-…

基 CanMV 的 C 开发环境搭建(Linux,Ubuntu篇)

不论是使用 CanMV 提供的基于 C 语言和 FreeRTOS 的应用开发方式开发应用程序或是编译 CanMV 固件,都需要搭建基于 CanMV 的 C 开发环境,用于编译 CanMV 源码。 1. 开发环境搭建说明 CanMV 提供了基于 C 语言和 FreeRTOS 的应用开发…

傅里叶级数在不连续点会怎么样???

文章目录 一、前言背景二、用狄利克雷核表达傅里叶级数三、狄利克雷核与狄拉克函数四、傅里叶级数在不连续点的表示五、吉伯斯现象的解释六、总结参考资料 一、前言背景 笔者最近在撸《信号与系统》,写下此博客用作记录和分享学习笔记。由于是笔者为电子爱好者&…

ENVI实战—一文搞定非监督分类

实验1:使用isodata法分类 目的:学会使用isodata法开展非监督分类 过程: ①导入影像:打开ENVI,按照“文件→打开为→光学传感器→ESA→Sentinel-2”的顺序,打开实验1下载的哨兵2号数据。 图1 ②区域裁剪…

一文简述AI自动化漏洞修复实践

2024年,人工智能(AI)技术正以其前所未有的速度和影响力,革新着网络安全领域。AI在自动化漏洞修复方面的应用,标志着我们迈入了一个全新的网络安全时代。近日,在中国电信组织的一场技术交流会上,…

JNI和本地方法栈

JNI 的主要功能 调用本地代码:Java程序可以调用C/C等语言编写的本地代码。这对于需要进行高性能计算或访问特定平台特性(如硬件接口)特别有用。 本地代码调用Java代码:本地代码也可以通过JNI调用Java方法,实现双向通信…

鸿蒙开发通信与连接:【@ohos.rpc (RPC通信)】

RPC通信 本模块提供进程间通信能力,包括设备内的进程间通信(IPC)和设备间的进程间通信(RPC),前者基于Binder驱动,后者基于软总线驱动。 说明: 本模块首批接口从API version 7开始支…

doris 数据导入、数据权限、资源管理

服务器环境 172.16.10.65 node1 (fe) 172.16.10.66 node2(be) 172.16.10.75 node3(be) 172.16.10.76 node4(be) 安装目录 doris home/apps/doris-2.1.1 启动命令 # FE(65服务…

番外篇 | 基于改进YOLOv5的安全帽佩戴检测 | 重参数化结构RepVGG + 空间对象注意力机制RCS-OSA模块

前言:Hello大家好,我是小哥谈。RCS-YOLO是一种目标检测算法,它是基于YOLOv3算法的改进版本。通过查看RCS-YOLO的整体架构可知,其中包括RCS-OSA模块。RCS-OSA模块在模型中用于堆叠RCS模块,以确保特征的复用并加强不同层之间的信息流动。本文针对安全帽佩戴的检测就是基于RC…

什么是网段

一、A类地址的网段: 情况1:最小的网段就是xxx.0.0.0,直接使用第一段的网络地址做网段。 情况2:如果希望网段允许的主机数量的范围缩小,扩大网段值即可,xxx.xxz.zzz.zzz,比如xxx.xxx.xzz.zzz&…

Vue 的 axios二次封装

(以下的接口地址链接换成自己的写!!!) 首先在项目中src的目录下创建一个api的文件夹,在api的文件下在穿件两个文件用于二次封装 别忘了先安装axios:(在根目录下安装axios&#xff0…

Linux内核开发-替换内核

0.前言 上一章(点击返回上一章)提到如何编译内核源码,本章主要介绍如何将编好的内核替换已有的内核。 1. 替换内核 第1步:查看当前内核版本 cat /proc/version第2步: 查看机器上的内核信息 grep menuentry /boot/…