合并原0906版本的修改: 索引检测函数修改,及新增检测包调用部分, 启用独立时钟维护线程,维护系统时钟, 修改checkpoint的两个函数, 修改延迟删除存储的延迟槽控制方式, 修改启动过程,节点在接入现有系统时,延迟其接受创建存储的时间点, 新增: http://192.168.2.208:8085/XGtest.lwb.Demo.Locationbug 1、兼容oracle语法,在有group子句的查询中,目标列有sublk时,虚谷报错问题(涉及单号2235,2236)。 2、修改BUG(2238,2219,2200,2163,2145,2140,2114,2027) --备份文件名:Server10.0_20170502_发布_合并插拔问题前bak 5月10日: 解决插拔过程中,拔除节点时,系统卡起问题; 5月11日: 合并入苏德财增加的兼容oracle加密包的部分代码,部分实现oracle的指定列自定义加密方式。 (工程中增加有加密文件夹encrypt/aes) 5月24日: 增加对连续尝试登录3次失败时,ip禁止功能 --备份文件名:Server10.0_20170502_发布_合并单机系统备份方案前bak 2017年5月27日: 合并单机备份功能 合并标记 //add by sdc@20170527 2017年6月5日: 合并IB网 合并标记 sdc@20170605 4ib 另外rsync.h 宏中有三处【alloc_lms_ord_buff】未做标记 2017年7月12日: 修改bug,加trace跟踪打印 标记 //add by sdc@20170712 //SDCC001 trace打印修改统一标记 2017年8月1日: 发布虚谷数据库V10.0建军版 2017年9月12日: 基于10.0升级到10.1修复问题,添加全局临时表,自动扩展分区,批量插入更新等功能 合并项: 2017-02-21 2017-02-22 自动扩展分区 2017-03-10 当前线程 调用优化 2017-03-13 关键字hash方式查找,暂未 使用 2017-03-15 批量插入 2017-04-17 批量删除,批量更新 2017-03-08 单号2102,2104 2017-03-14 调整msg_handle1、msg_handle2中switch分支序,高频事件靠前,减少处理深度 sdc@20170912 glock_msg改为双链,资源上报改为批量,自动扩在分区改为操作级锁实现避免死锁 2017-08-03 添加自动收集 sdc@20170803 修改全局临时表,未完成............ sdc@20170918 系统表预留字段 库:3,模式:3,对象:3,表字段:5,表分区及子分区:2,字段:3,大对象:2,约束:2,索引:3, 索引分区自分区2,用户3,授权3,视图 2,视图字段2,触发器2,dblink2,同义词2 变更日志2,订阅2,SYS_STREAMS1,序列值2,包3,过程3,自定义类型3,依赖2,安全策略2 安全级别2 sdc@20170919 for bug2545 bug2538 bug2539,bug2533 sdc@20170927 for bug2573 sdc@20171009 for bug2587 bug 2489 20171017 for bug2596 bug2601 20171106 for bug2622 2623 2605 20171108 for bug2626 2627 2628 20171120 for bug2390 bug2597 bug2629(不完全修改) bug1830 20171129 添加自动扩展分区测试test_extend_table_parti;auto_analyze_tablet trace记载用copy后表名 20171201 20171201 先判断state 和set_dbc_state 相反 for bug2626 20171205 boot中任务线程扩展检测提为单独线程维护(发布版本必须取消测试job);添加虚表sys_thd_session,sys_all_thd_session;for bug2652 20171211 add bldin_migrate_store for test 20171214 modify on_extend_parti; 20171218 修改get_table_row_num 打开表时不释放分区扩展锁;重写所有索引删除函数;唯一值外键检测添加分区扩展锁;全局锁重复释放trace记载; 20171220 修复bug2599 bug2671 bug2653; 20171229 bug2629(临时处理防止崩溃) //SDCC001 @20180103 20180105 for bug2683 20180108 for test 添加数据插入位置错误或无 节点死亡报847错误 跟踪日志 20180109 for bug2659 20180111 bug2636 20180111 for bug2685 20180112 for bug2686 why 2018-01-16 添加按分区名重建索引 bysdc@20180117 for bug2687 bysdc@20180115 for bug2688 bysdc@20180117 for bug2689 bysdc@20180118 for bug2690 bysdc@20180122 for bug2692 bysdc@20180123 for bug2693 bysdc@20180124 close_all_dbcs 放入锁内 bysdc@20180124 防止p_table==null时上层自动分析不放锁 bysdc@20180125 删除库过程中online=false登陆会进导致cache 残留无法再被清除,同时不允许登入offline库 bysdc@20180129 for bug2695,bug2696,bug2697 bysdc@20180131 for bug2698 bysdc@20180201 for bug2700 bysdc@20180202 for bug2701 bysdc@20180227 for bug2709 bysdc@20180308 调试版为事务管线,同步管线,锁添加最大深度记载,cp 发送失败时释放buff bysdc@20180321 for bug2716 调试版增加心跳和端口问讯消息跟踪,取消集群维护线程所有输出,节点判死时间可配置默认5(10s) bysdc@20180330 for bug2722 bysdc@20180410 bywhy for bug2411 bysdc@20180404 for bug2655 bywhy20171207 bysdc@20180410 bywhy for bug2727 bysdc@20180410 for bug2723 bysdc@20180412 副本删除同update方式处理,防止回滚覆盖后面正常操作 20180416 for bug2730 bysdc@20180418 添加udp下各类消息收发计数 20180422 添加消息内存释放调试输出 bysdc@20180423 for bug2736 bysdc@20180423 for bug2740 xugu_linux_x64_beta20180510 全局锁测试用(消息发送时 优先级发送比例对调,先发低优先级消息) xugu_linux_x64_beta20180510_2 全局锁测试用(消息发送时 优先级发送比例对调,先发低优先级消息),同时MSG_RETURN_GL消息休眠再发送 //20180511 发布 bysdc@20180511 report_own_resrc无所资源直接返回 bysdc@20180511 bug2749 udp_post_msg 消息优先级统一为1 bysdc@20180511 bug2750 催还所有节点级懒释放表分区自动扩张S锁 bysdc@20180523 for bug2341 bug2759系统默认账号不能更名、不能过期、不能修改开始时间、过期时间,锁定 //20180709 merge by sdc@20171101 合并集群备份 合并IB网 //20190413 工作内存超过8m则重置 ddl_modify_fields 如果开启binlog则强制发送 //20190419 工作内存高过8M的记入command.log 变更发送加读锁失败时挂起等候,不再抛出异常 //20190503 变更记载发送通过事务号选择发送通道,只影响IB网 //20190507 修改审计记载相内存为事务内存,同时命令延迟内存改为事务内存 修改DDL超时时间语句指定时间优先(1-300000ms),否则使用全局配置超时时间 修改DDL涉及 AlterTableStmt, IndexStmt,新建索引(添加约束时自动建立的索引使用全局设置) ReindexStmt,重建索引 TruncateStmt drop_table,drop_index,drop_view 改为使用全局配置超时时间 :语句重写没有copy语句上超时时间!!! :ddl_alter_domain,ddl_set_tab_policy,recompile_package,recompile_procedure cmd_alt_sequence,recompile_objt,recompile_view 关闭依赖对象DDL均采用无限等候锁??? 审计数据 插入 SYS_AUDIT_RESULTS N_LOCK>>IX_LOCK,审计连接时使用的是默认事务持有锁且无提交,在建立连接完成时释放锁资源 , 其他在当前事务上持有锁,在事务提交时释放锁资源 增加prepare语句不进行路径规划,统一在调用时规划,从而实现将prepare连接级锁降低为事务级锁,使对象上锁得以及时释放--默认启用预规划 bysdc@20190509 特殊处理连接审计ip bug3110 补齐prepare 语句,sys_sessions 两个系统表新增SQL字段 --20190509 修改gstore hash表spin锁为读写锁,所有访问按需加读写锁 废弃原有无锁获取gstore 信息设计,修改前备份代码 --20190510 prepare 调用时当前线程上补齐prepare 定义语句 默认不启用补齐 bysdc@20190516 bug2646 bug2645 20190529 黑白名单全集群生效 20190530 修复bug3112 3113 3114 3115 完善修复bug2627 禁止创建全局临时表 20190531 修改bug3096 不允许不带分区键的局部分区索引被主键和唯一值约束重用 mergebysdc@20190531 合并kill弹射器崩溃[//why 2019-05-18 add] 重新修改2481bug 恢复对nextval函数支持 修改语句重写各类崩溃 bysdc@20190603 for bug3119 bug3118 20190604 for bug3123 20190617 取消表信息统计trace记载 20190613 始终允许SYSDBA在本地登入SYSTEM库 sdc@20190617 support yyyyddd 重写key_hash 20190627 for bug3134 审计记载无限等候锁 添加 show LICENSE_TYPE 查看license类型 部分修复bug 3129 增加DDL的alter表记载 调整COMMAND.LOG格式 20190628 修复 bug3129 对象rpc发送 20190706 修复 bug3136 同时为整个迁移接口添加catch处理,防止异常时节点崩溃 fortest bysdc@20190706 删除事务锁链异常检测,并记载trace 修复 bug3137 复制表 20190709 bug3135 读取块数据返回长度不足异常 20190713 bug3140 select default 直接报错 bug3141 str2guid 添加限制 str长度必须是32或36 prepare 参数未传入全时抛出错误 20190715 添加1K vector 注意1k vector在 64k步长rowpos 8k为单位分配时内存有1/8浪费(原因为末尾部分不足8k) 20190716 pretreat_cond_expr 恒假时 use_rownum = false; 暂没有bug号 20190724 bug3144 自连接更新时buffer无法加锁 bug3145 禁用子连接条件下压 explain verbose 时显示子查询的过滤条件 可通过bug3145 验证 20190725 重新修改 20190713 的prepare 参数未传入全时抛出错误 explain verbose 空path处理 20190726 bug3148 游标方式prepare锁引用计数不正确,连接关闭时锁无法释放 处理check_login异常,分两段处理,其中审计异常直接忽略,其他返回check失败 20190730 bug3152 hash_link clob无比较函数 空指针 扩展修改MergeJoin index_link hash_group bug3150 update set=关联子查询 内存写越界 20190813 delay_reg_audit 异常自处理 ddl_rename 加入DDL记载选项控制 bug3160 集合并行弹射中间任务未正常结束问题 bug3165 为order by添加pause释放文件排序读取buffer资源 bug3157 do_set_invalid 异常自容错 20190813 forbug3167 MASTER切换 创建和扩展存储通知加锁检测 20190819 forbug3171 更新新字段预留长度 20190822 按名开表接口 尝试从连接上全局临时表开表时,判断临时表类型必须为2 forbug3173 20190824 装载索引失败记载trace时添加错误号记载 null 丰富 copy_ov_data接口trace记载信息 20190827 rownum+子查询计值崩溃 20190903 删除对象记载COMMAND支持,同时COMMAND支持文件切片 20190905 bysdc@20190905 重写rwlock为写优先 bug3181 序列值作为默认值rmc开表 forbug3184 distinct 分组 弹射器时having无效 20190907 黑白名单合并why修改 顺序扫描弹射器恒假支持快返 20190909 forbug3187 单节点表数据超过int最大值 count(*)结果错误 int32 g_errlog_size = 100; // 单个错误日志文件的最大长度**bysdc@20190909 10>>100 int g_max_parallel = 1; //**bysdc@20190909 2>>1 影响索引创建默认不并行 黑白名单ip检测是否成功逻辑判断反了 20190918 bug3188 truncate 纳入DDL记载 binlog 支持单G节点插拔,集群启动binlog切换新文件等优化及修改 20190923 ov释放锁范围修改 20190924 处理OV append_store异常后锁未释放问题 20190926 binlog主副版本不一致和内存溢出问题 bug3196,bug3197 20190929 重新修改bug3197 exist union结果错误 G节点加入但未开始工作前接受到commit消息直接回执 20191009 OV 分配释放时头锁由事务锁改为操作锁,同时添加配置ov_reuse 默认不启用OV重用 20191008 添加内置过程函数 bldin_invalid_store bldin_get_ov_blk on_msg_gsto_not case4 添加trycatch和资源锁释放 20191015 bug3222 blob 读取前像崩溃 添加tab_rebuild_limit 配置限制重整表数据量 bug3148 lob作为where条件远程传递后,事务代理异常 20191024 sys_sessions 表添加MEM_SIZE 字段 20191026 hash_join 文件方式时外扫描写文件后释放行内存,避免计算过程中内存过高,但这样降低性能 SetOper 写文件前同 hash_join 一样也释放内存 20191029 ov 系统表加锁问题 20191031 合并bug2815 hashjoin 条件压下后输出字段错误问题 标记{why 2018-11-09 add bug2815} 20191104 104错误修改 20191106 支持修改用户密码远程通知 支持登陆密码错误失败次数限制g_conn_fail_cnt { 合并索引预加载 //why 2019-10-18 add } 添加配置index_preload_cnt 0为不启用,否则大于index_preload_cnt才启动预加载 forbug3167 trace记载中free_que.gsto_no 改为free_stub->next_no delay_reg_audit exception 添加errno记载 20191108 sys_locks_rows_maker str栈区错误访问 restore 处理表名关键字 //////////////////////////////1108版本结束/////////////////////////////// 20191207 处理表空间被删除后的gstore加载,store创建,顺序扫描跳过847,开表统计行数跳过847错误 20191210 pick_major_info 取不到主版本时未处理异常,继续执行存在风险(如63 gstore) 接口preload_block //**bysdc@20191213 添加try catch 20191213 合并 { bysdc@20191127 forbug3300 包编译19002 cpp6处修改,头文件2处 20191128 再次修改bug3291 只按id缓存不用表名 同时添加移动到注册监听前 20191125 副master延迟10s判定主master死亡,避免主副master同时发出节点死亡消息 } bysdc@20191112 for bug3260 有默认值大对象更新 20191214 重写接口bldin_invalid_store 并行建索引记入trace.log build_btidx_gparti build_btidx_lparti bldin_test_ping_pong 超时改为30s str2var 处理NULL为空 20191218 forbug3326 删除库后自动分析线程上无字符集 导致的空指针 forbug3327 重建索引失败时,出现的各节点索引信息不一致问题,非请求处理节点索引的有效性,索引btlet残留等,导致访问已删除的索引btlet,最终出现不可预知错误(19002....) 20191219 rmc_nlock_open_table rmc_set_index_valid 涉及开表动作,但未传递字符集,导致远程开表时使用线程上默认字符集可能和当前库字符集不一致, 导致索引查找sys_tables时,因字符集不对查找索引失败 ,开表失败,出现空指针 bysdc@20191224 取消alloc_lob_blks 设计的5%重用 task_handle_daem 添加 curr_thd->signal_no=0;ClrAllErr();for bug3337 rmc_pause_modi_send rmc_resume_modi_send rmc_flush_modi_msgs 三个接口向死亡节点发送rmc消息异常 20191225 forbug3256 双G节点全部死亡后无法接入问题 forbug3341 死亡处理过程死锁问题 20191226 forbug3343 binlog分发hash运算19002 //--bysdc@20191226try_delete_blob(p_table,old_rec); //////////////////////////////1224版本结束///////////////////////////////