The following are the initial fixes for PG15:

1) From PG 15 onward, the datlastsysoid has been removed from the table pg_database.
    We have added the constant _DATABASE_LAST_SYSTEM_OID = 16383, all the objects below
    this value are considered to be system objects. Modified the pgAdmin logic accordingly.

 2) Concatenation operator '||' needs a specific typecast to be applied to query variables. Modified SQL's accordingly.

Fixes #7283
This commit is contained in:
Akshay Joshi
2022-05-17 20:32:17 +05:30
parent 6465dc951c
commit b36004b702
81 changed files with 247 additions and 425 deletions

View File

@@ -665,10 +665,6 @@ rolmembership:{
_("Connection to the server has been lost.")
)
self.datlastsysoid = \
self.manager.db_info[self.manager.did]['datlastsysoid'] \
if self.manager.db_info is not None and \
self.manager.did in self.manager.db_info else 0
self.datistemplate = False
if (
self.manager.db_info is not None and
@@ -843,7 +839,8 @@ rolmembership:{
return gone(self.not_found_error_msg())
res['rows'][0]['is_sys_obj'] = (
res['rows'][0]['oid'] <= self.datlastsysoid or self.datistemplate)
res['rows'][0]['oid'] <= self._DATABASE_LAST_SYSTEM_OID or
self.datistemplate)
return ajax_response(
response=res['rows'][0],
@@ -1129,7 +1126,7 @@ rolmembership:{
query = render_template(
"/".join([self.sql_path, 'dependents.sql']),
fetch_dependents=True, rid=rid,
lastsysoid=db_row['datlastsysoid']
lastsysoid=self._DATABASE_LAST_SYSTEM_OID
)
status, result = temp_conn.execute_dict(query)

View File

@@ -1,10 +1,10 @@
{% if fetch_database %}
SELECT 'd' as type, datname,
datallowconn AND pg_catalog.has_database_privilege(datname, 'CONNECT') AS datallowconn,
datdba, datlastsysoid
datdba
FROM pg_catalog.pg_database db
UNION
SELECT 'M', spcname, null, null, null
SELECT 'M', spcname, null, null
FROM pg_catalog.pg_tablespace where spcowner= {{rid}}::oid
ORDER BY 1, 2
{% endif %}

View File

@@ -1,10 +1,10 @@
{% if fetch_database %}
SELECT 'd' as type, datname,
datallowconn AND pg_catalog.has_database_privilege(datname, 'CONNECT') AS datallowconn,
datdba, datlastsysoid
datdba
FROM pg_catalog.pg_database db
UNION
SELECT 'M', spcname, null, null, null
SELECT 'M', spcname, null, null
FROM pg_catalog.pg_tablespace where spcowner={{rid}}::oid
ORDER BY 1, 2
{% endif %}