-- 测试数据插入脚本 -- 用于验证数据库表结构和功能 -- ============================================ -- 1. 插入测试操作记录 -- ============================================ -- 测试1: 插入包含 IP 信息的操作记录 INSERT INTO operation ( op_id, op_actor, doid, producer_id, request_body_hash, response_body_hash, op_source, op_code, do_prefix, do_repository, client_ip, server_ip, trustlog_status, timestamp ) VALUES ( 'test-op-001', 'test-user', '10.1000/test-repo/doc001', 'producer-001', 'req_hash_001', 'resp_hash_001', 'DOIP', 'Create', '10.1000', 'test-repo', '192.168.1.100', -- 客户端IP '10.0.0.50', -- 服务端IP 'TRUSTLOGGED', -- 已存证 CURRENT_TIMESTAMP ); -- 测试2: 插入 IP 为 NULL 的操作记录 INSERT INTO operation ( op_id, op_actor, doid, producer_id, request_body_hash, response_body_hash, op_source, op_code, do_prefix, do_repository, client_ip, server_ip, trustlog_status, timestamp ) VALUES ( 'test-op-002', 'test-user', '10.1000/test-repo/doc002', 'producer-001', 'req_hash_002', 'resp_hash_002', 'DOIP', 'Update', '10.1000', 'test-repo', NULL, -- IP 为 NULL NULL, -- IP 为 NULL 'NOT_TRUSTLOGGED', -- 未存证 CURRENT_TIMESTAMP ); -- 测试3: 插入只有客户端 IP 的记录 INSERT INTO operation ( op_id, op_actor, doid, producer_id, request_body_hash, response_body_hash, op_source, op_code, do_prefix, do_repository, client_ip, server_ip, trustlog_status, timestamp ) VALUES ( 'test-op-003', 'test-user', '10.1000/test-repo/doc003', 'producer-001', 'req_hash_003', 'resp_hash_003', 'IRP', 'Delete', '10.1000', 'test-repo', '172.16.0.100', -- 仅客户端IP NULL, -- 服务端IP为NULL 'NOT_TRUSTLOGGED', CURRENT_TIMESTAMP ); -- ============================================ -- 2. 插入测试重试记录 -- ============================================ -- 测试1: 待重试记录 INSERT INTO trustlog_retry ( op_id, retry_count, retry_status, last_retry_at, next_retry_at, error_message ) VALUES ( 'test-op-002', 0, 'PENDING', NULL, CURRENT_TIMESTAMP, -- 立即重试 'Initial retry' ); -- 测试2: 重试中记录 INSERT INTO trustlog_retry ( op_id, retry_count, retry_status, last_retry_at, next_retry_at, error_message ) VALUES ( 'test-op-003', 2, 'RETRYING', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, -- 下次重试时间 'Connection timeout' ); -- ============================================ -- 3. 验证查询 -- ============================================ -- 查询所有操作记录 SELECT op_id, op_code, client_ip, server_ip, trustlog_status, timestamp FROM operation ORDER BY timestamp DESC; -- 查询包含 IP 信息的记录 SELECT op_id, client_ip, server_ip, trustlog_status FROM operation WHERE client_ip IS NOT NULL OR server_ip IS NOT NULL; -- 查询未存证的记录 SELECT op_id, doid, trustlog_status, timestamp FROM operation WHERE trustlog_status = 'NOT_TRUSTLOGGED' ORDER BY timestamp ASC; -- 查询重试记录 SELECT r.op_id, r.retry_count, r.retry_status, r.error_message, o.doid FROM trustlog_retry r JOIN operation o ON r.op_id = o.op_id ORDER BY r.next_retry_at ASC; -- 查询游标状态 SELECT * FROM trustlog_cursor WHERE id = 1; -- ============================================ -- 4. 统计查询 -- ============================================ -- 统计各状态的记录数 SELECT trustlog_status, COUNT(*) as count FROM operation GROUP BY trustlog_status; -- 统计 IP 字段使用情况 SELECT CASE WHEN client_ip IS NOT NULL THEN 'Has Client IP' ELSE 'No Client IP' END as client_ip_status, CASE WHEN server_ip IS NOT NULL THEN 'Has Server IP' ELSE 'No Server IP' END as server_ip_status, COUNT(*) as count FROM operation GROUP BY CASE WHEN client_ip IS NOT NULL THEN 'Has Client IP' ELSE 'No Client IP' END, CASE WHEN server_ip IS NOT NULL THEN 'Has Server IP' ELSE 'No Server IP' END; -- 统计重试状态 SELECT retry_status, COUNT(*) as count, AVG(retry_count) as avg_retry_count FROM trustlog_retry GROUP BY retry_status; -- ============================================ -- 5. 清理测试数据 -- ============================================ -- 取消注释以下语句来清理测试数据 /* DELETE FROM trustlog_retry WHERE op_id LIKE 'test-op-%'; DELETE FROM operation WHERE op_id LIKE 'test-op-%'; UPDATE trustlog_cursor SET last_processed_id = NULL, last_processed_at = NULL WHERE id = 1; */