V4.1.0_CE

About this version

Item Description
Release time 2023-03-20
Release number V4.1.0
Commit number c3c380915f466c969c2e3fda9ad5cd7f8488c4cf

New features

  1. Support for multiple-cluster Proxyro passwords
  2. Support for rich client capabilities
  3. Support for specifying Server IP routing
  4. Support for the Latin1 character set
  5. Support for transparently passing connection attributes with special prefixes
  6. Support for distributed transaction routing
  7. Support for MySQL binlog
  8. Support for read-write separation and transaction splitting
  9. Support for mapping VIPs to Cluster/Tenant through means other than MetaDB
  10. Support for global-level weak-read and read-only configuration parameters
  11. Support for GIS, JSON data types
  12. Support for IPv6
  13. Support for accurately routing access to the sys tenant OceanBase library in QA Mode
  14. Support for ROWID routing under PS
  15. Support for multi-column partition key routing
  16. Support for obtaining column default value routing
  17. Support for calculating expressions such as nvl, sysdate, mod, to_char, and substr
  18. Support for is null and is not null routing
  19. Support for XA Start statement hold
  20. 【OB Sharding】Support for rolling upgrades
  21. 【OB Sharding】Support for SHOW TOPOLOGY syntax
  22. 【OB Sharding】Added hint support for session stickiness: route to the previous non-scan-all statement shard
  23. 【OB Sharding】Support for information_schema.partitions and information_schema.coulmns
  24. 【OB Sharding】Support for SQL-level timeout control
  25. 【OB Sharding】Single-shard support for SQL syntax: batch update, batch delete, batch insert

Improvements

  1. RTO optimization, less than 8S
  2. OB 2.0 protocol optimization, reducing synchronous statements
  3. OBProxy actively disconnects and sends Error packets to the client
  4. Supports global-level PS cache
  5. client_sock_option_flag_out default value is changed from 2 to 3
  6. obproxy_error.log will print OBServer TraceId
  7. Memory optimization, including connection memory and PS memory
  8. RTO probe optimization, considering it normal when receiving Handshake packets
  9. The default character encoding in HandShake packets is changed to 46
  10. New enable_binlog_service configuration item, default false, indicating whether to enable binlog function
  11. 【OB Sharding】Log optimization
  12. 【OB Sharding】insert/update/delete statements support multi-table syntax
  13. 【OB Sharding】scan_all optimization
  14. 【OB Sharding】Black screen DDL optimization

