diff --git a/web/pgadmin/browser/server_groups/servers/databases/casts/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/casts/__init__.py
index 7068a0805..28011bb46 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/casts/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/casts/__init__.py
@@ -206,6 +206,11 @@ class CastView(PGChildNodeView):
             # Set template path for the SQL scripts
             self.template_path = 'casts/sql/#{0}#'.format(self.manager.version)
 
+            self.datlastsysoid = \
+                self.manager.db_info[kwargs['did']]['datlastsysoid'] \
+                if self.manager.db_info is not None and \
+                kwargs['did'] in self.manager.db_info else 0
+
             return f(*args, **kwargs)
 
         return wrap
@@ -220,9 +225,7 @@ class CastView(PGChildNodeView):
         :return:
         """
         last_system_oid = 0 if self.blueprint.show_system_objects else \
-            (self.manager.db_info[did])['datlastsysoid'] \
-            if self.manager.db_info is not None and \
-            did in self.manager.db_info else 0
+            self.datlastsysoid
         sql = render_template(
             "/".join([self.template_path, self._PROPERTIES_SQL]),
             datlastsysoid=last_system_oid,
@@ -254,9 +257,8 @@ class CastView(PGChildNodeView):
         """
         res = []
         last_system_oid = 0 if self.blueprint.show_system_objects else \
