package Ġch . un ib as . d mi . db is . cott ont ail . server . grpc . services Ċ Ċ import Ġch . un ib as . d mi . db is . cott ont ail . database . catalog ue . Catalog ue Ċ import Ġch . un ib as . d mi . db is . cott ont ail . database . column .* Ċ import Ġch . un ib as . d mi . db is . cott ont ail . database . entity . Entity Ċ import Ġch . un ib as . d mi . db is . cott ont ail . database . general . Transaction Ċ import Ġch . un ib as . d mi . db is . cott ont ail . database . general . begin Ċ import Ġch . un ib as . d mi . db is . cott ont ail . grpc . C ot ton D ML Grpc Ċ import Ġch . un ib as . d mi . db is . cott ont ail . grpc . C ott ont ail Grpc Ċ import Ġch . un ib as . d mi . db is . cott ont ail . model . basics . Column Def Ċ import Ġch . un ib as . d mi . db is . cott ont ail . model . record set . Standalone Record Ċ import Ġch . un ib as . d mi . db is . cott ont ail . model . exceptions . Database Exception Ċ import Ġch . un ib as . d mi . db is . cott ont ail . model . exceptions . ValidationException Ċ import Ġch . un ib as . d mi . db is . cott ont ail . model . values . Value Ċ import Ġch . un ib as . d mi . db is . cott ont ail . server . grpc . helper .* Ċ import Ġch . un ib as . d mi . db is . cott ont ail . utilities . name . append Ċ import Ġio . grpc . Status Ċ import Ġio . grpc . stub . Stream Observer Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjava . lang . IllegalStateException Ċ import Ġjava . util . concurrent . Concurrent HashMap Ċ Ċ internal Ġclass ĠC ot ton D ML Service Ġ( val Ġcatalog ue : ĠCatalog ue ): ĠC ot ton D ML Grpc . C ot ton D ML Impl Base () Ġ{ ĊĠĠĠ Ġ/** ĠLogger Ġused Ġfor Ġlogging Ġthe Ġoutput . Ġ*/ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠLOGGER Ġ= ĠLoggerFactory . getLogger ( C ot ton D ML Service :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠgRPC Ġendpoint Ġfor Ġinserting Ġdata Ġin Ġa Ġbatch Ġmode . ĠAll Ġthe Ġdata Ġprovided Ġwith Ġthe Ġ[ C ott ont ail Grpc . Insert Message ] Ġwill Ġbe Ġinserted ĊĠĠĠĠ Ġ* Ġin Ġa Ġsingle Ġtransaction . ĠI . e . Ġeither Ġthe Ġinsert Ġsucceeds Ġor Ġfails Ġcompletely . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġinsert ( request : ĠC ott ont ail Grpc . Insert Message , Ġresponse Observer : ĠStream Observer < C ott ont ail Grpc . Insert Status >) Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġschema Ġ= Ġthis . catalog ue . schema For Name ( request . entity . schema . name ) ĊĠĠĠĠĠĠĠ Ġval Ġentity Ġ= Ġschema . entity For Name ( request . entity . name ) ĊĠĠĠĠĠĠĠ Ġentity . Tx ( false ). begin Ġ{ Ġtx Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . tuple List . map Ġ{ Ġit . data Map Ġ}. forEach Ġ{ Ġentry Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolumns Ġ= Ġmutable ListOf < Column Def <* >>() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= Ġmutable ListOf < Value < *> ?> () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentry . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcol Ġ= Ġentity . column For Name ( it . key ) Ġ?: Ġthrow ĠDatabase Exception . Column DoesNotExist Exception ( entity . fq n . append ( it . key )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns . add ( col ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . add ( cast To Column ( it . value , Ġcol )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtx . insert ( Standalone Record ( columns Ġ= Ġcolumns . to Typed Array (), Ġinit Ġ= Ġvalues . to Typed Array ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġresponse Observer . onNext ( C ott ont ail Grpc . Insert Status . newBuilder (). set Success ( true ). set Timestamp ( System . currentTimeMillis ()). build ()) ĊĠĠĠĠĠĠĠ Ġresponse Observer . on Completed () ĊĊĠĠĠĠĠĠĠ Ġ/* ĠLog ... Ġ*/ ĊĠĠĠĠĠĠĠ ĠLOGGER . trace (" Successfully Ġpersisted Ġ${ request . tuple List . size } Ġtuples Ġto Ġ'${ request . entity . fq n () }' Ġ( with Ġcommit ). ") ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠDatabase Exception . Schema DoesNotExist Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġresponse Observer . onError ( Status . NOT _ FOUND . with Description (" Insert Ġfailed Ġbecause Ġschema Ġ'${ request . entity . schema . name } Ġdoes Ġnot Ġexist ! "). as Exception ()) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠDatabase Exception . Entity DoesNotExist Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġresponse Observer . onError ( Status . NOT _ FOUND . with Description (" Insert Ġfailed Ġbecause Ġentity Ġ'${ request . entity . name } Ġdoes Ġnot Ġexist ! "). as Exception ()) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠDatabase Exception . Column DoesNotExist Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġresponse Observer . onError ( Status . NOT _ FOUND . with Description (" Insert Ġfailed Ġbecause Ġcolumn Ġ'${ e . column }' Ġdoes Ġnot Ġexist ! "). as Exception ()) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠValidation Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġresponse Observer . onError ( Status . INVALID _ ARGUMENT . with Description (" Insert Ġfailed Ġbecause Ġdata Ġvalidation Ġfailed : Ġ${ e . message } "). as Exception ()) ĊĠĠĠ Ġ} Ġ Ġcatch Ġ( e : ĠDatabase Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġresponse Observer . onError ( Status . INTERNAL . with Description (" Insert Ġfailed Ġbecause Ġof Ġa Ġdatabase Ġerror : Ġ${ e . message } "). as Exception ()) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġresponse Observer . onError ( Status . UNKNOWN . with Description (" Insert Ġfailed Ġbecause Ġof Ġa Ġunknown Ġerror : Ġ${ e . message } "). as Exception ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠgRPC Ġendpoint Ġfor Ġinserting Ġdata Ġin Ġa Ġstreaming Ġmode ; Ġtransactions Ġwill Ġstay Ġopen Ġuntil Ġthe Ġcaller Ġexplicitly Ġcompletes Ġthem ĊĠĠĠĠ Ġ* Ġor Ġuntil Ġan Ġerror Ġoccurs . ĠAs Ġnew Ġentities Ġare Ġbeing Ġinserted , Ġnew Ġtransactions Ġwill Ġbe Ġcreated Ġand Ġthus Ġnew Ġlock Ġwill Ġbe Ġacquired . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġinsert Stream ( response Observer : ĠStream Observer < C ott ont ail Grpc . Insert Status >): ĠStream Observer < C ott ont ail Grpc . Insert Message > Ġ= Ġobject : Stream Observer < C ott ont ail Grpc . Insert Message >{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĠList Ġof Ġall Ġthe Ġ[ Tx ] Ġassociated Ġwith Ġthis Ġcall . Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtransactions Ġ= ĠConcurrent HashMap < String , ĠEntity . Tx >() ĊĊĠĠĠĠĠĠĠ Ġ/** ĠFlag Ġindicating Ġthat Ġcall Ġwas Ġclosed . Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Volatile ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġclosed Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOGGER . trace (" Streaming ĠINSERT Ġtransaction Ġwas Ġinitiated Ġby Ġclient .") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCalled Ġwhenever Ġa Ġnew Ġ[ C ott ont ail Grpc . Insert Message ] Ġar rives . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġrequest ĠThe Ġnext Ġ[ C ott ont ail Grpc . Insert Message ] Ġmessage . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next ( request : ĠC ott ont ail Grpc . Insert Message ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠCheck Ġif Ġcall Ġwas Ġclosed Ġand Ġreturn . Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( closed ) Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠExtract Ġrequired Ġschema Ġand Ġentity . Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġschema Ġ= Ġthis @ C ot ton D ML Service . catalog ue . schema For Name ( request . entity . schema . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentity Ġ= Ġschema . entity For Name ( request . entity . name ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠRe - use Ġor Ġcreate ĠTransaction . Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtx Ġ= Ġthis . transactions [ request . entity . fq n ()] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tx Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtx Ġ= Ġentity . Tx ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . transactions [ request . entity . fq n ()] Ġ= Ġtx ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠDo Ġthe Ġinsert . Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . tuple List . map Ġ{ Ġit . data Map Ġ}. forEach Ġ{ Ġentry Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolumns Ġ= Ġmutable ListOf < Column Def <* >>() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= Ġmutable ListOf < Value < *> ?> () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentry . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcol Ġ= Ġentity . column For Name ( it . key ) Ġ?: Ġthrow ĠDatabase Exception . Column DoesNotExist Exception ( entity . fq n . append ( it . key )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns . add ( col ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . add ( cast To Column ( it . value , Ġcol )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtx . insert ( Standalone Record ( columns Ġ= Ġcolumns . to Typed Array (), Ġinit Ġ= Ġvalues . to Typed Array ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠLog ... Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOGGER . trace (" Successfully Ġinserted Ġ${ request . tuple List . size } Ġtuples Ġinto Ġ'${ request . entity . fq n () }' Ġ( no Ġcommit ). ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠRespond Ġwith Ġstatus . Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Observer . onNext ( C ott ont ail Grpc . Insert Status . newBuilder (). set Success ( true ). set Timestamp ( System . currentTimeMillis ()). build ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠDatabase Exception . Schema DoesNotExist Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Observer . onError ( Status . NOT _ FOUND . with Description (" Insert Ġfailed Ġbecause Ġschema Ġ'${ request . entity . schema . name } Ġdoes Ġnot Ġexist ! "). as Exception ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . cleanup () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠDatabase Exception . Entity DoesNotExist Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Observer . onError ( Status . NOT _ FOUND . with Description (" Insert Ġfailed Ġbecause Ġentity Ġ'${ request . entity . fq n ()} Ġdoes Ġnot Ġexist ! "). as Exception ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . cleanup () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠDatabase Exception . Column DoesNotExist Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Observer . onError ( Status . NOT _ FOUND . with Description (" Insert Ġfailed Ġbecause Ġcolumn Ġ'${ e . column }' Ġdoes Ġnot Ġexist ! "). as Exception ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . cleanup () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠValidation Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Observer . onError ( Status . INVALID _ ARGUMENT . with Description (" Insert Ġfailed Ġbecause Ġdata Ġvalidation Ġfailed : Ġ${ e . message } "). as Exception ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . cleanup () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ Ġcatch Ġ( e : ĠDatabase Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Observer . onError ( Status . INTERNAL . with Description (" Insert Ġfailed Ġbecause Ġof Ġa Ġdatabase Ġerror : Ġ${ e . message } "). as Exception ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . cleanup () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Observer . onError ( Status . UNKNOWN . with Description (" Insert Ġfailed Ġbecause Ġof Ġa Ġunknown Ġerror : Ġ${ e . message } "). as Exception ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . cleanup () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCalled Ġwhen Ġthe Ġclient - side Ġindicates Ġan Ġerror Ġcondition . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOGGER . trace (" Streaming ĠINSERT Ġtransaction Ġwas Ġaborted Ġby Ġclient . ĠReason : Ġ${ t . message }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . cleanup () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCalled Ġwhen Ġclient - side Ġcompletes Ġinvocation , Ġeffectively Ġending Ġthe Ġ[ Transaction ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Completed () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOGGER . trace (" Streaming ĠINSERT Ġtransaction Ġwas Ġcommitted Ġby Ġclient .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . cleanup ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCommit s Ġor Ġroll s Ġback Ġall Ġthe Ġ Ġ[ Transaction ] s Ġassociated Ġwith Ġthis Ġcall Ġand Ġcloses Ġthem Ġafterwards . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcommit ĠIf Ġtrue Ġ[ Transaction ] s Ġare Ġcommit ed Ġbefore Ġclosing . ĠOtherwise , Ġthey Ġare Ġrolled Ġback . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcleanup ( commit : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . closed Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . transactions . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( commit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . value . commit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . value . rollback () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . value . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCast s Ġthe Ġprovided Ġ[ C ott ont ail Grpc . Data ] Ġto Ġa Ġdata Ġtype Ġsupported Ġby Ġthe Ġprovided Ġ[ Column Def ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue ĠThe Ġ[ C ott ont ail Grpc . Data ] Ġto Ġcast . ĊĠĠĠĠ Ġ* Ġ@ param Ġcol ĠThe Ġ[ Column Def ] Ġof Ġthe Ġcolumn , Ġthe Ġdata Ġshould Ġbe Ġstored Ġin . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġconverted Ġvalue . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcast To Column ( value : ĠC ott ont ail Grpc . Data , Ġcol : ĠColumn Def <* >) Ġ: ĠValue < *> ? Ġ= Ġif Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . data Case Ġ== ĠC ott ont ail Grpc . Data . Data Case . DATA _ NOT _ SET Ġ|| Ġvalue . data Case Ġ== Ġnull ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( col . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBoolean ColumnType Ġ-> Ġvalue . to Boolean Value () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠByte ColumnType Ġ-> Ġvalue . to Byte Value () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠShort ColumnType Ġ-> Ġvalue . to Short Value () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInt ColumnType Ġ-> Ġvalue . toInt Value () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLong ColumnType Ġ-> Ġvalue . to Long Value () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFloat ColumnType Ġ-> Ġvalue . toFloat Value () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDouble ColumnType Ġ-> Ġvalue . toDouble Value () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString ColumnType Ġ-> Ġvalue . toString Value () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInt Array ColumnType Ġ-> Ġvalue . toInt Vector Value () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLong Array ColumnType Ġ-> Ġvalue . to Long Vector Value () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFloat Array ColumnType Ġ-> Ġvalue . toFloat Vector Value () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDouble Array ColumnType Ġ-> Ġvalue . toDouble Vector Value () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBoolean Array ColumnType Ġ-> Ġvalue . to Boolean Vector Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }