Hi,
Please find the attached rebased patch.
Thanks,
Khushboo
On Mon, Jan 30, 2017 at 6:20 PM, Dave Page <[email protected]> wrote:
> Hi
>
> Can you rebase this please?
>
> Thanks.
>
> On Fri, Jan 27, 2017 at 11:53 AM, Khushboo Vashi
> <[email protected]> wrote:
> > Hi,
> >
> > Please find the attached updated patch.
> >
> > Thanks,
> > Khushboo
> >
> > On Fri, Jan 20, 2017 at 5:31 PM, Dave Page <[email protected]> wrote:
> >>
> >> On Fri, Jan 13, 2017 at 6:41 AM, Khushboo Vashi
> >> <[email protected]> wrote:
> >> > Hi,
> >> >
> >> > Please find the attached patch to fix the RM 2069 - Wrong tablespace
> >> > displayed in table properties.
> >> >
> >> > When the table is created without a tablespace, the "pg_default"
> >> > tablespace
> >> > gets selected rather than the default tablespace (the current database
> >> > tablespace).
> >> > So, this issue has been fixed.
> >>
> >> Unfortunately more work is required. I started hacking on it (see
> >> attached), but there is more effort needed and I'm out of time.
> >> Specifically:
> >>
> >> - We need to remove 'pg_default' as the default tablespace when
> >> creating objects. Let's have no default, and let PG automatically pick
> >> the right tablespace, unless the user specifically overrides it. My
> >> updated patch removes that default, and fixes some of the SQL to
> >> handle it.
> >>
> > Done
> >>
> >> - Matviews don't list the correct tablespace in their properties list.
> >>
> > Done
> >>
> >> - Unique constraints ignore the tablespace option if the user selects
> >> pg_default, even if the database's default is something different.
> >>
> > Done
> >>
> >> So I think to complete this we need to review all objects that use
> >> tablespaces (databases, tables, matviews, indexes, index-backed
> >> constraints) and ensure:
> >>
> > Done
> >>
> >> - No default tablespace is selected when creating an object.
> >>
> > Done
> >>
> >> - If the user selects a tablespace, the CREATE SQL must handle it
> >> properly. Similarly, if they leave it to the default.
> >>
> > Done
> >>
> >> - The Properties views must display the actual tablespace in use,
> >> whether it is specific to the object, or the database default.
> >>
> > Done
> >>
> >> Thanks.
> >>
> >> --
> >> Dave Page
> >> Blog: http://pgsnake.blogspot.com
> >> Twitter: @pgsnake
> >>
> >> EnterpriseDB UK: http://www.enterprisedb.com
> >> The Enterprise PostgreSQL Company
> >
> >
>
>
>
> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/__init__.py
index 9292989..7921f8e 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/__init__.py
@@ -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:
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/__init__.py
index 06e9022..036dbc4 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/__init__.py
@@ -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)
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/templates/exclusion_constraint/js/exclusion_constraint.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/templates/exclusion_constraint/js/exclusion_constraint.js
index e7bd905..02b77e1 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/templates/exclusion_constraint/js/exclusion_constraint.js
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/templates/exclusion_constraint/js/exclusion_constraint.js
@@ -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,
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/__init__.py
index dc5c461..d337119 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/__init__.py
@@ -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)
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/templates/index_constraint/js/index_constraint.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/templates/index_constraint/js/index_constraint.js
index f552972..6439caf 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/templates/index_constraint/js/index_constraint.js
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/templates/index_constraint/js/index_constraint.js
@@ -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,
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/__init__.py
index e5093a2..4403cd8 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/__init__.py
@@ -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:
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/templates/index/js/index.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/templates/index/js/index.js
index 6f46265..7ca2da4 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/templates/index/js/index.js
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/templates/index/js/index.js
@@ -259,7 +259,7 @@ function($, _, S, pgAdmin, pgBrowser, Backform, alertify) {
oid: undefined,
nspname: undefined,
tabname: undefined,
- spcname: 'pg_default',
+ spcname: undefined,
amname: 'btree'
},
schema: [{
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/properties.sql
index 3a1c897..ba3a981 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/properties.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/properties.sql
@@ -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
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index/sql/default/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index/sql/default/properties.sql
index 2641d4c..1204234 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index/sql/default/properties.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index/sql/default/properties.sql
@@ -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,
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index_constraint/sql/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index_constraint/sql/properties.sql
index 0eabdd7..9e392eb 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index_constraint/sql/properties.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index_constraint/sql/properties.sql
@@ -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
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/table/js/table.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/table/js/table.js
index c87a293..2552cc7 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/table/js/table.js
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/table/js/table.js
@@ -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/)))
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/table/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/table/sql/default/create.sql
index ba91ac5..d7136f7 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/table/sql/default/create.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/table/sql/default/create.sql
@@ -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 %}
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/table/sql/default/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/table/sql/default/properties.sql
index d995d00..9bfb84a 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/table/sql/default/properties.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/table/sql/default/properties.sql
@@ -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,
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/__init__.py
index ff43312..08bdd0c 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/__init__.py
@@ -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(' ')
@@ -631,7 +631,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 +645,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 +901,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 +910,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 +923,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 +1010,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 +1262,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 +1456,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 +1535,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 +1581,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)
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mview/js/mview.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mview/js/mview.js
index e233b5c..e32594c 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mview/js/mview.js
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mview/js/mview.js
@@ -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
},
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mview/pg/9.3_plus/sql/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mview/pg/9.3_plus/sql/properties.sql
index 8a70522..eb36c91 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mview/pg/9.3_plus/sql/properties.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mview/pg/9.3_plus/sql/properties.sql
@@ -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,
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mview/pg/9.4_plus/sql/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mview/pg/9.4_plus/sql/properties.sql
index 8a70522..eb36c91 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mview/pg/9.4_plus/sql/properties.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mview/pg/9.4_plus/sql/properties.sql
@@ -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,
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mview/ppas/9.3_plus/sql/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mview/ppas/9.3_plus/sql/properties.sql
index 8a70522..eb36c91 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mview/ppas/9.3_plus/sql/properties.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mview/ppas/9.3_plus/sql/properties.sql
@@ -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,
--
Sent via pgadmin-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers