Hi, Please find the attached rebased patch.
Thanks, Khushboo On Mon, Jan 30, 2017 at 6:20 PM, Dave Page <dp...@pgadmin.org> wrote: > Hi > > Can you rebase this please? > > Thanks. > > On Fri, Jan 27, 2017 at 11:53 AM, Khushboo Vashi > <khushboo.va...@enterprisedb.com> wrote: > > Hi, > > > > Please find the attached updated patch. > > > > Thanks, > > Khushboo > > > > On Fri, Jan 20, 2017 at 5:31 PM, Dave Page <dp...@pgadmin.org> wrote: > >> > >> On Fri, Jan 13, 2017 at 6:41 AM, Khushboo Vashi > >> <khushboo.va...@enterprisedb.com> 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 (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers