openjdk version "21.0.11" 2026-04-21 LTS
OpenJDK Runtime Environment Corretto-21.0.11.10.1 (build 21.0.11+10-LTS)
OpenJDK 64-Bit Server VM Corretto-21.0.11.10.1 (build 21.0.11+10-LTS, mixed mode, sharing)
javac 21.0.11
PASS frozen source integrity ed5a420a0189945118b8b0211f6da39e989a453d 19
H2 version=2.1.214 SHA256=d623cdc0f61d218cf549a8d09f1c391ff91096116b22e2475475fce4fbe72bd0
OPEN connection=1 isolation=2
SQL connection=1 thread=main text=CREATE TABLE equipment (  tenant_id VARCHAR(40) NOT NULL,  equipment_id VARCHAR(80) NOT NULL,  category VARCHAR(80) NOT NULL,  state VARCHAR(30) NOT NULL CHECK (state IN ('ACTIVE','RETIRED','INSPECTION_REQUIRED')),  version BIGINT NOT NULL DEFAULT 0,  PRIMARY KEY(tenant_id,equipment_id) ) binds=[]
ROWS connection=1 affected=0
SQL connection=1 thread=main text=CREATE TABLE rental_contract (  tenant_id VARCHAR(40) NOT NULL,  contract_id VARCHAR(80) NOT NULL,  equipment_id VARCHAR(80) NOT NULL,  starts_at TIMESTAMP(9) WITH TIME ZONE NOT NULL,  ends_at TIMESTAMP(9) WITH TIME ZONE NOT NULL,  amount DECIMAL(19,2) NOT NULL CHECK (amount >= 0),  currency VARCHAR(3) NOT NULL CHECK (currency IN ('CNY','USD')),  status VARCHAR(16) NOT NULL CHECK (status IN ('RESERVED','CANCELLED')),  version BIGINT NOT NULL DEFAULT 0,  PRIMARY KEY(tenant_id,contract_id),  FOREIGN KEY(tenant_id,equipment_id) REFERENCES equipment(tenant_id,equipment_id),  CHECK (starts_at < ends_at) ) binds=[]
ROWS connection=1 affected=0
SQL connection=1 thread=main text=CREATE TABLE contract_line (  tenant_id VARCHAR(40) NOT NULL,  contract_id VARCHAR(80) NOT NULL,  line_no INT NOT NULL,  description VARCHAR(120) NOT NULL,  amount DECIMAL(19,2) NOT NULL CHECK (amount >= 0),  PRIMARY KEY(tenant_id,contract_id,line_no),  FOREIGN KEY(tenant_id,contract_id) REFERENCES rental_contract(tenant_id,contract_id) ) binds=[]
ROWS connection=1 affected=0
COMMIT connection=1 count=1
SQL connection=1 thread=main text=SELECT H2VERSION() binds=[]
DATABASE H2=2.1.214 schema=v1
CLOSE connection=1 openStatements=0
OPEN connection=2 isolation=2
SQL connection=2 thread=main text=INSERT INTO equipment(tenant_id,equipment_id,category,state) VALUES(?,?,?,?) binds=[T1, E1, camera, ACTIVE]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO rental_contract(tenant_id,contract_id,equipment_id,starts_at,ends_at,amount,currency,status,version) VALUES(?,?,?,?,?,?,?,?,?) binds=[T1, AR, E1, 2026-10-03T10:00:00.123456789Z, 2026-10-03T11:30:00.123456789Z, 25.00, CNY, RESERVED, 0]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO rental_contract(tenant_id,contract_id,equipment_id,starts_at,ends_at,amount,currency,status,version) VALUES(?,?,?,?,?,?,?,?,?) binds=[T1, DM, E1, 2026-10-03T10:00:00.123456789Z, 2026-10-03T11:30:00.123456789Z, 25.00, CNY, RESERVED, 0]
ROWS connection=2 affected=1
COMMIT connection=2 count=1
PASS one explicit data commit
CLOSE connection=2 openStatements=0
OPEN connection=3 isolation=2
PASS read uses new JDBC connection
SQL connection=3 thread=main text=SELECT * FROM rental_contract WHERE tenant_id=? AND contract_id=? binds=[T1, AR]
PASS Active Record nanosecond/time/money/identity roundtrip
SQL connection=3 thread=main text=SELECT * FROM rental_contract WHERE tenant_id=? AND contract_id=? binds=[T1, DM]
PASS Data Mapper nanosecond/time/money/identity roundtrip
SQL connection=3 thread=main text=SELECT * FROM rental_contract WHERE tenant_id=? AND contract_id=? binds=[T1, AR]
SQL connection=3 thread=main text=UPDATE rental_contract SET status=? WHERE tenant_id=? AND contract_id=? binds=[CANCELLED, T1, AR]
ROWS connection=3 affected=1
SQL connection=3 thread=main text=SELECT * FROM rental_contract WHERE tenant_id=? AND contract_id=? binds=[T1, DM]
SQL connection=3 thread=main text=UPDATE rental_contract SET status=? WHERE tenant_id=? AND contract_id=? binds=[CANCELLED, T1, DM]
ROWS connection=3 affected=1
COMMIT connection=3 count=1
CLOSE connection=3 openStatements=0
OPEN connection=4 isolation=2
SQL connection=4 thread=main text=SELECT COUNT(*) FROM rental_contract binds=[]
SQL connection=4 thread=main text=SELECT * FROM rental_contract WHERE tenant_id=? AND contract_id=? binds=[T1, AR]
SQL connection=4 thread=main text=SELECT * FROM rental_contract WHERE tenant_id=? AND contract_id=? binds=[T1, DM]
PASS both paths cancel and retain history
CLOSE connection=4 openStatements=0
OPEN connection=5 isolation=2
SQL connection=5 thread=main text=INSERT INTO equipment(tenant_id,equipment_id,category,state) VALUES(?,?,?,?) binds=[T1, staged-AR, camera, ACTIVE]
ROWS connection=5 affected=1
SQL connection=5 thread=main text=INSERT INTO rental_contract(tenant_id,contract_id,equipment_id,starts_at,ends_at,amount,currency,status,version) VALUES(?,?,?,?,?,?,?,?,?) binds=[T1, bad-AR, missing, 2026-10-03T10:00:00.123456789Z, 2026-10-03T11:30:00.123456789Z, 25.00, CNY, RESERVED, 0]
SQL_FAILURE connection=5 state=23506 code=23506
PASS AR invalid association rejected SQLSTATE23506
ROLLBACK connection=5 count=1
CLOSE connection=5 openStatements=0
OPEN connection=6 isolation=2
SQL connection=6 thread=main text=SELECT COUNT(*) FROM equipment binds=[]
SQL connection=6 thread=main text=SELECT COUNT(*) FROM rental_contract binds=[]
PASS AR rollback removes staged equipment and contract
CLOSE connection=6 openStatements=0
OPEN connection=7 isolation=2
SQL connection=7 thread=main text=INSERT INTO equipment(tenant_id,equipment_id,category,state) VALUES(?,?,?,?) binds=[T1, staged-DM, camera, ACTIVE]
ROWS connection=7 affected=1
SQL connection=7 thread=main text=INSERT INTO rental_contract(tenant_id,contract_id,equipment_id,starts_at,ends_at,amount,currency,status,version) VALUES(?,?,?,?,?,?,?,?,?) binds=[T1, bad-DM, missing, 2026-10-03T10:00:00.123456789Z, 2026-10-03T11:30:00.123456789Z, 25.00, CNY, RESERVED, 0]
SQL_FAILURE connection=7 state=23506 code=23506
PASS DM invalid association rejected SQLSTATE23506
ROLLBACK connection=7 count=1
CLOSE connection=7 openStatements=0
OPEN connection=8 isolation=2
SQL connection=8 thread=main text=SELECT COUNT(*) FROM equipment binds=[]
SQL connection=8 thread=main text=SELECT COUNT(*) FROM rental_contract binds=[]
PASS DM rollback removes staged equipment and contract
CLOSE connection=8 openStatements=0
PASS domain refuses negative persisted total
OPEN connection=9 isolation=2
SQL connection=9 thread=main text=INSERT INTO rental_contract(tenant_id,contract_id,equipment_id,starts_at,ends_at,amount,currency,status,version) VALUES(?,?,?,?,?,?,?,?,?) binds=[T1, before-check-failure, E1, 2026-10-03T10:00:00.123456789Z, 2026-10-03T11:30:00.123456789Z, 25.00, CNY, RESERVED, 0]
ROWS connection=9 affected=1
SQL connection=9 thread=main text=UPDATE rental_contract SET amount=-1 WHERE tenant_id=? AND contract_id=? binds=[T1, before-check-failure]
SQL_FAILURE connection=9 state=23513 code=23513
PASS database CHECK rejects bypass SQLSTATE23513
ROLLBACK connection=9 count=1
CLOSE connection=9 openStatements=0
OPEN connection=10 isolation=2
SQL connection=10 thread=main text=SELECT COUNT(*) FROM rental_contract binds=[]
SQL connection=10 thread=main text=SELECT COUNT(*) FROM contract_line binds=[]
PASS CHECK failure rollback leaves no partial contract
PASS JDBC statements and result sets closed
CLOSE connection=10 openStatements=0
RESULT enterprise05 checks=13
