This is an automated email from the ASF dual-hosted git repository.
lidavidm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-adbc.git
The following commit(s) were added to refs/heads/main by this push:
new 8015c993d7 feat(go/adbc/drivermgr): support ExecuteSchema (#4975)
8015c993d7 is described below
commit 8015c993d7c951b65f1ec0edef1b07bddeb54b2d
Author: Matt Topol <[email protected]>
AuthorDate: Wed Oct 28 23:20:26 2026 +0000
feat(go/adbc/drivermgr): support ExecuteSchema (#4975)
Implement `adbc.StatementExecuteSchema` in the Go driver manager
wrapper. A driver that doesn't support it returns
`StatusNotImplemented`.
---
go/adbc/drivermgr/wrapper.go | 16 ++++++++++++++++
go/adbc/drivermgr/wrapper_sqlite_test.go | 15 +++++++++++++++
2 files changed, 31 insertions(+)
diff --git a/go/adbc/drivermgr/wrapper.go b/go/adbc/drivermgr/wrapper.go
index 596439d246..2bbe1eaba7 100644
--- a/go/adbc/drivermgr/wrapper.go
+++ b/go/adbc/drivermgr/wrapper.go
@@ -501,6 +501,8 @@ type stmt struct {
st *C.struct_AdbcStatement
}
+var _ adbc.StatementExecuteSchema = (*stmt)(nil)
+
func (s *stmt) Close() error {
var err C.struct_AdbcError
if code := adbc.Status(C.AdbcStatementRelease(s.st, &err)); code !=
adbc.StatusOK {
@@ -561,6 +563,20 @@ func (s *stmt) ExecuteUpdate(context.Context) (int64,
error) {
return int64(nrows), nil
}
+func (s *stmt) ExecuteSchema(_ context.Context) (*arrow.Schema, error) {
+ var (
+ schema C.struct_ArrowSchema
+ err C.struct_AdbcError
+ )
+ if code := adbc.Status(C.AdbcStatementExecuteSchema(s.st, &schema,
&err)); code != adbc.StatusOK {
+ if schema.release != nil {
+
cdata.ReleaseCArrowSchema((*cdata.CArrowSchema)(unsafe.Pointer(&schema)))
+ }
+ return nil, toAdbcError(code, &err)
+ }
+ return getSchema(&schema)
+}
+
func (s *stmt) Prepare(context.Context) error {
var err C.struct_AdbcError
if code := adbc.Status(C.AdbcStatementPrepare(s.st, &err)); code !=
adbc.StatusOK {
diff --git a/go/adbc/drivermgr/wrapper_sqlite_test.go
b/go/adbc/drivermgr/wrapper_sqlite_test.go
index 253de89cee..5f926fb8ff 100644
--- a/go/adbc/drivermgr/wrapper_sqlite_test.go
+++ b/go/adbc/drivermgr/wrapper_sqlite_test.go
@@ -477,6 +477,21 @@ func (dm *DriverMgrSuite) TestSqlExecute() {
dm.False(rdr.Next())
}
+func (dm *DriverMgrSuite) TestSqlExecuteSchemaNotImplemented() {
+ st, err := dm.conn.NewStatement()
+ dm.Require().NoError(err)
+ defer validation.CheckedClose(dm.T(), st)
+ dm.Require().NoError(st.SetSqlQuery("SELECT 1"))
+
+ executor, ok := st.(adbc.StatementExecuteSchema)
+ dm.Require().True(ok)
+ schema, err := executor.ExecuteSchema(dm.ctx)
+ dm.Nil(schema)
+ var adbcErr adbc.Error
+ dm.Require().ErrorAs(err, &adbcErr)
+ dm.Equal(adbc.StatusNotImplemented, adbcErr.Code)
+}
+
func (dm *DriverMgrSuite) TestSqlExecuteInvalid() {
query := "INVALID"
st, err := dm.conn.NewStatement()