@@ -76,6 +76,16 @@ def __init__(
7676 super ().__init__ (* args , ** kwargs )
7777 self ._client = client
7878 self .connection = connection
79+ if connection .database :
80+ self .database = connection .database
81+
82+ @property
83+ def database (self ) -> Optional [str ]:
84+ return self .parameters .get ("database" )
85+
86+ @database .setter
87+ def database (self , database : str ) -> None :
88+ self .parameters ["database" ] = database
7989
8090 def _raise_if_error (self , resp : Response ) -> None :
8191 """Raise a proper error if any"""
@@ -84,11 +94,9 @@ def _raise_if_error(self, resp: Response) -> None:
8494 f"Error executing query:\n { resp .read ().decode ('utf-8' )} "
8595 )
8696 if resp .status_code == codes .FORBIDDEN :
87- if self .connection .database and not self .is_db_available (
88- self .connection .database
89- ):
97+ if self .database and not self .is_db_available (self .database ):
9098 raise FireboltDatabaseError (
91- f"Database { self .connection . database } does not exist"
99+ f"Database { self .parameters [ ' database' ] } does not exist"
92100 )
93101 raise ProgrammingError (resp .read ().decode ("utf-8" ))
94102 if (
@@ -188,6 +196,8 @@ def _do_execute(
188196 query , {"output_format" : JSON_OUTPUT_FORMAT }
189197 )
190198 self ._raise_if_error (resp )
199+ # get parameters from response
200+ self ._parse_response_headers (resp .headers )
191201 row_set = self ._row_set_from_response (resp )
192202
193203 self ._append_row_set (row_set )
@@ -379,8 +389,8 @@ def _api_request(
379389 parameters = parameters or {}
380390 if use_set_parameters :
381391 parameters = {** (self ._set_parameters or {}), ** parameters }
382- if self .connection . database :
383- parameters [ "database" ] = self .connection . database
392+ if self .parameters :
393+ parameters = { ** self .parameters , ** parameters }
384394 if self .connection ._is_system :
385395 assert isinstance (self ._client , ClientV2 ) # Type check
386396 parameters ["account_id" ] = self ._client .account_id
@@ -480,13 +490,15 @@ def _api_request(
480490 set parameters are sent. Setting this to False will allow
481491 self._set_parameters to be ignored.
482492 """
493+ parameters = parameters or {}
483494 if use_set_parameters :
484495 parameters = {** (self ._set_parameters or {}), ** (parameters or {})}
496+ if self .parameters :
497+ parameters = {** self .parameters , ** parameters }
485498 return self ._client .request (
486499 url = f"/{ path } " ,
487500 method = "POST" ,
488501 params = {
489- "database" : self .connection .database ,
490502 ** (parameters or dict ()),
491503 },
492504 content = query ,
0 commit comments