{
 "ticket": "U56 #93",
 "generatedAt": "2026-10-31T07:11:14.105458+08:00",
 "startedAt": "2026-10-31T07:11:14.105411+08:00",
 "exitCode": 0,
 "kind": "model",
 "testCount": 6,
 "passed": 6,
 "databaseConnections": 0,
 "rules": [
  "PostgreSQL 18 文档：事务隔离（读已提交的并发更新重检）、序列函数、字符类型、事务性 DDL。",
  "Oracle Database 23 文档：数据并发与一致性、事务（DDL 隐式提交）、CREATE SEQUENCE、空值与比较规则。",
  "Hibernate ORM 6.6.0 OracleDialect：isEmptyStringTreatedAsNull() 返回 true。"
 ],
 "blocked": [
  "本机无 PostgreSQL 服务（5432 未监听）与 Oracle 服务（1521 未监听）。",
  "真实 PG/Oracle 上的隔离级别行为、锁等待、执行计划、序列间隙：均未运行，按票面「受阻仍算待验证」登记。",
  "模型是文档规则的确定性重放，不是任何数据库的实机观察；模型通过不等于语义已验收。"
 ],
 "observed": [
  "U56 sequenceGap=PASS rollbackIssued=1 rollbackCommitted=[] cacheIssued=3 committedBeforeFailure=[1] rules=nextval-not-reclaimed+cached-values-lost-on-failure",
  "U56 concurrentUpdate=PASS pgNoGuardMatched=[1, 1] pgBalance=80 pgValueGuardMatched=[1, 0] pgGuardBalance=90 oracleMatched=[1, 1] oracleBalance=80 semantics=pg-reevaluates-where-oracle-proceeds-on-new-version",
  "U56 isolationCodes=PASS pgRepeatableRead=40001 oracleSerializable=ORA-08177 semantics=whole-transaction-retry-not-partial-retry",
  "U56 nullAndPadding=PASS oracleEmptyIsNull=True oracleCharPadded=True oracleVarcharNonpadded=True pgEmptyNotNull=True pgBpcharPadded=True pgTextSignificant=True semantics=oracle-empty-is-null+blank-padded-rules",
  "U56 ddlTransaction=PASS oracleInsertSurvivesRollback=True pgInsertSurvivesRollback=False pgDdlRolledBack=True semantics=implicit-commit-before-and-after-ddl-vs-transactional-ddl",
  "U56 paginationAndUpsert=PASS mysqlOffset=20 pgOffset=20 oracleOffset=20 rownumUpper=30 rownumLower=21 upsertFinal=2 semantics=offset-forms-and-conflict-resolution-agree"
 ],
 "checks": [
  {
   "name": "sequenceGap",
   "ok": true,
   "detail": "rollbackIssued=1 rollbackCommitted=[] cacheIssued=3 committedBeforeFailure=[1] rules=nextval-not-reclaimed+cached-values-lost-on-failure"
  },
  {
   "name": "concurrentUpdate",
   "ok": true,
   "detail": "pgNoGuardMatched=[1, 1] pgBalance=80 pgValueGuardMatched=[1, 0] pgGuardBalance=90 oracleMatched=[1, 1] oracleBalance=80 semantics=pg-reevaluates-where-oracle-proceeds-on-new-version"
  },
  {
   "name": "isolationCodes",
   "ok": true,
   "detail": "pgRepeatableRead=40001 oracleSerializable=ORA-08177 semantics=whole-transaction-retry-not-partial-retry"
  },
  {
   "name": "nullAndPadding",
   "ok": true,
   "detail": "oracleEmptyIsNull=True oracleCharPadded=True oracleVarcharNonpadded=True pgEmptyNotNull=True pgBpcharPadded=True pgTextSignificant=True semantics=oracle-empty-is-null+blank-padded-rules"
  },
  {
   "name": "ddlTransaction",
   "ok": true,
   "detail": "oracleInsertSurvivesRollback=True pgInsertSurvivesRollback=False pgDdlRolledBack=True semantics=implicit-commit-before-and-after-ddl-vs-transactional-ddl"
  },
  {
   "name": "paginationAndUpsert",
   "ok": true,
   "detail": "mysqlOffset=20 pgOffset=20 oracleOffset=20 rownumUpper=30 rownumLower=21 upsertFinal=2 semantics=offset-forms-and-conflict-resolution-agree"
  }
 ]
}
