1
- from distutils . version import LooseVersion
1
+ from pkg_resources import packaging
2
2
from .connection import Connection , ConnectionInfo
3
3
4
4
@@ -124,27 +124,29 @@ def server_version(self, db=None):
124
124
db = self ._normalize_db (db )
125
125
if db in self ._cache ["server_version" ]["storage" ]:
126
126
return self ._cache ["server_version" ]["storage" ][db ]
127
+
128
+ version_string = self .query ("show server_version" , db )[0 ][0 ]
127
129
result = bytes (
128
- self . query ( "show server_version" , db )[ 0 ] [0 ], "utf-8" )
130
+ version_string . split ( " " ) [0 ], "utf-8" )
129
131
self ._cache ["server_version" ]["storage" ][db ] = "{0}" .format (
130
132
result .decode ("ascii" ))
131
133
return self ._cache ["server_version" ]["storage" ][db ]
132
134
133
135
def server_version_greater (self , version , db = None ):
134
136
db = self ._normalize_db (db )
135
- return self .server_version (db ) >= LooseVersion (version )
137
+ return packaging . version . parse ( self .server_version (db )) >= packaging . version . parse (version )
136
138
137
139
def server_version_less (self , version , db = None ):
138
140
db = self ._normalize_db (db )
139
- return self .server_version (db ) <= LooseVersion (version )
141
+ return packaging . version . parse ( self .server_version (db )) <= packaging . version . parse (version )
140
142
141
143
def bootstrap_version_greater (self , version ):
142
- return str (
143
- self ._cache ["bootstrap" ]["version" ]) >= LooseVersion (version )
144
+ return packaging . version . parse (
145
+ str ( self ._cache ["bootstrap" ]["version" ])) >= packaging . version . parse (version )
144
146
145
147
def bootstrap_version_less (self , version ):
146
- return str (
147
- self ._cache ["bootstrap" ]["version" ]) <= LooseVersion (version )
148
+ return packaging . version . parse (
149
+ str ( self ._cache ["bootstrap" ]["version" ])) <= packaging . version . parse (version )
148
150
149
151
def in_recovery (self , db = None ):
150
152
db = self ._normalize_db (db )
@@ -166,16 +168,16 @@ def is_bootstraped(self, db=None):
166
168
self ._cache ["bootstrap" ]["counter" ] = 0
167
169
# TODO: изменить на нормальное название, 'config' слишком общее
168
170
sql = """
169
- SELECT count(*)
170
- FROM pg_catalog.pg_class
171
+ SELECT count(*)
172
+ FROM pg_catalog.pg_class
171
173
WHERE relname = 'config';
172
174
"""
173
175
result = int (self .query (sql , db )[0 ][0 ])
174
176
self ._cache ["bootstrap" ]["storage" ][db ] = (result == 1 )
175
177
if self ._cache ["bootstrap" ]["storage" ][db ]:
176
178
self ._connections [db ].log .info ("Found mamonsu bootstrap" )
177
179
sql = """
178
- SELECT max(version)
180
+ SELECT max(version)
179
181
FROM mamonsu.config;
180
182
"""
181
183
self ._cache ["bootstrap" ]["version" ] = self .query (sql , db )[0 ][0 ]
@@ -227,8 +229,8 @@ def is_pgpro_ee(self, db=None):
227
229
def extension_installed (self , ext , db = None ):
228
230
db = self ._normalize_db (db )
229
231
result = self .query ("""
230
- SELECT count(*)
231
- FROM pg_catalog.pg_extension
232
+ SELECT count(*)
233
+ FROM pg_catalog.pg_extension
232
234
WHERE lower(extname) = lower('{0}');
233
235
""" .format (ext ), db )
234
236
return (int (result [0 ][0 ])) == 1
@@ -239,9 +241,9 @@ def extension_schema(self, extension, db=None):
239
241
return self ._cache ["extension_schema" ][extension ][db ]
240
242
try :
241
243
self ._cache ["extension_schema" ][extension ][db ] = self .query ("""
242
- SELECT n.nspname
243
- FROM pg_extension e
244
- JOIN pg_namespace n ON e.extnamespace = n.oid
244
+ SELECT n.nspname
245
+ FROM pg_extension e
246
+ JOIN pg_namespace n ON e.extnamespace = n.oid
245
247
WHERE e.extname = '{0}'
246
248
""" .format (extension ), db )[0 ][0 ]
247
249
return self ._cache ["extension_schema" ][extension ][db ]
@@ -250,7 +252,7 @@ def extension_schema(self, extension, db=None):
250
252
251
253
def databases (self ):
252
254
result , databases = self .query ("""
253
- SELECT datname
255
+ SELECT datname
254
256
FROM pg_catalog.pg_database;
255
257
""" ), []
256
258
for row in result :
@@ -309,13 +311,13 @@ def get_sys_param(self, param, db=None):
309
311
db = self ._normalize_db (db )
310
312
if self .is_bootstraped () and self .bootstrap_version_greater ("2.3.4" ):
311
313
result = self .query ("""
312
- SELECT *
314
+ SELECT *
313
315
FROM mamonsu.get_sys_param('{0}');
314
316
""" .format (param ))[0 ][0 ]
315
317
else :
316
318
result = self .query ("""
317
- SELECT setting
318
- FROM pg_catalog.pg_settings
319
+ SELECT setting
320
+ FROM pg_catalog.pg_settings
319
321
WHERE name = '{0}';
320
322
""" .format (param ), db )[0 ][0 ]
321
323
return result
0 commit comments