- 博客(28)
- 收藏
- 关注
原创 pg兼容mysql框架之语义解析(以开源openHalo为例)
本文分析了PostgreSQL和MySQL两种数据库解析引擎的架构设计。通过对比两种引擎的ParserRoutine结构体,指出MySQL引擎为各类SQL语句(如SELECT、INSERT等)都设置了特定的转换函数,而PG引擎则保留NULL值。这是因为PG作为默认引擎,可直接调用原有逻辑函数而无需额外赋值。文中通过transformOptionalSelectInto函数的示例代码,展示了系统如何根据当前引擎类型选择执行路径——若转换函数存在则调用MySQL逻辑,否则执行PG标准逻辑。最后说明所有解析请求都
2025-12-24 18:43:31
536
原创 pg兼容mysql框架之语法解析层(openHalo开源项目解析)
PostgreSQL兼容MySQL框架的语法解析层设计摘要:该框架通过GUC参数pg_database_mode区分MySQL和PG模式,在数据库初始化阶段调用InitParserEngine()初始化对应的语法解析引擎。MySQL模式采用独立的mys_parser_engine结构体,包含专为MySQL语法设计的转换函数(如transformStmt、raw_parser等),这些函数定义在以mys_开头的独立文件中。标准PG模式则使用standard_parser_engine,仅需赋值关键节点函数。通
2025-12-24 16:39:07
149
原创 解析PG兼容mysql框架之整体架构)(以开源项目openHalo为例)
OpenHalo框架通过unvdb_database_mode参数实现PostgreSQL与MySQL的兼容,整体架构采用模块化引擎设计。系统初始化时根据配置参数(0为PG模式,1为MySQL模式)为各核心模块(解析器、规划器、执行器等)加载对应的处理逻辑。每个引擎定义了标准化的接口函数指针,在初始化阶段被赋予特定数据库模式下的实现函数。这种设计通过统一的参数控制和模块化架构,实现了两种数据库语法的兼容处理。
2025-12-17 10:38:26
351
原创 安卓、苹果手机无线连接PC电脑方法教程
本文介绍了通过SMB协议在手机和电脑之间无损传输照片的方法。在PC端创建共享文件夹并设置权限后,苹果用户可通过"文件"应用连接服务器,安卓用户可使用支持SMB的文件管理器(如ES文件管理器)进行连接。该方法能实现接近1:1的原画质传输,画质优于隔空投送。文中详细说明了PC端共享设置、IP地址查询以及手机端连接步骤,适用于需要高质量传输照片的用户。
2025-12-13 21:20:57
236
原创 docker常用命令
本文总结了Docker常用命令操作指南,包括:1)使用docker load导入.tar格式容器镜像;2)通过docker images查看本地可用容器;3)详细说明docker run命令启动容器的各项参数,包括交互模式(-it)、目录挂载(-v)、内存设置(--shm-size)、特权模式(--privileged)、网络配置(--network)等;4)介绍使用docker exec进入已运行容器的操作。这些命令涵盖了Docker容器从导入、查看、启动到管理的完整工作流程。
2025-12-12 15:59:03
207
原创 opengauss5.0源码安装debug版本
本文介绍了openGauss 5.0.0数据库的编译安装流程。首先需要下载源码和对应系统的第三方库(提供openEuler_arm/x86和Centos_x86下载链接),解压并设置环境变量。然后配置编译选项,执行make编译和安装。安装完成后,通过gs_initdb初始化数据库,使用gs_ctl启动服务,最后通过gsql连接数据库。整个过程详细说明了从源码编译到数据库启动的完整步骤。
2025-06-18 18:37:02
246
原创 postgres如何添加一个类型(TYPE)
pg_type.dat中添加一个 实现相关函数的逻辑 处的函数名通过PG_FUNCTION_INFO_V1() 可在3中和CREATE FUNCITON 完成绑定。5上述你可以完成一个类型的基本步骤 剩余的你如果需要添加和其他类型的转换 你需要添加相应的cast。如果你需要你的类型支持索引 你需要添加相关的索引族。如果你的类型是有精度的,如numberic(10),你还需要create function 额外的tymodin函数。1 在pg_type.dat文件中 添加一个类型。4 定义你函数的逻辑实现。
2025-02-19 11:06:52
298
原创 最新版centOS7更换源(官服停止维护centos7后)
CentOS 7停止维护后如何更换yum源 随着CentOS 7于2024年6月停止维护,用户需更换yum源以继续使用。本文提供详细步骤:1)安装wget工具;2)备份原配置文件;3)下载阿里云源;4)替换原文件;5)修改SCLo相关配置文件;6)清理并重建缓存。操作过程中需注意文件名对应及配置文件修改,最后通过yum clean all和yum makecache完成更新。该方案可解决官方源停止服务后的软件更新问题,确保系统正常运行。
2024-11-26 20:29:41
1898
原创 使用git patch 补丁合并代码
Git补丁使用指南本文介绍了如何使用Git补丁(patch)解决代码合并问题。主要包括三种生成patch的方法:git diff、git format-patch -1和指定commit范围生成。应用补丁前需检查patch内容是否正确,使用git apply --stat和--check命令验证。应用补丁可能出现冲突,可通过--reject参数查看冲突位置。最后介绍了如何提交并推送补丁修改。该方法适用于需要选择性合并代码或解决大量合并冲突的情况。
2024-04-30 10:17:18
1750
原创 git 合并多个提交成一个提交
1 维护分支的时候有很多琐碎的逻辑代码 提交?现在想把整个需求只有一个提交?2 我想把我的多个提交作为一个提交合到别的分支(main或者master)?endCommitID:需要合并提交的结束位置(已经包含自己,不需^符号)headCommitID: 需要合并的提交的开始位置。git rebase --continue 完成。用 git log 查看是否已经提交到本地。查看所有修改过的文件和编写新的提交注释信息。^: 包含开始位置自己的提交内容。把需要合并的提交改成 s。
2024-04-30 09:51:29
1037
原创 openGuass编译安装dolphin插件教程
这里你需要在 mppdb_temp_install/ bin下自建一个data目录,即上文提到的export PGDATA=$GAUSSHOME/bin/data /地址:https://gitee.com/opengauss/openGauss-server#%E4%B8%8B%E8%BD%BDopengauss。执行的主文件是: src/gausskernel/process/main/main.cpp。其中: /sda/binarylibs 是你的第三方库地址 注意更换成自己的。
2024-02-21 09:56:19
1678
3
原创 postgreSQL源码之spi接口的用法
SPI(Server Programming Interface)是PostgreSQL提供的一个内部执行SQL语句的接口函数,定义在spi.h文件中。它允许在代码中直接执行SQL查询,并通过SPI_execute启动连接,获取查询结果。典型使用场景包括获取表数据(通过SPI_getvalue获取指定列值)和编写非内核级函数调用。由于效率问题,不建议在内核级使用SPI,此时应优先考虑OID直接访问表数据的方式。SPI提供了简单直接的数据访问方法,但需权衡其性能影响。
2023-12-26 17:20:35
657
1
原创 centos7 屏幕背景变黑只有文件夹和回收站
问题:屏幕背景变黑,更换背景图无效,状态栏 应用程序栏都不显示。删除 bashrc或者任何其他环境变量的配置 即可恢复正常。是否是因为你最近下载了 openGauss数据库 配置了 lib地址,opengauss的lib会和本地的lib冲突
2023-12-01 11:03:11
935
2
原创 openGauss debug版本安装与调试
地址:https://gitee.com/opengauss。选择好你自己需要的仓库,本例复制的是server仓库。其实尝试过 直接用./在本地目录启动 但是由于你的库是自己目录 没放到 lib目录下 所以 启动不成功。除了基本的项目代码 你还需要下载一个第三方库 用于编译;其中: /sda/binarylibs 是你的第三方库地址 注意更换成自己的。编译分为 sh文件编译和命令编译,本次讲最简单的sh文件编译。
2023-11-30 11:11:38
1195
1
原创 pg报错:trying to start server anyway waiting for server to start.... stopped waiting pg_ctl: could not
2023-10-23 15:12:57.763 CST [9038] LOG: could not bind IPv6 address “::1”: 地址已在使用。2 如果不是端口占用如上log文件报错,那是否是你安装了mysql数据库,启动了 systemctl start mysqld , 执行。1 如果是端口5432被占用了,可以查找谁占用了端口(百度搜一下如何查)关闭就行。再试试 就可以正常启动了。
2023-10-25 15:28:30
713
1
原创 posgreSQL源码分析:语法分析 gram.y
即一个语句的标签 像什么 createTableStmt 这种;代表一个类型,假如如上举例,那么table_name 你就可以定义成:即可以认为 我需要传入一个字符串 这里看你想以什么类型传入。这里就是可以定义我们所需的token,像 CREATE TABLE 都需要定义 且要按照 字母顺序排序%left OR%left AND。
2023-10-13 15:56:03
781
原创 tortoiseSVN下载和安装 使用教程
网盘地址:https://www.123pan.com/s/WPgrVv-TbXEd.html。文件检出,在目标文件夹选择检出 输入服务器地址 之后输入自己账号密码即可检出。默认点下一步即可,到安装路径的时候 选择自己的即可。
2023-10-09 09:21:09
1040
1
原创 postgres源码编译以及遇到的问题解决
/configure --prefix=目录 CFLAGS=“-O0 -g” --enable-tap-tests --enable-cassert --with-libxml --enable-debug。到刚才配置的 目录下 找到/bin/
2023-10-08 14:53:45
733
1
原创 postgre 报错:configure: error: Additional Perl modules are required to run TAP tests 解决
postgre 报错:configure: error: Additional Perl modules are required to run TAP tests 解决。
2023-09-26 14:13:06
476
1
原创 虚拟机VM15安装 centOS7 Linux 系统教程(保姆级)
下载地址:https://pan.quark.cn/s/3a76bf1228e2(软件管家公众号保存的)##5 安装完成 打开虚拟机。
2023-09-25 16:16:46
350
2
原创 苹果手机如何连接windows电脑?
1 iPhone 下载 爱思app2 windows 端也下载爱思程序3 用数据线连接 即可访问苹果手机文件。
2023-09-18 11:04:25
1585
1
原创 centos7空间不足 ,centos7 home目录扩容方法(保姆级教学)
centos7空间不足 或者需要 centos7 系统给home目录扩容方法
2023-09-07 20:16:08
3327
2
原创 psql: 错误: 无法联接到服务器: 没有那个文件或目录 服务器是否在本地运行并且在 Unix 域套接字
psql: 错误: 无法联接到服务器: 没有那个文件或目录 服务器是否在本地运行并且在 Unix 域套接字问题描述:首先安装了9.5版本,发现版本功能之间存在差异,由于正在做pg功能兼容,所以选择把这个古老的版本换掉!于是上官网搜索了postgre13版本的二进制安装包,欣喜若狂的运行安装脚本后发现。也太容易了。官方真是贴心。but当我psql进入的时候,运行了select version();发现我T喵的安装的是13版本怎么服务开的13,客户端进入的是9.5 f*ck !!(不好意思愚蠢的暴躁
2021-01-26 16:28:36
4765
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