mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
1) Wrong tablespace displayed in table properties. Fixes #2069
2) Message (Connection to the server has been lost.) displayed with Materialized view and view under sql tab. Fixes #2139
This commit is contained in:
parent
4ef26a528b
commit
f2ac6fc6a7
@ -134,7 +134,7 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings):
|
||||
- This function is used to return modified SQL for the selected
|
||||
Table node
|
||||
|
||||
* get_sql(data, scid, tid)
|
||||
* get_sql(did, scid, tid, data)
|
||||
- This function will generate sql from model data
|
||||
|
||||
* sql(gid, sid, did, scid, tid):
|
||||
@ -182,7 +182,7 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings):
|
||||
- It will return formatted output of query result
|
||||
as per client model format for column node
|
||||
|
||||
* _index_constraints_formatter(self, tid, data):
|
||||
* _index_constraints_formatter(self, did, tid, data):
|
||||
- It will return formatted output of query result
|
||||
as per client model format for index constraint node
|
||||
|
||||
@ -195,7 +195,7 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings):
|
||||
- This function will parse and return formatted list of columns
|
||||
added by user
|
||||
|
||||
* get_index_constraint_sql(self, tid, data):
|
||||
* get_index_constraint_sql(self, did, tid, data):
|
||||
- This function will generate modified sql for index constraints
|
||||
(Primary Key & Unique)
|
||||
|
||||
@ -332,7 +332,8 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings):
|
||||
"""
|
||||
SQL = render_template("/".join([self.template_path,
|
||||
'properties.sql']),
|
||||
scid=scid, datlastsysoid=self.datlastsysoid)
|
||||
did=did, scid=scid,
|
||||
datlastsysoid=self.datlastsysoid)
|
||||
status, res = self.conn.execute_dict(SQL)
|
||||
|
||||
if not status:
|
||||
@ -725,7 +726,7 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings):
|
||||
|
||||
return data
|
||||
|
||||
def _index_constraints_formatter(self, tid, data):
|
||||
def _index_constraints_formatter(self, did, tid, data):
|
||||
"""
|
||||
Args:
|
||||
tid: Table OID
|
||||
@ -746,7 +747,7 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings):
|
||||
|
||||
sql = render_template("/".join([self.index_constraint_template_path,
|
||||
'properties.sql']),
|
||||
tid=tid,
|
||||
did=did, tid=tid,
|
||||
constraint_type=ctype)
|
||||
status, res = self.conn.execute_dict(sql)
|
||||
|
||||
@ -874,7 +875,7 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings):
|
||||
|
||||
return data
|
||||
|
||||
def _exclusion_constraint_formatter(self, tid, data):
|
||||
def _exclusion_constraint_formatter(self, did, tid, data):
|
||||
"""
|
||||
Args:
|
||||
tid: Table OID
|
||||
@ -888,7 +889,7 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings):
|
||||
# We will fetch all the index constraints for the table
|
||||
sql = render_template("/".join([self.exclusion_constraint_template_path,
|
||||
'properties.sql']),
|
||||
tid=tid)
|
||||
did=did, tid=tid)
|
||||
|
||||
status, result = self.conn.execute_dict(sql)
|
||||
|
||||
@ -971,7 +972,7 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings):
|
||||
|
||||
return None
|
||||
|
||||
def _formatter(self, scid, tid, data):
|
||||
def _formatter(self, did, scid, tid, data):
|
||||
"""
|
||||
Args:
|
||||
data: dict of query result
|
||||
@ -1090,10 +1091,10 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings):
|
||||
data = self._columns_formatter(tid, data)
|
||||
|
||||
# Here we will add constraint in our output
|
||||
data = self._index_constraints_formatter(tid, data)
|
||||
data = self._index_constraints_formatter(did, tid, data)
|
||||
data = self._foreign_key_formatter(tid, data)
|
||||
data = self._check_constraint_formatter(tid, data)
|
||||
data = self._exclusion_constraint_formatter(tid, data)
|
||||
data = self._exclusion_constraint_formatter(did, tid, data)
|
||||
|
||||
return data
|
||||
|
||||
@ -1116,7 +1117,7 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings):
|
||||
|
||||
SQL = render_template("/".join([self.template_path,
|
||||
'properties.sql']),
|
||||
scid=scid, tid=tid,
|
||||
did=did, scid=scid, tid=tid,
|
||||
datlastsysoid=self.datlastsysoid)
|
||||
status, res = self.conn.execute_dict(SQL)
|
||||
if not status:
|
||||
@ -1139,7 +1140,7 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings):
|
||||
'vacuum_settings_str'
|
||||
].replace("=", " = ")
|
||||
|
||||
data = self._formatter(scid, tid, data)
|
||||
data = self._formatter(did, scid, tid, data)
|
||||
|
||||
return ajax_response(
|
||||
response=data,
|
||||
@ -1486,7 +1487,7 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings):
|
||||
data[k] = v
|
||||
|
||||
try:
|
||||
SQL, name = self.get_sql(scid, tid, data)
|
||||
SQL, name = self.get_sql(did, scid, tid, data)
|
||||
|
||||
SQL = SQL.strip('\n').strip(' ')
|
||||
status, res = self.conn.execute_scalar(SQL)
|
||||
@ -1535,7 +1536,7 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings):
|
||||
try:
|
||||
SQL = render_template("/".join([self.template_path,
|
||||
'properties.sql']),
|
||||
scid=scid, tid=tid,
|
||||
did=did, scid=scid, tid=tid,
|
||||
datlastsysoid=self.datlastsysoid)
|
||||
status, res = self.conn.execute_dict(SQL)
|
||||
if not status:
|
||||
@ -1596,7 +1597,7 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings):
|
||||
try:
|
||||
SQL = render_template("/".join([self.template_path,
|
||||
'properties.sql']),
|
||||
scid=scid, tid=tid,
|
||||
did=did, scid=scid, tid=tid,
|
||||
datlastsysoid=self.datlastsysoid)
|
||||
status, res = self.conn.execute_dict(SQL)
|
||||
if not status:
|
||||
@ -1644,7 +1645,7 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings):
|
||||
try:
|
||||
SQL = render_template("/".join([self.template_path,
|
||||
'properties.sql']),
|
||||
scid=scid, tid=tid,
|
||||
did=did, scid=scid, tid=tid,
|
||||
datlastsysoid=self.datlastsysoid)
|
||||
status, res = self.conn.execute_dict(SQL)
|
||||
if not status:
|
||||
@ -1724,7 +1725,7 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings):
|
||||
data[k] = v
|
||||
|
||||
try:
|
||||
SQL, name = self.get_sql(scid, tid, data)
|
||||
SQL, name = self.get_sql(did, scid, tid, data)
|
||||
SQL = re.sub('\n{2,}', '\n\n', SQL)
|
||||
SQL = SQL.strip('\n')
|
||||
if SQL == '':
|
||||
@ -1736,7 +1737,7 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings):
|
||||
except Exception as e:
|
||||
return internal_server_error(errormsg=str(e))
|
||||
|
||||
def get_index_constraint_sql(self, tid, data):
|
||||
def get_index_constraint_sql(self, did, tid, data):
|
||||
"""
|
||||
Args:
|
||||
tid: Table ID
|
||||
@ -1778,7 +1779,7 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings):
|
||||
|
||||
properties_sql = render_template("/".join(
|
||||
[self.index_constraint_template_path, 'properties.sql']),
|
||||
tid=tid, cid=c['oid'], constraint_type=ctype)
|
||||
did=did, tid=tid, cid=c['oid'], constraint_type=ctype)
|
||||
status, res = self.conn.execute_dict(properties_sql)
|
||||
if not status:
|
||||
return internal_server_error(errormsg=res)
|
||||
@ -2092,7 +2093,7 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings):
|
||||
else:
|
||||
return None
|
||||
|
||||
def get_sql(self, scid, tid, data):
|
||||
def get_sql(self, did, scid, tid, data):
|
||||
"""
|
||||
This function will generate create/update sql from model data
|
||||
coming from client
|
||||
@ -2100,14 +2101,14 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings):
|
||||
if tid is not None:
|
||||
SQL = render_template("/".join([self.template_path,
|
||||
'properties.sql']),
|
||||
scid=scid, tid=tid,
|
||||
did=did, scid=scid, tid=tid,
|
||||
datlastsysoid=self.datlastsysoid)
|
||||
status, res = self.conn.execute_dict(SQL)
|
||||
if not status:
|
||||
return internal_server_error(errormsg=res)
|
||||
|
||||
old_data = res['rows'][0]
|
||||
old_data = self._formatter(scid, tid, old_data)
|
||||
old_data = self._formatter(did, scid, tid, old_data)
|
||||
|
||||
# We will convert privileges coming from client required
|
||||
if 'relacl' in data:
|
||||
@ -2259,7 +2260,7 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings):
|
||||
SQL += column_sql.strip('\n')
|
||||
|
||||
# Check if index constraints are added/changed/deleted
|
||||
index_constraint_sql = self.get_index_constraint_sql(tid, data)
|
||||
index_constraint_sql = self.get_index_constraint_sql(did, tid, data)
|
||||
# If we have index constraint sql then ad it in main sql
|
||||
if index_constraint_sql is not None:
|
||||
SQL += '\n' + index_constraint_sql
|
||||
@ -2456,7 +2457,7 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings):
|
||||
"""
|
||||
SQL = render_template("/".join([self.template_path,
|
||||
'properties.sql']),
|
||||
scid=scid, tid=tid,
|
||||
did=did, scid=scid, tid=tid,
|
||||
datlastsysoid=self.datlastsysoid)
|
||||
status, res = self.conn.execute_dict(SQL)
|
||||
if not status:
|
||||
@ -2468,7 +2469,7 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings):
|
||||
schema = data['schema']
|
||||
table = data['name']
|
||||
|
||||
data = self._formatter(scid, tid, data)
|
||||
data = self._formatter(did, scid, tid, data)
|
||||
|
||||
# Now we have all lis of columns which we need
|
||||
# to include in our create definition, Let's format them
|
||||
@ -2524,7 +2525,7 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings):
|
||||
|
||||
SQL = render_template("/".join([self.index_template_path,
|
||||
'properties.sql']),
|
||||
tid=tid, idx=row['oid'],
|
||||
did=did, tid=tid, idx=row['oid'],
|
||||
datlastsysoid=self.datlastsysoid)
|
||||
|
||||
status, res = self.conn.execute_dict(SQL)
|
||||
@ -2726,14 +2727,14 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings):
|
||||
"""
|
||||
SQL = render_template("/".join([self.template_path,
|
||||
'properties.sql']),
|
||||
scid=scid, tid=tid,
|
||||
did=did, scid=scid, tid=tid,
|
||||
datlastsysoid=self.datlastsysoid)
|
||||
status, res = self.conn.execute_dict(SQL)
|
||||
if not status:
|
||||
return internal_server_error(errormsg=res)
|
||||
|
||||
data = res['rows'][0]
|
||||
data = self._formatter(scid, tid, data)
|
||||
data = self._formatter(did, scid, tid, data)
|
||||
|
||||
columns = []
|
||||
|
||||
@ -2770,14 +2771,14 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings):
|
||||
"""
|
||||
SQL = render_template("/".join([self.template_path,
|
||||
'properties.sql']),
|
||||
scid=scid, tid=tid,
|
||||
did=did, scid=scid, tid=tid,
|
||||
datlastsysoid=self.datlastsysoid)
|
||||
status, res = self.conn.execute_dict(SQL)
|
||||
if not status:
|
||||
return internal_server_error(errormsg=res)
|
||||
|
||||
data = res['rows'][0]
|
||||
data = self._formatter(scid, tid, data)
|
||||
data = self._formatter(did, scid, tid, data)
|
||||
|
||||
columns = []
|
||||
values = []
|
||||
@ -2817,14 +2818,14 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings):
|
||||
"""
|
||||
SQL = render_template("/".join([self.template_path,
|
||||
'properties.sql']),
|
||||
scid=scid, tid=tid,
|
||||
did=did, scid=scid, tid=tid,
|
||||
datlastsysoid=self.datlastsysoid)
|
||||
status, res = self.conn.execute_dict(SQL)
|
||||
if not status:
|
||||
return internal_server_error(errormsg=res)
|
||||
|
||||
data = res['rows'][0]
|
||||
data = self._formatter(scid, tid, data)
|
||||
data = self._formatter(did, scid, tid, data)
|
||||
|
||||
columns = []
|
||||
|
||||
@ -2866,7 +2867,7 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings):
|
||||
"""
|
||||
SQL = render_template("/".join([self.template_path,
|
||||
'properties.sql']),
|
||||
scid=scid, tid=tid,
|
||||
did=did, scid=scid, tid=tid,
|
||||
datlastsysoid=self.datlastsysoid)
|
||||
status, res = self.conn.execute_dict(SQL)
|
||||
if not status:
|
||||
|
@ -266,7 +266,7 @@ class ExclusionConstraintView(PGChildNodeView):
|
||||
|
||||
"""
|
||||
sql = render_template("/".join([self.template_path, 'properties.sql']),
|
||||
tid=tid, cid=exid)
|
||||
did=did, tid=tid, cid=exid)
|
||||
|
||||
status, res = self.conn.execute_dict(sql)
|
||||
|
||||
@ -374,6 +374,7 @@ class ExclusionConstraintView(PGChildNodeView):
|
||||
|
||||
SQL = render_template("/".join([self.template_path,
|
||||
'properties.sql']),
|
||||
did=did,
|
||||
tid=tid)
|
||||
status, res = self.conn.execute_dict(SQL)
|
||||
|
||||
@ -635,7 +636,7 @@ class ExclusionConstraintView(PGChildNodeView):
|
||||
try:
|
||||
data['schema'] = self.schema
|
||||
data['table'] = self.table
|
||||
sql, name = self.get_sql(data, tid, exid)
|
||||
sql, name = self.get_sql(data, did, tid, exid)
|
||||
sql = sql.strip('\n').strip(' ')
|
||||
status, res = self.conn.execute_scalar(sql)
|
||||
if not status:
|
||||
@ -750,7 +751,7 @@ class ExclusionConstraintView(PGChildNodeView):
|
||||
data['schema'] = self.schema
|
||||
data['table'] = self.table
|
||||
try:
|
||||
sql, name = self.get_sql(data, tid, exid)
|
||||
sql, name = self.get_sql(data, did, tid, exid)
|
||||
sql = sql.strip('\n').strip(' ')
|
||||
if sql == '':
|
||||
sql = "--modified SQL"
|
||||
@ -762,7 +763,7 @@ class ExclusionConstraintView(PGChildNodeView):
|
||||
except Exception as e:
|
||||
return internal_server_error(errormsg=str(e))
|
||||
|
||||
def get_sql(self, data, tid, exid=None):
|
||||
def get_sql(self, data, did, tid, exid=None):
|
||||
"""
|
||||
This function will generate sql from model data.
|
||||
|
||||
@ -776,6 +777,7 @@ class ExclusionConstraintView(PGChildNodeView):
|
||||
"""
|
||||
if exid is not None:
|
||||
sql = render_template("/".join([self.template_path, 'properties.sql']),
|
||||
did=did,
|
||||
tid=tid,
|
||||
cid=exid)
|
||||
status, res = self.conn.execute_dict(sql)
|
||||
@ -824,7 +826,7 @@ class ExclusionConstraintView(PGChildNodeView):
|
||||
try:
|
||||
SQL = render_template(
|
||||
"/".join([self.template_path, 'properties.sql']),
|
||||
tid=tid, conn=self.conn, cid=exid)
|
||||
did=did, tid=tid, conn=self.conn, cid=exid)
|
||||
status, result = self.conn.execute_dict(SQL)
|
||||
if not status:
|
||||
return internal_server_error(errormsg=result)
|
||||
@ -912,7 +914,7 @@ class ExclusionConstraintView(PGChildNodeView):
|
||||
# Fetch index details only if extended stats available
|
||||
SQL = render_template(
|
||||
"/".join([self.template_path, 'properties.sql']),
|
||||
tid=tid, conn=self.conn, cid=exid)
|
||||
did=did, tid=tid, conn=self.conn, cid=exid)
|
||||
status, result = self.conn.execute_dict(SQL)
|
||||
if not status:
|
||||
return internal_server_error(errormsg=result)
|
||||
|
@ -653,7 +653,7 @@ function($, _, S, pgAdmin, pgBrowser, Alertify) {
|
||||
name: undefined,
|
||||
oid: undefined,
|
||||
comment: undefined,
|
||||
spcname: "pg_default",
|
||||
spcname: undefined,
|
||||
amname: "gist",
|
||||
fillfactor: undefined,
|
||||
condeferrable: undefined,
|
||||
|
@ -285,6 +285,7 @@ class IndexConstraintView(PGChildNodeView):
|
||||
|
||||
"""
|
||||
sql = render_template("/".join([self.template_path, 'properties.sql']),
|
||||
did=did,
|
||||
tid=tid,
|
||||
cid=cid,
|
||||
constraint_type=self.constraint_type)
|
||||
@ -381,6 +382,7 @@ class IndexConstraintView(PGChildNodeView):
|
||||
self.table = row['table']
|
||||
|
||||
SQL = render_template("/".join([self.template_path, 'properties.sql']),
|
||||
did=did,
|
||||
tid=tid,
|
||||
constraint_type=self.constraint_type)
|
||||
status, res = self.conn.execute_dict(SQL)
|
||||
@ -664,7 +666,7 @@ class IndexConstraintView(PGChildNodeView):
|
||||
try:
|
||||
data['schema'] = self.schema
|
||||
data['table'] = self.table
|
||||
sql, name = self.get_sql(data, tid, cid)
|
||||
sql, name = self.get_sql(data, did, tid, cid)
|
||||
sql = sql.strip('\n').strip(' ')
|
||||
|
||||
status, res = self.conn.execute_scalar(sql)
|
||||
@ -784,7 +786,7 @@ class IndexConstraintView(PGChildNodeView):
|
||||
data['schema'] = self.schema
|
||||
data['table'] = self.table
|
||||
try:
|
||||
sql, name = self.get_sql(data, tid, cid)
|
||||
sql, name = self.get_sql(data, did, tid, cid)
|
||||
sql = sql.strip('\n').strip(' ')
|
||||
if sql == '':
|
||||
sql = "--modified SQL"
|
||||
@ -796,7 +798,7 @@ class IndexConstraintView(PGChildNodeView):
|
||||
except Exception as e:
|
||||
return internal_server_error(errormsg=str(e))
|
||||
|
||||
def get_sql(self, data, tid, cid=None):
|
||||
def get_sql(self, data, did, tid, cid=None):
|
||||
"""
|
||||
This function will generate sql from model data.
|
||||
|
||||
@ -810,6 +812,7 @@ class IndexConstraintView(PGChildNodeView):
|
||||
"""
|
||||
if cid is not None:
|
||||
sql = render_template("/".join([self.template_path, 'properties.sql']),
|
||||
did=did,
|
||||
tid=tid,
|
||||
cid=cid,
|
||||
constraint_type=self.constraint_type)
|
||||
@ -873,6 +876,7 @@ class IndexConstraintView(PGChildNodeView):
|
||||
try:
|
||||
SQL = render_template(
|
||||
"/".join([self.template_path, 'properties.sql']),
|
||||
did=did,
|
||||
tid=tid,
|
||||
conn=self.conn,
|
||||
cid=cid,
|
||||
@ -950,6 +954,7 @@ class IndexConstraintView(PGChildNodeView):
|
||||
if is_pgstattuple:
|
||||
# Fetch index details only if extended stats available
|
||||
sql = render_template("/".join([self.template_path, 'properties.sql']),
|
||||
did=did,
|
||||
tid=tid,
|
||||
cid=cid,
|
||||
constraint_type=self.constraint_type)
|
||||
|
@ -85,7 +85,7 @@ function($, _, S, pgAdmin, pgBrowser, alertify) {
|
||||
name: undefined,
|
||||
oid: undefined,
|
||||
comment: undefined,
|
||||
spcname: "pg_default",
|
||||
spcname: undefined,
|
||||
index: undefined,
|
||||
fillfactor: undefined,
|
||||
condeferrable: undefined,
|
||||
|
@ -521,7 +521,7 @@ class IndexesView(PGChildNodeView):
|
||||
|
||||
SQL = render_template("/".join([self.template_path,
|
||||
'properties.sql']),
|
||||
tid=tid, idx=idx,
|
||||
did=did, tid=tid, idx=idx,
|
||||
datlastsysoid=self.datlastsysoid)
|
||||
|
||||
status, res = self.conn.execute_dict(SQL)
|
||||
@ -665,7 +665,7 @@ class IndexesView(PGChildNodeView):
|
||||
# so that we create template for dropping index
|
||||
SQL = render_template("/".join([self.template_path,
|
||||
'properties.sql']),
|
||||
tid=tid, idx=idx,
|
||||
did=did, tid=tid, idx=idx,
|
||||
datlastsysoid=self.datlastsysoid)
|
||||
|
||||
status, res = self.conn.execute_dict(SQL)
|
||||
@ -723,7 +723,7 @@ class IndexesView(PGChildNodeView):
|
||||
data['schema'] = self.schema
|
||||
data['table'] = self.table
|
||||
try:
|
||||
SQL, name = self.get_sql(scid, tid, idx, data)
|
||||
SQL, name = self.get_sql(did, scid, tid, idx, data)
|
||||
SQL = SQL.strip('\n').strip(' ')
|
||||
status, res = self.conn.execute_scalar(SQL)
|
||||
if not status:
|
||||
@ -765,7 +765,7 @@ class IndexesView(PGChildNodeView):
|
||||
data['table'] = self.table
|
||||
|
||||
try:
|
||||
sql, name = self.get_sql(scid, tid, idx, data, mode='create')
|
||||
sql, name = self.get_sql(did, scid, tid, idx, data, mode='create')
|
||||
sql = sql.strip('\n').strip(' ')
|
||||
if sql == '':
|
||||
sql = "--modified SQL"
|
||||
@ -776,14 +776,14 @@ class IndexesView(PGChildNodeView):
|
||||
except Exception as e:
|
||||
return internal_server_error(errormsg=str(e))
|
||||
|
||||
def get_sql(self, scid, tid, idx, data, mode=None):
|
||||
def get_sql(self, did, scid, tid, idx, data, mode=None):
|
||||
"""
|
||||
This function will genrate sql from model data
|
||||
"""
|
||||
if idx is not None:
|
||||
SQL = render_template("/".join([self.template_path,
|
||||
'properties.sql']),
|
||||
tid=tid, idx=idx,
|
||||
did=did, tid=tid, idx=idx,
|
||||
datlastsysoid=self.datlastsysoid)
|
||||
|
||||
status, res = self.conn.execute_dict(SQL)
|
||||
@ -842,7 +842,7 @@ class IndexesView(PGChildNodeView):
|
||||
try:
|
||||
SQL = render_template("/".join([self.template_path,
|
||||
'properties.sql']),
|
||||
tid=tid, idx=idx,
|
||||
did=did, tid=tid, idx=idx,
|
||||
datlastsysoid=self.datlastsysoid)
|
||||
|
||||
status, res = self.conn.execute_dict(SQL)
|
||||
@ -857,7 +857,7 @@ class IndexesView(PGChildNodeView):
|
||||
# Add column details for current index
|
||||
data = self._column_details(idx, data)
|
||||
|
||||
SQL, name = self.get_sql(scid, tid, None, data)
|
||||
SQL, name = self.get_sql(did, scid, tid, None, data)
|
||||
|
||||
sql_header = "-- Index: {0}\n\n-- ".format(data['name'])
|
||||
if hasattr(str, 'decode'):
|
||||
@ -955,7 +955,7 @@ class IndexesView(PGChildNodeView):
|
||||
# Fetch index details only if extended stats available
|
||||
SQL = render_template("/".join([self.template_path,
|
||||
'properties.sql']),
|
||||
tid=tid, idx=idx,
|
||||
did=did, tid=tid, idx=idx,
|
||||
datlastsysoid=self.datlastsysoid)
|
||||
status, res = self.conn.execute_dict(SQL)
|
||||
if not status:
|
||||
|
@ -259,7 +259,7 @@ function($, _, S, pgAdmin, pgBrowser, Backform, alertify) {
|
||||
oid: undefined,
|
||||
nspname: undefined,
|
||||
tabname: undefined,
|
||||
spcname: 'pg_default',
|
||||
spcname: undefined,
|
||||
amname: 'btree'
|
||||
},
|
||||
schema: [{
|
||||
|
@ -2,7 +2,11 @@ SELECT cls.oid,
|
||||
cls.relname as name,
|
||||
indnatts,
|
||||
amname,
|
||||
COALESCE(spcname, 'pg_default') as spcname,
|
||||
CASE WHEN length(spcname) > 0 THEN spcname ELSE
|
||||
(SELECT sp.spcname FROM pg_database dtb
|
||||
JOIN pg_tablespace sp ON dtb.dattablespace=sp.oid
|
||||
WHERE dtb.oid = {{ did }}::oid)
|
||||
END as spcname,
|
||||
CASE contype
|
||||
WHEN 'p' THEN desp.description
|
||||
WHEN 'u' THEN desp.description
|
||||
|
@ -1,6 +1,11 @@
|
||||
SELECT DISTINCT ON(cls.relname) cls.oid, cls.relname as name, indrelid, indkey, indisclustered,
|
||||
indisvalid, indisunique, indisprimary, n.nspname,indnatts,cls.reltablespace AS spcoid,
|
||||
COALESCE(spcname, 'pg_default') as spcname, tab.relname as tabname, indclass, con.oid AS conoid,
|
||||
CASE WHEN length(spcname) > 0 THEN spcname ELSE
|
||||
(SELECT sp.spcname FROM pg_database dtb
|
||||
JOIN pg_tablespace sp ON dtb.dattablespace=sp.oid
|
||||
WHERE dtb.oid = {{ did }}::oid)
|
||||
END as spcname,
|
||||
tab.relname as tabname, indclass, con.oid AS conoid,
|
||||
CASE WHEN contype IN ('p', 'u', 'x') THEN desp.description
|
||||
ELSE des.description END AS description,
|
||||
pg_get_expr(indpred, indrelid, true) as indconstraint, contype, condeferrable, condeferred, amname,
|
||||
|
@ -1,7 +1,11 @@
|
||||
SELECT cls.oid,
|
||||
cls.relname as name,
|
||||
indnatts,
|
||||
COALESCE(spcname, 'pg_default') as spcname,
|
||||
CASE WHEN length(spcname) > 0 THEN spcname ELSE
|
||||
(SELECT sp.spcname FROM pg_database dtb
|
||||
JOIN pg_tablespace sp ON dtb.dattablespace=sp.oid
|
||||
WHERE dtb.oid = {{ did }}::oid)
|
||||
END as spcname,
|
||||
CASE contype
|
||||
WHEN 'p' THEN desp.description
|
||||
WHEN 'u' THEN desp.description
|
||||
|
@ -253,7 +253,7 @@ function($, _, S, pgAdmin, pgBrowser, alertify) {
|
||||
name: undefined,
|
||||
oid: undefined,
|
||||
spcoid: undefined,
|
||||
spcname: 'pg_default',
|
||||
spcname: undefined,
|
||||
relowner: undefined,
|
||||
relacl: undefined,
|
||||
relhasoids: undefined,
|
||||
@ -315,7 +315,7 @@ function($, _, S, pgAdmin, pgBrowser, alertify) {
|
||||
},{
|
||||
id: 'spcname', label:'{{ _('Tablespace') }}', node: 'tablespace',
|
||||
type: 'text', control: 'node-list-by-name', disabled: 'inSchema',
|
||||
mode: ['properties', 'create', 'edit'], select2:{allowClear:false},
|
||||
mode: ['properties', 'create', 'edit'],
|
||||
filter: function(d) {
|
||||
// If tablespace name is not "pg_global" then we need to exclude them
|
||||
return (!(d && d.label.match(/pg_global/)))
|
||||
|
@ -79,10 +79,12 @@ WITH (
|
||||
toast.{{opt.name}} = {{opt.value}}{% endif %}
|
||||
{% endfor %}{% endif %}
|
||||
|
||||
)
|
||||
{### SQL for Tablespace ###}
|
||||
{% if data.spcname %}
|
||||
)
|
||||
TABLESPACE {{ conn|qtIdent(data.spcname) }};
|
||||
{% else %}
|
||||
);
|
||||
{% endif %}
|
||||
{### Alter SQL for Owner ###}
|
||||
{% if data.relowner %}
|
||||
|
@ -1,5 +1,9 @@
|
||||
SELECT rel.oid, rel.relname AS name, rel.reltablespace AS spcoid,rel.relacl AS relacl_str,
|
||||
(CASE WHEN length(spc.spcname) > 0 THEN spc.spcname ELSE 'pg_default' END) as spcname,
|
||||
(CASE WHEN length(spc.spcname) > 0 THEN spc.spcname ELSE
|
||||
(SELECT sp.spcname FROM pg_database dtb
|
||||
JOIN pg_tablespace sp ON dtb.dattablespace=sp.oid
|
||||
WHERE dtb.oid = {{ did }}::oid)
|
||||
END) as spcname,
|
||||
(select nspname FROM pg_namespace WHERE oid = {{scid}}::oid ) as schema,
|
||||
pg_get_userbyid(rel.relowner) AS relowner, rel.relhasoids,
|
||||
rel.relhassubclass, rel.reltuples, des.description, con.conname, con.conkey,
|
||||
|
@ -320,7 +320,7 @@ class ViewNode(PGChildNodeView, VacuumSettings):
|
||||
Fetches all views properties and render into properties tab
|
||||
"""
|
||||
SQL = render_template("/".join(
|
||||
[self.template_path, 'sql/properties.sql']), scid=scid)
|
||||
[self.template_path, 'sql/properties.sql']), did=did, scid=scid)
|
||||
status, res = self.conn.execute_dict(SQL)
|
||||
|
||||
if not status:
|
||||
@ -462,7 +462,7 @@ class ViewNode(PGChildNodeView, VacuumSettings):
|
||||
)
|
||||
)
|
||||
try:
|
||||
SQL, nameOrError = self.getSQL(gid, sid, data)
|
||||
SQL, nameOrError = self.getSQL(gid, sid, did, data)
|
||||
if SQL is None:
|
||||
return nameOrError
|
||||
SQL = SQL.strip('\n').strip(' ')
|
||||
@ -506,7 +506,7 @@ class ViewNode(PGChildNodeView, VacuumSettings):
|
||||
request.data, encoding='utf-8'
|
||||
)
|
||||
try:
|
||||
SQL, nameOrError = self.getSQL(gid, sid, data, vid)
|
||||
SQL, nameOrError = self.getSQL(gid, sid, did, data, vid)
|
||||
if SQL is None:
|
||||
return nameOrError
|
||||
SQL = SQL.strip('\n').strip(' ')
|
||||
@ -557,6 +557,7 @@ class ViewNode(PGChildNodeView, VacuumSettings):
|
||||
"/".join([
|
||||
self.template_path, 'sql/properties.sql'
|
||||
]),
|
||||
did=did,
|
||||
vid=vid,
|
||||
datlastsysoid=self.datlastsysoid
|
||||
)
|
||||
@ -631,7 +632,7 @@ class ViewNode(PGChildNodeView, VacuumSettings):
|
||||
except ValueError:
|
||||
data[k] = v
|
||||
|
||||
sql, nameOrError = self.getSQL(gid, sid, data, vid)
|
||||
sql, nameOrError = self.getSQL(gid, sid, did, data, vid)
|
||||
if sql is None:
|
||||
return nameOrError
|
||||
|
||||
@ -645,7 +646,7 @@ class ViewNode(PGChildNodeView, VacuumSettings):
|
||||
status=200
|
||||
)
|
||||
|
||||
def getSQL(self, gid, sid, data, vid=None):
|
||||
def getSQL(self, gid, sid, did, data, vid=None):
|
||||
"""
|
||||
This function will generate sql from model data
|
||||
"""
|
||||
@ -901,7 +902,7 @@ class ViewNode(PGChildNodeView, VacuumSettings):
|
||||
|
||||
return SQL_data
|
||||
|
||||
def get_index_sql(self, vid):
|
||||
def get_index_sql(self, did, vid):
|
||||
"""
|
||||
Get all index associated with view node,
|
||||
generate their sql and render
|
||||
@ -910,10 +911,12 @@ class ViewNode(PGChildNodeView, VacuumSettings):
|
||||
|
||||
self.index_temp_path = 'index'
|
||||
SQL_data = ''
|
||||
SQL = render_template("/".join(
|
||||
[self.index_temp_path, 'sql/#{0}#/properties.sql'.format(self.manager.version)]),
|
||||
did=did,
|
||||
tid=vid)
|
||||
status, data = self.conn.execute_dict(SQL)
|
||||
if not status:
|
||||
SQL = render_template("/".join(
|
||||
[self.index_temp_path, 'sql/#{0}#/properties.sql'.format(self.manager.version)]), tid=vid)
|
||||
return internal_server_error(errormsg=data)
|
||||
|
||||
for index in data['rows']:
|
||||
@ -921,6 +924,7 @@ class ViewNode(PGChildNodeView, VacuumSettings):
|
||||
SQL = render_template("/".join(
|
||||
[self.index_temp_path, 'sql/#{0}#/properties.sql'.format(self.manager.version)]),
|
||||
idx=index['oid'],
|
||||
did=did,
|
||||
tid=vid
|
||||
)
|
||||
status, res = self.conn.execute_dict(SQL)
|
||||
@ -1007,7 +1011,7 @@ class ViewNode(PGChildNodeView, VacuumSettings):
|
||||
SQL_data += SQL
|
||||
SQL_data += self.get_rule_sql(vid)
|
||||
SQL_data += self.get_trigger_sql(vid)
|
||||
SQL_data += self.get_index_sql(vid)
|
||||
SQL_data += self.get_index_sql(did, vid)
|
||||
|
||||
return ajax_response(response=SQL_data)
|
||||
|
||||
@ -1259,13 +1263,14 @@ class MViewNode(ViewNode, VacuumSettings):
|
||||
'9.3_plus'
|
||||
)
|
||||
|
||||
def getSQL(self, gid, sid, data, vid=None):
|
||||
def getSQL(self, gid, sid, did, data, vid=None):
|
||||
"""
|
||||
This function will generate sql from model data
|
||||
"""
|
||||
if vid is not None:
|
||||
SQL = render_template("/".join(
|
||||
[self.template_path, 'sql/properties.sql']),
|
||||
did=did,
|
||||
vid=vid,
|
||||
datlastsysoid=self.datlastsysoid
|
||||
)
|
||||
@ -1452,6 +1457,7 @@ class MViewNode(ViewNode, VacuumSettings):
|
||||
SQL_data = ''
|
||||
SQL = render_template("/".join(
|
||||
[self.template_path, 'sql/properties.sql']),
|
||||
did=did,
|
||||
vid=vid,
|
||||
datlastsysoid=self.datlastsysoid
|
||||
)
|
||||
@ -1530,7 +1536,7 @@ class MViewNode(ViewNode, VacuumSettings):
|
||||
SQL_data += SQL
|
||||
SQL_data += self.get_rule_sql(vid)
|
||||
SQL_data += self.get_trigger_sql(vid)
|
||||
SQL_data += self.get_index_sql(vid)
|
||||
SQL_data += self.get_index_sql(did, vid)
|
||||
SQL_data = SQL_data.strip('\n')
|
||||
return ajax_response(response=SQL_data)
|
||||
|
||||
@ -1576,7 +1582,7 @@ class MViewNode(ViewNode, VacuumSettings):
|
||||
"""
|
||||
SQL = render_template("/".join(
|
||||
[self.template_path, 'sql/properties.sql']
|
||||
), vid=vid, datlastsysoid=self.datlastsysoid)
|
||||
), did=did, vid=vid, datlastsysoid=self.datlastsysoid)
|
||||
status, res = self.conn.execute_dict(SQL)
|
||||
if not status:
|
||||
return internal_server_error(errormsg=res)
|
||||
|
@ -126,7 +126,7 @@ function($, _, S, pgAdmin, alertify, pgBrowser, CodeMirror) {
|
||||
pgBrowser.Node.Model.prototype.initialize.apply(this, arguments);
|
||||
},
|
||||
defaults: {
|
||||
spcname: 'pg_default',
|
||||
spcname: undefined,
|
||||
toast_autovacuum_enabled: false,
|
||||
autovacuum_enabled: false
|
||||
},
|
||||
|
@ -6,7 +6,11 @@ SELECT
|
||||
c.relname AS name,
|
||||
c.reltablespace AS spcoid,
|
||||
c.relispopulated AS with_data,
|
||||
(CASE WHEN length(spc.spcname) > 0 THEN spc.spcname ELSE 'pg_default' END) as spcname,
|
||||
CASE WHEN length(spcname) > 0 THEN spcname ELSE
|
||||
(SELECT sp.spcname FROM pg_database dtb
|
||||
JOIN pg_tablespace sp ON dtb.dattablespace=sp.oid
|
||||
WHERE dtb.oid = {{ did }}::oid)
|
||||
END as spcname,
|
||||
c.relacl,
|
||||
nsp.nspname as schema,
|
||||
pg_get_userbyid(c.relowner) AS owner,
|
||||
|
@ -6,7 +6,11 @@ SELECT
|
||||
c.relname AS name,
|
||||
c.reltablespace AS spcoid,
|
||||
c.relispopulated AS with_data,
|
||||
(CASE WHEN length(spc.spcname) > 0 THEN spc.spcname ELSE 'pg_default' END) as spcname,
|
||||
CASE WHEN length(spcname) > 0 THEN spcname ELSE
|
||||
(SELECT sp.spcname FROM pg_database dtb
|
||||
JOIN pg_tablespace sp ON dtb.dattablespace=sp.oid
|
||||
WHERE dtb.oid = {{ did }}::oid)
|
||||
END as spcname,
|
||||
c.relacl,
|
||||
nsp.nspname as schema,
|
||||
pg_get_userbyid(c.relowner) AS owner,
|
||||
|
@ -6,7 +6,11 @@ SELECT
|
||||
c.relname AS name,
|
||||
c.reltablespace AS spcoid,
|
||||
c.relispopulated AS with_data,
|
||||
(CASE WHEN length(spc.spcname) > 0 THEN spc.spcname ELSE 'pg_default' END) as spcname,
|
||||
CASE WHEN length(spcname) > 0 THEN spcname ELSE
|
||||
(SELECT sp.spcname FROM pg_database dtb
|
||||
JOIN pg_tablespace sp ON dtb.dattablespace=sp.oid
|
||||
WHERE dtb.oid = {{ did }}::oid)
|
||||
END as spcname,
|
||||
c.relacl,
|
||||
nsp.nspname as schema,
|
||||
pg_get_userbyid(c.relowner) AS owner,
|
||||
|
Loading…
Reference in New Issue
Block a user