From e2be3f1bf1ce3f9ad607edfe77a296b651546846 Mon Sep 17 00:00:00 2001 From: David Li Date: Thu, 7 Mar 2024 14:07:24 -0500 Subject: [PATCH] feat(go/adbc/driver/flightsql): support reuse-connection location (#1594) Fixes #1588. --- .../driver/flightsql/flightsql_adbc_server_test.go | 2 +- go/adbc/driver/flightsql/flightsql_connection.go | 12 +++++++++++- go/adbc/go.mod | 2 +- go/adbc/go.sum | 2 ++ 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/go/adbc/driver/flightsql/flightsql_adbc_server_test.go b/go/adbc/driver/flightsql/flightsql_adbc_server_test.go index 78ae01b441..3b5761495a 100644 --- a/go/adbc/driver/flightsql/flightsql_adbc_server_test.go +++ b/go/adbc/driver/flightsql/flightsql_adbc_server_test.go @@ -1597,7 +1597,7 @@ func (server *MultiTableTestServer) GetFlightInfoTables(ctx context.Context, cmd server.Alloc = memory.NewCheckedAllocator(memory.DefaultAllocator) info := &flight.FlightInfo{ Endpoint: []*flight.FlightEndpoint{ - {Ticket: &flight.Ticket{Ticket: desc.Cmd}}, + {Ticket: &flight.Ticket{Ticket: desc.Cmd}, Location: []*flight.Location{{Uri: flight.LocationReuseConnection}}}, }, FlightDescriptor: desc, Schema: flight.SerializeSchema(schema, server.Alloc), diff --git a/go/adbc/driver/flightsql/flightsql_connection.go b/go/adbc/driver/flightsql/flightsql_connection.go index 2b4ce93e9a..d0aa0b02bb 100644 --- a/go/adbc/driver/flightsql/flightsql_connection.go +++ b/go/adbc/driver/flightsql/flightsql_connection.go @@ -64,10 +64,16 @@ func doGet(ctx context.Context, cl *flightsql.Client, endpoint *flight.FlightEnd } var ( - cc interface{} + cc interface{} + hasFallback bool ) for _, loc := range endpoint.Location { + if loc.Uri == flight.LocationReuseConnection { + hasFallback = true + continue + } + cc, err = clientCache.Get(loc.Uri) if err != nil { continue @@ -82,6 +88,10 @@ func doGet(ctx context.Context, cl *flightsql.Client, endpoint *flight.FlightEnd return } + if hasFallback { + return cl.DoGet(ctx, endpoint.Ticket, opts...) + } + return nil, err } diff --git a/go/adbc/go.mod b/go/adbc/go.mod index 7e7b605ea6..93c96af4b8 100644 --- a/go/adbc/go.mod +++ b/go/adbc/go.mod @@ -20,7 +20,7 @@ module github.com/apache/arrow-adbc/go/adbc go 1.19 require ( - github.com/apache/arrow/go/v16 v16.0.0-20240129203910-c2ca9bcedeb0 + github.com/apache/arrow/go/v16 v16.0.0-20240307132415-1c9a3122c603 github.com/bluele/gcache v0.0.2 github.com/golang/protobuf v1.5.3 github.com/google/uuid v1.6.0 diff --git a/go/adbc/go.sum b/go/adbc/go.sum index 75377ffe63..0911d39f76 100644 --- a/go/adbc/go.sum +++ b/go/adbc/go.sum @@ -27,6 +27,8 @@ github.com/apache/arrow/go/v14 v14.0.2 h1:N8OkaJEOfI3mEZt07BIkvo4sC6XDbL+48MBPWO github.com/apache/arrow/go/v14 v14.0.2/go.mod h1:u3fgh3EdgN/YQ8cVQRguVW3R+seMybFg8QBQ5LU+eBY= github.com/apache/arrow/go/v16 v16.0.0-20240129203910-c2ca9bcedeb0 h1:ooLFCCZ/sq3KDyrcFBxWweB1wTr1oAIgjj1+Zl3WsRw= github.com/apache/arrow/go/v16 v16.0.0-20240129203910-c2ca9bcedeb0/go.mod h1:+HkSDKotr3KDBxj7gTVgj8Egy18Y1ECzQdnY5XsXwlQ= +github.com/apache/arrow/go/v16 v16.0.0-20240307132415-1c9a3122c603 h1:UOXjIpzPxFAsxrtqUa+e8yuVdhMklFi+Uyo6oB+sDK4= +github.com/apache/arrow/go/v16 v16.0.0-20240307132415-1c9a3122c603/go.mod h1:+HkSDKotr3KDBxj7gTVgj8Egy18Y1ECzQdnY5XsXwlQ= github.com/apache/thrift v0.17.0 h1:cMd2aj52n+8VoAtvSvLn4kDC3aZ6IAkBuqWQ2IDu7wo= github.com/apache/thrift v0.17.0/go.mod h1:OLxhMRJxomX+1I/KUw03qoV3mMz16BwaKI+d4fPBx7Q= github.com/aws/aws-sdk-go-v2 v1.24.1 h1:xAojnj+ktS95YZlDf0zxWBkbFtymPeDP+rvUQIH3uAU=