@@ -32,7 +32,7 @@ class Pool(object):
3232 "select sum(1) * (current_setting('block_size')::int8) as size, "
3333 " sum(case when usagecount > 1 then 1 else 0 end) * (current_setting('block_size')::int8) as twice_used, "
3434 " sum(case isdirty when true then 1 else 0 end) * (current_setting('block_size')::int8) as dirty "
35- " from mamonsu .pg_buffercache" ,
35+ " from {0} .pg_buffercache" ,
3636 'select size, twice_used, dirty from mamonsu.buffer_cache()'
3737 ),
3838 'wal_lag_lsn' : (
@@ -56,6 +56,7 @@ def __init__(self, params=None):
5656 'server_version' : {'storage' : {}},
5757 'bootstrap' : {'storage' : {}, 'counter' : 0 , 'cache' : 10 , 'version' : False },
5858 'recovery' : {'storage' : {}, 'counter' : 0 , 'cache' : 10 },
59+ 'extension_schema' : {'pg_buffercache' : {}},
5960 'pgpro' : {'storage' : {}},
6061 'pgproee' : {'storage' : {}}
6162 }
@@ -167,6 +168,16 @@ def extension_installed(self, ext, db=None):
167168 'where extname = \' {0}\' ' .format (ext ), db )
168169 return (int (result [0 ][0 ])) == 1
169170
171+ def extension_schema (self , extension , db = None ):
172+ db = self ._normalize_db (db )
173+ if db in self ._cache ['extension_schema' ][extension ]:
174+ return self ._cache ['extension_schema' ][extension ][db ]
175+ self ._cache ['extension_schema' ][extension ][db ] = self .query (
176+ "select n.nspname from pg_extension e "
177+ "join pg_namespace n "
178+ "on e.extnamespace = n.oid where e.extname = '{0}'" .format (extension ), db )[0 ][0 ]
179+ return self ._cache ['extension_schema' ][extension ][db ]
180+
170181 def databases (self ):
171182 result , databases = self .query (
172183 'select datname from '
@@ -176,24 +187,25 @@ def databases(self):
176187 databases .append (row [0 ])
177188 return databases
178189
179- def fill_query_params (self , query , params ):
180- if params :
181- return query .format (* params )
182- else :
183- return query
190+ def fill_query_params (self , query , params , extension = None , db = None ):
191+ if not params :
192+ params = []
193+ if extension :
194+ params .append (self .extension_schema (extension , db ))
195+ return query .format (* params )
184196
185- def get_sql (self , typ , args = None , db = None ):
197+ def get_sql (self , typ , args = None , extension = None , db = None ):
186198 db = self ._normalize_db (db )
187199 if typ not in self .SQL :
188200 raise LookupError ("Unknown SQL type: '{0}'" .format (typ ))
189201 result = self .SQL [typ ]
190202 if self .is_bootstraped (db ):
191- return self .fill_query_params (result [1 ], args )
203+ return self .fill_query_params (result [1 ], args , extension , db )
192204 else :
193- return self .fill_query_params (result [0 ], args )
205+ return self .fill_query_params (result [0 ], args , extension , db )
194206
195- def run_sql_type (self , typ , args = None , db = None ):
196- return self .query (self .get_sql (typ , args , db ), db )
207+ def run_sql_type (self , typ , args = None , extension = None , db = None ):
208+ return self .query (self .get_sql (typ , args , extension , db ), db )
197209
198210 def _normalize_db (self , db = None ):
199211 if db is None :
0 commit comments