-            (self.manager.db_info[did])['datlastsysoid'] \
-            if self.manager.db_info is not None and \
-            did in self.manager.db_info else 0
+            self.datlastsysoid
+
         sql = render_template(
             "/".join([self.template_path, self._NODES_SQL]),
             datlastsysoid=last_system_oid,
@@ -316,13 +318,10 @@ class CastView(PGChildNodeView):
         :param cid: cast id
         :return:
         """
-        last_system_oid = (self.manager.db_info[did])['datlastsysoid'] if \
-            self.manager.db_info is not None and \
-            did in self.manager.db_info else 0
         sql = render_template(
             "/".join([self.template_path, self._PROPERTIES_SQL]),
             cid=cid,
-            datlastsysoid=last_system_oid,
+            datlastsysoid=self.datlastsysoid,
             showsysobj=self.blueprint.show_system_objects
         )
         status, res = self.conn.execute_dict(sql)
@@ -380,9 +379,7 @@ class CastView(PGChildNodeView):
             # we need oid to to add object in tree at browser, below sql will
             # gives the same
             last_system_oid = 0 if self.blueprint.show_system_objects else \
-                (self.manager.db_info[did])['datlastsysoid'] \
-                if self.manager.db_info is not None and \
-                did in self.manager.db_info else 0
+                self.datlastsysoid
             sql = render_template(
                 "/".join([self.template_path, self._PROPERTIES_SQL]),
                 srctyp=data['srctyp'],
@@ -541,9 +538,7 @@ class CastView(PGChildNodeView):
         """
         if cid is not None:
             last_system_oid = 0 if self.blueprint.show_system_objects else \
-                (self.manager.db_info[did])['datlastsysoid'] \
-                if self.manager.db_info is not None and \
-                did in self.manager.db_info else 0
+                self.datlastsysoid
             sql = render_template(
                 "/".join([self.template_path, self._PROPERTIES_SQL]),
                 cid=cid,
diff --git a/web/pgadmin/browser/server_groups/servers/databases/external_tables/actions/get_all_nodes.py b/web/pgadmin/browser/server_groups/servers/databases/external_tables/actions/get_all_nodes.py
deleted file mode 100644
index a06bc0b3f..000000000
--- a/web/pgadmin/browser/server_groups/servers/databases/external_tables/actions/get_all_nodes.py
+++ /dev/null
@@ -1,4 +0,0 @@
-
-class GetAllNodes:
-    def execute(self):
-        pass
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/__init__.py
index f4506c032..7961e25d2 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/__init__.py
@@ -520,19 +520,11 @@ class CollationView(PGChildNodeView, SchemaDiffObjectCompare):
            coid: Collation ID
            only_sql: Return only sql if True
         """
-        if coid is None:
-            data = request.form if request.form else json.loads(
-                request.data, encoding='utf-8'
-            )
-        else:
-            data = {'ids': [coid]}
+        data = json.loads(request.data, encoding='utf-8') if coid is None \
+            else {'ids': [coid]}
 
         # Below will decide if it's simple drop or drop with cascade call
-        if self.cmd == 'delete':
-            # This is a cascade operation
-            cascade = True
-        else:
-            cascade = False
+        cascade = True if self.cmd == 'delete' else False
 
         try:
             for coid in data['ids']:
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 5b003ebf4..7f79e1f16 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
@@ -9,7 +9,6 @@
 
 """Implements View and Materialized View Node"""
 
-import copy
 import re
 from functools import wraps
 
@@ -1709,146 +1708,162 @@ class MViewNode(ViewNode, VacuumSettings):
             '9.3_plus'
         )
 
-    def getSQL(self, gid, sid, did, data, vid=None):
+    @staticmethod
+    def merge_to_vacuum_data(old_data, data, vacuum_key):
         """
-        This function will generate sql from model data
+        Used by getSQL method to merge vacuum data
         """
-        if vid is not None:
-            status, res = self._fetch_properties(did, None, vid)
+        if vacuum_key not in data:
+            return
 
-            if not status:
-                return res
-
-            old_data = res
-
-            if 'name' not in data:
-                data['name'] = res['name']
-            if 'schema' not in data:
-                data['schema'] = res['schema']
-
-            # merge vacuum lists into one
-            data['vacuum_data'] = {}
-            data['vacuum_data']['changed'] = []
-            data['vacuum_data']['reset'] = []
-
-            # table vacuum: separate list of changed and reset data for
-            if 'vacuum_table' in data and 'changed' in data['vacuum_table']:
-                for item in data['vacuum_table']['changed']:
-                    if 'value' in item.keys():
-                        if item['value'] is None:
-                            if old_data[item['name']] != item['value']:
-                                data['vacuum_data']['reset'].append(item)
-                        else:
-                            if (old_data[item['name']] is None or
-                                (float(old_data[item['name']]) != float(
-                                    item['value']))):
-                                data['vacuum_data']['changed'].append(item)
-
-            # toast autovacuum: separate list of changed and reset data
-            if 'vacuum_toast' in data and 'changed' in data['vacuum_toast']:
-                for item in data['vacuum_toast']['changed']:
-                    if 'value' in item.keys():
-                        toast_key = 'toast_' + item['name']
-                        item['name'] = 'toast.' + item['name']
-                        if item['value'] is None:
-                            if old_data[toast_key] != item['value']:
-                                data['vacuum_data']['reset'].append(item)
-                        else:
-                            if (old_data[toast_key] is None or
-                                (float(old_data[toast_key]) != float(
-                                    item['value']))):
-                                data['vacuum_data']['changed'].append(item)
-
-            acls = []
-            try:
-                acls = render_template(
-                    "/".join([self.template_path, 'sql/allowed_privs.json'])
+        if 'changed' not in data[vacuum_key]:
+            return
+
+        for item in data[vacuum_key]['changed']:
+            old_data_item_key = item['name']
+            if vacuum_key == 'vacuum_toast':
+                old_data_item_key = 'toast_' + item['name']
+                item['name'] = 'toast.' + item['name']
+
+            if 'value' not in item.keys():
+                continue
+            if item['value'] is None and \
+                    old_data[old_data_item_key] is not None:
+                data['vacuum_data']['reset'].append(item)
+            elif old_data[old_data_item_key] is None or \
+                float(old_data[old_data_item_key]) != \
+                    float(item['value']):
+                data['vacuum_data']['changed'].append(item)
+
+    def _getSQL_existing(self, did, data, vid):
+        """
+        Used by getSQL to get SQL for existing mview.
+        """
+        status, res = self._fetch_properties(did, None, vid)
+
+        if not status:
+            return res
+
+        old_data = res
+
+        if 'name' not in data:
+            data['name'] = res['name']
+        if 'schema' not in data:
+            data['schema'] = res['schema']
+
+        # merge vacuum lists into one
+        data['vacuum_data'] = {}
+        data['vacuum_data']['changed'] = []
+        data['vacuum_data']['reset'] = []
+
+        # table vacuum: separate list of changed and reset data for
+        self.merge_to_vacuum_data(old_data, data, 'vacuum_table')
+        # table vacuum toast: separate list of changed and reset data for
+        self.merge_to_vacuum_data(old_data, data, 'vacuum_toast')
+
+        acls = []
+        try:
+            acls = render_template(
+                "/".join([self.template_path, 'sql/allowed_privs.json'])
+            )
+            acls = json.loads(acls, encoding='utf-8')
+        except Exception as e:
+            current_app.logger.exception(e)
+
+        # Privileges
+        for aclcol in acls:
+            if aclcol in data:
+                allowedacl = acls[aclcol]
+
+                for key in ['added', 'changed', 'deleted']:
+                    if key in data[aclcol]:
+                        data[aclcol][key] = parse_priv_to_db(
+                            data[aclcol][key], allowedacl['acl']
+                        )
+
+        try:
+            SQL = render_template("/".join(
+                [self.template_path, 'sql/update.sql']), data=data,
+                o_data=old_data, conn=self.conn)
+        except Exception as e:
+            current_app.logger.exception(e)
+            return None, internal_server_error(errormsg=str(e))
+
+        return SQL, old_data['name']
+
+    def _getSQL_new(self, data):
+        """
+        Used by getSQL to get SQL for new mview.
+        """
+        required_args = [
+            'name',
+            'schema',
+            'definition'
+        ]
+        for arg in required_args:
+            if arg not in data:
+                return None, make_json_response(
+                    data=gettext(" -- definition incomplete"),
+                    status=200
                 )
-                acls = json.loads(acls, encoding='utf-8')
-            except Exception as e:
-                current_app.logger.exception(e)
 
-            # Privileges
-            for aclcol in acls:
-                if aclcol in data:
-                    allowedacl = acls[aclcol]
+        # Get Schema Name from its OID.
+        if 'schema' in data and isinstance(data['schema'], int):
+            data['schema'] = self._get_schema(data['schema'])
 
-                    for key in ['added', 'changed', 'deleted']:
-                        if key in data[aclcol]:
-                            data[aclcol][key] = parse_priv_to_db(
-                                data[aclcol][key], allowedacl['acl']
-                            )
+        # merge vacuum lists into one
+        vacuum_table = [item for item in data.get('vacuum_table', [])
+                        if 'value' in item.keys() and
+                        item['value'] is not None]
+        vacuum_toast = [
+            {'name': 'toast.' + item['name'], 'value': item['value']}
+            for item in data.get('vacuum_toast', [])
+            if 'value' in item.keys() and item['value'] is not None]
 
-            try:
-                SQL = render_template("/".join(
-                    [self.template_path, 'sql/update.sql']), data=data,
-                    o_data=old_data, conn=self.conn)
-            except Exception as e:
-                current_app.logger.exception(e)
-                return None, internal_server_error(errormsg=str(e))
-        else:
-            required_args = [
-                'name',
-                'schema',
-                'definition'
-            ]
-            for arg in required_args:
-                if arg not in data:
-                    return None, make_json_response(
-                        data=gettext(" -- definition incomplete"),
-                        status=200
-                    )
+        # add vacuum_toast dict to vacuum_data
+        data['vacuum_data'] = []
+        if data.get('autovacuum_custom', False):
+            data['vacuum_data'] = vacuum_table
 
-            # Get Schema Name from its OID.
-            if 'schema' in data and isinstance(data['schema'], int):
-                data['schema'] = self._get_schema(data['schema'])
-
-            # merge vacuum lists into one
-            vacuum_table = [item for item in data.get('vacuum_table', [])
-                            if 'value' in item.keys() and
-                            item['value'] is not None]
-            vacuum_toast = [
-                {'name': 'toast.' + item['name'], 'value': item['value']}
-                for item in data.get('vacuum_toast', [])
-                if 'value' in item.keys() and item['value'] is not None]
-
-            # add vacuum_toast dict to vacuum_data
-            data['vacuum_data'] = []
-            if (
-                'autovacuum_custom' in data and
-                data['autovacuum_custom'] is True
-            ):
-                data['vacuum_data'] = vacuum_table
-            if (
-                'toast_autovacuum' in data and
-                data['toast_autovacuum'] is True
-            ):
-                data['vacuum_data'] += vacuum_toast
+        if data.get('toast_autovacuum', False):
+            data['vacuum_data'] += vacuum_toast
 
-            acls = []
-            try:
-                acls = render_template(
-                    "/".join([self.template_path, 'sql/allowed_privs.json'])
+        acls = []
+        try:
+            acls = render_template(
+                "/".join([self.template_path, 'sql/allowed_privs.json'])
+            )
+            acls = json.loads(acls, encoding='utf-8')
+        except Exception as e:
+            current_app.logger.exception(e)
+
+        # Privileges
+        for aclcol in acls:
+            if aclcol in data:
+                allowedacl = acls[aclcol]
+                data[aclcol] = parse_priv_to_db(
+                    data[aclcol], allowedacl['acl']
                 )
-                acls = json.loads(acls, encoding='utf-8')
-            except Exception as e:
-                current_app.logger.exception(e)
 
-            # Privileges
-            for aclcol in acls:
-                if aclcol in data:
-                    allowedacl = acls[aclcol]
-                    data[aclcol] = parse_priv_to_db(
-                        data[aclcol], allowedacl['acl']
-                    )
+        SQL = render_template("/".join(
+            [self.template_path, 'sql/create.sql']), data=data)
+        if data['definition']:
+            SQL += "\n"
+            SQL += render_template("/".join(
+                [self.template_path, 'sql/grant.sql']), data=data)
 
-            SQL = render_template("/".join(
-                [self.template_path, 'sql/create.sql']), data=data)
-            if data['definition']:
-                SQL += "\n"
-                SQL += render_template("/".join(
-                    [self.template_path, 'sql/grant.sql']), data=data)
-        return SQL, data['name'] if 'name' in data else old_data['name']
+        return SQL, data.get('name', None)
+
+    def getSQL(self, gid, sid, did, data, vid=None):
+        """
+        This function will generate sql from model data
+        """
+        if vid is not None:
+            SQL, old_data_name = self._getSQL_existing(did, data, vid)
+        else:
+            SQL, data_name = self._getSQL_new(data)
+
+        return SQL, old_data_name if data_name is None else data_name
 
     @check_precondition
     def sql(self, gid, sid, did, scid, vid, **kwargs):
