当前位置: 首页 > news >正文

babelfish for postgresql 分析--babelfishpg_tds--doing

babelfishpg_tds插件 支持了TDS 协议扩展,实现 TDS 客户端-服务器协议
在这里插入图片描述
先看插件加载时的函数

void
_PG_init(void)
{//是否已加载static bool inited = false;if (inited)return;//tds插件必须在shared_preload_libraries中,在数据库启动时即加载if (!process_shared_preload_libraries_in_progress)ereport(ERROR, (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),errmsg("babelfishpg_tds must be loaded via shared_preload_libraries")));//初始化guc参数,见下表TdsDefineGucs();//创建了一个插件ptr,暂时未看到具体使用tds_instr_plugin_ptr = (TdsInstrPlugin **) find_rendezvous_variable("TdsInstrPlugin");//初始化端口监听等,在postgresql中实现tds协议的核心pe_init();//内核中新增了relname_lookup_hook hook,返回保存在tvp_lookup_list中的relidprev_relname_lookup_hook = relname_lookup_hook;relname_lookup_hook = tvp_lookup;/* Shmem hooks *///共享内存中创建TdsStatus,保存每个连接tds的状况next_shmem_startup_hook = shmem_startup_hook;shmem_startup_hook = tds_status_shmem_startup;prev_shmem_request_hook = shmem_request_hook;shmem_request_hook = tds_shmem_request;/* Install our object_access_hook into the chain */next_object_access_hook = object_access_hook;//object_access_hook,主要检查是否有权限drop userobject_access_hook = babelfish_object_access;/* Install our process utility hook into the chain */next_ProcessUtility = ProcessUtility_hook;//Utility hook,用于在执行ddl前做额外的权限检查,检查的语句有DropRoleStmt,T_RenameStmt,T_DropdbStmt,T_AlterRoleStmt,T_AlterRoleSetStmt,T_GrantRoleStmt,在执行完检查后执行正常的ProcessUtility,通过调用next_ProcessUtility ProcessUtility_hook = tdsutils_ProcessUtility;inited = true;
}

新增guc参数

参数GucContext说明默认值
babelfishpg_tds.portPGC_POSTMASTER(数据库启动时设置)tds监听的端口1433
babelfishpg_tds.listen_addressesPGC_POSTMASTER(数据库启动时设置)tds监听的ip*
babelfishpg_tds.unix_socket_directoriesPGC_POSTMASTER(数据库启动时设置)TDS server unix socket directoriesNULL
babelfishpg_tds.unix_socket_permissionsPGC_POSTMASTER(数据库启动时设置)TDS server unix socket permissions0777
babelfishpg_tds.unix_socket_groupPGC_POSTMASTERTDS server unix socket group.NULL
babelfishpg_tds.default_server_namePGC_SIGHUP(数据库启动时设置或者reload触发中断设置)默认server nameMicrosoft SQL Server
babelfishpg_tds.product_versionPGC_USERSET(用户可修改)Product Version returned by Babelfishdefault
babelfishpg_tds.tds_default_numeric_precisionPGC_SIGHUP默认numeric精度38
babelfishpg_tds.tds_default_numeric_scalePGC_SIGHUP默认numeric范围8
babelfishpg_tds.tds_ssl_encryptPGC_SIGHUPssl加密开关false
babelfishpg_tds.tds_default_protocol_versionPGC_SIGHUPtds协议版本TDS_DEFAULT_VERSION
babelfishpg_tds.tds_ssl_max_protocol_versionPGC_SIGHUPssl协议最大版本PG_TLS1_2_VERSION
babelfishpg_tds.tds_ssl_min_protocol_versionPGC_SIGHUPssl协议最小版本PG_TLS1_VERSION
babelfishpg_tds.tds_default_packet_sizePGC_SIGHUP发送的packet大小4096
babelfishpg_tds.tds_debug_log_levelPGC_SIGHUP日志级别1
enable_drop_babelfish_rolePGC_USERSET是否可以删除一个babelfish rolefalse
babelfishpg_tds.trigger_fault_enabledPGC_SUSETEnable fault injection triggerstrue
http://www.dtcms.com/a/427039.html

相关文章:

  • 手机网站排行榜焦作专业网站建设费用
  • 小程序开发:开启定制化custom-tab-bar但不生效问题,以及使用NutUI-React Taro的安装和使用
  • 避坑指南:关于文件夹加密软件(以“文件夹加密超级大师”为例)卸载前的正确操作流程
  • 用矩阵实现元素绕不定点旋转
  • Web UI自动化测试学习系列5--基础知识1--常用元素定位1
  • 大模型-扩散模型(Diffusion Model)原理讲解(2)
  • 一文讲解反射、注解
  • 学习日报 20250930|优惠券事务处理模块
  • 【Nest.js】模块之间依赖关系,以及导出导入链的完整性
  • MyBatis —— 多表操作和注解开发
  • 自动化脚本的自动化执行实践
  • 有颜二维码 1.0.5| 告别单调,一键生成有颜色的二维码
  • 信创浪潮下的国产组态软件——紫金桥RealSCADA
  • 做网站新闻移动动态网络规划设计师资料及视频教程
  • 机器学习之三大学习范式:监督学习、无监督学习、强化学习
  • 18002.机器人电机姿态控制
  • mysql语句基本操作之select查询
  • 做mp3链接的网站宁波专业seo外包
  • Spring Boot 集成 EHCache 缓存解决方案
  • Spring Boot 缓存与验证码生成
  • 进攻------绕后------互换野区
  • Unity 3D笔记(脚本部分)——《B站阿发你好》
  • C++之类的组合
  • 服装购物网站策划书wordpress菜单栏移动下移
  • 【第五章:计算机视觉-项目实战之生成对抗网络实战】1.对抗生成网络原理-(1)对抗生成网络算法基础知识:基本思想、GAN的基本架构、应用场景、标注格式
  • win10软实时设置
  • leetcode 812. 最大三角形面积 简单
  • 机器学习+数字孪生:从诊断到自主决策的跨越
  • 若依前后端分离版学习笔记(十八)——页面权限,页签缓存以及图标,字典,参数的使用
  • 莱芜网站建设哪家好在线logo制作生成免费