Bug fixes

  1. Fixed Core issue when accessing partitioned tables with RowID
  2. Fixed issue where deleting text ps under Client 2.0 protocol does not return anything
  3. Fixed issue where executing text ps under Client 2.0 protocol, then executing sql normally causes "requestId mismatch" error
  4. Fixed issue where erroneous format of err packet in internal SQL causes client to hang
  5. Fixed issue where enabling v2 protocol causes "4016" error and disconnection
  6. Fixed issue where enabling "enable_ob_protocol_v2_with_client=true" causes disconnection during secondary sql routing
  7. Fixed issue where connection id mismatch causes proxy disconnection
  8. Fixed issue where enabling compression protocol causes disconnection
  9. Fixed issue where using COM_CHANGE_USER command with username not in user_name@tenant_name format causes inability to use
  10. Fixed issue where date type is inaccurately routed in certain scenarios
  11. Fixed Core issue caused by abnormal to_timestamp parameter
  12. Fixed Core issue caused by executing anonymous blocks in ODC
  13. Fixed remote routing issue with to_date function
  14. Fixed routing inaccuracy issue with timestamp with local time zone type list partitioning under Oracle mode
  15. Fixed Core issue caused by some keywords not having pointers set
  16. Fixed issue where detection optimization causes inability to whiteness
  17. Fixed issue where SSL configuration retrieval fails
  18. Fixed issue where enabling CPU resource isolation on public cloud causes inability to connect to cluster
  19. Fixed issue where using int form for vid configuration does not take effect
  20. Fixed issue with substr() causing index out of bounds
  21. Fixed partition calculation error with range partitioning under "where c1 >20" condition
  22. Fixed issue where type conversion fails and causes inability to route when there are NULL values in list and list column partitioning
  23. Fixed Core issue introduced by global PS
  24. Fixed issue where autocommit flag in OK packet returned by set autocommit=0 is still 1
  25. Fixed issue where some fields in RespResult are not initialized in constructor, causing abnormal disconnection when used
  26. Fixed issue where XA_START hold&sync PS 2-in-1 protocol supports complex parameter types
  27. Fixed issue where XA_START hold&sync synchronous process cannot accept multiple OB20 packets
  28. Fixed obproxy Core issue at oceanbase::obproxy::proxy::ObProxyExprCalculator::calc_partition_id_with_rowid_str
  29. Fixed obproxy Core issue at oceanbase::obproxy::proxy::ObProto20Utils::analyze_compressed_packet_header
  30. Fixed obproxy Core issue where old database saved in proxy session is used, causing obproxy core at oceanbase::common::ObLogger::log_message_kv
  31. Fixed obproxy Core dump at oceanbase::obproxy::proxy::ObMysqlSM::setup_error_transfer
  32. Fixed obproxy binary Core dump at obproxy/obutils/ob_proxy_sql_parser.cpp:890
  33. Fixed obproxy Core dump at oceanbase::obproxy::proxy::ObMysqlSM::tunnel_handler_response_transfered
  34. Fixed Core issue with oceanbase::obproxy::proxy::ObMysqlTransact::is_internal_request
  35. Fixed odp Core issue with expression mod() calculation at oceanbase::obproxy::opsql::ObProxyExprMod::calc
  36. Fixed obproxy Core issue at oceanbase::obproxy::proxy::ObMysqlVCTable::cleanup_entry
  37. Fixed obproxy Core issue at oceanbase::obproxy::proxy::ObMysqlTransact::is_internal_request
  38. Fixed Core issue at oceanbase::obproxy::proxy::ObProxyPartMgr::get_first_part at obproxy/proxy/route/obproxy_part_mgr.cpp
  39. Fixed obproxy core issue at ObCongestionEntry::to_string in obproxy/obutils/ob_congestion_entry.cpp
  40. Fixed a disconnect issue when executing insert statement with "binary" keyword in the "values" clause in OB Sharding
  41. Fixed an issue in OB Sharding where the "case when" condition in the "where" clause is incorrectly identified as a sharding parameter
  42. Fixed a core issue in OB Sharding when using unsupported expressions in the "order by" or "group by" clause

V4.1.0_CE

版本信息

名称 描述
发布时间 2023 年 03 月 20 日
版本号 v4.1.0
提交号 c3c380915f466c969c2e3fda9ad5cd7f8488c4cf

功能

  • 支持 多集群 Proxyro 密码
  • 支持 富客户端能力
  • 支持 指定 Server IP 路由
  • 支持 latin1字符集
  • 支持 透传带有特殊前缀的 connection attr
  • 支持 分布式事务路由
  • 支持 MySQL binlog
  • 支持 读写分离 和 事务拆分
  • 支持 通过非 MetaDB 的方式设置 VIP 与 Cluster/Tenant 的映射
  • 支持 全局级别的弱读、只读配置参数
  • 支持 GIS、JSON 数据类型
  • 支持 IPv6
  • 支持 QA Mode 下访问 sys 租户 OceanBase 库准确路由
  • 支持 PS 下 ROWID 路由
  • 支持 多列分区键路由
  • 支持 获取列 default 值路由
  • 支持 nvl、sysdate、mod、to_char 和 substr 表达式计算
  • 支持 is null 和 is not null 路由
  • 支持 XA Start 语句 Hold
  • 【OB Sharding】支持滚动升级
  • 【OB Sharding】支持SHOW TOPOLOGY语法
  • 【OB Sharding】新增 hint 支持会话粘滞:路由到前一个非 scan all 语句的分片
  • 【OB Sharding】支持 information_schema.partitions 和 information_schema.coulmns
  • 【OB Sharding】支持 SQL 级别的 timeout 超时控制
  • 【OB Sharding】单分片支持SQL语法:批量更新、批量删除、批量插入

优化

  • RTO 优化,小于 8S
  • OB 2.0 协议优化,减少同步语句
  • OBProxy主动断连接,会发送Error包到客户端
  • 支持全局级别的 PS 缓存
  • client_sock_option_flag_out 默认值从 2 修改为 3
  • obproxy_error.log 日志中会打印 OBServer TraceId
  • 内存优化,包括连接内存、PS 内存
  • RTO 探活优化,收到 Handshake 包即认为正常
  • HandShake 包中默认的字符编码转为 46
  • 新增 enable_binlog_service 配置项, 默认false,表示是否打开 binlog 功能
  • 【OB Sharding】日志优化
  • 【OB Sharding】insert/update/delete 语句支持多表语法
  • 【OB Sharding】scan_all 优化
  • 【OB Sharding】黑屏 DDL 优化

