@@ -92,11 +92,11 @@ class DriverFeatures:
9292 statement_execute_schema : bool = False
9393 statement_get_parameter_schema : bool = False
9494 statement_prepare : bool = True
95- current_catalog : str | None = None
96- current_schema : str | None = None
97- secondary_schema : str | None = None
98- secondary_catalog : str | None = None
99- secondary_catalog_schema : str | None = None
95+ _current_catalog : str | FromEnv | None = None
96+ _current_schema : str | FromEnv | None = None
97+ _secondary_schema : str | FromEnv | None = None
98+ _secondary_catalog : str | FromEnv | None = None
99+ _secondary_catalog_schema : str | FromEnv | None = None
100100 supported_xdbc_fields : list [str ] = dataclasses .field (default_factory = list )
101101 # Some vendors sort the columns, so declaring FOREIGN KEY(b, a) REFERENCES
102102 # foo(d, c) still gets returned in the order (a, c), (b, d)
@@ -106,10 +106,46 @@ class DriverFeatures:
106106
107107 def __init__ (self , ** kwargs ) -> None :
108108 for key , value in kwargs .items ():
109- if isinstance (value , FromEnv ):
110- value = value .get_or_raise ()
109+ if key in {
110+ "current_catalog" ,
111+ "current_schema" ,
112+ "secondary_schema" ,
113+ "secondary_catalog" ,
114+ "secondary_catalog_schema" ,
115+ }:
116+ key = "_" + key
111117 setattr (self , key , value )
112118
119+ @property
120+ def current_catalog (self ) -> str | None :
121+ if isinstance (self ._current_catalog , FromEnv ):
122+ return self ._current_catalog .get_or_raise ()
123+ return self ._current_catalog
124+
125+ @property
126+ def current_schema (self ) -> str | None :
127+ if isinstance (self ._current_schema , FromEnv ):
128+ return self ._current_schema .get_or_raise ()
129+ return self ._current_schema
130+
131+ @property
132+ def secondary_schema (self ) -> str | None :
133+ if isinstance (self ._secondary_schema , FromEnv ):
134+ return self ._secondary_schema .get_or_raise ()
135+ return self ._secondary_schema
136+
137+ @property
138+ def secondary_catalog (self ) -> str | None :
139+ if isinstance (self ._secondary_catalog , FromEnv ):
140+ return self ._secondary_catalog .get_or_raise ()
141+ return self ._secondary_catalog
142+
143+ @property
144+ def secondary_catalog_schema (self ) -> str | None :
145+ if isinstance (self ._secondary_catalog_schema , FromEnv ):
146+ return self ._secondary_catalog_schema .get_or_raise ()
147+ return self ._secondary_catalog_schema
148+
113149
114150class DriverQuirks (abc .ABC ):
115151 @property
0 commit comments