- tests/test_m11b1a_ddl_runtime.py(15489B, +2020B): layer_a() 新增 A8 组 5 条真实断言 1) append_only_sql 过程体非法 RETURN 检出数==0(根因形态) 2) full_script 全文 ^\\s*RETURN 命中==0 3) 守卫未弱化: SIGNAL SQLSTATE 45000 >=3 + IF p_table + BEFORE UPDATE/DELETE 在位 4) DELIMITER 配对完整(_delimiter_integrity_errors 零错, $$ / ; 均在产物) 5) 门禁自检: 还原 RETURN; 坏样本必须被 _procedure_body_return_errors 检出(防永真假门禁) - tests/evidence/rtx0005_round3_localdb_run_20260922.txt: run_m11b1a_localdb.sh 原样落盘 rc=0, 34 项 PASS 34 FAIL 0(DDL 装载 rc=0 无 1064, 分区 7->11, prune 保 pmax, UPDATE/DELETE 被拒) - tests/evidence/rtx0005_round3_gate_regression_20260922.txt: --verify rc=0 / pytest 9 passed / selftest 110 PASS 0 FAIL / 产物 grep RETURN=0,五段带 EXIT_CODE 原样输出 - docs/work-log-2026-09-22-rtx0005-round3.md: 本轮改动点与实跑结果归档 - 选择性 git add 4 项(未使用 git add -A);scripts/ 修复本体工作树与 HEAD 无差异, 其入库在前序 dfffebb(引擎代收口),本轮不制造虚假差异
65 lines
5.0 KiB
Plaintext
65 lines
5.0 KiB
Plaintext
# PBL-RTX-0005 第3轮收口:一次性本地 MariaDB 全量门禁回归(run_m11b1a_localdb.sh)
|
||
# 采集时间: 2026-09-22T16:59:10+08:00
|
||
# git HEAD: f91aa2e7c6b6eb7eab191eae4f4c8b2ac77b1e37
|
||
# 命令: bash tests/run_m11b1a_localdb.sh
|
||
---------------------------------------------
|
||
[runner] datadir=/tmp/m11b1a_localdb_6 port=13306
|
||
[runner] mariadbd ready (2s)
|
||
[runner] db=pbls user=pbls 就绪(一次性库,与项目 test/prod 无关)
|
||
[runner] full_script() 渲染 12346 bytes -> /tmp/m11b1a_localdb_6/full.sql
|
||
[runner] 装载 DDL(mariadb CLI + DELIMITER)
|
||
note
|
||
m11b-1 migrate: 人工执行,见注释
|
||
[runner] DDL 装载 rc=0(stderr 见下,应为空)
|
||
harness: /d/pipeline/workspaces/0/sdlc_general/modules/pbl_runtime_ext/scripts/pbl_runtime_event_ddl.py
|
||
[A] 离线层(% 转义 + 判定逻辑静态核验)
|
||
PASS A1 maintenance_sql 渲染不抛异常(QC#1) rc=0, 3424 bytes(修复前 rc=1 ValueError: unsupported format character 'Y')
|
||
PASS A2 维护段含完整对象 pbl_runtime_event_ensure_partitions 3 处
|
||
PASS A2 维护段含完整对象 pbl_runtime_event_prune_partitions 2 处
|
||
PASS A2 维护段含完整对象 ev_pbl_runtime_event_partition_maintain 2 处
|
||
PASS A2 DATE_FORMAT 参数为单 %% 形式('%Y-%m-01') 命中 5 处单 % 形式
|
||
PASS A2 无 '%%Y' 双写转义残留 grep -c '%Y' = 0
|
||
PASS A3 full_script() rc=0 rc=0
|
||
PASS A3 %(dbname)s/%(app_user)s 已被替换 残留 0 处
|
||
PASS A3 REVOKE 主机通配符为单 %%('pbls'@'%') 命中 'pbls'@'%' = 1,'@%' = 0
|
||
PASS A3 break-glass ctx 原样输出 6 处
|
||
PASS A4 create_table_sql sha256 == 修复前基线 30a83c8a9d729db9…
|
||
PASS A5 源码无 'EXPLAIN PARTITIONS ' 废弃语法 grep 命中 0
|
||
PASS A5 无未使用查询结果的空转 for 循环 row[3] 命中 0,for k in 命中 0
|
||
PASS A6 分区清单来自 information_schema.PARTITIONS+ORDINAL OK
|
||
PASS A6 落分区判定用 PARTITION(p) 反查 + EXPLAIN FORMAT=JSON OK
|
||
PASS A6 探针清理 break-glass 逻辑保留 guard_ctx 设置 2 处 / 复位 1 处
|
||
PASS A7 CLI --verify rc=0 末行: VERIFY PASS
|
||
PASS A7 CLI --print rc=0 末行: );
|
||
PASS A7 CLI --print-guard rc=0 末行: -- REVOKE UPDATE, DELETE ON `%(dbname)s`
|
||
PASS A7 CLI --print-maintain rc=0 末行: DO CALL pbl_runtime_event_ensure_partiti
|
||
PASS A7 CLI --emit rc=0 3 文件: 20260919_m11b_01_create_pbl_runtime_event.sql,20260919_m11b_02_pbl_runtime_event_append_only.sql,20260919_m11b_03_pbl_runtime_event_partition_maintenance.sql
|
||
PASS A7 --emit 维护段 DATE_FORMAT 单 % 3647 bytes
|
||
PASS A8 append_only_sql 过程体无非法 RETURN(PBL-RTX-0005 根因) 检出 0 条: 无
|
||
PASS A8 渲染产物全文无裸 RETURN 语句 grep -i '^\s*RETURN' 命中 0 处
|
||
PASS A8 append-only 守卫未弱化:正向条件 + 单语句 SIGNAL + 双触发器均在位 SIGNAL 3 处 / IF p_table 1 处
|
||
PASS A8 过程段 DELIMITER 配对完整(_delimiter_integrity_errors 零错) DELIMITER $$ / DELIMITER ; 配对 OK
|
||
PASS A8 自检:坏样本(还原 RETURN;)被 _procedure_body_return_errors 检出 检出 1 条: ["[bad_sample] L15 过程体出现非法 RETURN 语句(MariaDB 仅 FUNCTION 可用 RETURN,且该分号会使 CLI 提前切分语句 -> ERROR 1064): 'RETURN;'"]
|
||
|
||
[B] 实库层(一次性本地 MariaDB,不触碰项目 test/prod 库)
|
||
PASS B1 CLI(mariadb+DELIMITER) 装载 full_script() 后对象齐备 分区 7 个 / 维护过程 2 个 / 触发器 2 个
|
||
[verify-db] env=test+harness db=pbls
|
||
PASS 分区数 实际 7(含 pmax)
|
||
PASS MAXVALUE 兜底 p202609,p202610,p202611,p202612,p202701,p202702,pmax
|
||
PASS 跨月插入 2 条探针行(不同月份)
|
||
PASS 跨月落不同分区 m11bprobe000000_a -> p202609 | m11bprobe000000_b -> pmax
|
||
PASS 分区裁剪 命中 1/7 分区: p202609
|
||
PASS UPDATE 被拒 (-20535, 'PBL_APPEND_ONLY_DENIED')
|
||
PASS DELETE 被拒 (-20535, 'PBL_APPEND_ONLY_DENIED')
|
||
PASS B2 verify_db() rc=0 全项 PASS(QC#6) verify-db rc=0
|
||
PASS B3 CALL ensure_partitions(9) 补建出新月分区 新增 p202703,p202704,p202705,p202706(分区数 7→11)
|
||
PASS B4-setup REORGANIZE 拆出过期历史月分区 p202001(保留期语义不变) 分区清单含 p202001=True
|
||
PASS B4 CALL prune_partitions(2) DROP 旧月分区且保留 pmax DROP p202001(剩余 11 个)
|
||
PASS B5 _explain_partitions 解析出分区清单 命中 p202609(表内共 11 分区)
|
||
PASS B6 _locate_row_partition 定位到 information_schema 清单内的分区 h_a -> p202609(清单 p202609,p202610,p202611,p202612,p202701,p202702,p202703,p202704,p202705,p202706,pmax)
|
||
|
||
[汇总] 共 34 项,PASS 34,FAIL 0
|
||
HARNESS PASS
|
||
[runner] harness rc=0
|
||
EXIT_CODE=0
|