Skip to content

Commit f1c3436

Browse files
committed
Take query building out of retryable callback
1 parent c2df07b commit f1c3436

File tree

1 file changed

+85
-85
lines changed

1 file changed

+85
-85
lines changed

app/server/datasource/rdbms/ydb/connection_native.go

Lines changed: 85 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -123,95 +123,95 @@ type connectionNative struct {
123123
func (c *connectionNative) Query(params *rdbms_utils.QueryParams) (*rdbms_utils.QueryResult, error) {
124124
resultChan := make(chan *rdbms_utils.QueryResult, 1)
125125

126-
finalErr := c.driver.Query().Do(
127-
params.Ctx,
128-
func(ctx context.Context, session ydb_sdk_query.Session) (err error) {
129-
// modify query with args
130-
queryRewritten, err := c.rewriteQuery(params)
131-
if err != nil {
132-
return fmt.Errorf("rewrite query: %w", err)
133-
}
126+
// modify query with args
127+
queryRewritten, err := c.rewriteQuery(params)
128+
if err != nil {
129+
return nil, fmt.Errorf("rewrite query: %w", err)
130+
}
134131

135-
// prepare parameter list
136-
paramsBuilder := ydb_sdk.ParamsBuilder()
137-
138-
for i, arg := range params.QueryArgs.Values() {
139-
placeholder := c.formatter.GetPlaceholder(i)
140-
141-
switch t := arg.(type) {
142-
case bool:
143-
paramsBuilder = paramsBuilder.Param(placeholder).Bool(t)
144-
case *bool:
145-
paramsBuilder = paramsBuilder.Param(placeholder).BeginOptional().Bool(t).EndOptional()
146-
case int8:
147-
paramsBuilder = paramsBuilder.Param(placeholder).Int8(t)
148-
case *int8:
149-
paramsBuilder = paramsBuilder.Param(placeholder).BeginOptional().Int8(t).EndOptional()
150-
case int16:
151-
paramsBuilder = paramsBuilder.Param(placeholder).Int16(t)
152-
case *int16:
153-
paramsBuilder = paramsBuilder.Param(placeholder).BeginOptional().Int16(t).EndOptional()
154-
case int32:
155-
paramsBuilder = paramsBuilder.Param(placeholder).Int32(t)
156-
case *int32:
157-
paramsBuilder = paramsBuilder.Param(placeholder).BeginOptional().Int32(t).EndOptional()
158-
case int64:
159-
paramsBuilder = paramsBuilder.Param(placeholder).Int64(t)
160-
case *int64:
161-
paramsBuilder = paramsBuilder.Param(placeholder).BeginOptional().Int64(t).EndOptional()
162-
case uint8:
163-
paramsBuilder = paramsBuilder.Param(placeholder).Uint8(t)
164-
case *uint8:
165-
paramsBuilder = paramsBuilder.Param(placeholder).BeginOptional().Uint8(t).EndOptional()
166-
case uint16:
167-
paramsBuilder = paramsBuilder.Param(placeholder).Uint16(t)
168-
case *uint16:
169-
paramsBuilder = paramsBuilder.Param(placeholder).BeginOptional().Uint16(t).EndOptional()
170-
case uint32:
171-
paramsBuilder = paramsBuilder.Param(placeholder).Uint32(t)
172-
case *uint32:
173-
paramsBuilder = paramsBuilder.Param(placeholder).BeginOptional().Uint32(t).EndOptional()
174-
case uint64:
175-
paramsBuilder = paramsBuilder.Param(placeholder).Uint64(t)
176-
case *uint64:
177-
paramsBuilder = paramsBuilder.Param(placeholder).BeginOptional().Uint64(t).EndOptional()
178-
case float32:
179-
paramsBuilder = paramsBuilder.Param(placeholder).Float(t)
180-
case *float32:
181-
paramsBuilder = paramsBuilder.Param(placeholder).BeginOptional().Float(t).EndOptional()
182-
case float64:
183-
paramsBuilder = paramsBuilder.Param(placeholder).Double(t)
184-
case *float64:
185-
paramsBuilder = paramsBuilder.Param(placeholder).BeginOptional().Double(t).EndOptional()
186-
case string:
187-
paramsBuilder = paramsBuilder.Param(placeholder).Text(t)
188-
case *string:
189-
paramsBuilder = paramsBuilder.Param(placeholder).BeginOptional().Text(t).EndOptional()
190-
case []byte:
191-
paramsBuilder = paramsBuilder.Param(placeholder).Bytes(t)
192-
case *[]byte:
193-
paramsBuilder = paramsBuilder.Param(placeholder).BeginOptional().Bytes(t).EndOptional()
194-
case time.Time:
195-
switch params.QueryArgs.Get(i).YdbType.GetTypeId() {
196-
case Ydb.Type_TIMESTAMP:
197-
paramsBuilder = paramsBuilder.Param(placeholder).Timestamp(t)
198-
default:
199-
return fmt.Errorf("unsupported type: %v (%T): %w", arg, arg, common.ErrUnimplementedPredicateType)
200-
}
201-
case *time.Time:
202-
switch params.QueryArgs.Get(i).YdbType.GetOptionalType().GetItem().GetTypeId() {
203-
case Ydb.Type_TIMESTAMP:
204-
paramsBuilder = paramsBuilder.Param(placeholder).BeginOptional().Timestamp(t).EndOptional()
205-
default:
206-
return fmt.Errorf("unsupported type: %v (%T): %w", arg, arg, common.ErrUnimplementedPredicateType)
207-
}
208-
default:
209-
return fmt.Errorf("unsupported type: %v (%T): %w", arg, arg, common.ErrUnimplementedPredicateType)
210-
}
132+
// prepare parameter list
133+
paramsBuilder := ydb_sdk.ParamsBuilder()
134+
135+
for i, arg := range params.QueryArgs.Values() {
136+
placeholder := c.formatter.GetPlaceholder(i)
137+
138+
switch t := arg.(type) {
139+
case bool:
140+
paramsBuilder = paramsBuilder.Param(placeholder).Bool(t)
141+
case *bool:
142+
paramsBuilder = paramsBuilder.Param(placeholder).BeginOptional().Bool(t).EndOptional()
143+
case int8:
144+
paramsBuilder = paramsBuilder.Param(placeholder).Int8(t)
145+
case *int8:
146+
paramsBuilder = paramsBuilder.Param(placeholder).BeginOptional().Int8(t).EndOptional()
147+
case int16:
148+
paramsBuilder = paramsBuilder.Param(placeholder).Int16(t)
149+
case *int16:
150+
paramsBuilder = paramsBuilder.Param(placeholder).BeginOptional().Int16(t).EndOptional()
151+
case int32:
152+
paramsBuilder = paramsBuilder.Param(placeholder).Int32(t)
153+
case *int32:
154+
paramsBuilder = paramsBuilder.Param(placeholder).BeginOptional().Int32(t).EndOptional()
155+
case int64:
156+
paramsBuilder = paramsBuilder.Param(placeholder).Int64(t)
157+
case *int64:
158+
paramsBuilder = paramsBuilder.Param(placeholder).BeginOptional().Int64(t).EndOptional()
159+
case uint8:
160+
paramsBuilder = paramsBuilder.Param(placeholder).Uint8(t)
161+
case *uint8:
162+
paramsBuilder = paramsBuilder.Param(placeholder).BeginOptional().Uint8(t).EndOptional()
163+
case uint16:
164+
paramsBuilder = paramsBuilder.Param(placeholder).Uint16(t)
165+
case *uint16:
166+
paramsBuilder = paramsBuilder.Param(placeholder).BeginOptional().Uint16(t).EndOptional()
167+
case uint32:
168+
paramsBuilder = paramsBuilder.Param(placeholder).Uint32(t)
169+
case *uint32:
170+
paramsBuilder = paramsBuilder.Param(placeholder).BeginOptional().Uint32(t).EndOptional()
171+
case uint64:
172+
paramsBuilder = paramsBuilder.Param(placeholder).Uint64(t)
173+
case *uint64:
174+
paramsBuilder = paramsBuilder.Param(placeholder).BeginOptional().Uint64(t).EndOptional()
175+
case float32:
176+
paramsBuilder = paramsBuilder.Param(placeholder).Float(t)
177+
case *float32:
178+
paramsBuilder = paramsBuilder.Param(placeholder).BeginOptional().Float(t).EndOptional()
179+
case float64:
180+
paramsBuilder = paramsBuilder.Param(placeholder).Double(t)
181+
case *float64:
182+
paramsBuilder = paramsBuilder.Param(placeholder).BeginOptional().Double(t).EndOptional()
183+
case string:
184+
paramsBuilder = paramsBuilder.Param(placeholder).Text(t)
185+
case *string:
186+
paramsBuilder = paramsBuilder.Param(placeholder).BeginOptional().Text(t).EndOptional()
187+
case []byte:
188+
paramsBuilder = paramsBuilder.Param(placeholder).Bytes(t)
189+
case *[]byte:
190+
paramsBuilder = paramsBuilder.Param(placeholder).BeginOptional().Bytes(t).EndOptional()
191+
case time.Time:
192+
switch params.QueryArgs.Get(i).YdbType.GetTypeId() {
193+
case Ydb.Type_TIMESTAMP:
194+
paramsBuilder = paramsBuilder.Param(placeholder).Timestamp(t)
195+
default:
196+
return nil, fmt.Errorf("unsupported type: %v (%T): %w", arg, arg, common.ErrUnimplementedPredicateType)
197+
}
198+
case *time.Time:
199+
switch params.QueryArgs.Get(i).YdbType.GetOptionalType().GetItem().GetTypeId() {
200+
case Ydb.Type_TIMESTAMP:
201+
paramsBuilder = paramsBuilder.Param(placeholder).BeginOptional().Timestamp(t).EndOptional()
202+
default:
203+
return nil, fmt.Errorf("unsupported type: %v (%T): %w", arg, arg, common.ErrUnimplementedPredicateType)
211204
}
205+
default:
206+
return nil, fmt.Errorf("unsupported type: %v (%T): %w", arg, arg, common.ErrUnimplementedPredicateType)
207+
}
208+
}
212209

213-
c.queryLogger.Dump(queryRewritten, params.QueryArgs.Values()...)
210+
c.queryLogger.Dump(queryRewritten, params.QueryArgs.Values()...)
214211

212+
finalErr := c.driver.Query().Do(
213+
params.Ctx,
214+
func(ctx context.Context, session ydb_sdk_query.Session) (err error) {
215215
// execute query
216216
streamResult, err := session.Query(
217217
ctx,

0 commit comments

Comments
 (0)