MCPcopy Create free account
hub / github.com/apecloud/myduckserver / NewSqlBatchReader

Function NewSqlBatchReader

flightsqlserver/sql_batch_reader.go:166–231  ·  view source on GitHub ↗
(mem memory.Allocator, rows *sql.Rows)

Source from the content-addressed store, hash-verified

164}
165
166func NewSqlBatchReader(mem memory.Allocator, rows *sql.Rows) (*SqlBatchReader, error) {
167 bldr := flightsql.NewColumnMetadataBuilder()
168
169 cols, err := rows.ColumnTypes()
170 if err != nil {
171 rows.Close()
172 return nil, err
173 }
174
175 rowdest := make([]interface{}, len(cols))
176 fields := make([]arrow.Field, len(cols))
177 for i, c := range cols {
178 fields[i].Name = c.Name()
179 if c.Name() == "?" {
180 fields[i].Name += ":" + strconv.Itoa(i)
181 }
182 fields[i].Nullable, _ = c.Nullable()
183 fields[i].Type = getArrowType(c)
184 fields[i].Metadata = getColumnMetadata(bldr, getSqlTypeFromTypeName(c.DatabaseTypeName()), "")
185 switch fields[i].Type.ID() {
186 case arrow.DENSE_UNION, arrow.SPARSE_UNION:
187 rowdest[i] = new(interface{})
188 case arrow.UINT8, arrow.INT8:
189 if fields[i].Nullable {
190 rowdest[i] = &sql.NullByte{}
191 } else {
192 rowdest[i] = new(uint8)
193 }
194 case arrow.INT32:
195 if fields[i].Nullable {
196 rowdest[i] = &sql.NullInt32{}
197 } else {
198 rowdest[i] = new(int32)
199 }
200 case arrow.INT64:
201 if fields[i].Nullable {
202 rowdest[i] = &sql.NullInt64{}
203 } else {
204 rowdest[i] = new(int64)
205 }
206 case arrow.FLOAT64, arrow.FLOAT32:
207 if fields[i].Nullable {
208 rowdest[i] = &sql.NullFloat64{}
209 } else {
210 rowdest[i] = new(float64)
211 }
212 case arrow.BINARY:
213 var b []byte
214 rowdest[i] = &b
215 case arrow.STRING:
216 if fields[i].Nullable {
217 rowdest[i] = &sql.NullString{}
218 } else {
219 rowdest[i] = new(string)
220 }
221 }
222 }
223

Callers

nothing calls this directly

Calls 6

getArrowTypeFunction · 0.85
getColumnMetadataFunction · 0.85
getSqlTypeFromTypeNameFunction · 0.85
IDMethod · 0.80
CloseMethod · 0.65
NameMethod · 0.45

Tested by

no test coverage detected