diff --git a/python/delta_sharing/protocol.py b/python/delta_sharing/protocol.py index a99acfb14..289f08dfc 100644 --- a/python/delta_sharing/protocol.py +++ b/python/delta_sharing/protocol.py @@ -23,7 +23,7 @@ @dataclass(frozen=True) class DeltaSharingProfile: - CURRENT: ClassVar[int] = 2 + CURRENT: ClassVar[int] = 3 share_credentials_version: int endpoint: str @@ -159,7 +159,7 @@ def from_json(json) -> "Table": @dataclass(frozen=True) class Protocol: - CURRENT: ClassVar[int] = 1 + CURRENT: ClassVar[int] = 3 min_reader_version: int diff --git a/python/delta_sharing/rest_client.py b/python/delta_sharing/rest_client.py index b9638f8fc..d5a08e0bb 100644 --- a/python/delta_sharing/rest_client.py +++ b/python/delta_sharing/rest_client.py @@ -281,11 +281,24 @@ def query_table_metadata(self, table: Table) -> QueryTableMetadataResponse: lines = values[1] protocol_json = json.loads(next(lines)) metadata_json = json.loads(next(lines)) + + if "deltaProtocol" in protocol_json["protocol"]: + protocol = Protocol.from_json( + json.dumps(protocol_json["protocol"]["deltaProtocol"])) + else: + protocol = Protocol.from_json(json.dumps(protocol_json["protocol"])) + + if "deltaMetadata" in metadata_json["metaData"]: + metadata = Metadata.from_json( + json.dumps(metadata_json["metaData"]["deltaMetadata"])) + else: + metadata = Metadata.from_json(json.dumps(metadata_json["metaData"])) + return QueryTableMetadataResponse( delta_table_version=int(headers.get( DataSharingRestClient.DELTA_TABLE_VERSION_HEADER)), - protocol=Protocol.from_json(protocol_json["protocol"]), - metadata=Metadata.from_json(metadata_json["metaData"]), + protocol=protocol, + metadata=metadata ) @retry_with_exponential_backoff