BUG修复

  • 修复 带 RowID 访问分区表的 Core 问题
  • 修复 Client 2.0 协议下,文本ps删除无返回
  • 修复 Client 2.0 协议下,执行文本ps异常场景再正常执行sql,报错requestId mismatch
  • 修复 内部SQL err packet回包格式错误导致客户端hang住
  • 修复 开启v2协议,报错4016,断连接的问题
  • 修复 enable_ob_protocol_v2_with_client=true,sql二次路由断连接
  • 修复 connection id mismatch 导致 proxy 断连接
  • 修复 开压缩协议后,断连接的问题
  • 修复 COM_CAHNGE_USER命令,用户名不符合user_name@tenant_name格式导致无法使用的问题
  • 修复 date 类型在部分场景下路由不准确的问题
  • 修复 异常 to_timestamp 参数导致的 Core 问题
  • 修复 ODC 执行匿名块导致的 Core 问题
  • 修复 to_date 函数远程路由问题
  • 修复 Oracle模式下 timestamp with local time zone类型list分区路由不准的问题
  • 修复 部分关键字没有设置指针导致的 core 问题
  • 修复 探测优化导致一直无法洗白的问题
  • 修复 SSL 配置获取失败问题
  • 修复 公有云上开启 cpu 资源隔离,集群连不上的问题
  • 修复 vid 使用 int 形式下发配置不生效
  • 修复 substr()下标越界问题
  • 修复 range 分区在 where c1 >20 条件下,分区计算错误问题
  • 修复 list,list column 分区,如果表中有 NULL 值,进行类型转换会失败,导致无法路由的问题
  • 修复 全局 PS 引入的 Core 问题
  • 修复 set autocommit=0 返回的 OK 包中的 autocommit 标记还是 1 的问题
  • 修复 RespResult 某些字段在构造函数中未初始化,导致使用时判断异常断链的问题
  • 修复 XA_START hold&sync PS 二合一协议中支持复杂参数类型
  • 修复 XA_START hold&sync 同步过程中无法接受多个 OB20 包的问题
  • 修复 obproxy core at oceanbase::obproxy::proxy::ObProxyExprCalculator::calc_partition_id_with_rowid_str
  • 修复core at oceanbase::obproxy::proxy::ObProto20Utils::analyze_compressed_packet_header
  • 修复 proxy session中保存的老database被使用后,obproxy core at oceanbase::common::ObLogger::log_message_kv
  • 修复 oceanbase::obproxy::proxy::ObMysqlSM::setup_error_transfer core dump
  • 修复 obproxy binary core dumped at obproxy/obutils/ob_proxy_sql_parser.cpp
  • 修复 oceanbase::obproxy::proxy::ObMysqlSM::tunnel_handler_response_transfered core dump
  • 修复 oceanbase::obproxy::proxy::ObMysqlTransact::is_internal_request Core 问题
  • 修复 表达式 mod() 计算,odp core at oceanbase::obproxy::opsql::ObProxyExprMod::calc
  • 修复 obproxy core oceanbase::obproxy::proxy::ObMysqlVCTable::cleanup_entry 问题
  • 修复 obproxy core at oceanbase::obproxy::proxy::ObMysqlTransact::is_internal_request 问题
  • 修复 core at oceanbase::obproxy::proxy::ObProxyPartMgr::get_first_part at obproxy/proxy/route/obproxy_part_mgr.cpp
  • 修复 obproxy core at ObCongestionEntry::to_string at obproxy/obutils/ob_congestion_entry.cpp
  • 【OB Sharding】修复 insert 的时候,如果 values 中包含了_binary ,执行断连接的问题
  • 【OB Sharding】修复 where子句中使用case when,case when条件被识别为分库分表参数
  • 【OB Sharding】修复 order by/group by 后面是不支持的表达式出 Core 的问题

项目简介

A proxy server for OceanBase Database.

🚀 Github 镜像仓库 🚀

源项目地址

https://github.com/oceanbase/obproxy

发行版本 4

v4.1.0_CE

全部发行版

贡献者 14

全部贡献者

开发语言

  • C++ 72.9 %
  • C 25.4 %
  • Objective-C 0.6 %
  • Yacc 0.4 %
  • Lex 0.3 %