1414
1515import unittest
1616
17- from google .cloud .spanner_dbapi .parsed_statement import AutocommitDmlMode
18- from google .cloud .spanner_v1 .testing .mock_database_admin import DatabaseAdminServicer
19- from google .cloud .spanner_v1 .testing .mock_spanner import (
20- start_mock_server ,
21- SpannerServicer ,
22- )
23- import google .cloud .spanner_v1 .types .type as spanner_type
24- import google .cloud .spanner_v1 .types .result_set as result_set
17+ import grpc
2518from google .api_core .client_options import ClientOptions
2619from google .auth .credentials import AnonymousCredentials
27- from google .cloud .spanner_v1 import Client , TypeCode , FixedSizePool
28- from google .cloud .spanner_v1 .database import Database
29- from google .cloud .spanner_v1 .instance import Instance
30- import grpc
20+ from google .cloud .spanner_v1 import Type
21+
22+ from google .cloud .spanner_v1 import StructType
23+ from google .cloud .spanner_v1 ._helpers import _make_value_pb
24+
25+ from google .cloud .spanner_v1 import PartialResultSet
26+ from google .protobuf .duration_pb2 import Duration
3127from google .rpc import code_pb2
3228from google .rpc import status_pb2
3329from google .rpc .error_details_pb2 import RetryInfo
34- from google .protobuf .duration_pb2 import Duration
3530from grpc_status ._common import code_to_grpc_status_code
3631from grpc_status .rpc_status import _Status
3732
33+ import google .cloud .spanner_v1 .types .result_set as result_set
34+ import google .cloud .spanner_v1 .types .type as spanner_type
35+ from google .cloud .spanner_dbapi .parsed_statement import AutocommitDmlMode
36+ from google .cloud .spanner_v1 import Client
37+ from google .cloud .spanner_v1 import FixedSizePool
38+ from google .cloud .spanner_v1 import ResultSetMetadata
39+ from google .cloud .spanner_v1 import TypeCode
40+ from google .cloud .spanner_v1 .database import Database
41+ from google .cloud .spanner_v1 .instance import Instance
42+ from google .cloud .spanner_v1 .testing .mock_database_admin import \
43+ DatabaseAdminServicer
44+ from google .cloud .spanner_v1 .testing .mock_spanner import SpannerServicer
45+ from google .cloud .spanner_v1 .testing .mock_spanner import start_mock_server
46+
3847
3948# Creates an aborted status with the smallest possible retry delay.
4049def aborted_status () -> _Status :
@@ -57,6 +66,24 @@ def aborted_status() -> _Status:
5766 return status
5867
5968
69+ def _make_partial_result_sets (fields : list [tuple [str , TypeCode ]],
70+ results : list [dict ]) -> list [result_set .PartialResultSet ]:
71+ partial_result_sets = []
72+ for result in results :
73+ partial_result_set = PartialResultSet ()
74+ if len (partial_result_sets ) == 0 :
75+ # setting the metadata
76+ metadata = ResultSetMetadata (row_type = StructType (fields = []))
77+ for field in fields :
78+ metadata .row_type .fields .append (
79+ StructType .Field (name = field [0 ], type_ = Type (code = field [1 ])))
80+ partial_result_set .metadata = metadata
81+ for value in result ["values" ]:
82+ partial_result_set .values .append (_make_value_pb (value ))
83+ partial_result_set .last = result .get ('last' ) or False
84+ partial_result_sets .append (partial_result_set )
85+ return partial_result_sets
86+
6087# Creates an UNAVAILABLE status with the smallest possible retry delay.
6188def unavailable_status () -> _Status :
6289 error = status_pb2 .Status (
@@ -101,6 +128,11 @@ def add_select1_result():
101128 add_single_result ("select 1" , "c" , TypeCode .INT64 , [("1" ,)])
102129
103130
131+ def add_execute_streaming_sql_results (sql : str ,
132+ partial_result_sets : list [result_set .PartialResultSet ]):
133+ MockServerTestBase .spanner_service .mock_spanner .add_execute_streaming_sql_results (
134+ sql , partial_result_sets )
135+
104136def add_single_result (
105137 sql : str , column_name : str , type_code : spanner_type .TypeCode , row
106138):
0 commit comments