@@ -139,8 +139,9 @@ def export_schema_as_string(self):
139139 def refresh (self , connection , timeout , target_type = None , change_type = None , fetch_size = None ,
140140 metadata_request_timeout = None , ** kwargs ):
141141
142- server_version = self .get_host (connection .original_endpoint ).release_version
143- dse_version = self .get_host (connection .original_endpoint ).dse_version
142+ host = self .get_host (connection .original_endpoint )
143+ server_version = host .release_version if host else None
144+ dse_version = host .dse_version if host else None
144145 parser = get_schema_parser (connection , server_version , dse_version , timeout , metadata_request_timeout , fetch_size )
145146
146147 if not target_type :
@@ -3410,7 +3411,32 @@ def __init__(
34103411
34113412
34123413def get_schema_parser (connection , server_version , dse_version , timeout , metadata_request_timeout , fetch_size = None ):
3413- version = Version (server_version )
3414+ if server_version is None and dse_version is None :
3415+ success , local_result = connection .wait_for_response (
3416+ QueryMessage (
3417+ query = maybe_add_timeout_to_query (
3418+ "SELECT release_version FROM system.local WHERE key='local'" ,
3419+ metadata_request_timeout ),
3420+ consistency_level = ConsistencyLevel .ONE )
3421+ , timeout = timeout , fail_on_error = False )
3422+ if success and local_result .parsed_rows :
3423+ local_rows = dict_factory (local_result .column_names , local_result .parsed_rows )
3424+ local_row = local_rows [0 ]
3425+ server_version = local_row .get ("release_version" )
3426+
3427+ success , local_result = connection .wait_for_response (
3428+ QueryMessage (
3429+ query = maybe_add_timeout_to_query (
3430+ "SELECT dse_version FROM system.local WHERE key='local'" ,
3431+ metadata_request_timeout ),
3432+ consistency_level = ConsistencyLevel .ONE )
3433+ , timeout = timeout , fail_on_error = False )
3434+ if success and local_result .parsed_rows :
3435+ local_rows = dict_factory (local_result .column_names , local_result .parsed_rows )
3436+ local_row = local_rows [0 ]
3437+ server_version = local_row .get ("dse_version" )
3438+
3439+ version = Version (server_version or "0" )
34143440 if dse_version :
34153441 v = Version (dse_version )
34163442 if v >= Version ('6.8.0' ):
0 commit comments