Skip to content

Commit c38876a

Browse files
committed
added includeResultSetMetadata to protocol_feature_util
1 parent fbc2af2 commit c38876a

File tree

3 files changed

+28
-13
lines changed

3 files changed

+28
-13
lines changed

internal/rows/rows.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ func NewRows(
148148
connId,
149149
correlationId,
150150
r.logger(),
151+
config.ThriftProtocolVersion,
151152
)
152153

153154
return r, nil

internal/rows/rowscanner/resultPageIterator.go

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"github.com/databricks/databricks-sql-go/driverctx"
99
"github.com/databricks/databricks-sql-go/internal/cli_service"
1010
dbsqlerrint "github.com/databricks/databricks-sql-go/internal/errors"
11+
"github.com/databricks/databricks-sql-go/internal/thrift_protocol"
1112
dbsqllog "github.com/databricks/databricks-sql-go/logger"
1213
)
1314

@@ -53,20 +54,22 @@ func NewResultPageIterator(
5354
connectionId string,
5455
correlationId string,
5556
logger *dbsqllog.DBSQLLogger,
57+
thriftProtocolVersion cli_service.TProtocolVersion,
5658
) ResultPageIterator {
5759

5860
// delimiter and hasMoreRows are used to set up the point in the paginated
5961
// result set that this iterator starts from.
6062
return &resultPageIterator{
61-
Delimiter: delimiter,
62-
isFinished: closedOnServer,
63-
maxPageSize: maxPageSize,
64-
opHandle: opHandle,
65-
closedOnServer: closedOnServer,
66-
client: client,
67-
connectionId: connectionId,
68-
correlationId: correlationId,
69-
logger: logger,
63+
Delimiter: delimiter,
64+
isFinished: closedOnServer,
65+
maxPageSize: maxPageSize,
66+
opHandle: opHandle,
67+
closedOnServer: closedOnServer,
68+
client: client,
69+
connectionId: connectionId,
70+
correlationId: correlationId,
71+
logger: logger,
72+
thriftProtocolVersion: thriftProtocolVersion,
7073
}
7174
}
7275

@@ -106,6 +109,8 @@ type resultPageIterator struct {
106109

107110
// Hold on to errors so they can be returned by Next()
108111
err error
112+
113+
thriftProtocolVersion cli_service.TProtocolVersion
109114
}
110115

111116
var _ ResultPageIterator = (*resultPageIterator)(nil)
@@ -184,10 +189,13 @@ func (rpf *resultPageIterator) getNextPage() (*cli_service.TFetchResultsResp, er
184189

185190
var includeResultSetMetadata = true
186191
req := cli_service.TFetchResultsReq{
187-
OperationHandle: rpf.opHandle,
188-
MaxRows: rpf.maxPageSize,
189-
Orientation: directionToSparkDirection(direction),
190-
IncludeResultSetMetadata: &includeResultSetMetadata,
192+
OperationHandle: rpf.opHandle,
193+
MaxRows: rpf.maxPageSize,
194+
Orientation: directionToSparkDirection(direction),
195+
// IncludeResultSetMetadata: &includeResultSetMetadata,
196+
}
197+
if thrift_protocol.SupportsIncludeResultSetMetadata(rpf.thriftProtocolVersion) {
198+
req.IncludeResultSetMetadata = &includeResultSetMetadata
191199
}
192200

193201
fetchResult, err = rpf.client.FetchResults(ctx, &req)

internal/thrift_protocol/protocol_feature_util.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,9 @@ func SupportsParameterizedQueries(version cli_service.TProtocolVersion) bool {
4444
func SupportsMultipleCatalogs(version cli_service.TProtocolVersion) bool {
4545
return version >= cli_service.TProtocolVersion_SPARK_CLI_SERVICE_PROTOCOL_V4
4646
}
47+
48+
// SupportsIncludeResultSetMetadata checks if the server protocol version supports IncludeResultSetMetadata
49+
// Supported in SPARK_CLI_SERVICE_PROTOCOL_V5 and above
50+
func SupportsIncludeResultSetMetadata(version cli_service.TProtocolVersion) bool {
51+
return version >= cli_service.TProtocolVersion_SPARK_CLI_SERVICE_PROTOCOL_V5
52+
}

0 commit comments

Comments
 (0)