14
14
15
15
import unittest
16
16
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
25
18
from google .api_core .client_options import ClientOptions
26
19
from 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
31
- from google .rpc import code_pb2
32
- from google .rpc import status_pb2
33
- from google .rpc .error_details_pb2 import RetryInfo
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
34
26
from google .protobuf .duration_pb2 import Duration
27
+ from google .rpc import code_pb2 , status_pb2
28
+
29
+ from google .rpc .error_details_pb2 import RetryInfo
35
30
from grpc_status ._common import code_to_grpc_status_code
36
31
from grpc_status .rpc_status import _Status
37
32
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 , FixedSizePool , ResultSetMetadata , TypeCode
37
+ from google .cloud .spanner_v1 .database import Database
38
+ from google .cloud .spanner_v1 .instance import Instance
39
+ from google .cloud .spanner_v1 .testing .mock_database_admin import DatabaseAdminServicer
40
+ from google .cloud .spanner_v1 .testing .mock_spanner import (
41
+ SpannerServicer ,
42
+ start_mock_server ,
43
+ )
44
+
38
45
39
46
# Creates an aborted status with the smallest possible retry delay.
40
47
def aborted_status () -> _Status :
@@ -57,6 +64,27 @@ def aborted_status() -> _Status:
57
64
return status
58
65
59
66
67
+ def _make_partial_result_sets (
68
+ fields : list [tuple [str , TypeCode ]], results : list [dict ]
69
+ ) -> list [result_set .PartialResultSet ]:
70
+ partial_result_sets = []
71
+ for result in results :
72
+ partial_result_set = PartialResultSet ()
73
+ if len (partial_result_sets ) == 0 :
74
+ # setting the metadata
75
+ metadata = ResultSetMetadata (row_type = StructType (fields = []))
76
+ for field in fields :
77
+ metadata .row_type .fields .append (
78
+ StructType .Field (name = field [0 ], type_ = Type (code = field [1 ]))
79
+ )
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
+
87
+
60
88
# Creates an UNAVAILABLE status with the smallest possible retry delay.
61
89
def unavailable_status () -> _Status :
62
90
error = status_pb2 .Status (
@@ -101,6 +129,14 @@ def add_select1_result():
101
129
add_single_result ("select 1" , "c" , TypeCode .INT64 , [("1" ,)])
102
130
103
131
132
+ def add_execute_streaming_sql_results (
133
+ sql : str , partial_result_sets : list [result_set .PartialResultSet ]
134
+ ):
135
+ MockServerTestBase .spanner_service .mock_spanner .add_execute_streaming_sql_results (
136
+ sql , partial_result_sets
137
+ )
138
+
139
+
104
140
def add_single_result (
105
141
sql : str , column_name : str , type_code : spanner_type .TypeCode , row
106
142
):
0 commit comments