{{- define "signature" -}} First_{{ .Suffix }}({{ ctxparam .Args }}) ( {{ param .Row }}, err error) {{- end -}} {{- define "invoke" -}} First_{{ .Suffix }}({{ ctxarg .Args }}) {{- end -}} {{- define "body" }} {{ embedplaceholders .Info }} {{ embedsql .Info "__embed_stmt" }} var __values []interface{} {{ embedvalues .Args "__values" }} var __stmt = __sqlbundle_Render(obj.dialect, __embed_stmt) obj.logStmt(__stmt, __values...) for { {{ arg .Row }}, err = func() ({{ param .Row }}, err error) { __rows, err := obj.driver.QueryContext(ctx, __stmt, __values...) if err != nil { return nil, err } defer __rows.Close() if !__rows.Next() { if err := __rows.Err(); err != nil { return nil, err } return nil, nil } {{ init .Row }} err = __rows.Scan({{ addrof (flatten .Row) }}) if err != nil { return nil, err } return {{ arg .Row }}, nil }() if err != nil { if obj.shouldRetry(err) { continue } return nil, obj.makeErr(err) } return {{ arg .Row }}, nil } {{ end -}}