package Ġorg . vit riv r . cott ont ail . legacy . v 2 . entity Ċ Ċ import Ġorg . map db . DB Ċ import Ġorg . map db . Data Input 2 Ċ import Ġorg . map db . Data Output 2 Ċ 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 . values . types . Types Ċ import Ġorg . vit riv r . cott ont ail . dbms . catalog ue . Catalog ue Ċ import Ġorg . vit riv r . cott ont ail . dbms . entity . Entity Ċ import Ġorg . vit riv r . cott ont ail . dbms . exceptions . Database Exception Ċ import Ġorg . vit riv r . cott ont ail . dbms . execution . transactions . Transaction Context Ċ import Ġorg . vit riv r . cott ont ail . dbms . general . DB O Version Ċ import Ġorg . vit riv r . cott ont ail . dbms . index . Index Ċ import Ġorg . vit riv r . cott ont ail . dbms . index . Index Tx Ċ import Ġorg . vit riv r . cott ont ail . dbms . index . Index Type Ċ import Ġjava . nio . file . Path Ċ Ċ /** Ċ Ġ* ĠA Ġplaceholder Ġof Ġan Ġ[ Index ] Ġdoes Ġcannot Ġprovide Ġany Ġfunctionality Ġbecause Ġit Ġis Ġeither Ġbroken Ċ Ġ* Ġor Ġno Ġlonger Ġsupported . ĠStill Ġexposes Ġbasic Ġproperties Ġof Ġthe Ġunderlying Ġ[ Index ]. Ċ Ġ* Ċ Ġ* Ġ@ author ĠR alph ĠG asser Ċ Ġ* Ġ@ version Ġ 1 . 2 . 0 Ċ Ġ*/ Ċ class ĠBroken Index V 2 ( override Ġval Ġname : ĠName . Index Name , Ġoverride Ġval Ġparent : ĠEntity , Ġval Ġpath : ĠPath ) Ġ: ĠIndex Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĠField Ġname Ġfor Ġthe Ġ[ Index Header ] Ġentry . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠINDEX _ HEADER _ FIELD Ġ= Ġ" cdb _ index _ header " ĊĠĠĠ Ġ} ĊĠĠĠ Ġ/** ĠThe Ġinternal Ġ[ DB ] Ġreference Ġfor Ġthis Ġ[ Broken Index V 2 ]. Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġstore : ĠDB Ġ= Ġthis . parent . parent . parent . config . map db . db ( this . path ) ĊĊĠĠĠ Ġ/** ĠThe Ġ[ Index Header ] Ġfor Ġthis Ġ[ Broken Index V 2 ]. Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġheader Field Ġ= Ġthis . store . atomic Var ( INDEX _ HEADER _ FIELD , ĠIndex Header . Serializer ). create Or Open () ĊĊĠĠĠ Ġ/** ĠThe Ġ[ Column Def ] Ġthat Ġare Ġcovered Ġ( i . e . Ġindexed ) Ġby Ġthis Ġ[ Broken Index V 2 ]. Ġ*/ ĊĠĠĠ Ġval Ġcolumns : ĠArray < Column Def <* >> Ġ= Ġthis . header Field . get (). columns ĊĊĠĠĠ Ġoverride Ġval Ġclosed : ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġoverride Ġval Ġcatalog ue : ĠCatalog ue Ġ= Ġthis . parent . catalog ue ĊĠĠĠ Ġoverride Ġval Ġversion : ĠD BO Version Ġ= ĠD BO Version . UNDEFINED ĊĠĠĠ Ġoverride Ġval Ġsupports Incremental Update : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġoverride Ġval Ġsupports Partition ing : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġoverride Ġval Ġtype : ĠIndex Type ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġthis . header Field . get (). type ĊĊĠĠĠ Ġoverride Ġfun Ġnew Tx ( context : ĠTransaction Context ): ĠIndex Tx Ġ= Ġthrow ĠUnsupportedOperationException (" Operation Ġnot Ġsupported Ġon Ġlegacy ĠD BO .") ĊĠĠĠ Ġoverride Ġfun Ġclose () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . store . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġheader Ġsection Ġof Ġan Ġ[ Broken Index V 2 ] Ġdata Ġstructure . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠBroken Index V 2 ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ author ĠR alph ĠG asser ĊĠĠĠĠ Ġ* Ġ@ version Ġ 2 . 0 . 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġdata Ġclass ĠIndex Header ( val Ġname : ĠString , Ġval Ġtype : ĠIndex Type , Ġval Ġcolumns : ĠArray < Column Def <* >>, Ġval Ġcreated : ĠLong Ġ= ĠSystem . currentTimeMillis (), Ġval Ġmodified : ĠLong Ġ= ĠSystem . currentTimeMillis ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġcompanion Ġobject ĠSerializer Ġ: Ġorg . map db . Serializer < Index Header > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġserialize ( out : ĠData Output 2 , Ġvalue : ĠIndex Header ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout . pack Int ( DB O Version . V 2 _ 0 . ordinal ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout . write UTF ( value . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout . pack Int ( value . type . ordinal ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout . pack Int ( value . columns . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . columns . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout . write UTF ( it . name . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout . pack Int ( it . type . ordinal ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout . pack Int ( it . type . logical Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout . write Boolean ( it . nullable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout . write Boolean ( it . primary ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdeserialize ( input : ĠData Input 2 , Ġavailable : ĠInt ): ĠIndex Header Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġversion Ġ= ĠD BO Version . values ()[ input . unpack Int ()] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( version Ġ!= ĠD BO Version . V 2 _ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠDatabase Exception . Version Mismatch Exception ( version , ĠD BO Version . V 2 _ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠIndex Header ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . read UTF (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIndex Type V 2 . values ()[ input . unpack Int ()]. to Index Type (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArray ( input . unpack Int ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomponents Ġ= Ġinput . read UTF (). split ('. '). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= ĠName . ColumnName ( components [ 1 ], Ġcomponents [ 2 ], Ġcomponents [ 3 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn Def ( name , ĠTypes . for Ordinal ( input . unpack Int (), Ġinput . unpack Int ()), Ġinput . read Boolean (), Ġinput . read Boolean ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġenum Ġlist Ġof Ġ[ Index Type ] s . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ author ĠR alph ĠG asser ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ version Ġ 2 . 0 . 0 ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġenum Ġclass ĠIndex Type V 2 () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHASH _ UQ , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHASH , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBTREE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠL UC ENE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠV AF , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP Q , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSH , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠL SH , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠL SH _ SB , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG G ; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠConverts Ġthis Ġ[ Index Type V 2 ] Ġto Ġ[ Index Type ]. ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ[ Index Type ] ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġto Index Type (): ĠIndex Type Ġ= Ġwhen ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHASH _ UQ Ġ-> ĠIndex Type . BT REE _ UQ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHASH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBTREE Ġ-> ĠIndex Type . BT REE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL UC ENE Ġ-> ĠIndex Type . LU C ENE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠV AF Ġ-> ĠIndex Type . V AF ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP Q Ġ-> ĠIndex Type . PQ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL SH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL SH _ SB Ġ-> ĠIndex Type . L SH ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG G Ġ-> ĠIndex Type . GG ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠUnsupportedOperationException (" The Ġindex Ġtype Ġ${ this } Ġis Ġno Ġlonger Ġsupported Ġby ĠC ott ont ail ĠDB . Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }