def test_base_empty_and_merge_empty(self): from google.cloud.spanner_v1.proto.spanner_pb2 import ExecuteSqlRequest base = ExecuteSqlRequest.QueryOptions() merge = ExecuteSqlRequest.QueryOptions() result = self._callFUT(base, merge) self.assertIsNone(result)
def _merge_query_options(base, merge): """Merge higher precedence QueryOptions with current QueryOptions. :type base: :class:`google.cloud.spanner_v1.proto.ExecuteSqlRequest.QueryOptions` or :class:`dict` or None :param base: The current QueryOptions that is intended for use. :type merge: :class:`google.cloud.spanner_v1.proto.ExecuteSqlRequest.QueryOptions` or :class:`dict` or None :param merge: The QueryOptions that have a higher priority than base. These options should overwrite the fields in base. :rtype: :class:`google.cloud.spanner_v1.proto.ExecuteSqlRequest.QueryOptions` or None :returns: QueryOptions object formed by merging the two given QueryOptions. If the resultant object only has empty fields, returns None. """ combined = base or ExecuteSqlRequest.QueryOptions() if type(combined) == dict: combined = ExecuteSqlRequest.QueryOptions( optimizer_version=combined.get("optimizer_version", "")) merge = merge or ExecuteSqlRequest.QueryOptions() if type(merge) == dict: merge = ExecuteSqlRequest.QueryOptions( optimizer_version=merge.get("optimizer_version", "")) combined.MergeFrom(merge) if not combined.optimizer_version: return None return combined
def test_base_object_merge_dict(self): from google.cloud.spanner_v1.proto.spanner_pb2 import ExecuteSqlRequest base = ExecuteSqlRequest.QueryOptions(optimizer_version="1") merge = {"optimizer_version": "3"} expected = ExecuteSqlRequest.QueryOptions(optimizer_version="3") result = self._callFUT(base, merge) self.assertEqual(result, expected)
def test_constructor_custom_query_options_client_config(self): from google.cloud.spanner_v1.proto.spanner_pb2 import ExecuteSqlRequest from google.cloud.spanner_v1 import client as MUT expected_scopes = (MUT.SPANNER_ADMIN_SCOPE, ) creds = _make_credentials() self._constructor_test_helper( expected_scopes, creds, query_options=ExecuteSqlRequest.QueryOptions( optimizer_version="1"), expected_query_options=ExecuteSqlRequest.QueryOptions( optimizer_version="1"), )
def test_base_none_merge_object(self): from google.cloud.spanner_v1.proto.spanner_pb2 import ExecuteSqlRequest base = None merge = ExecuteSqlRequest.QueryOptions(optimizer_version="3") result = self._callFUT(base, merge) self.assertEqual(result, merge)
def test_execute_sql_w_query_options(self): from google.cloud.spanner_v1.proto.spanner_pb2 import ExecuteSqlRequest self._execute_sql_helper( multi_use=False, query_options=ExecuteSqlRequest.QueryOptions(optimizer_version="3"), )
def __init__( self, project=None, credentials=None, client_info=_CLIENT_INFO, user_agent=None, client_options=None, query_options=None, ): self._emulator_host = _get_spanner_emulator_host() if client_options and type(client_options) == dict: self._client_options = google.api_core.client_options.from_dict( client_options ) else: self._client_options = client_options if self._emulator_host: credentials = AnonymousCredentials() elif isinstance(credentials, AnonymousCredentials): self._emulator_host = self._client_options.api_endpoint # NOTE: This API has no use for the _http argument, but sending it # will have no impact since the _http() @property only lazily # creates a working HTTP object. super(Client, self).__init__( project=project, credentials=credentials, client_options=client_options, _http=None, ) self._client_info = client_info env_query_options = ExecuteSqlRequest.QueryOptions( optimizer_version=_get_spanner_optimizer_version() ) # Environment flag config has higher precedence than application config. self._query_options = _merge_query_options(query_options, env_query_options) if user_agent is not None: warnings.warn(_USER_AGENT_DEPRECATED, DeprecationWarning, stacklevel=2) self.user_agent = user_agent if self._emulator_host is not None and ( "http://" in self._emulator_host or "https://" in self._emulator_host ): warnings.warn(_EMULATOR_HOST_HTTP_SCHEME)
def __init__(self): from google.cloud.spanner_v1.proto.spanner_pb2 import ExecuteSqlRequest self._query_options = ExecuteSqlRequest.QueryOptions(optimizer_version="1")
def test_execute_update_w_query_options(self): from google.cloud.spanner_v1.proto.spanner_pb2 import ExecuteSqlRequest self._execute_update_helper( query_options=ExecuteSqlRequest.QueryOptions(optimizer_version="3") )