MCPcopy Create free account
hub / github.com/dolthub/doltgresql / convertBindParameters

Method convertBindParameters

server/doltgres_handler.go:300–336  ·  view source on GitHub ↗

convertBindParameters handles the conversion from bind parameters to variable values.

(ctx *sql.Context, types []uint32, formatCodes []int16, values [][]byte)

Source from the content-addressed store, hash-verified

298
299// convertBindParameters handles the conversion from bind parameters to variable values.
300func (h *DoltgresHandler) convertBindParameters(ctx *sql.Context, types []uint32, formatCodes []int16, values [][]byte) (map[string]sqlparser.Expr, error) {
301 bindings := make(map[string]sqlparser.Expr, len(values))
302 // It's valid to send just one format code that should be used by all values, so we extend the slice in that case
303 formatCodes, err := extendFormatCodes(len(values), formatCodes)
304 if err != nil {
305 return nil, err
306 }
307 typeColl, err := core.GetTypesCollectionFromContext(ctx, "")
308 if err != nil {
309 return nil, err
310 }
311 for i := range values {
312 formatCode := formatCodes[i]
313 dgType, err := typeColl.GetType(ctx, id.Type(id.Cache().ToInternal(types[i])))
314 if err != nil {
315 return nil, err
316 }
317 if values[i] != nil {
318 if formatCode == 0 {
319 v, err := dgType.IoInput(ctx, string(values[i]))
320 if err != nil {
321 return nil, err
322 }
323 bindings[fmt.Sprintf("v%d", i+1)] = sqlparser.InjectedExpr{Expression: pgexprs.NewUnsafeLiteral(v, dgType)}
324 } else {
325 v, err := dgType.CallReceive(ctx, values[i])
326 if err != nil {
327 return nil, err
328 }
329 bindings[fmt.Sprintf("v%d", i+1)] = sqlparser.InjectedExpr{Expression: pgexprs.NewUnsafeLiteral(v, dgType)}
330 }
331 } else {
332 bindings[fmt.Sprintf("v%d", i+1)] = sqlparser.InjectedExpr{Expression: pgexprs.NewUnsafeLiteral(nil, dgType)}
333 }
334 }
335 return bindings, nil
336}
337
338var queryLoggingRegex = regexp.MustCompile(`[\r\n\t ]+`)
339

Callers 1

ComBindMethod · 0.95

Calls 8

TypeTypeAlias · 0.92
CacheFunction · 0.92
extendFormatCodesFunction · 0.85
ToInternalMethod · 0.80
IoInputMethod · 0.80
CallReceiveMethod · 0.80
GetTypeMethod · 0.65

Tested by

no test coverage detected