From 8856be4b3137fce011c4203f28bd3daeaf7db41f Mon Sep 17 00:00:00 2001
From: chenxiaobin19 <1025221611@qq.com>
Date: Wed, 12 Jun 2024 17:14:54 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0hash=E8=A1=A8checklist?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...2\351\252\214\346\224\266checkin\346\250\241\346\235\277.md" | 2 +-
...\351\252\214\346\224\266check-in\346\250\241\346\235\277.md" | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git "a/check-in/template/openGauss SQL\345\205\274\345\256\271\346\200\247\351\234\200\346\261\202\351\252\214\346\224\266checkin\346\250\241\346\235\277.md" "b/check-in/template/openGauss SQL\345\205\274\345\256\271\346\200\247\351\234\200\346\261\202\351\252\214\346\224\266checkin\346\250\241\346\235\277.md"
index 35e75e4..1fd6ca2 100644
--- "a/check-in/template/openGauss SQL\345\205\274\345\256\271\346\200\247\351\234\200\346\261\202\351\252\214\346\224\266checkin\346\250\241\346\235\277.md"
+++ "b/check-in/template/openGauss SQL\345\205\274\345\256\271\346\200\247\351\234\200\346\261\202\351\252\214\346\224\266checkin\346\250\241\346\235\277.md"
@@ -15,7 +15,7 @@
| 升级 | 兼容性 | 版本号变更 | src/common/backend/utils/init/globals.cpp :GRAND_VERSION_NUM | | |
| 升级 | 兼容性 | 前向兼容性 | 1)涉及系统表修改的特性,必须提供系统表升级脚本和回滚脚本,修改版本号文件 2)对于涉及修改持久化数据(如日志)的特性,必须考虑新老版本共存时的兼容性场景,必要情况下,需要增加版本号以进行识别 3)对于涉及修改执行态数据格式(如syscache结构)的特性,必须考虑新老版本共存时的兼容性场景,必要情况下,需要增加版本号以进行识别 | | |
| 升级 | 兼容性 | 验证升级正常 | 涉及到升级时需要验证如下场景: 1. 集群环境安装:该步骤会验证集群环境安装是否正常 2. 集群环境升级:从老的版本(1.1.0版本)升级到最新版本是否正常 | | |
-| 公共数据结构 | 功能 | hashtable | hashtable使用注意事项 ①在使用hash表时,entry必须封装成一个结构体,第一个成员必须是hash key 否则会造成查找失败!! ②封装的结构体必须只有两个成员:key+value,即value需要封装起来 否则hash表在search的时候会core!! ③hash表在创建的时候,entry 的size一定要正确 否则在enter的时候会造成写越界,不会报错但是其它变量内存会被踩,不易发现!! | | |
+| 公共数据结构 | 功能 | hashtable | hashtable使用注意事项 ①在使用hash表时,entry必须封装成一个结构体,第一个成员必须是hash key 否则会造成查找失败!! ②封装的结构体必须只有两个成员:key+value,即value需要封装起来 否则hash表在search的时候会core!! ③hash表在创建的时候,entry 的size一定要正确 否则在enter的时候会造成写越界,不会报错但是其它变量内存会被踩,不易发现!! ④在遍历hash表的循环过程中,使用hash_seq_init初始化游标时重点审视是否存在重复问题,是否符合预期。 | | |
| 公共数据结构 | 功能 | 禁止使用commandTag 判断Query的类型 | 需要对SELECT\INSERT\UPDATE\DELETE\MERGE INTO等query类型进行识别判断时,应该使用CmdType进行判断或新增标识。 禁止使用commandTag作为判断标识,因为commandTag在带returning*语句执行中变化。 | | |
| 系统函数 | 兼容性 | 系统表升级是否正确 | 通过对比initdb和升级后的db中pg_proc每一列的值,避免出现升级和非升级不一致的情况 | | |
| 系统函数 | 兼容性 | 新增数据类型适配FENCED函数 | 新增数据类型如果是FENCED函数使用,需要修改UDFArgumentHandler函数,把数据类型添加到对应收发分支。 | | |
diff --git "a/check-in/template/openGauss-server\344\273\223\351\234\200\346\261\202\351\252\214\346\224\266check-in\346\250\241\346\235\277.md" "b/check-in/template/openGauss-server\344\273\223\351\234\200\346\261\202\351\252\214\346\224\266check-in\346\250\241\346\235\277.md"
index 92ab886..71d6a3b 100644
--- "a/check-in/template/openGauss-server\344\273\223\351\234\200\346\261\202\351\252\214\346\224\266check-in\346\250\241\346\235\277.md"
+++ "b/check-in/template/openGauss-server\344\273\223\351\234\200\346\261\202\351\252\214\346\224\266check-in\346\250\241\346\235\277.md"
@@ -22,7 +22,7 @@
| 内存 | 内存 | 内存大容量边界设计 | 对于内存使用要考虑大容量边界的设计:
1.缓存大量数据场景。
2.长事务/循环中分配大量小块内存需要显式调用pfree_ext释放。 | | |
| 内存 | 内存 | 析构函数 | GAUSSDB在线程异常退出时,会释放线程上变量的内存并递归调用线程上所有类的析构函数,为避免double free的情况,需通过判断CurrentResourceOwner是否为空,如果为空,则表示线程退出中,此时仅需要将变量置为NULL即可 | | |
| 公共数据结构 | 功能 | pg_try | PG_TRY使用注意事项
① PG_CATCH中不能使用return,否则会出现随机core;
② PG_CATCH中一定要记得清理eredata (FlushErrorState();),否则会出现暴栈; | | |
-| 公共数据结构 | 功能 | hashtable | hashtable使用注意事项 ①在使用hash表时,entry必须封装成一个结构体,第一个成员必须是hash key 否则会造成查找失败!! ②封装的结构体必须只有两个成员:key+value,即value需要封装起来 否则hash表在search的时候会core!! ③hash表在创建的时候,entry 的size一定要正确 否则在enter的时候会造成写越界,不会报错但是其它变量内存会被踩,不易发现!! | | |
+| 公共数据结构 | 功能 | hashtable | hashtable使用注意事项 ①在使用hash表时,entry必须封装成一个结构体,第一个成员必须是hash key 否则会造成查找失败!! ②封装的结构体必须只有两个成员:key+value,即value需要封装起来 否则hash表在search的时候会core!! ③hash表在创建的时候,entry 的size一定要正确 否则在enter的时候会造成写越界,不会报错但是其它变量内存会被踩,不易发现!!④在遍历hash表的循环过程中,使用hash_seq_init初始化游标时重点审视是否存在重复问题,是否符合预期。 | | |
| 公共数据结构 | 功能 | 禁止使用commandTag 判断Query的类型 | 需要对SELECT\INSERT\UPDATE\DELETE\MERGE INTO等query类型进行识别判断时,应该使用CmdType进行判断或新增标识。 禁止使用commandTag作为判断标识,因为commandTag在带returning*语句执行中变化。 | | |
| 系统函数 | 兼容性 | 系统表升级是否正确 | 通过对比initdb和升级后的db中pg_proc每一列的值,避免出现升级和非升级不一致的情况 | | |
| 系统函数 | 兼容性 | 新增数据类型适配FENCED函数 | 新增数据类型如果是FENCED函数使用,需要修改UDFArgumentHandler函数,把数据类型添加到对应收发分支。 | | |
--
Gitee