@@ -19,6 +19,7 @@ import (
1919 "github.com/ydb-platform/ydb-go-sdk/v3/table"
2020 "github.com/ydb-platform/ydb-go-sdk/v3/table/result"
2121 "github.com/ydb-platform/ydb-go-sdk/v3/table/types"
22+ "github.com/ydb-platform/ydb-go-sdk/v3/trace"
2223)
2324
2425type client struct {
@@ -30,21 +31,29 @@ func (c *client) Execute(
3031 ctx context.Context ,
3132 query string ,
3233 params * table.QueryParameters ,
33- ) (result.Result , error ) {
34- request := & Ydb_Scripting.ExecuteYqlRequest {
35- Script : query ,
36- Parameters : params .Params (),
37- OperationParams : operation .Params (
38- c .config .OperationTimeout (),
39- c .config .OperationCancelAfter (),
40- operation .ModeSync ,
41- ),
42- }
43- response , err := c .service .ExecuteYql (ctx , request )
34+ ) (r result.Result , err error ) {
35+ var (
36+ onDone = trace .ScriptingOnExecute (c .config .Trace (), & ctx , query , params )
37+ request = & Ydb_Scripting.ExecuteYqlRequest {
38+ Script : query ,
39+ Parameters : params .Params (),
40+ OperationParams : operation .Params (
41+ c .config .OperationTimeout (),
42+ c .config .OperationCancelAfter (),
43+ operation .ModeSync ,
44+ ),
45+ }
46+ result = Ydb_Scripting.ExecuteYqlResult {}
47+ response * Ydb_Scripting.ExecuteYqlResponse
48+ )
49+ defer func () {
50+ onDone (r , err )
51+ }()
52+ response , err = c .service .ExecuteYql (ctx , request )
4453 if err != nil {
4554 return nil , err
4655 }
47- result := Ydb_Scripting. ExecuteYqlResult {}
56+
4857 err = proto .Unmarshal (response .GetOperation ().GetResult ().GetValue (), & result )
4958 if err != nil {
5059 return nil , err
@@ -69,6 +78,7 @@ func (c *client) Explain(
6978 mode scripting.ExplainMode ,
7079) (e table.ScriptingYQLExplanation , err error ) {
7180 var (
81+ onDone = trace .ScriptingOnExplain (c .config .Trace (), & ctx , query )
7282 request = & Ydb_Scripting.ExplainYqlRequest {
7383 Script : query ,
7484 Mode : mode2mode (mode ),
@@ -81,6 +91,9 @@ func (c *client) Explain(
8191 response * Ydb_Scripting.ExplainYqlResponse
8292 result = Ydb_Scripting.ExplainYqlResult {}
8393 )
94+ defer func () {
95+ onDone (e .Explanation .Plan , err )
96+ }()
8497 response , err = c .service .ExplainYql (ctx , request )
8598 if err != nil {
8699 return
@@ -106,16 +119,24 @@ func (c *client) StreamExecute(
106119 ctx context.Context ,
107120 query string ,
108121 params * table.QueryParameters ,
109- ) (result.StreamResult , error ) {
110- request := & Ydb_Scripting.ExecuteYqlRequest {
111- Script : query ,
112- Parameters : params .Params (),
113- OperationParams : operation .Params (
114- c .config .OperationTimeout (),
115- c .config .OperationCancelAfter (),
116- operation .ModeSync ,
117- ),
118- }
122+ ) (r result.StreamResult , err error ) {
123+ var (
124+ onIntermediate = trace .ScriptingOnStreamExecute (c .config .Trace (), & ctx , query , params )
125+ request = & Ydb_Scripting.ExecuteYqlRequest {
126+ Script : query ,
127+ Parameters : params .Params (),
128+ OperationParams : operation .Params (
129+ c .config .OperationTimeout (),
130+ c .config .OperationCancelAfter (),
131+ operation .ModeSync ,
132+ ),
133+ }
134+ )
135+ defer func () {
136+ if err != nil {
137+ onIntermediate (err )(err )
138+ }
139+ }()
119140
120141 ctx , cancel := context .WithCancel (ctx )
121142
@@ -131,6 +152,9 @@ func (c *client) StreamExecute(
131152 stats * Ydb_TableStats.QueryStats ,
132153 err error ,
133154 ) {
155+ defer func () {
156+ onIntermediate (err )
157+ }()
134158 select {
135159 case <- ctx .Done ():
136160 return nil , nil , ctx .Err ()
@@ -145,12 +169,17 @@ func (c *client) StreamExecute(
145169 },
146170 func (err error ) error {
147171 cancel ()
172+ onIntermediate (err )(err )
148173 return err
149174 },
150175 ), nil
151176}
152177
153- func (c * client ) Close (context.Context ) error {
178+ func (c * client ) Close (ctx context.Context ) (err error ) {
179+ onDone := trace .ScriptingOnClose (c .config .Trace (), & ctx )
180+ defer func () {
181+ onDone (err )
182+ }()
154183 return nil
155184}
156185
0 commit comments