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
PASS blank equipment id -> IllegalArgumentException
PASS null request id -> IllegalArgumentException
PASS zero-length interval -> IllegalArgumentException
PASS reversed interval -> IllegalArgumentException
PASS missing start -> NullPointerException
PASS missing end -> NullPointerException
PASS missing request identity -> NullPointerException
PASS missing equipment identity -> NullPointerException
PASS missing period -> NullPointerException
PASS reference booking 0
PASS interval [5,10) against [10,20): CONFIRMED
PASS reference booking 1
PASS interval [20,25) against [10,20): CONFIRMED
PASS reference booking 2
PASS interval [0,5) against [10,20): CONFIRMED
PASS reference booking 3
PASS interval [25,30) against [10,20): CONFIRMED
PASS reference booking 4
PASS interval [5,11) against [10,20): OVERLAP_REJECTED
PASS reference booking 5
PASS interval [19,25) against [10,20): OVERLAP_REJECTED
PASS reference booking 6
PASS interval [12,18) against [10,20): OVERLAP_REJECTED
PASS reference booking 7
PASS interval [5,25) against [10,20): OVERLAP_REJECTED
PASS reference booking 8
PASS interval [10,20) against [10,20): OVERLAP_REJECTED
PASS reference booking 9
PASS interval [10,15) against [10,20): OVERLAP_REJECTED
PASS reference booking 10
PASS interval [15,20) against [10,20): OVERLAP_REJECTED
PASS initial request confirmed
PASS same payload retry returns original outcome
PASS changed interval under reused id rejected -> IllegalArgumentException
PASS changed equipment under reused id rejected -> IllegalArgumentException
PASS failed changed payload leaves original booking active
PASS different equipment accepts same interval
PASS unknown cancellation changes nothing
PASS rejected request has no booking to cancel
PASS cancellation releases original booking
PASS repeated cancellation reports no active booking
PASS retry after cancellation retains original outcome
PASS rejected outcome remains stable after availability changes
PASS rejected request id cannot change payload -> IllegalArgumentException
PASS new request uses released interval; old retry did not rebook
PASS replacement booking protects released interval again
PASS null request rejected -> NullPointerException
PASS null cancellation rejected -> NullPointerException
PASS total=48
PASS reserve confirmed
PASS factory quote persisted
PASS snapshot restore round trip
PASS escaped entity cannot mutate committed snapshot
PASS reload observes committed retirement
PASS global replay precedes current eligibility clock and maintenance
OBSERVED changed equipment under same id: requestId reused with different payload
PASS changed equipment under same id
OBSERVED changed price revision under same id: requestId reused with different payload
PASS changed price revision under same id
PASS retired denies new request
PASS cancel confirmed
PASS repeat cancel false
PASS unknown cancel false
PASS cancel preserves contract and confirmed history
PASS only actual reserve and cancel publish
PASS fresh confirmation
PASS overlap rejected
PASS rejected history survives release
PASS new identity uses released interval
PASS half-open adjacent accepted
PASS invalid period stored
PASS unknown equipment stored
PASS maintenance restriction BLOCKED
PASS maintenance restriction REVIEW_REQUIRED
OBSERVED maintenance technical failure does not consume request: port unavailable
PASS maintenance technical failure does not consume request
PASS port failure leaves no receipt
OBSERVED before commit failure: before commit
PASS before commit failure
PASS rollback covers calendar receipt contract
PASS fresh repository can retry rolled-back request
OBSERVED cancel commit failure: cancel before commit
PASS cancel commit failure
PASS cancel rollback retains active commitment
OBSERVED after commit before publish failure: after commit
PASS after commit before publish failure
PASS commit survives publication gap
PASS history replay does not repair lost event
OBSERVED publisher exception: publisher unavailable
PASS publisher exception
PASS publisher failure also retains committed state
OBSERVED nested transaction rejected: nested transaction unsupported
PASS nested transaction rejected
TRACE reserve=CONFIRMED cancel=true history=CONFIRMED active=false events=[Event[kind=ReservationConfirmed, requestId=RequestId[value=r1]], Event[kind=ReservationCancelled, requestId=RequestId[value=r1]]]
RESULT chapter27 checks=36
PASS E00-01 reserve -> CONFIRMED
PASS E00-02 overlap -> OVERLAP_REJECTED
PASS E00-03 repeat -> CONFIRMED
PASS E00-04 cancellation -> true
PASS E00-05 cancelled replay -> CONFIRMED
PASS E00-06 rejected replay -> OVERLAP_REJECTED
PASS E00-07 new intent -> CONFIRMED
PASS E00-08 quote -> Money[amount=12.50, currency=CNY]
PASS E00-09 repair blocked -> MAINTENANCE_RESTRICTED
PASS E00-10 currency mismatch
PASS E00-11 payload mismatch
PASS E00-12 direct active count -> 1
RESULT enterprise00 checks=12 quote=Money[amount=12.50, currency=CNY] events=3
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
PASS QuoteScript same-rate
PASS QuoteScript boundary starts new rate
PASS QuoteScript cross effective date
PASS QuoteScript extension total
PASS QuoteScript negative period
PASS QuoteScript zero period
PASS QuoteScript shortening not extension
PASS DomainPricing same-rate
PASS DomainPricing boundary starts new rate
PASS DomainPricing cross effective date
PASS DomainPricing extension total
PASS DomainPricing negative period
PASS DomainPricing zero period
PASS DomainPricing shortening not extension
PASS QuoteTable same-rate
PASS QuoteTable boundary starts new rate
PASS QuoteTable cross effective date
PASS QuoteTable extension total
PASS QuoteTable negative period
PASS QuoteTable zero period
PASS QuoteTable shortening not extension
PASS table handles two rows in one module
PASS table row extension
PASS overlapping effective prices
PASS mixed currency schedule
RESULT enterprise01 checks=25 rule=start-date rate
PASS QuoteScript same-rate
PASS QuoteScript boundary starts new rate
PASS QuoteScript cross effective date
PASS QuoteScript extension total
PASS QuoteScript negative period
PASS QuoteScript zero period
PASS QuoteScript shortening not extension
PASS QuoteScript missing validity coverage
PASS DomainPricing same-rate
PASS DomainPricing boundary starts new rate
PASS DomainPricing cross effective date
PASS DomainPricing extension total
PASS DomainPricing negative period
PASS DomainPricing zero period
PASS DomainPricing shortening not extension
PASS DomainPricing missing validity coverage
PASS QuoteTable same-rate
PASS QuoteTable boundary starts new rate
PASS QuoteTable cross effective date
PASS QuoteTable extension total
PASS QuoteTable negative period
PASS QuoteTable zero period
PASS QuoteTable shortening not extension
PASS QuoteTable missing validity coverage
PASS table handles two rows in one module
PASS table row extension
PASS overlapping effective prices
PASS mixed currency schedule
RESULT enterprise01 checks=28 rule=segmented effective rates
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
PASS blank equipment id -> IllegalArgumentException
PASS null request id -> IllegalArgumentException
PASS zero-length interval -> IllegalArgumentException
PASS reversed interval -> IllegalArgumentException
PASS missing start -> NullPointerException
PASS missing end -> NullPointerException
PASS missing request identity -> NullPointerException
PASS missing equipment identity -> NullPointerException
PASS missing period -> NullPointerException
PASS reference booking 0
PASS interval [5,10) against [10,20): CONFIRMED
PASS reference booking 1
PASS interval [20,25) against [10,20): CONFIRMED
PASS reference booking 2
PASS interval [0,5) against [10,20): CONFIRMED
PASS reference booking 3
PASS interval [25,30) against [10,20): CONFIRMED
PASS reference booking 4
PASS interval [5,11) against [10,20): OVERLAP_REJECTED
PASS reference booking 5
PASS interval [19,25) against [10,20): OVERLAP_REJECTED
PASS reference booking 6
PASS interval [12,18) against [10,20): OVERLAP_REJECTED
PASS reference booking 7
PASS interval [5,25) against [10,20): OVERLAP_REJECTED
PASS reference booking 8
PASS interval [10,20) against [10,20): OVERLAP_REJECTED
PASS reference booking 9
PASS interval [10,15) against [10,20): OVERLAP_REJECTED
PASS reference booking 10
PASS interval [15,20) against [10,20): OVERLAP_REJECTED
PASS initial request confirmed
PASS same payload retry returns original outcome
PASS changed interval under reused id rejected -> IllegalArgumentException
PASS changed equipment under reused id rejected -> IllegalArgumentException
PASS failed changed payload leaves original booking active
PASS different equipment accepts same interval
PASS unknown cancellation changes nothing
PASS rejected request has no booking to cancel
PASS cancellation releases original booking
PASS repeated cancellation reports no active booking
PASS retry after cancellation retains original outcome
PASS rejected outcome remains stable after availability changes
PASS rejected request id cannot change payload -> IllegalArgumentException
PASS new request uses released interval; old retry did not rebook
PASS replacement booking protects released interval again
PASS null request rejected -> NullPointerException
PASS null cancellation rejected -> NullPointerException
PASS total=48
PASS reserve confirmed
PASS factory quote persisted
PASS snapshot restore round trip
PASS escaped entity cannot mutate committed snapshot
PASS reload observes committed retirement
PASS global replay precedes current eligibility clock and maintenance
OBSERVED changed equipment under same id: requestId reused with different payload
PASS changed equipment under same id
OBSERVED changed price revision under same id: requestId reused with different payload
PASS changed price revision under same id
PASS retired denies new request
PASS cancel confirmed
PASS repeat cancel false
PASS unknown cancel false
PASS cancel preserves contract and confirmed history
PASS only actual reserve and cancel publish
PASS fresh confirmation
PASS overlap rejected
PASS rejected history survives release
PASS new identity uses released interval
PASS half-open adjacent accepted
PASS invalid period stored
PASS unknown equipment stored
PASS maintenance restriction BLOCKED
PASS maintenance restriction REVIEW_REQUIRED
OBSERVED maintenance technical failure does not consume request: port unavailable
PASS maintenance technical failure does not consume request
PASS port failure leaves no receipt
OBSERVED before commit failure: before commit
PASS before commit failure
PASS rollback covers calendar receipt contract
PASS fresh repository can retry rolled-back request
OBSERVED cancel commit failure: cancel before commit
PASS cancel commit failure
PASS cancel rollback retains active commitment
OBSERVED after commit before publish failure: after commit
PASS after commit before publish failure
PASS commit survives publication gap
PASS history replay does not repair lost event
OBSERVED publisher exception: publisher unavailable
PASS publisher exception
PASS publisher failure also retains committed state
OBSERVED nested transaction rejected: nested transaction unsupported
PASS nested transaction rejected
TRACE reserve=CONFIRMED cancel=true history=CONFIRMED active=false events=[Event[kind=ReservationConfirmed, requestId=RequestId[value=r1]], Event[kind=ReservationCancelled, requestId=RequestId[value=r1]]]
RESULT chapter27 checks=36
PASS service coordinates quote and reservation
PASS service saves receipt contract and event
PASS same service repeat returns same result
PASS service cancellation
PASS cancel preserves quote and history
OBSERVED after use-case calculation, before save
PASS calculation actually completed
PASS save failure leaves exact original state
PASS no notification before save
PASS service refuses retired equipment
PASS bypass calendar accepts without lifecycle repair and lead checks
PASS bypass created no contract or receipt in application
RESULT enterprise02 checks=11
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
PASS blank equipment id -> IllegalArgumentException
PASS null request id -> IllegalArgumentException
PASS zero-length interval -> IllegalArgumentException
PASS reversed interval -> IllegalArgumentException
PASS missing start -> NullPointerException
PASS missing end -> NullPointerException
PASS missing request identity -> NullPointerException
PASS missing equipment identity -> NullPointerException
PASS missing period -> NullPointerException
PASS reference booking 0
PASS interval [5,10) against [10,20): CONFIRMED
PASS reference booking 1
PASS interval [20,25) against [10,20): CONFIRMED
PASS reference booking 2
PASS interval [0,5) against [10,20): CONFIRMED
PASS reference booking 3
PASS interval [25,30) against [10,20): CONFIRMED
PASS reference booking 4
PASS interval [5,11) against [10,20): OVERLAP_REJECTED
PASS reference booking 5
PASS interval [19,25) against [10,20): OVERLAP_REJECTED
PASS reference booking 6
PASS interval [12,18) against [10,20): OVERLAP_REJECTED
PASS reference booking 7
PASS interval [5,25) against [10,20): OVERLAP_REJECTED
PASS reference booking 8
PASS interval [10,20) against [10,20): OVERLAP_REJECTED
PASS reference booking 9
PASS interval [10,15) against [10,20): OVERLAP_REJECTED
PASS reference booking 10
PASS interval [15,20) against [10,20): OVERLAP_REJECTED
PASS initial request confirmed
PASS same payload retry returns original outcome
PASS changed interval under reused id rejected -> IllegalArgumentException
PASS changed equipment under reused id rejected -> IllegalArgumentException
PASS failed changed payload leaves original booking active
PASS different equipment accepts same interval
PASS unknown cancellation changes nothing
PASS rejected request has no booking to cancel
PASS cancellation releases original booking
PASS repeated cancellation reports no active booking
PASS retry after cancellation retains original outcome
PASS rejected outcome remains stable after availability changes
PASS rejected request id cannot change payload -> IllegalArgumentException
PASS new request uses released interval; old retry did not rebook
PASS replacement booking protects released interval again
PASS null request rejected -> NullPointerException
PASS null cancellation rejected -> NullPointerException
PASS total=48
PASS reserve confirmed
PASS factory quote persisted
PASS snapshot restore round trip
PASS escaped entity cannot mutate committed snapshot
PASS reload observes committed retirement
PASS global replay precedes current eligibility clock and maintenance
OBSERVED changed equipment under same id: requestId reused with different payload
PASS changed equipment under same id
OBSERVED changed price revision under same id: requestId reused with different payload
PASS changed price revision under same id
PASS retired denies new request
PASS cancel confirmed
PASS repeat cancel false
PASS unknown cancel false
PASS cancel preserves contract and confirmed history
PASS only actual reserve and cancel publish
PASS fresh confirmation
PASS overlap rejected
PASS rejected history survives release
PASS new identity uses released interval
PASS half-open adjacent accepted
PASS invalid period stored
PASS unknown equipment stored
PASS maintenance restriction BLOCKED
PASS maintenance restriction REVIEW_REQUIRED
OBSERVED maintenance technical failure does not consume request: port unavailable
PASS maintenance technical failure does not consume request
PASS port failure leaves no receipt
OBSERVED before commit failure: before commit
PASS before commit failure
PASS rollback covers calendar receipt contract
PASS fresh repository can retry rolled-back request
OBSERVED cancel commit failure: cancel before commit
PASS cancel commit failure
PASS cancel rollback retains active commitment
OBSERVED after commit before publish failure: after commit
PASS after commit before publish failure
PASS commit survives publication gap
PASS history replay does not repair lost event
OBSERVED publisher exception: publisher unavailable
PASS publisher exception
PASS publisher failure also retains committed state
OBSERVED nested transaction rejected: nested transaction unsupported
PASS nested transaction rejected
TRACE reserve=CONFIRMED cancel=true history=CONFIRMED active=false events=[Event[kind=ReservationConfirmed, requestId=RequestId[value=r1]], Event[kind=ReservationCancelled, requestId=RequestId[value=r1]]]
RESULT chapter27 checks=36
PASS memory and file adapters same result
PASS same final snapshot
PASS same events
PASS external file actually re-read
PASS unknown adapter value fails without state change
PASS historical replay avoids missing external file
RESULT enterprise03 checks=6
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
COMPILE strict JPMS normal
PASS clean module graph compiles
PASS blank equipment id -> IllegalArgumentException
PASS null request id -> IllegalArgumentException
PASS zero-length interval -> IllegalArgumentException
PASS reversed interval -> IllegalArgumentException
PASS missing start -> NullPointerException
PASS missing end -> NullPointerException
PASS missing request identity -> NullPointerException
PASS missing equipment identity -> NullPointerException
PASS missing period -> NullPointerException
PASS reference booking 0
PASS interval [5,10) against [10,20): CONFIRMED
PASS reference booking 1
PASS interval [20,25) against [10,20): CONFIRMED
PASS reference booking 2
PASS interval [0,5) against [10,20): CONFIRMED
PASS reference booking 3
PASS interval [25,30) against [10,20): CONFIRMED
PASS reference booking 4
PASS interval [5,11) against [10,20): OVERLAP_REJECTED
PASS reference booking 5
PASS interval [19,25) against [10,20): OVERLAP_REJECTED
PASS reference booking 6
PASS interval [12,18) against [10,20): OVERLAP_REJECTED
PASS reference booking 7
PASS interval [5,25) against [10,20): OVERLAP_REJECTED
PASS reference booking 8
PASS interval [10,20) against [10,20): OVERLAP_REJECTED
PASS reference booking 9
PASS interval [10,15) against [10,20): OVERLAP_REJECTED
PASS reference booking 10
PASS interval [15,20) against [10,20): OVERLAP_REJECTED
PASS initial request confirmed
PASS same payload retry returns original outcome
PASS changed interval under reused id rejected -> IllegalArgumentException
PASS changed equipment under reused id rejected -> IllegalArgumentException
PASS failed changed payload leaves original booking active
PASS different equipment accepts same interval
PASS unknown cancellation changes nothing
PASS rejected request has no booking to cancel
PASS cancellation releases original booking
PASS repeated cancellation reports no active booking
PASS retry after cancellation retains original outcome
PASS rejected outcome remains stable after availability changes
PASS rejected request id cannot change payload -> IllegalArgumentException
PASS new request uses released interval; old retry did not rebook
PASS replacement booking protects released interval again
PASS null request rejected -> NullPointerException
PASS null cancellation rejected -> NullPointerException
PASS total=48
PASS reserve confirmed
PASS factory quote persisted
PASS snapshot restore round trip
PASS escaped entity cannot mutate committed snapshot
PASS reload observes committed retirement
PASS global replay precedes current eligibility clock and maintenance
OBSERVED changed equipment under same id: requestId reused with different payload
PASS changed equipment under same id
OBSERVED changed price revision under same id: requestId reused with different payload
PASS changed price revision under same id
PASS retired denies new request
PASS cancel confirmed
PASS repeat cancel false
PASS unknown cancel false
PASS cancel preserves contract and confirmed history
PASS only actual reserve and cancel publish
PASS fresh confirmation
PASS overlap rejected
PASS rejected history survives release
PASS new identity uses released interval
PASS half-open adjacent accepted
PASS invalid period stored
PASS unknown equipment stored
PASS maintenance restriction BLOCKED
PASS maintenance restriction REVIEW_REQUIRED
OBSERVED maintenance technical failure does not consume request: port unavailable
PASS maintenance technical failure does not consume request
PASS port failure leaves no receipt
OBSERVED before commit failure: before commit
PASS before commit failure
PASS rollback covers calendar receipt contract
PASS fresh repository can retry rolled-back request
OBSERVED cancel commit failure: cancel before commit
PASS cancel commit failure
PASS cancel rollback retains active commitment
OBSERVED after commit before publish failure: after commit
PASS after commit before publish failure
PASS commit survives publication gap
PASS history replay does not repair lost event
OBSERVED publisher exception: publisher unavailable
PASS publisher exception
PASS publisher failure also retains committed state
OBSERVED nested transaction rejected: nested transaction unsupported
PASS nested transaction rejected
TRACE reserve=CONFIRMED cancel=true history=CONFIRMED active=false events=[Event[kind=ReservationConfirmed, requestId=RequestId[value=r1]], Event[kind=ReservationCancelled, requestId=RequestId[value=r1]]]
RESULT chapter27 checks=36
PASS repair owner blocks rental
PASS old rejection remains history
PASS new request consumes translated repair result
PASS settlement reads published result
PASS rental owns overlap rejection
PASS cancellation uses rental command
PASS cancel preserves quote history
RESULT enterprise04 checks=7
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
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 equipment(tenant_id,equipment_id,category,state) VALUES(?,?,?,?) binds=[T1, E2, camera, ACTIVE]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO equipment(tenant_id,equipment_id,category,state) VALUES(?,?,?,?) binds=[T1, E3, camera, ACTIVE]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO equipment(tenant_id,equipment_id,category,state) VALUES(?,?,?,?) binds=[T1, E4, camera, RETIRED]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO equipment(tenant_id,equipment_id,category,state) VALUES(?,?,?,?) binds=[T2, OTHER, camera, ACTIVE]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO equipment(tenant_id,equipment_id,category,state) VALUES(?,?,?,?) binds=[T1, QUOTE, camera' OR '1'='1, 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, busy, 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, old-1, E2, 2026-10-03T10:00:00.123456789Z, 2026-10-03T11:30:00.123456789Z, 25.00, CNY, CANCELLED, 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, old-2, E2, 2026-10-03T10:00:00.123456789Z, 2026-10-03T11:30:00.123456789Z, 25.00, CNY, CANCELLED, 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, adjacent, E3, 2026-10-03T11:30:00.123456789Z, 2026-10-03T12:30:00.123456789Z, 25.00, CNY, RESERVED, 0]
ROWS connection=2 affected=1
COMMIT connection=2 count=1
CLOSE connection=2 openStatements=0
OPEN connection=3 isolation=2
SQL connection=3 thread=main text=SELECT e.equipment_id FROM equipment e WHERE e.tenant_id=? AND e.category=? AND e.state='ACTIVE' AND NOT EXISTS (SELECT 1 FROM rental_contract c WHERE c.tenant_id=e.tenant_id AND c.equipment_id=e.equipment_id AND c.status='RESERVED' AND c.starts_at<? AND ?<c.ends_at) ORDER BY e.equipment_id ASC binds=[T1, camera, 2026-10-03T11:30:00.123456789Z, 2026-10-03T10:00:00.123456789Z]
PASS tenant, category, ACTIVE, half-open occupancy exact set
PASS cancelled history does not duplicate rows
SQL connection=3 thread=main text=SELECT e.equipment_id FROM equipment e WHERE e.tenant_id=? AND e.category=? AND e.state='ACTIVE' AND NOT EXISTS (SELECT 1 FROM rental_contract c WHERE c.tenant_id=e.tenant_id AND c.equipment_id=e.equipment_id AND c.status='RESERVED' AND c.starts_at<? AND ?<c.ends_at) ORDER BY e.equipment_id DESC binds=[T1, camera, 2026-10-03T11:30:00.123456789Z, 2026-10-03T10:00:00.123456789Z]
PASS allowlisted descending order
SQL connection=3 thread=main text=SELECT e.equipment_id FROM equipment e WHERE e.tenant_id=? AND e.category=? AND e.state='ACTIVE' AND NOT EXISTS (SELECT 1 FROM rental_contract c WHERE c.tenant_id=e.tenant_id AND c.equipment_id=e.equipment_id AND c.status='RESERVED' AND c.starts_at<? AND ?<c.ends_at) ORDER BY e.equipment_id ASC binds=[T1, camera' OR '1'='1, 2026-10-03T11:30:00.123456789Z, 2026-10-03T10:00:00.123456789Z]
PASS quote input stays bound data
PASS statements and results closed after queries
CLOSE connection=3 openStatements=0
PASS empty tenant/category, missing period, illegal sort rejected
OPEN connection=4 isolation=2
SQL connection=4 thread=main text=CREATE TABLE external_stock(warehouse VARCHAR(30), category VARCHAR(80), units INT CHECK(units>=0), PRIMARY KEY(warehouse,category)) binds=[]
ROWS connection=4 affected=0
SQL connection=4 thread=main text=INSERT INTO external_stock VALUES(?,?,?) binds=[W1, camera, 3]
ROWS connection=4 affected=1
COMMIT connection=4 count=1
CLOSE connection=4 openStatements=0
OPEN connection=5 isolation=2
SQL connection=5 thread=main text=SELECT units FROM external_stock WHERE warehouse=? AND category=? binds=[W1, camera]
CLOSE connection=5 openStatements=0
PASS gateway reads actual separate inventory database
OPEN connection=6 isolation=2
SQL connection=6 thread=main text=SELECT COUNT(*) FROM equipment binds=[]
PASS rental database remains six equipment rows
CLOSE connection=6 openStatements=0
RESULT enterprise06 checks=8
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('T1','E1','camera','ACTIVE') binds=[]
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, C1, 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 contract_line VALUES('T1','C1',1,'rent',25.00) binds=[]
ROWS connection=2 affected=1
COMMIT connection=2 count=1
CLOSE connection=2 openStatements=0
OPEN connection=3 isolation=2
SQL connection=3 thread=main text=SELECT * FROM rental_contract WHERE tenant_id=? AND contract_id=? binds=[T1, C1]
SQL connection=3 thread=main text=SELECT * FROM rental_contract WHERE tenant_id=? AND contract_id=? binds=[T1, C1]
PASS without identity map two instances
SQL connection=3 thread=main text=UPDATE rental_contract SET amount=? WHERE tenant_id=? AND contract_id=? binds=[40.00, T1, C1]
ROWS connection=3 affected=1
SQL connection=3 thread=main text=UPDATE rental_contract SET amount=? WHERE tenant_id=? AND contract_id=? binds=[25.00, T1, C1]
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 * FROM rental_contract WHERE tenant_id=? AND contract_id=? binds=[T1, C1]
PASS stale duplicate actually overwrote first change
CLOSE connection=4 openStatements=0
OPEN connection=5 isolation=2
SQL connection=5 thread=main text=SELECT * FROM rental_contract WHERE tenant_id=? AND contract_id=? binds=[T1, C1]
SQL connection=5 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C1]
PASS same work returns same reference
PASS second find issues no SQL
SQL connection=5 thread=main text=UPDATE rental_contract SET amount=?,status=? WHERE tenant_id=? AND contract_id=? binds=[30.00, RESERVED, T1, C1]
ROWS connection=5 affected=1
SQL connection=5 thread=main text=DELETE FROM contract_line WHERE tenant_id=? AND contract_id=? binds=[T1, C1]
ROWS connection=5 affected=1
SQL connection=5 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C1, 1, rent, 25.00]
ROWS connection=5 affected=1
SQL connection=5 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C1, 2, fee, 5.00]
ROWS connection=5 affected=1
COMMIT connection=5 count=1
PASS one real commit for aggregate and details
CLOSE connection=5 openStatements=0
OPEN connection=6 isolation=2
SQL connection=6 thread=main text=SELECT * FROM rental_contract WHERE tenant_id=? AND contract_id=? binds=[T1, C1]
SQL connection=6 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C1]
PASS new work creates new reference
PASS new connection sees total and both lines
PASS foreign work object rejected before commit
ROLLBACK connection=6 count=1
CLOSE connection=6 openStatements=0
PASS closed owner blocks mutation
OPEN connection=7 isolation=2
SQL connection=7 thread=main text=SELECT * FROM rental_contract WHERE tenant_id=? AND contract_id=? binds=[T1, C1]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C1]
SQL connection=7 thread=main text=UPDATE rental_contract SET amount=?,status=? WHERE tenant_id=? AND contract_id=? binds=[99.00, CANCELLED, T1, C1]
ROWS connection=7 affected=1
SQL connection=7 thread=main text=DELETE FROM contract_line WHERE tenant_id=? AND contract_id=? binds=[T1, C1]
ROWS connection=7 affected=2
SQL connection=7 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C1, 1, changed, 99.00]
ROWS connection=7 affected=1
SQL connection=7 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C1, 2, injected, -1.00]
SQL_FAILURE connection=7 state=23513 code=23513
ROLLBACK connection=7 count=1
PASS mid-flush CHECK failure SQLSTATE23513
PASS failed unit rolls back once and never commits
CLOSE connection=7 openStatements=0
OPEN connection=8 isolation=2
SQL connection=8 thread=main text=SELECT * FROM rental_contract WHERE tenant_id=? AND contract_id=? binds=[T1, C1]
SQL connection=8 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C1]
PASS fresh connection header fully rolled back
PASS fresh connection deleted/reinserted lines rolled back
ROLLBACK connection=8 count=1
CLOSE connection=8 openStatements=0
RESULT enterprise07 checks=13
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('T1','E1','camera','ACTIVE') binds=[]
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, C001, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C001, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C001, 2, fee, 5.00]
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, C002, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C002, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C002, 2, fee, 5.00]
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, C003, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C003, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C003, 2, fee, 5.00]
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, C004, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C004, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C004, 2, fee, 5.00]
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, C005, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C005, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C005, 2, fee, 5.00]
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, C006, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C006, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C006, 2, fee, 5.00]
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, C007, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C007, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C007, 2, fee, 5.00]
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, C008, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C008, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C008, 2, fee, 5.00]
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, C009, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C009, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C009, 2, fee, 5.00]
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, C010, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C010, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C010, 2, fee, 5.00]
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, C011, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C011, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C011, 2, fee, 5.00]
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, C012, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C012, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C012, 2, fee, 5.00]
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, C013, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C013, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C013, 2, fee, 5.00]
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, C014, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C014, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C014, 2, fee, 5.00]
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, C015, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C015, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C015, 2, fee, 5.00]
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, C016, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C016, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C016, 2, fee, 5.00]
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, C017, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C017, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C017, 2, fee, 5.00]
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, C018, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C018, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C018, 2, fee, 5.00]
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, C019, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C019, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C019, 2, fee, 5.00]
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, C020, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C020, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C020, 2, fee, 5.00]
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, C021, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C021, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C021, 2, fee, 5.00]
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, C022, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C022, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C022, 2, fee, 5.00]
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, C023, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C023, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C023, 2, fee, 5.00]
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, C024, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C024, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C024, 2, fee, 5.00]
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, C025, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C025, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C025, 2, fee, 5.00]
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, C026, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C026, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C026, 2, fee, 5.00]
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, C027, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C027, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C027, 2, fee, 5.00]
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, C028, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C028, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C028, 2, fee, 5.00]
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, C029, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C029, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C029, 2, fee, 5.00]
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, C030, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C030, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C030, 2, fee, 5.00]
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, C031, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C031, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C031, 2, fee, 5.00]
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, C032, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C032, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C032, 2, fee, 5.00]
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, C033, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C033, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C033, 2, fee, 5.00]
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, C034, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C034, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C034, 2, fee, 5.00]
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, C035, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C035, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C035, 2, fee, 5.00]
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, C036, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C036, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C036, 2, fee, 5.00]
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, C037, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C037, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C037, 2, fee, 5.00]
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, C038, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C038, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C038, 2, fee, 5.00]
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, C039, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C039, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C039, 2, fee, 5.00]
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, C040, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C040, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C040, 2, fee, 5.00]
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, C041, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C041, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C041, 2, fee, 5.00]
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, C042, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C042, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C042, 2, fee, 5.00]
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, C043, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C043, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C043, 2, fee, 5.00]
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, C044, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C044, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C044, 2, fee, 5.00]
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, C045, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C045, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C045, 2, fee, 5.00]
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, C046, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C046, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C046, 2, fee, 5.00]
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, C047, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C047, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C047, 2, fee, 5.00]
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, C048, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C048, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C048, 2, fee, 5.00]
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, C049, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C049, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C049, 2, fee, 5.00]
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, C050, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C050, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C050, 2, fee, 5.00]
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, C051, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C051, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C051, 2, fee, 5.00]
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, C052, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C052, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C052, 2, fee, 5.00]
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, C053, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C053, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C053, 2, fee, 5.00]
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, C054, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C054, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C054, 2, fee, 5.00]
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, C055, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C055, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C055, 2, fee, 5.00]
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, C056, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C056, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C056, 2, fee, 5.00]
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, C057, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C057, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C057, 2, fee, 5.00]
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, C058, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C058, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C058, 2, fee, 5.00]
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, C059, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C059, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C059, 2, fee, 5.00]
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, C060, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C060, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C060, 2, fee, 5.00]
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, C061, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C061, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C061, 2, fee, 5.00]
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, C062, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C062, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C062, 2, fee, 5.00]
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, C063, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C063, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C063, 2, fee, 5.00]
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, C064, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C064, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C064, 2, fee, 5.00]
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, C065, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C065, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C065, 2, fee, 5.00]
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, C066, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C066, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C066, 2, fee, 5.00]
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, C067, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C067, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C067, 2, fee, 5.00]
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, C068, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C068, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C068, 2, fee, 5.00]
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, C069, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C069, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C069, 2, fee, 5.00]
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, C070, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C070, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C070, 2, fee, 5.00]
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, C071, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C071, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C071, 2, fee, 5.00]
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, C072, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C072, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C072, 2, fee, 5.00]
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, C073, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C073, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C073, 2, fee, 5.00]
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, C074, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C074, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C074, 2, fee, 5.00]
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, C075, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C075, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C075, 2, fee, 5.00]
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, C076, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C076, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C076, 2, fee, 5.00]
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, C077, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C077, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C077, 2, fee, 5.00]
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, C078, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C078, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C078, 2, fee, 5.00]
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, C079, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C079, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C079, 2, fee, 5.00]
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, C080, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C080, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C080, 2, fee, 5.00]
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, C081, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C081, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C081, 2, fee, 5.00]
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, C082, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C082, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C082, 2, fee, 5.00]
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, C083, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C083, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C083, 2, fee, 5.00]
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, C084, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C084, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C084, 2, fee, 5.00]
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, C085, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C085, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C085, 2, fee, 5.00]
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, C086, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C086, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C086, 2, fee, 5.00]
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, C087, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C087, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C087, 2, fee, 5.00]
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, C088, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C088, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C088, 2, fee, 5.00]
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, C089, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C089, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C089, 2, fee, 5.00]
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, C090, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C090, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C090, 2, fee, 5.00]
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, C091, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C091, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C091, 2, fee, 5.00]
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, C092, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C092, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C092, 2, fee, 5.00]
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, C093, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C093, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C093, 2, fee, 5.00]
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, C094, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C094, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C094, 2, fee, 5.00]
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, C095, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C095, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C095, 2, fee, 5.00]
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, C096, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C096, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C096, 2, fee, 5.00]
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, C097, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C097, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C097, 2, fee, 5.00]
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, C098, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C098, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C098, 2, fee, 5.00]
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, C099, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C099, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C099, 2, fee, 5.00]
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, C100, 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 contract_line VALUES(?,?,?,?,?) binds=[T1, C100, 1, rent, 20.00]
ROWS connection=2 affected=1
SQL connection=2 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C100, 2, fee, 5.00]
ROWS connection=2 affected=1
COMMIT connection=2 count=1
SQL connection=2 thread=main text=CREATE TABLE single_fee(id VARCHAR(20) PRIMARY KEY, kind VARCHAR(10) NOT NULL, currency VARCHAR(3) NOT NULL, fixed_amount DECIMAL(19,2), daily_rate DECIMAL(19,2), days INT, CHECK((kind='FIXED' AND fixed_amount IS NOT NULL AND fixed_amount>=0 AND daily_rate IS NULL AND days IS NULL) OR (kind='DAILY' AND fixed_amount IS NULL AND daily_rate IS NOT NULL AND daily_rate>=0 AND days IS NOT NULL AND days>0))) binds=[]
ROWS connection=2 affected=0
SQL connection=2 thread=main text=CREATE TABLE fee_base(id VARCHAR(20) PRIMARY KEY,kind VARCHAR(10) NOT NULL CHECK(kind IN('FIXED','DAILY')),currency VARCHAR(3) NOT NULL) binds=[]
ROWS connection=2 affected=0
SQL connection=2 thread=main text=CREATE TABLE fixed_fee(id VARCHAR(20) PRIMARY KEY REFERENCES fee_base(id), amount DECIMAL(19,2) NOT NULL CHECK(amount>=0)) binds=[]
ROWS connection=2 affected=0
SQL connection=2 thread=main text=CREATE TABLE daily_fee(id VARCHAR(20) PRIMARY KEY REFERENCES fee_base(id),rate DECIMAL(19,2) NOT NULL CHECK(rate>=0),days INT NOT NULL CHECK(days>0)) binds=[]
ROWS connection=2 affected=0
COMMIT connection=2 count=2
CLOSE connection=2 openStatements=0
OPEN connection=3 isolation=2
SQL connection=3 thread=main text=SELECT * FROM rental_contract WHERE tenant_id=? ORDER BY contract_id FETCH FIRST ? ROWS ONLY binds=[T1, 1]
SQL connection=3 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C001]
PASS actual N+1 at size=1
CLOSE connection=3 openStatements=0
OPEN connection=4 isolation=2
SQL connection=4 thread=main text=SELECT * FROM rental_contract WHERE tenant_id=? ORDER BY contract_id FETCH FIRST ? ROWS ONLY binds=[T1, 1]
SQL connection=4 thread=main text=SELECT contract_id,description,amount FROM contract_line WHERE tenant_id=? AND contract_id IN (SELECT contract_id FROM rental_contract WHERE tenant_id=? ORDER BY contract_id FETCH FIRST ? ROWS ONLY) ORDER BY contract_id,line_no binds=[T1, T1, 1]
PASS batch same aggregates size=1
PASS two actual batch SELECTs size=1
QUERY_COUNTS contracts=1 lazy=2 batch=2
CLOSE connection=4 openStatements=0
OPEN connection=5 isolation=2
SQL connection=5 thread=main text=SELECT * FROM rental_contract WHERE tenant_id=? ORDER BY contract_id FETCH FIRST ? ROWS ONLY binds=[T1, 10]
SQL connection=5 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C001]
SQL connection=5 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C002]
SQL connection=5 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C003]
SQL connection=5 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C004]
SQL connection=5 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C005]
SQL connection=5 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C006]
SQL connection=5 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C007]
SQL connection=5 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C008]
SQL connection=5 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C009]
SQL connection=5 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C010]
PASS actual N+1 at size=10
CLOSE connection=5 openStatements=0
OPEN connection=6 isolation=2
SQL connection=6 thread=main text=SELECT * FROM rental_contract WHERE tenant_id=? ORDER BY contract_id FETCH FIRST ? ROWS ONLY binds=[T1, 10]
SQL connection=6 thread=main text=SELECT contract_id,description,amount FROM contract_line WHERE tenant_id=? AND contract_id IN (SELECT contract_id FROM rental_contract WHERE tenant_id=? ORDER BY contract_id FETCH FIRST ? ROWS ONLY) ORDER BY contract_id,line_no binds=[T1, T1, 10]
PASS batch same aggregates size=10
PASS two actual batch SELECTs size=10
QUERY_COUNTS contracts=10 lazy=11 batch=2
CLOSE connection=6 openStatements=0
OPEN connection=7 isolation=2
SQL connection=7 thread=main text=SELECT * FROM rental_contract WHERE tenant_id=? ORDER BY contract_id FETCH FIRST ? ROWS ONLY binds=[T1, 100]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C001]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C002]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C003]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C004]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C005]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C006]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C007]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C008]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C009]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C010]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C011]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C012]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C013]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C014]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C015]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C016]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C017]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C018]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C019]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C020]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C021]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C022]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C023]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C024]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C025]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C026]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C027]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C028]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C029]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C030]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C031]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C032]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C033]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C034]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C035]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C036]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C037]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C038]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C039]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C040]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C041]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C042]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C043]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C044]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C045]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C046]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C047]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C048]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C049]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C050]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C051]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C052]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C053]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C054]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C055]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C056]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C057]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C058]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C059]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C060]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C061]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C062]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C063]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C064]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C065]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C066]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C067]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C068]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C069]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C070]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C071]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C072]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C073]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C074]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C075]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C076]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C077]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C078]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C079]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C080]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C081]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C082]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C083]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C084]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C085]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C086]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C087]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C088]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C089]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C090]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C091]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C092]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C093]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C094]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C095]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C096]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C097]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C098]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C099]
SQL connection=7 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C100]
PASS actual N+1 at size=100
CLOSE connection=7 openStatements=0
OPEN connection=8 isolation=2
SQL connection=8 thread=main text=SELECT * FROM rental_contract WHERE tenant_id=? ORDER BY contract_id FETCH FIRST ? ROWS ONLY binds=[T1, 100]
SQL connection=8 thread=main text=SELECT contract_id,description,amount FROM contract_line WHERE tenant_id=? AND contract_id IN (SELECT contract_id FROM rental_contract WHERE tenant_id=? ORDER BY contract_id FETCH FIRST ? ROWS ONLY) ORDER BY contract_id,line_no binds=[T1, T1, 100]
PASS batch same aggregates size=100
PASS two actual batch SELECTs size=100
QUERY_COUNTS contracts=100 lazy=101 batch=2
CLOSE connection=8 openStatements=0
OPEN connection=9 isolation=2
SQL connection=9 thread=main text=SELECT * FROM rental_contract WHERE tenant_id=? ORDER BY contract_id FETCH FIRST ? ROWS ONLY binds=[T1, 1]
CLOSE connection=9 openStatements=0
PASS unloaded detail refuses closed session
OPEN connection=10 isolation=2
SQL connection=10 thread=main text=SELECT * FROM rental_contract WHERE tenant_id=? ORDER BY contract_id FETCH FIRST ? ROWS ONLY binds=[T1, 1]
SQL connection=10 thread=main text=SELECT contract_id,description,amount FROM contract_line WHERE tenant_id=? AND contract_id IN (SELECT contract_id FROM rental_contract WHERE tenant_id=? ORDER BY contract_id FETCH FIRST ? ROWS ONLY) ORDER BY contract_id,line_no binds=[T1, T1, 1]
CLOSE connection=10 openStatements=0
PASS fully loaded immutable aggregate usable after close
OPEN connection=11 isolation=2
SQL connection=11 thread=main text=UPDATE contract_line SET amount=99 WHERE tenant_id='T1' AND contract_id='C001' AND line_no=1 binds=[]
ROWS connection=11 affected=1
COMMIT connection=11 count=1
CLOSE connection=11 openStatements=0
OPEN connection=12 isolation=2
SQL connection=12 thread=main text=SELECT * FROM rental_contract WHERE tenant_id=? ORDER BY contract_id FETCH FIRST ? ROWS ONLY binds=[T1, 1]
SQL connection=12 thread=main text=SELECT contract_id,description,amount FROM contract_line WHERE tenant_id=? AND contract_id IN (SELECT contract_id FROM rental_contract WHERE tenant_id=? ORDER BY contract_id FETCH FIRST ? ROWS ONLY) ORDER BY contract_id,line_no binds=[T1, T1, 1]
PASS bypassed child SQL breaks aggregate and is detected
CLOSE connection=12 openStatements=0
OPEN connection=13 isolation=2
SQL connection=13 thread=main text=SELECT * FROM rental_contract WHERE tenant_id=? AND contract_id=? binds=[T1, C001]
SQL connection=13 thread=main text=SELECT description,amount FROM contract_line WHERE tenant_id=? AND contract_id=? ORDER BY line_no binds=[T1, C001]
SQL connection=13 thread=main text=UPDATE rental_contract SET amount=?,status=? WHERE tenant_id=? AND contract_id=? binds=[25.00, RESERVED, T1, C001]
ROWS connection=13 affected=1
SQL connection=13 thread=main text=DELETE FROM contract_line WHERE tenant_id=? AND contract_id=? binds=[T1, C001]
ROWS connection=13 affected=2
SQL connection=13 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C001, 1, rent, 20.00]
ROWS connection=13 affected=1
SQL connection=13 thread=main text=INSERT INTO contract_line VALUES(?,?,?,?,?) binds=[T1, C001, 2, fee, 5.00]
ROWS connection=13 affected=1
COMMIT connection=13 count=1
CLOSE connection=13 openStatements=0
OPEN connection=14 isolation=2
SQL connection=14 thread=main text=SELECT * FROM rental_contract WHERE tenant_id=? ORDER BY contract_id FETCH FIRST ? ROWS ONLY binds=[T1, 1]
SQL connection=14 thread=main text=SELECT contract_id,description,amount FROM contract_line WHERE tenant_id=? AND contract_id IN (SELECT contract_id FROM rental_contract WHERE tenant_id=? ORDER BY contract_id FETCH FIRST ? ROWS ONLY) ORDER BY contract_id,line_no binds=[T1, T1, 1]
PASS aggregate-owned repair restores roundtrip
CLOSE connection=14 openStatements=0
OPEN connection=15 isolation=2
SQL connection=15 thread=main text=INSERT INTO single_fee VALUES(?,?,?,?,?,?) binds=[F1, FIXED, CNY, 5.00, null, null]
ROWS connection=15 affected=1
SQL connection=15 thread=main text=INSERT INTO fee_base VALUES(?,?,?) binds=[F1, FIXED, CNY]
ROWS connection=15 affected=1
SQL connection=15 thread=main text=INSERT INTO fixed_fee VALUES(?,?) binds=[F1, 5.00]
ROWS connection=15 affected=1
SQL connection=15 thread=main text=INSERT INTO single_fee VALUES(?,?,?,?,?,?) binds=[F2, DAILY, CNY, null, 10.00, 2]
ROWS connection=15 affected=1
SQL connection=15 thread=main text=INSERT INTO fee_base VALUES(?,?,?) binds=[F2, DAILY, CNY]
ROWS connection=15 affected=1
SQL connection=15 thread=main text=INSERT INTO daily_fee VALUES(?,?,?) binds=[F2, 10.00, 2]
ROWS connection=15 affected=1
COMMIT connection=15 count=1
CLOSE connection=15 openStatements=0
OPEN connection=16 isolation=2
SQL connection=16 thread=main text=SELECT * FROM single_fee ORDER BY id binds=[]
PASS single table polymorphic values roundtrip
SQL connection=16 thread=main text=SELECT b.id,b.kind,b.currency,f.amount,d.rate,d.days FROM fee_base b LEFT JOIN fixed_fee f ON f.id=b.id LEFT JOIN daily_fee d ON d.id=b.id ORDER BY b.id binds=[]
PASS class table polymorphic values roundtrip
SQL connection=16 thread=main text=SELECT * FROM single_fee ORDER BY id binds=[]
SQL connection=16 thread=main text=SELECT b.id,b.kind,b.currency,f.amount,d.rate,d.days FROM fee_base b LEFT JOIN fixed_fee f ON f.id=b.id LEFT JOIN daily_fee d ON d.id=b.id ORDER BY b.id binds=[]
PASS same fee totals across mappings
SQL connection=16 thread=main text=INSERT INTO single_fee VALUES('BAD','FIXED','CNY',NULL,10,2) binds=[]
SQL_FAILURE connection=16 state=23513 code=23513
PASS single table shape CHECK23513
ROLLBACK connection=16 count=1
SQL connection=16 thread=main text=INSERT INTO fee_base VALUES('ORPHAN','DAILY','CNY') binds=[]
ROWS connection=16 affected=1
SQL connection=16 thread=main text=SELECT b.id,b.kind,b.currency,f.amount,d.rate,d.days FROM fee_base b LEFT JOIN fixed_fee f ON f.id=b.id LEFT JOIN daily_fee d ON d.id=b.id ORDER BY b.id binds=[]
SQL_FAILURE connection=16 state=null code=0
PASS class table missing subtype detected by mapper
ROLLBACK connection=16 count=2
CLOSE connection=16 openStatements=0
RESULT enterprise08 checks=18
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=DELETE FROM contract_line binds=[]
ROWS connection=2 affected=0
SQL connection=2 thread=main text=DELETE FROM rental_contract binds=[]
ROWS connection=2 affected=0
SQL connection=2 thread=main text=DELETE FROM equipment binds=[]
ROWS connection=2 affected=0
SQL connection=2 thread=main text=INSERT INTO equipment(tenant_id,equipment_id,category,state) VALUES('T1','E1','camera','ACTIVE') binds=[]
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, C1, 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
CLOSE connection=2 openStatements=0
OPEN connection=3 isolation=2
OPEN connection=4 isolation=2
SQL connection=3 thread=pool-1-thread-1 text=SELECT * FROM rental_contract WHERE tenant_id=? AND contract_id=? binds=[T1, C1]
SQL connection=4 thread=pool-1-thread-2 text=SELECT * FROM rental_contract WHERE tenant_id=? AND contract_id=? binds=[T1, C1]
SQL connection=3 thread=pool-1-thread-1 text=UPDATE rental_contract SET amount=? WHERE tenant_id='T1' AND contract_id='C1' binds=[30.00]
ROWS connection=3 affected=1
COMMIT connection=3 count=1
CLOSE connection=3 openStatements=0
SQL connection=4 thread=pool-1-thread-2 text=UPDATE rental_contract SET amount=? WHERE tenant_id='T1' AND contract_id='C1' binds=[32.00]
ROWS connection=4 affected=1
COMMIT connection=4 count=1
CLOSE connection=4 openStatements=0
PASS money race uses independent connections optimistic=false
PASS actual update counts optimistic=false
MONEY_RACE optimistic=false first=Outcome[connection=3, affected=1, state=OK, millis=0] second=Outcome[connection=4, affected=1, state=OK, millis=0]
OPEN connection=5 isolation=2
SQL connection=5 thread=main text=SELECT amount FROM rental_contract WHERE contract_id='C1' binds=[]
CLOSE connection=5 openStatements=0
PASS unprotected stale read loses first increment
OPEN connection=6 isolation=2
SQL connection=6 thread=main text=DELETE FROM contract_line binds=[]
ROWS connection=6 affected=0
SQL connection=6 thread=main text=DELETE FROM rental_contract binds=[]
ROWS connection=6 affected=1
SQL connection=6 thread=main text=DELETE FROM equipment binds=[]
ROWS connection=6 affected=1
SQL connection=6 thread=main text=INSERT INTO equipment(tenant_id,equipment_id,category,state) VALUES('T1','E1','camera','ACTIVE') binds=[]
ROWS connection=6 affected=1
SQL connection=6 thread=main text=INSERT INTO rental_contract(tenant_id,contract_id,equipment_id,starts_at,ends_at,amount,currency,status,version) VALUES(?,?,?,?,?,?,?,?,?) binds=[T1, C1, E1, 2026-10-03T10:00:00.123456789Z, 2026-10-03T11:30:00.123456789Z, 25.00, CNY, RESERVED, 0]
ROWS connection=6 affected=1
COMMIT connection=6 count=1
CLOSE connection=6 openStatements=0
OPEN connection=7 isolation=2
OPEN connection=8 isolation=2
SQL connection=7 thread=pool-2-thread-1 text=SELECT * FROM rental_contract WHERE tenant_id=? AND contract_id=? binds=[T1, C1]
SQL connection=8 thread=pool-2-thread-2 text=SELECT * FROM rental_contract WHERE tenant_id=? AND contract_id=? binds=[T1, C1]
SQL connection=7 thread=pool-2-thread-1 text=UPDATE rental_contract SET amount=?,version=version+1 WHERE tenant_id='T1' AND contract_id='C1' AND version=? binds=[30.00, 0]
ROWS connection=7 affected=1
COMMIT connection=7 count=1
CLOSE connection=7 openStatements=0
SQL connection=8 thread=pool-2-thread-2 text=UPDATE rental_contract SET amount=?,version=version+1 WHERE tenant_id='T1' AND contract_id='C1' AND version=? binds=[32.00, 0]
ROWS connection=8 affected=0
ROLLBACK connection=8 count=1
CLOSE connection=8 openStatements=0
PASS money race uses independent connections optimistic=true
PASS actual update counts optimistic=true
MONEY_RACE optimistic=true first=Outcome[connection=7, affected=1, state=OK, millis=0] second=Outcome[connection=8, affected=0, state=VERSION_CONFLICT, millis=0]
OPEN connection=9 isolation=2
SQL connection=9 thread=main text=SELECT amount FROM rental_contract WHERE contract_id='C1' binds=[]
CLOSE connection=9 openStatements=0
PASS version predicate prevents stale overwrite
OPEN connection=10 isolation=2
SQL connection=10 thread=main text=SELECT * FROM rental_contract WHERE tenant_id=? AND contract_id=? binds=[T1, C1]
SQL connection=10 thread=main text=UPDATE rental_contract SET amount=?,version=version+1 WHERE tenant_id='T1' AND contract_id='C1' AND version=? binds=[37.00, 1]
ROWS connection=10 affected=1
PASS retry rereads version1 and succeeds once
COMMIT connection=10 count=1
CLOSE connection=10 openStatements=0
OPEN connection=11 isolation=2
SQL connection=11 thread=main text=SELECT amount FROM rental_contract WHERE contract_id='C1' binds=[]
CLOSE connection=11 openStatements=0
PASS retry preserves both accepted increments
OPEN connection=12 isolation=2
SQL connection=12 thread=main text=DELETE FROM contract_line binds=[]
ROWS connection=12 affected=0
SQL connection=12 thread=main text=DELETE FROM rental_contract binds=[]
ROWS connection=12 affected=1
SQL connection=12 thread=main text=DELETE FROM equipment binds=[]
ROWS connection=12 affected=1
SQL connection=12 thread=main text=INSERT INTO equipment(tenant_id,equipment_id,category,state) VALUES('T1','E1','camera','ACTIVE') binds=[]
ROWS connection=12 affected=1
COMMIT connection=12 count=1
CLOSE connection=12 openStatements=0
OPEN connection=13 isolation=2
OPEN connection=14 isolation=2
SQL connection=13 thread=pool-3-thread-1 text=SELECT version FROM equipment WHERE tenant_id='T1' AND equipment_id='E1' binds=[]
SQL connection=14 thread=pool-3-thread-2 text=SELECT version FROM equipment WHERE tenant_id='T1' AND equipment_id='E1' binds=[]
SQL connection=13 thread=pool-3-thread-1 text=SELECT COUNT(*) FROM rental_contract WHERE tenant_id='T1' AND equipment_id='E1' AND status='RESERVED' AND starts_at<? AND ?<ends_at binds=[2026-10-03T11:30:00.123456789Z, 2026-10-03T10:00:00.123456789Z]
SQL connection=14 thread=pool-3-thread-2 text=SELECT COUNT(*) FROM rental_contract WHERE tenant_id='T1' AND equipment_id='E1' AND status='RESERVED' AND starts_at<? AND ?<ends_at binds=[2026-10-03T11:30:00.123456789Z, 2026-10-03T10:00:00.123456789Z]
SQL connection=13 thread=pool-3-thread-1 text=INSERT INTO rental_contract(tenant_id,contract_id,equipment_id,starts_at,ends_at,amount,currency,status,version) VALUES(?,?,?,?,?,?,?,?,?) binds=[T1, R1, E1, 2026-10-03T10:00:00.123456789Z, 2026-10-03T11:30:00.123456789Z, 25.00, CNY, RESERVED, 0]
ROWS connection=13 affected=1
COMMIT connection=13 count=1
CLOSE connection=13 openStatements=0
SQL connection=14 thread=pool-3-thread-2 text=INSERT INTO rental_contract(tenant_id,contract_id,equipment_id,starts_at,ends_at,amount,currency,status,version) VALUES(?,?,?,?,?,?,?,?,?) binds=[T1, R2, E1, 2026-10-03T10:00:00.123456789Z, 2026-10-03T11:30:00.123456789Z, 25.00, CNY, RESERVED, 0]
ROWS connection=14 affected=1
COMMIT connection=14 count=1
CLOSE connection=14 openStatements=0
PASS reservation race independent connections optimistic=false
PASS reservation CAS affected rows optimistic=false
RESERVATION_RACE optimistic=false first=Outcome[connection=13, affected=1, state=OK, millis=0] second=Outcome[connection=14, affected=1, state=OK, millis=0]
OPEN connection=15 isolation=2
SQL connection=15 thread=main text=SELECT COUNT(*) FROM rental_contract binds=[]
PASS unprotected overlapping reservations reproduced
CLOSE connection=15 openStatements=0
OPEN connection=16 isolation=2
SQL connection=16 thread=main text=DELETE FROM contract_line binds=[]
ROWS connection=16 affected=0
SQL connection=16 thread=main text=DELETE FROM rental_contract binds=[]
ROWS connection=16 affected=2
SQL connection=16 thread=main text=DELETE FROM equipment binds=[]
ROWS connection=16 affected=1
SQL connection=16 thread=main text=INSERT INTO equipment(tenant_id,equipment_id,category,state) VALUES('T1','E1','camera','ACTIVE') binds=[]
ROWS connection=16 affected=1
COMMIT connection=16 count=1
CLOSE connection=16 openStatements=0
OPEN connection=18 isolation=2
OPEN connection=17 isolation=2
SQL connection=18 thread=pool-4-thread-2 text=SELECT version FROM equipment WHERE tenant_id='T1' AND equipment_id='E1' binds=[]
SQL connection=17 thread=pool-4-thread-1 text=SELECT version FROM equipment WHERE tenant_id='T1' AND equipment_id='E1' binds=[]
SQL connection=17 thread=pool-4-thread-1 text=SELECT COUNT(*) FROM rental_contract WHERE tenant_id='T1' AND equipment_id='E1' AND status='RESERVED' AND starts_at<? AND ?<ends_at binds=[2026-10-03T11:30:00.123456789Z, 2026-10-03T10:00:00.123456789Z]
SQL connection=18 thread=pool-4-thread-2 text=SELECT COUNT(*) FROM rental_contract WHERE tenant_id='T1' AND equipment_id='E1' AND status='RESERVED' AND starts_at<? AND ?<ends_at binds=[2026-10-03T11:30:00.123456789Z, 2026-10-03T10:00:00.123456789Z]
SQL connection=17 thread=pool-4-thread-1 text=UPDATE equipment SET version=version+1 WHERE tenant_id='T1' AND equipment_id='E1' AND version=? binds=[0]
ROWS connection=17 affected=1
SQL connection=17 thread=pool-4-thread-1 text=INSERT INTO rental_contract(tenant_id,contract_id,equipment_id,starts_at,ends_at,amount,currency,status,version) VALUES(?,?,?,?,?,?,?,?,?) binds=[T1, R1, E1, 2026-10-03T10:00:00.123456789Z, 2026-10-03T11:30:00.123456789Z, 25.00, CNY, RESERVED, 0]
ROWS connection=17 affected=1
COMMIT connection=17 count=1
CLOSE connection=17 openStatements=0
SQL connection=18 thread=pool-4-thread-2 text=UPDATE equipment SET version=version+1 WHERE tenant_id='T1' AND equipment_id='E1' AND version=? binds=[0]
ROWS connection=18 affected=0
ROLLBACK connection=18 count=1
CLOSE connection=18 openStatements=0
PASS reservation race independent connections optimistic=true
PASS reservation CAS affected rows optimistic=true
RESERVATION_RACE optimistic=true first=Outcome[connection=17, affected=1, state=OK, millis=0] second=Outcome[connection=18, affected=0, state=VERSION_CONFLICT, millis=0]
OPEN connection=19 isolation=2
SQL connection=19 thread=main text=SELECT COUNT(*) FROM rental_contract binds=[]
PASS one reservation survives device version protocol
SQL connection=19 thread=main text=SELECT COUNT(*) FROM rental_contract WHERE tenant_id='T1' AND equipment_id='E1' AND status='RESERVED' AND starts_at<? AND ?<ends_at binds=[2026-10-03T11:30:00.123456789Z, 2026-10-03T10:00:00.123456789Z]
PASS retry must recheck availability and reject
CLOSE connection=19 openStatements=0
OPEN connection=20 isolation=2
SQL connection=20 thread=main text=DELETE FROM contract_line binds=[]
ROWS connection=20 affected=0
SQL connection=20 thread=main text=DELETE FROM rental_contract binds=[]
ROWS connection=20 affected=1
SQL connection=20 thread=main text=DELETE FROM equipment binds=[]
ROWS connection=20 affected=1
SQL connection=20 thread=main text=INSERT INTO equipment(tenant_id,equipment_id,category,state) VALUES('T1','E1','camera','ACTIVE') binds=[]
ROWS connection=20 affected=1
COMMIT connection=20 count=1
CLOSE connection=20 openStatements=0
OPEN connection=21 isolation=2
SQL connection=21 thread=pool-5-thread-1 text=SELECT equipment_id FROM equipment WHERE tenant_id='T1' AND equipment_id='E1' FOR UPDATE binds=[]
SQL connection=21 thread=pool-5-thread-1 text=SELECT COUNT(*) FROM rental_contract WHERE tenant_id='T1' AND equipment_id='E1' AND status='RESERVED' AND starts_at<? AND ?<ends_at binds=[2026-10-03T11:30:00.123456789Z, 2026-10-03T10:00:00.123456789Z]
OPEN connection=22 isolation=2
SQL connection=22 thread=pool-5-thread-2 text=SET LOCK_TIMEOUT 5000 binds=[]
ROWS connection=22 affected=0
SQL connection=22 thread=pool-5-thread-2 text=SELECT equipment_id FROM equipment WHERE tenant_id='T1' AND equipment_id='E1' FOR UPDATE binds=[]
PASS waiter actually blocked before owner release
SQL connection=21 thread=pool-5-thread-1 text=INSERT INTO rental_contract(tenant_id,contract_id,equipment_id,starts_at,ends_at,amount,currency,status,version) VALUES(?,?,?,?,?,?,?,?,?) binds=[T1, LOCKED, E1, 2026-10-03T10:00:00.123456789Z, 2026-10-03T11:30:00.123456789Z, 25.00, CNY, RESERVED, 0]
ROWS connection=21 affected=1
COMMIT connection=21 count=1
CLOSE connection=21 openStatements=0
SQL connection=22 thread=pool-5-thread-2 text=SELECT COUNT(*) FROM rental_contract WHERE tenant_id='T1' AND equipment_id='E1' AND status='RESERVED' AND starts_at<? AND ?<ends_at binds=[2026-10-03T11:30:00.123456789Z, 2026-10-03T10:00:00.123456789Z]
COMMIT connection=22 count=1
CLOSE connection=22 openStatements=0
PASS waiter sees committed overlap after acquiring lock
PASS lock owner and waiter independent connections
LOCK_RESULT timeout=false owner=21 waiter=Outcome[connection=22, affected=0, state=OK, millis=153]
OPEN connection=23 isolation=2
SQL connection=23 thread=main text=SELECT equipment_id FROM equipment WHERE tenant_id='T1' AND equipment_id='E1' FOR UPDATE binds=[]
SQL connection=23 thread=main text=SELECT COUNT(*) FROM rental_contract binds=[]
SQL connection=23 thread=main text=SELECT COUNT(*) FROM rental_contract WHERE tenant_id='T1' AND equipment_id='E1' AND status='RESERVED' AND starts_at<? AND ?<ends_at binds=[2026-10-03T11:30:00.123456789Z, 2026-10-03T10:00:00.123456789Z]
PASS fresh locked retry sees one committed reservation
ROLLBACK connection=23 count=1
CLOSE connection=23 openStatements=0
OPEN connection=24 isolation=2
SQL connection=24 thread=main text=DELETE FROM contract_line binds=[]
ROWS connection=24 affected=0
SQL connection=24 thread=main text=DELETE FROM rental_contract binds=[]
ROWS connection=24 affected=1
SQL connection=24 thread=main text=DELETE FROM equipment binds=[]
ROWS connection=24 affected=1
SQL connection=24 thread=main text=INSERT INTO equipment(tenant_id,equipment_id,category,state) VALUES('T1','E1','camera','ACTIVE') binds=[]
ROWS connection=24 affected=1
COMMIT connection=24 count=1
CLOSE connection=24 openStatements=0
OPEN connection=25 isolation=2
SQL connection=25 thread=pool-6-thread-1 text=SELECT equipment_id FROM equipment WHERE tenant_id='T1' AND equipment_id='E1' FOR UPDATE binds=[]
SQL connection=25 thread=pool-6-thread-1 text=SELECT COUNT(*) FROM rental_contract WHERE tenant_id='T1' AND equipment_id='E1' AND status='RESERVED' AND starts_at<? AND ?<ends_at binds=[2026-10-03T11:30:00.123456789Z, 2026-10-03T10:00:00.123456789Z]
OPEN connection=26 isolation=2
SQL connection=26 thread=pool-6-thread-2 text=SET LOCK_TIMEOUT 200 binds=[]
ROWS connection=26 affected=0
SQL connection=26 thread=pool-6-thread-2 text=SELECT equipment_id FROM equipment WHERE tenant_id='T1' AND equipment_id='E1' FOR UPDATE binds=[]
SQL_FAILURE connection=26 state=HYT00 code=50200
ROLLBACK connection=26 count=1
CLOSE connection=26 openStatements=0
PASS real H2 lock timeout HYT00/50200
SQL connection=25 thread=pool-6-thread-1 text=INSERT INTO rental_contract(tenant_id,contract_id,equipment_id,starts_at,ends_at,amount,currency,status,version) VALUES(?,?,?,?,?,?,?,?,?) binds=[T1, LOCKED, E1, 2026-10-03T10:00:00.123456789Z, 2026-10-03T11:30:00.123456789Z, 25.00, CNY, RESERVED, 0]
ROWS connection=25 affected=1
COMMIT connection=25 count=1
CLOSE connection=25 openStatements=0
PASS lock owner and waiter independent connections
LOCK_RESULT timeout=true owner=25 waiter=Outcome[connection=26, affected=0, state=HYT00/50200, millis=473]
OPEN connection=27 isolation=2
SQL connection=27 thread=main text=SELECT equipment_id FROM equipment WHERE tenant_id='T1' AND equipment_id='E1' FOR UPDATE binds=[]
SQL connection=27 thread=main text=SELECT COUNT(*) FROM rental_contract binds=[]
SQL connection=27 thread=main text=SELECT COUNT(*) FROM rental_contract WHERE tenant_id='T1' AND equipment_id='E1' AND status='RESERVED' AND starts_at<? AND ?<ends_at binds=[2026-10-03T11:30:00.123456789Z, 2026-10-03T10:00:00.123456789Z]
PASS fresh locked retry sees one committed reservation
ROLLBACK connection=27 count=1
CLOSE connection=27 openStatements=0
RESULT enterprise09 checks=22
