MCPcopy Index your code
hub / github.com/CovenantSQL/CovenantSQL / readSingle

Function readSingle

xenomint/state.go:148–193  ·  view source on GitHub ↗
(
	ctx context.Context, qer sqlQuerier, q *types.Query,
)

Source from the content-addressed store, hash-verified

146}
147
148func readSingle(
149 ctx context.Context, qer sqlQuerier, q *types.Query,
150) (
151 names []string, types []string, data [][]interface{}, err error,
152) {
153 var (
154 rows *sql.Rows
155 cols []*sql.ColumnType
156 pattern string
157 args []interface{}
158 )
159
160 if _, pattern, args, err = convertQueryAndBuildArgs(q.Pattern, q.Args); err != nil {
161 return
162 }
163 if rows, err = qer.QueryContext(ctx, pattern, args...); err != nil {
164 return
165 }
166 defer func() {
167 _ = rows.Close()
168 }()
169 // Fetch column names and types
170 if names, err = rows.Columns(); err != nil {
171 return
172 }
173 if cols, err = rows.ColumnTypes(); err != nil {
174 return
175 }
176 types = buildTypeNamesFromSQLColumnTypes(cols)
177 // Scan data row by row
178 data = make([][]interface{}, 0)
179 for rows.Next() {
180 var (
181 row = make([]interface{}, len(cols))
182 dest = make([]interface{}, len(cols))
183 )
184 for i := range row {
185 dest[i] = &row[i]
186 }
187 if err = rows.Scan(dest...); err != nil {
188 return
189 }
190 data = append(data, row)
191 }
192 return
193}
194
195func buildRowsFromNativeData(data [][]interface{}) (rows []types.ResponseRow) {
196 rows = make([]types.ResponseRow, len(data))

Callers 2

readWithContextMethod · 0.85
readTxMethod · 0.85

Calls 7

convertQueryAndBuildArgsFunction · 0.85
QueryContextMethod · 0.65
CloseMethod · 0.65
ColumnsMethod · 0.45
NextMethod · 0.45
ScanMethod · 0.45

Tested by

no test coverage detected