// snippet - source description :[ Start Query Example . kt Ġdemonstrates Ġhow Ġto Ġsubmit Ġa Ġquery Ġto ĠAmazon ĠA then a Ġfor Ġexecution , Ġwait Ġuntil Ġthe Ġresults Ġare Ġavailable , Ġand Ġthen Ġprocess Ġthe Ġresults .] č Ċ // snippet - keyword :[ AWS ĠSDK Ġfor ĠKotlin ] č Ċ // snippet - keyword :[ Code ĠSample ] č Ċ // snippet - keyword :[ Amazon ĠA then a ] č Ċ // snippet - s ourc etype :[ full - example ] č Ċ // snippet - s ourced ate :[ 1 1 / 0 3 / 2 0 2 1 ] č Ċ // snippet - source author :[ sc mac don Ġ- Ġaws ] čĊč Ċ /* čĊĠĠ ĠCopyright ĠAmazon . com , ĠInc . Ġor Ġits Ġaffiliates . ĠAll ĠRights ĠReserved . čĊĠĠ ĠSPDX - License - Identifier : ĠApache - 2 . 0 č Ċ */ čĊč Ċ package Ġcom . kotlin . ath ena čĊč Ċ // snippet - start :[ ath ena . kotlin . Start Query Example . import ] č Ċ import Ġaws . sdk . kotlin . services . ath ena . A then a Client č Ċ import Ġaws . sdk . kotlin . services . ath ena . model . Query ExecutionContext č Ċ import Ġaws . sdk . kotlin . services . ath ena . model . Result Configuration č Ċ import Ġaws . sdk . kotlin . services . ath ena . model . Start Query Execution Request č Ċ import Ġaws . sdk . kotlin . services . ath ena . model . Get Query Execution Request č Ċ import Ġaws . sdk . kotlin . services . ath ena . model . Query Execution State č Ċ import Ġaws . sdk . kotlin . services . ath ena . model . Get Query Results Request č Ċ import Ġaws . sdk . kotlin . services . ath ena . model . Row č Ċ import Ġkotlinx . coroutines . delay č Ċ import Ġkotlin . system . exit Process č Ċ // snippet - end :[ ath ena . kotlin . Start Query Example . import ] čĊčĊč Ċ suspend Ġfun Ġmain ( args : Array < String >) Ġ{ čĊčĊĠĠĠ Ġval Ġusage Ġ= Ġ""" čĊĠĠĠ ĠUsage : čĊĠĠĠĠĠĠĠ Ġ< queryString > Ġ< database > Ġ< output Location > čĊčĊĠĠĠ ĠWhere : čĊĠĠĠĠĠĠĠ ĠqueryString Ġ- Ġthe Ġquery Ġstring Ġto Ġuse Ġ( for Ġexample , Ġ" SELECT Ġ* ĠFROM Ġmy database "; Ġ). čĊĠĠĠĠĠĠĠ Ġdatabase Ġ- Ġthe Ġname Ġof Ġthe Ġdatabase Ġto Ġuse Ġ( for Ġexample , Ġmy database Ġ). čĊĠĠĠĠĠĠĠ Ġoutput Location Ġ- Ġthe Ġoutput Ġlocation Ġ( for Ġexample , Ġthe Ġname Ġof Ġan ĠAmazon ĠS 3 Ġbucket Ġ- Ġs 3 :// my bucket ). ĠčĊĠĠĠĠĠĠĠĠ čĊĠĠĠ Ġ""" čĊčĊĠĠ Ġif Ġ( args . size Ġ!= Ġ 3 ) Ġ{ čĊĠĠĠĠĠĠĠ Ġprintln ( usage ) čĊĠĠĠĠĠĠĠ Ġexit Process ( 0 ) čĊĠĠ Ġ} čĊčĊĠĠĠ Ġval ĠqueryString Ġ= Ġargs [ 0 ] čĊĠĠĠ Ġval Ġdatabase Ġ= Ġargs [ 1 ] čĊĠĠĠ Ġval Ġoutput Location Ġ= Ġargs [ 2 ] čĊĠĠĠ Ġval Ġquery Execution Id Ġ= Ġsubmit A then a Query ( queryString , Ġdatabase , Ġoutput Location ) čĊĠĠĠ ĠwaitFor Query To Complete ( query Execution Id ) čĊĠĠĠ Ġprocess Result Rows ( query Execution Id ) č Ċ } čĊč Ċ // snippet - start :[ ath ena . kotlin . Start Query Example . main ] č Ċ suspend Ġfun Ġsubmit A then a Query ( ĠqueryString Val : String , Ġdatabase Val : String , Ġoutput Location Val : String Ġ Ġ): ĠString ? Ġ{ čĊčĊĠĠĠĠĠĠĠ Ġ// ĠThe ĠQuery ExecutionContext Ġallows Ġus Ġto Ġset Ġthe Ġdatabase . čĊĠĠĠĠĠĠĠ Ġval Ġquery ExecutionContext Ob Ġ= ĠQuery ExecutionContext Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase Ġ= Ġdatabase Val čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġresult Ġconfiguration Ġspecifies Ġwhere Ġthe Ġresults Ġof Ġthe Ġquery Ġshould Ġgo . čĊĠĠĠĠĠĠĠ Ġval Ġresult Configuration Ob Ġ= ĠResult Configuration Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Location Ġ= output Location Val čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠStart Query Execution Request Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠqueryString Ġ= ĠqueryString Val čĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery ExecutionContext Ġ= Ġquery ExecutionContext Ob čĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Configuration Ġ= Ġresult Configuration Ob čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ ĠA then a Client Ġ{ Ġregion Ġ= Ġ" us - west - 2 " Ġ}. use Ġ{ Ġath ena Client Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġath ena Client . start Query Execution ( request ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresponse . query Execution Id čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊč Ċ // ĠWait Ġfor Ġan ĠAmazon ĠA then a Ġquery Ġto Ġcomplete , Ġfail Ġor Ġto Ġbe Ġcancelled . č Ċ suspend Ġfun ĠwaitFor Query To Complete ( query Execution Id Val : ĠString ?) Ġ{ čĊčĊĠĠĠ Ġvar Ġis Query Still Running Ġ= Ġtrue čĊĠĠĠ Ġwhile Ġ( is Query Still Running ) Ġ{ čĊčĊčĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠGet Query Execution Request Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Execution Id Ġ= Ġquery Execution Id Val čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ ĠA then a Client Ġ{ Ġregion Ġ= Ġ" us - west - 2 " Ġ}. use Ġ{ Ġath ena Client Ġ-> čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġath ena Client . getQuery Execution ( request ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery State Ġ= Ġresponse . query Execution ?. status ?. state . toString () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( query State Ġ== ĠQuery Execution State . Succeeded . toString ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Query Still Running Ġ= Ġfalse čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSleep Ġan Ġamount Ġof Ġtime Ġbefore Ġretry ing Ġagain čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 1 0 0 0 ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" The Ġcurrent Ġstatus Ġis : Ġ$ query State ") čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} č Ċ } čĊč Ċ // ĠThis Ġcode Ġretrieves Ġthe Ġresults Ġof Ġa Ġquery . č Ċ suspend Ġfun Ġprocess Result Rows ( query Execution Id Val : ĠString ?) Ġ{ čĊčĊĠĠĠ Ġval Ġrequest Ġ= ĠGet Query Results Request Ġ{ čĊĠĠĠĠĠĠĠ Ġquery Execution Id Ġ= Ġquery Execution Id Val čĊĠĠĠ Ġ} čĊĠĠĠ ĠA then a Client Ġ{ Ġregion Ġ= Ġ" us - west - 2 " Ġ}. use Ġ{ Ġath ena Client Ġ-> čĊĠĠĠĠĠĠĠ Ġval Ġget Query Results Results Ġ= Ġath ena Client . getQuery Results ( request ) čĊĠĠĠĠĠĠĠ Ġval Ġresults Ġ= Ġget Query Results Results . resultSet čĊĠĠĠĠĠĠĠ Ġfor Ġ( result Ġin ĠlistOf ( results )) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolumn InfoList Ġ= Ġresult ?. resultSet Metadata ?. column Info čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġresult ?. rows čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response Ġ!= Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( column InfoList Ġ!= Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess Row ( response ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} č Ċ } čĊčĊč Ċ private Ġfun Ġprocess Row ( row : ĠList < Row >) Ġ{ čĊĠĠĠ Ġfor Ġ( my Row Ġin Ġrow ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġall Data Ġ= Ġmy Row . data čĊĠĠĠĠĠĠĠ Ġif Ġ( all Data Ġ!= Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( data Ġin Ġall Data ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" The Ġvalue Ġof Ġthe Ġcolumn Ġis Ġ" Ġ+ Ġdata . var Char Value ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} č Ċ } č Ċ // snippet - end :[ ath ena . kotlin . Start Query Example . main ]