| 281 | } |
| 282 | |
| 283 | func duckDBConn(conn *sql.Conn) (*duckdb.Conn, error) { |
| 284 | var duckConn *duckdb.Conn |
| 285 | if err := conn.Raw(func(driverConn any) error { |
| 286 | var ok bool |
| 287 | duckConn, ok = driverConn.(*duckdb.Conn) |
| 288 | if !ok { |
| 289 | return fmt.Errorf("unexpected DuckDB driver connection type %T", driverConn) |
| 290 | } |
| 291 | return nil |
| 292 | }); err != nil { |
| 293 | return nil, err |
| 294 | } |
| 295 | return duckConn, nil |
| 296 | } |
| 297 | |
| 298 | func streamReaderWithConn(ctx context.Context, rdr array.RecordReader, conn *sql.Conn, ch chan<- flight.StreamChunk) { |
| 299 | defer conn.Close() |
| 300 | flight.StreamChunksFromReader(ctx, rdr, ch) |
| 301 | } |
| 302 | |
| 303 | func (s *SQLiteFlightSQLServer) flightInfoForCommand(desc *flight.FlightDescriptor, schema *arrow.Schema) *flight.FlightInfo { |
| 304 | return &flight.FlightInfo{ |
| 305 | Endpoint: []*flight.FlightEndpoint{{Ticket: &flight.Ticket{Ticket: desc.Cmd}}}, |
| 306 | FlightDescriptor: desc, |
| 307 | Schema: flight.SerializeSchema(schema, s.Alloc), |
| 308 | TotalRecords: -1, |
| 309 | TotalBytes: -1, |