33import logging
44import math
55import time
6- import uuid
76import threading
87from typing import List , Union , Any , TYPE_CHECKING
98
@@ -728,7 +727,7 @@ def _col_to_description(col):
728727 else :
729728 precision , scale = None , None
730729
731- return col .columnName , cleaned_type , None , None , precision , scale , None
730+ return [ col .columnName , cleaned_type , None , None , precision , scale , None ]
732731
733732 @staticmethod
734733 def _hive_schema_to_description (t_table_schema ):
@@ -778,23 +777,6 @@ def _results_message_to_execute_response(self, resp, operation_state):
778777 schema_bytes = None
779778
780779 lz4_compressed = t_result_set_metadata_resp .lz4Compressed
781- is_staging_operation = t_result_set_metadata_resp .isStagingOperation
782- if direct_results and direct_results .resultSet :
783- assert direct_results .resultSet .results .startRowOffset == 0
784- assert direct_results .resultSetMetadata
785-
786- arrow_queue_opt = ResultSetQueueFactory .build_queue (
787- row_set_type = t_result_set_metadata_resp .resultFormat ,
788- t_row_set = direct_results .resultSet .results ,
789- arrow_schema_bytes = schema_bytes ,
790- max_download_threads = self .max_download_threads ,
791- lz4_compressed = lz4_compressed ,
792- description = description ,
793- ssl_options = self ._ssl_options ,
794- )
795- else :
796- arrow_queue_opt = None
797-
798780 command_id = CommandId .from_thrift_handle (resp .operationHandle )
799781
800782 status = CommandState .from_thrift_state (operation_state )
@@ -806,11 +788,11 @@ def _results_message_to_execute_response(self, resp, operation_state):
806788 status = status ,
807789 description = description ,
808790 has_more_rows = has_more_rows ,
809- results_queue = arrow_queue_opt ,
810791 has_been_closed_server_side = has_been_closed_server_side ,
811792 lz4_compressed = lz4_compressed ,
812- is_staging_operation = is_staging_operation ,
793+ is_staging_operation = t_result_set_metadata_resp . isStagingOperation ,
813794 arrow_schema_bytes = schema_bytes ,
795+ result_format = t_result_set_metadata_resp .resultFormat ,
814796 )
815797
816798 def get_execution_result (
@@ -837,9 +819,6 @@ def get_execution_result(
837819
838820 t_result_set_metadata_resp = resp .resultSetMetadata
839821
840- lz4_compressed = t_result_set_metadata_resp .lz4Compressed
841- is_staging_operation = t_result_set_metadata_resp .isStagingOperation
842- has_more_rows = resp .hasMoreRows
843822 description = self ._hive_schema_to_description (
844823 t_result_set_metadata_resp .schema
845824 )
@@ -854,15 +833,9 @@ def get_execution_result(
854833 else :
855834 schema_bytes = None
856835
857- queue = ResultSetQueueFactory .build_queue (
858- row_set_type = resp .resultSetMetadata .resultFormat ,
859- t_row_set = resp .results ,
860- arrow_schema_bytes = schema_bytes ,
861- max_download_threads = self .max_download_threads ,
862- lz4_compressed = lz4_compressed ,
863- description = description ,
864- ssl_options = self ._ssl_options ,
865- )
836+ lz4_compressed = t_result_set_metadata_resp .lz4Compressed
837+ is_staging_operation = t_result_set_metadata_resp .isStagingOperation
838+ has_more_rows = resp .hasMoreRows
866839
867840 status = self .get_query_state (command_id )
868841
@@ -871,11 +844,11 @@ def get_execution_result(
871844 status = status ,
872845 description = description ,
873846 has_more_rows = has_more_rows ,
874- results_queue = queue ,
875847 has_been_closed_server_side = False ,
876848 lz4_compressed = lz4_compressed ,
877849 is_staging_operation = is_staging_operation ,
878850 arrow_schema_bytes = schema_bytes ,
851+ result_format = t_result_set_metadata_resp .resultFormat ,
879852 )
880853
881854 return ThriftResultSet (
@@ -885,6 +858,9 @@ def get_execution_result(
885858 buffer_size_bytes = cursor .buffer_size_bytes ,
886859 arraysize = cursor .arraysize ,
887860 use_cloud_fetch = cursor .connection .use_cloud_fetch ,
861+ t_row_set = resp .results ,
862+ max_download_threads = self .max_download_threads ,
863+ ssl_options = self ._ssl_options ,
888864 )
889865
890866 def _wait_until_command_done (self , op_handle , initial_operation_status_resp ):
@@ -999,13 +975,20 @@ def execute_command(
999975 else :
1000976 execute_response = self ._handle_execute_response (resp , cursor )
1001977
978+ t_row_set = None
979+ if resp .directResults and resp .directResults .resultSet :
980+ t_row_set = resp .directResults .resultSet .results
981+
1002982 return ThriftResultSet (
1003983 connection = cursor .connection ,
1004984 execute_response = execute_response ,
1005985 thrift_client = self ,
1006986 buffer_size_bytes = max_bytes ,
1007987 arraysize = max_rows ,
1008988 use_cloud_fetch = use_cloud_fetch ,
989+ t_row_set = t_row_set ,
990+ max_download_threads = self .max_download_threads ,
991+ ssl_options = self ._ssl_options ,
1009992 )
1010993
1011994 def get_catalogs (
@@ -1029,13 +1012,20 @@ def get_catalogs(
10291012
10301013 execute_response = self ._handle_execute_response (resp , cursor )
10311014
1015+ t_row_set = None
1016+ if resp .directResults and resp .directResults .resultSet :
1017+ t_row_set = resp .directResults .resultSet .results
1018+
10321019 return ThriftResultSet (
10331020 connection = cursor .connection ,
10341021 execute_response = execute_response ,
10351022 thrift_client = self ,
10361023 buffer_size_bytes = max_bytes ,
10371024 arraysize = max_rows ,
10381025 use_cloud_fetch = cursor .connection .use_cloud_fetch ,
1026+ t_row_set = t_row_set ,
1027+ max_download_threads = self .max_download_threads ,
1028+ ssl_options = self ._ssl_options ,
10391029 )
10401030
10411031 def get_schemas (
@@ -1063,13 +1053,20 @@ def get_schemas(
10631053
10641054 execute_response = self ._handle_execute_response (resp , cursor )
10651055
1056+ t_row_set = None
1057+ if resp .directResults and resp .directResults .resultSet :
1058+ t_row_set = resp .directResults .resultSet .results
1059+
10661060 return ThriftResultSet (
10671061 connection = cursor .connection ,
10681062 execute_response = execute_response ,
10691063 thrift_client = self ,
10701064 buffer_size_bytes = max_bytes ,
10711065 arraysize = max_rows ,
10721066 use_cloud_fetch = cursor .connection .use_cloud_fetch ,
1067+ t_row_set = t_row_set ,
1068+ max_download_threads = self .max_download_threads ,
1069+ ssl_options = self ._ssl_options ,
10731070 )
10741071
10751072 def get_tables (
@@ -1101,13 +1098,20 @@ def get_tables(
11011098
11021099 execute_response = self ._handle_execute_response (resp , cursor )
11031100
1101+ t_row_set = None
1102+ if resp .directResults and resp .directResults .resultSet :
1103+ t_row_set = resp .directResults .resultSet .results
1104+
11041105 return ThriftResultSet (
11051106 connection = cursor .connection ,
11061107 execute_response = execute_response ,
11071108 thrift_client = self ,
11081109 buffer_size_bytes = max_bytes ,
11091110 arraysize = max_rows ,
11101111 use_cloud_fetch = cursor .connection .use_cloud_fetch ,
1112+ t_row_set = t_row_set ,
1113+ max_download_threads = self .max_download_threads ,
1114+ ssl_options = self ._ssl_options ,
11111115 )
11121116
11131117 def get_columns (
@@ -1139,13 +1143,20 @@ def get_columns(
11391143
11401144 execute_response = self ._handle_execute_response (resp , cursor )
11411145
1146+ t_row_set = None
1147+ if resp .directResults and resp .directResults .resultSet :
1148+ t_row_set = resp .directResults .resultSet .results
1149+
11421150 return ThriftResultSet (
11431151 connection = cursor .connection ,
11441152 execute_response = execute_response ,
11451153 thrift_client = self ,
11461154 buffer_size_bytes = max_bytes ,
11471155 arraysize = max_rows ,
11481156 use_cloud_fetch = cursor .connection .use_cloud_fetch ,
1157+ t_row_set = t_row_set ,
1158+ max_download_threads = self .max_download_threads ,
1159+ ssl_options = self ._ssl_options ,
11491160 )
11501161
11511162 def _handle_execute_response (self , resp , cursor ):
@@ -1203,6 +1214,8 @@ def fetch_results(
12031214 )
12041215 )
12051216
1217+ from databricks .sql .utils import ResultSetQueueFactory
1218+
12061219 queue = ResultSetQueueFactory .build_queue (
12071220 row_set_type = resp .resultSetMetadata .resultFormat ,
12081221 t_row_set = resp .results ,
0 commit comments