package Ġorg . vit riv r . cott ont ail . dbms . column Ċ Ċ import Ġjet brains . ex od us . bindings . Long Binding Ċ import Ġjet brains . ex od us . env . Store Ċ import Ġjet brains . ex od us . env . Store Config Ċ import Ġorg . vit riv r . cott ont ail . core . basics . Cursor Ċ import Ġorg . vit riv r . cott ont ail . core . database . BO C Ċ import Ġorg . vit riv r . cott ont ail . core . database . Column Def Ċ import Ġorg . vit riv r . cott ont ail . core . database . Name Ċ import Ġorg . vit riv r . cott ont ail . core . database . Tuple Id Ċ import Ġorg . vit riv r . cott ont ail . core . values . types . Value Ċ import Ġorg . vit riv r . cott ont ail . dbms . catalog ue . Default Catalog ue Ċ import Ġorg . vit riv r . cott ont ail . dbms . catalog ue . entries . Statistics Catalog ue Entry Ċ import Ġorg . vit riv r . cott ont ail . dbms . catalog ue . store Name Ċ import Ġorg . vit riv r . cott ont ail . dbms . catalog ue . to Key Ċ import Ġorg . vit riv r . cott ont ail . dbms . entity . Default Entity Ċ import Ġorg . vit riv r . cott ont ail . dbms . exceptions . Database Exception Ċ import Ġorg . vit riv r . cott ont ail . dbms . exceptions . Transaction Exception Ċ import Ġorg . vit riv r . cott ont ail . dbms . execution . transactions . Transaction Context Ċ import Ġorg . vit riv r . cott ont ail . dbms . general . Abstract Tx Ċ import Ġorg . vit riv r . cott ont ail . dbms . general . DB O Version Ċ import Ġorg . vit riv r . cott ont ail . dbms . statistics . columns . Value Statistics Ċ import Ġorg . vit riv r . cott ont ail . storage . serializers . values . Value Serializer Factory Ċ import Ġorg . vit riv r . cott ont ail . storage . serializers . values . x od us . X od us Binding Ċ import Ġkotlin . concurrent . with Lock Ċ Ċ /** Ċ Ġ* ĠThe Ġdefault Ġ[ Column Def ] Ġimplementation Ġbased Ġon ĠJetBrains ĠX od us . Ċ Ġ* Ċ Ġ* Ġ@ see ĠColumn Ċ Ġ* Ġ@ see ĠColumn Tx Ċ Ġ* Ċ Ġ* Ġ@ author ĠR alph ĠG asser Ċ Ġ* Ġ@ version Ġ 3 . 0 . 0 Ċ Ġ*/ Ċ class ĠDefault Column < T Ġ: ĠValue >( override Ġval Ġcolumn Def : ĠColumn Def < T >, Ġoverride Ġval Ġparent : ĠDefault Entity ) Ġ: ĠColumn < T > Ġ{ ĊĊĠĠĠ Ġ/** ĠThe Ġ[ Name . ColumnName ] Ġof Ġthis Ġ[ Default Column ]. Ġ*/ ĊĠĠĠ Ġoverride Ġval Ġname : ĠName . ColumnName ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġthis . column Def . name ĊĊĠĠĠ Ġ/** ĠStatus Ġindicating Ġwhether Ġthis Ġ[ Default Column ] Ġhas Ġbeen Ġclosed . Ġ*/ ĊĠĠĠ Ġoverride Ġval Ġclosed : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġthis . parent . closed ĊĊĠĠĠ Ġ/** ĠA Ġ[ Default Column ] Ġbelongs Ġto Ġthe Ġsame Ġ[ Default Catalog ue ] Ġas Ġthe Ġ[ Default Entity ] Ġit Ġbelongs Ġto . Ġ*/ ĊĠĠĠ Ġoverride Ġval Ġcatalog ue : ĠDefault Catalog ue ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġthis . parent . catalog ue ĊĊĠĠĠ Ġ/** ĠThe Ġ[ DB O Version ] Ġof Ġthis Ġ[ Default Column ]. Ġ*/ ĊĠĠĠ Ġoverride Ġval Ġversion : ĠD BO Version ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠD BO Version . V 3 _ 0 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġand Ġreturns Ġa Ġnew Ġ[ Default Column . Tx ] Ġfor Ġthe Ġgiven Ġ[ Transaction Context ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠThe Ġ[ Transaction Context ] Ġto Ġcreate Ġthe Ġ[ Default Column . Tx ] Ġfor . ĊĠĠĠĠ Ġ* Ġ@ return ĠNew Ġ[ Default Column . Tx ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġnew Tx ( context : ĠTransaction Context ): ĠColumn Tx < T > Ġ= ĠTx ( context ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġclose () Ġ{/* ĠNo Ġop . Ġ*/ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġ[ Tx ] Ġthat Ġaffects Ġthis Ġ[ Default Column ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinner Ġclass ĠTx Ġconstructor ( context : ĠTransaction Context ) Ġ: ĠAbstract Tx ( context ), ĠColumn Tx < T > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĠInternal Ġdata Ġ[ Store ] Ġreference . Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġdata Store : ĠStore Ġ= Ġthis @ Default Column . catalog ue . environment . open Store ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Default Column . name . store Name (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStore Config . USE _ EXIST ING , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . context . x od us Tx , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ) Ġ?: Ġthrow ĠDatabase Exception . Data Cor ruption Exception (" Data Ġstore Ġfor Ġcolumn Ġ${ this @ Default Column . name } Ġis Ġmissing .") ĊĊĠĠĠĠĠĠĠ Ġ/** ĠThe Ġinternal Ġ[ X od us Binding ] Ġreference Ġused Ġfor Ġde -/ serialization . Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġbinding : ĠX od us Binding < T > Ġ= ĠValue Serializer Factory . x od us ( this @ Default Column . column Def . type , Ġthis @ Default Column . nullable ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĠInternal Ġreference Ġto Ġthe Ġ[ Value Statistics ] Ġfor Ġthis Ġ[ Default Column ]. Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġstatistics : ĠValue Statistics < T > Ġ= Ġ( Statistics Catalog ue Entry . read ( this @ Default Column . name , Ġthis @ Default Column . catalog ue , Ġthis . context . x od us Tx )?. statistics ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠDatabase Exception . Data Cor ruption Exception (" Failed Ġto ĠPUT Ġvalue Ġfrom Ġ${ this @ Default Column . name }: ĠReading Ġcolumn Ġstatistics Ġfailed .")) Ġas ĠValue Statistics < T > ĊĊĠĠĠĠĠĠĠ Ġ/** ĠReference Ġto Ġ[ Column ] Ġthis Ġ[ Tx ] Ġbelongs Ġto . Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġdbo : ĠDefault Column < T > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġthis @ Default Column ĊĊĊĊĠĠĠĠĠĠĠ Ġ/** ĠFlag Ġindicating Ġthat Ġchanges Ġhave Ġbeen Ġmade Ġthrough Ġthis Ġ[ Default Column . Tx ] Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Volatile ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġdirty : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠOb t ains Ġa Ġglobal Ġ( non - exclusive ) Ġread - lock Ġon Ġ[ Default Catalog ue ]. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠPre vents Ġ[ Default Catalog ue ] Ġfrom Ġbeing Ġclosed Ġwhile Ġtransaction Ġis Ġongoing . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġclose Stamp : ĠLong ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĠChecks Ġif ĠD BO Ġis Ġstill Ġopen . Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . dbo . closed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠTransaction Exception . DB OC losed ( this . context . tx Id , Ġthis . dbo ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . close Stamp Ġ= Ġthis . dbo . catalog ue . close Lock . read Lock () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGets Ġand Ġreturns Ġ[ Value Statistics ] Ġfor Ġthis Ġ[ Column Tx ] ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ[ Value Statistics ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġstatistics (): ĠValue Statistics < T > Ġ= Ġthis . tx Latch . with Lock Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . statistics ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġthe Ġsmallest Ġ[ Tuple Id ] Ġheld Ġby Ġthe Ġ[ Column ] Ġbacking Ġthis Ġ[ Column Tx ]. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ[ Tuple Id ] ĠThe Ġsmallest Ġ[ Tuple Id ] Ġheld Ġby Ġthe Ġ[ Column ] Ġbacking Ġthis Ġ[ Column Tx ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsmallest Tuple Id (): ĠTuple Id Ġ= Ġthis . tx Latch . with Lock Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= Ġthis . data Store . open Cursor ( this . context . x od us Tx ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġret Ġ= Ġif Ġ( cursor . next ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLong Binding . compressed Entry To Long ( cursor . key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB OC ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġret ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġthe Ġlargest Ġ[ Tuple Id ] Ġheld Ġby Ġthe Ġ[ Column ] Ġbacking Ġthis Ġ[ Tx ]. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ[ Tuple Id ] ĠThe Ġlargest Ġ[ Tuple Id ] Ġheld Ġby Ġthe Ġ[ Column ] Ġbacking Ġthis Ġ[ Tx ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġlargest Tuple Id (): ĠTuple Id Ġ= Ġthis . tx Latch . with Lock Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= Ġthis . data Store . open Cursor ( this . context . x od us Tx ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġret Ġ= Ġif Ġ( cursor . last ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLong Binding . compressed Entry To Long ( cursor . key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB OC ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġret ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġthe Ġnumber Ġof Ġentries Ġin Ġthis Ġ[ Default Column ]. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠNumber Ġof Ġentries Ġin Ġthis Ġ[ Default Column ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcount (): ĠLong Ġ Ġ= Ġthis . tx Latch . with Lock Ġ{ Ġthis . data Store . count ( this . context . x od us Tx ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġtrue Ġif Ġthe Ġ[ Column ] Ġunder pin ning Ġthis Ġ[ Column Tx ] Ġcontains Ġthe Ġgiven Ġ[ Tuple Id ] Ġand Ġfalse Ġotherwise . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġmethod Ġchecks Ġthe Ġexistence Ġof Ġthe Ġ[ Tuple Id ] Ġwithin Ġthe Ġ[ Column ] ĠIf Ġthis Ġmethod Ġreturns Ġtrue , ĊĠĠĠĠĠĠĠĠ Ġ* Ġthen Ġ[ Column Tx . get ] Ġwill Ġeither Ġreturn Ġa Ġ[ Value ] Ġor Ġnull . ĠHowever , Ġif Ġthis Ġmethod Ġreturns Ġfalse , Ġthen ĊĠĠĠĠĠĠĠĠ Ġ* Ġ[ Column Tx . get ] Ġwill Ġthrow Ġan Ġexception Ġfor Ġthat Ġ[ Tuple Id ]. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġtuple Id ĠThe Ġ[ Tuple Id ] Ġof Ġthe Ġdesired Ġentry ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠTrue Ġif Ġentry Ġexists , Ġfalse Ġotherwise , ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcontains ( tuple Id : ĠTuple Id ): ĠBoolean Ġ= Ġthis . tx Latch . with Lock Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . data Store . get ( this . context . x od us Tx , Ġtuple Id . to Key ()) Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGets Ġand Ġreturns Ġan Ġentry Ġfrom Ġthis Ġ[ Column ]. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġtuple Id ĠThe ĠID Ġof Ġthe Ġdesired Ġentry ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠThe Ġdesired Ġentry . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ throws ĠDatabase Exception ĠIf Ġthe Ġtuple Ġwith Ġthe Ġdesired ĠID Ġis Ġinvalid . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget ( tuple Id : ĠTuple Id ): ĠT ? Ġ= Ġthis . tx Latch . with Lock Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġret Ġ= Ġthis . data Store . get ( this . context . x od us Tx , Ġtuple Id . to Key ()) Ġ?: Ġthrow Ġjava . lang . IllegalArgumentException (" Tuple Ġ$ tuple Id Ġdoes Ġnot Ġexist Ġon Ġcolumn Ġ${ this @ Default Column . name }. ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis . binding . entry To Value ( ret ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠInser ts Ġthe Ġ[ Value ] Ġwith Ġthe Ġspecified Ġ[ Tuple Id ]. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġtuple Id ĠThe Ġ[ Tuple Id ] Ġof Ġthe Ġentry Ġthat Ġshould Ġbe Ġupdated . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalue ĠThe Ġ[ Value ] ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠTrue Ġon Ġsuccess , Ġfalse Ġotherwise . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd ( tuple Id : ĠTuple Id , Ġvalue : ĠT ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġraw Tuple Ġ= Ġtuple Id . to Key () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Raw Ġ= Ġthis . binding . value To Entry ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . data Store . add ( this . context . x od us Tx , Ġraw Tuple , Ġvalue Raw )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . dirty Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . statistics . insert ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠUpdates Ġthe Ġentry Ġwith Ġthe Ġspecified Ġ[ Tuple Id ] Ġand Ġsets Ġit Ġto Ġthe Ġnew Ġ[ Value ]. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġtuple Id ĠThe Ġ[ Tuple Id ] Ġof Ġthe Ġentry Ġthat Ġshould Ġbe Ġupdated . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalue ĠThe Ġnew Ġ[ Value ] ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠThe Ġold Ġ[ Value ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġupdate ( tuple Id : ĠTuple Id , Ġvalue : ĠT ?): ĠT ? Ġ= Ġthis . tx Latch . with Lock Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠRead Ġexisting Ġvalue . Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġraw Tuple Ġ= Ġtuple Id . to Key () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Raw Ġ= Ġthis . binding . value To Entry ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexisting Raw Ġ= Ġthis . data Store . get ( this . context . x od us Tx , Ġraw Tuple ) Ġ?: Ġthrow ĠIllegalArgumentException (" Cannot Ġupdate Ġtuple Ġ$ tuple Id Ġbecause Ġit Ġdoes Ġnot Ġexist .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexisting Ġ= Ġthis . binding . entry To Value ( existing Raw ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠPerform ĠPUT Ġand Ġupdate Ġstatistics . Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! this . data Store . put ( this . context . x od us Tx , Ġraw Tuple , Ġvalue Raw )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠDatabase Exception . Data Cor ruption Exception (" Failed Ġto ĠPUT Ġtuple Ġ$ tuple Id Ġto Ġcolumn Ġ${ this @ Default Column . name }. ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . dirty Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . statistics . update ( existing , Ġvalue ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠReturn Ġupdated Ġvalue . Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġexisting ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠDeletes Ġthe Ġentry Ġwith Ġthe Ġspecified Ġ[ Tuple Id ] Ġand Ġsets Ġit Ġto Ġthe Ġnew Ġvalue . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġtuple Id ĠThe ĠID Ġof Ġthe Ġrecord Ġthat Ġshould Ġbe Ġupdated ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠThe Ġold Ġ[ Value ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdelete ( tuple Id : ĠTuple Id ): ĠT ? Ġ= Ġthis . tx Latch . with Lock Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠRead Ġexisting Ġvalue . Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġraw Tuple Ġ= Ġtuple Id . to Key () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexisting Raw Ġ= Ġthis . data Store . get ( this . context . x od us Tx , Ġraw Tuple ) Ġ?: Ġthrow ĠIllegalArgumentException (" Cannot ĠDELETE Ġtuple Ġ$ tuple Id Ġbecause Ġit Ġdoes Ġnot Ġexist .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexisting Ġ= Ġthis . binding . entry To Value ( existing Raw ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠDelete Ġentry Ġand Ġupdate Ġstatistics . Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! this . data Store . delete ( this . context . x od us Tx , Ġraw Tuple )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠDatabase Exception . Data Cor ruption Exception (" Failed Ġto ĠDELETE Ġtuple Ġ$ tuple Id Ġto Ġcolumn Ġ${ this @ Default Column . name }. ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . dirty Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . statistics . delete ( existing ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠReturn Ġexisting Ġvalue . Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġexisting ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠClear s Ġthe Ġ[ Column ] Ġunderlying Ġthis Ġ[ Column Tx ] Ġand Ġremoves Ġall Ġentries Ġit Ġcontains . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġclear () Ġ= Ġthis . tx Latch . with Lock Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠTr unc ates Ġand Ġre - opens Ġthe Ġdata Ġstore . Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . data Store . environment . truncate Store ( this . data Store . name , Ġthis . context . x od us Tx ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . data Store Ġ= Ġthis . data Store . environment . open Store ( this . data Store . name , ĠStore Config . USE _ EXIST ING , Ġthis . context . x od us Tx ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠRe sets Ġstatistics Ġand Ġupdates Ġthe Ġdirty Ġflag . Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . statistics . reset () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . dirty Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠOpen s Ġa Ġnew Ġ[ Cursor ] Ġfor Ġthis Ġ[ Default Column . Tx ]. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ[ Cursor ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcursor (): ĠCursor < T ?> Ġ= Ġthis . tx Latch . with Lock Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . cursor ( this . sm allest Tuple Id () .. this . largest Tuple Id ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠOpen s Ġa Ġnew Ġ[ Cursor ] Ġfor Ġthis Ġ[ Default Column . Tx ]. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġpartition ĠThe Ġ[ Long Range ] Ġspecifying Ġthe Ġ[ Tuple Id ] s Ġthat Ġshould Ġbe Ġscanned . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ[ Cursor ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcursor ( partition : ĠLong Range ): ĠCursor < T ?> Ġ= Ġthis . tx Latch . with Lock Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠCursor < T ?> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĠThe Ġper -[ Cursor ] Ġ[ X od us Binding ] Ġinstance . Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġbinding : ĠX od us Binding < T > Ġ= ĠValue Serializer Factory . x od us ( this @ Default Column . column Def . type , Ġthis @ Default Column . nullable ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĠCreates Ġa Ġread - only Ġsnapshot Ġof Ġthe Ġen closing ĠTx . Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġsub Transaction Ġ= Ġthis @ Tx . context . x od us Tx . readonly Snapshot ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĠInternal Ġ[ Cursor ] Ġused Ġfor Ġiteration . Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġcursor : Ġjet brains . ex od us . env . Cursor Ġ= Ġthis @ Tx . data Store . open Cursor ( this . sub Transaction ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĠThe Ġ[ Tuple Id ] Ġthis Ġ[ Cursor ] Ġis Ġcurrently Ġpointing Ġto . Ġ- 1 L Ġis Ġequivalent Ġto ĠB OF . Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvar Ġtuple Id : ĠTuple Id Ġ= Ġ- 1 L ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĠThe Ġ[ Tuple Id ] Ġthis Ġ[ Cursor ] Ġis Ġcurrently Ġpointing Ġto . Ġ- 1 L Ġis Ġequivalent Ġto ĠB OF . Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvar Ġvalue : ĠT ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĠFlag Ġindicating , Ġthat Ġdata Ġmust Ġbe Ġread Ġfrom Ġstore . Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvar Ġdirty : ĠBoolean Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠT ries Ġto Ġmove Ġthis Ġ[ Cursor ] Ġto Ġthe Ġnext Ġentry . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠTrue Ġon Ġsuccess , Ġfalse Ġotherwise , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmove Next (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck (! this . sub Transaction . is Finished ) Ġ{ Ġ" Cursor Ġcannot Ġbe Ġmoved Ġbecause Ġassociated Ġtransaction Ġhas Ġcompleted !" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . dirty Ġ= Ġif Ġ( this . tuple Id Ġ== ĠB OC ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( partition . first Ġ== ĠB OC ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . cursor . get Search Key Range ( partition . first . to Key ()) Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . cursor . next ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . dirty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . tuple Id Ġ= ĠLong Binding . compressed Entry To Long ( this . cursor . key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis . dirty Ġ&& Ġthis . tuple Id Ġ<= Ġpartition . last ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġkey (): ĠTuple Id Ġ= Ġthis . tuple Id ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvalue (): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . dirty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . value Ġ= Ġthis . binding . entry To Value ( this . cursor . value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . dirty Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠCloses Ġthis Ġ[ Cursor ] Ġand Ġinvalid ates Ġthe Ġassociated Ġsub Ġtransaction . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġclose () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . cursor . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . sub Transaction . abort () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCalled Ġwhen Ġa Ġtransactions Ġcommit . ĠUpdates Ġ[ Statistics Catalog ue Entry ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore Commit () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠUpdate Ġstatistics Ġif Ġthere Ġhave Ġbeen Ġchanges . Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . dirty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentry Ġ= ĠStatistics Catalog ue Entry . read ( this @ Default Column . name , Ġthis @ Default Column . catalog ue , Ġthis . context . x od us Tx ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠDatabase Exception . Data Cor ruption Exception (" Failed Ġto ĠDELETE Ġvalue Ġfrom Ġ${ this @ Default Column . name }: ĠReading Ġcolumn Ġstatistics Ġfailed .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatistics Catalog ue Entry . write ( entry . copy ( statistics Ġ= Ġthis . statistics ), Ġthis @ Default Column . catalog ue , Ġthis . context . x od us Tx ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . before Commit () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCalled Ġwhen Ġa Ġtransaction Ġfinal izes . ĠRelease s Ġthe Ġlock Ġheld Ġon Ġthe Ġ[ Default Catalog ue ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcleanup () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . dbo . catalog ue . close Lock . unlock Read ( this . close Stamp ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }