@@ -86,6 +86,7 @@ func (tsc *ThriftServiceClient) OpenSession(ctx context.Context, req *cli_servic
8686
8787 resp , err := tsc .TCLIServiceClient .OpenSession (ctx , req )
8888 log , ctx = LoggerAndContext (ctx , resp )
89+ logDisplayMessage (resp , log )
8990 defer log .Duration (msg , start )
9091 if err != nil {
9192 err = handleClientMethodError (ctx , err )
@@ -106,6 +107,7 @@ func (tsc *ThriftServiceClient) CloseSession(ctx context.Context, req *cli_servi
106107 defer log .Duration (logger .Track ("CloseSession" ))
107108
108109 resp , err := tsc .TCLIServiceClient .CloseSession (ctx , req )
110+ logDisplayMessage (resp , log )
109111 if err != nil {
110112 err = handleClientMethodError (ctx , err )
111113 return resp , err
@@ -125,6 +127,7 @@ func (tsc *ThriftServiceClient) FetchResults(ctx context.Context, req *cli_servi
125127 defer log .Duration (logger .Track ("FetchResults" ))
126128
127129 resp , err := tsc .TCLIServiceClient .FetchResults (ctx , req )
130+ logDisplayMessage (resp , log )
128131 if err != nil {
129132 err = handleClientMethodError (ctx , err )
130133 return resp , err
@@ -144,6 +147,7 @@ func (tsc *ThriftServiceClient) GetResultSetMetadata(ctx context.Context, req *c
144147 defer log .Duration (logger .Track ("GetResultSetMetadata" ))
145148
146149 resp , err := tsc .TCLIServiceClient .GetResultSetMetadata (ctx , req )
150+ logDisplayMessage (resp , log )
147151 if err != nil {
148152 err = handleClientMethodError (ctx , err )
149153 return resp , err
@@ -165,7 +169,9 @@ func (tsc *ThriftServiceClient) ExecuteStatement(ctx context.Context, req *cli_s
165169 // We use context.Background to fix a problem where on context done the query would not be cancelled.
166170 resp , err := tsc .TCLIServiceClient .ExecuteStatement (context .Background (), req )
167171 log , ctx = LoggerAndContext (ctx , resp )
172+ logDisplayMessage (resp , log )
168173 logExecStatementState (resp , log )
174+
169175 defer log .Duration (msg , start )
170176 if err != nil {
171177 err = handleClientMethodError (ctx , err )
@@ -184,6 +190,7 @@ func (tsc *ThriftServiceClient) GetOperationStatus(ctx context.Context, req *cli
184190 defer log .Duration (logger .Track ("GetOperationStatus" ))
185191
186192 resp , err := tsc .TCLIServiceClient .GetOperationStatus (ctx , req )
193+ logDisplayMessage (resp , log )
187194 if err != nil {
188195 err = handleClientMethodError (driverctx .NewContextWithQueryId (ctx , SprintGuid (req .OperationHandle .OperationId .GUID )), err )
189196 return resp , err
@@ -203,6 +210,7 @@ func (tsc *ThriftServiceClient) CloseOperation(ctx context.Context, req *cli_ser
203210 defer log .Duration (logger .Track ("CloseOperation" ))
204211
205212 resp , err := tsc .TCLIServiceClient .CloseOperation (ctx , req )
213+ logDisplayMessage (resp , log )
206214 if err != nil {
207215 err = handleClientMethodError (ctx , err )
208216 return resp , err
@@ -222,6 +230,7 @@ func (tsc *ThriftServiceClient) CancelOperation(ctx context.Context, req *cli_se
222230 defer log .Duration (logger .Track ("CancelOperation" ))
223231
224232 resp , err := tsc .TCLIServiceClient .CancelOperation (ctx , req )
233+ logDisplayMessage (resp , log )
225234 if err != nil {
226235 err = handleClientMethodError (ctx , err )
227236 return resp , err
@@ -439,13 +448,37 @@ func logExecStatementState(resp *cli_service.TExecuteStatementResp, log *logger.
439448 log .Debug ().Msgf ("execute statement state: %s" , state )
440449 status := resp .DirectResults .GetOperationStatus ().GetStatus ().StatusCode
441450 log .Debug ().Msgf ("execute statement status: %s" , status )
451+ logDisplayMessage (resp .DirectResults , log )
442452 } else {
443453 status := resp .GetStatus ().StatusCode
444454 log .Debug ().Msgf ("execute statement status: %s" , status )
445455 }
446456 }
447457}
448458
459+ type hasGetStatus interface { GetStatus () * cli_service.TStatus }
460+ type hasGetDisplayMessage interface { GetDisplayMessage () string }
461+ type hasGetOperationStatus interface {
462+ GetOperationStatus () * cli_service.TGetOperationStatusResp
463+ }
464+
465+ func logDisplayMessage (c any , log * logger.DBSQLLogger ) {
466+ if c == nil || reflect .ValueOf (c ).IsNil () {
467+ return
468+ }
469+
470+ if hd , ok := c .(hasGetDisplayMessage ); ok {
471+ dm := hd .GetDisplayMessage ()
472+ if dm != "" {
473+ log .Debug ().Msg (dm )
474+ }
475+ } else if gs , ok := c .(hasGetStatus ); ok {
476+ logDisplayMessage (gs .GetStatus (), log )
477+ } else if gos , ok := c .(hasGetOperationStatus ); ok {
478+ logDisplayMessage (gos .GetOperationStatus (), log )
479+ }
480+ }
481+
449482var retryableStatusCodes = map [int ]any {http .StatusTooManyRequests : struct {}{}, http .StatusServiceUnavailable : struct {}{}}
450483
451484func isRetryableServerResponse (resp * http.Response ) bool {
0 commit comments