Fixed cognitive complexity issues reported by SonarQube.
parent
1889c256e1
commit
0013a3b047
|
@ -600,6 +600,19 @@ class TableView(BaseTableView, DataTypeReader, VacuumSettings,
|
||||||
gid, sid, did, scid, tid, res=res
|
gid, sid, did, scid, tid, res=res
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _check_rlspolicy_support(res):
|
||||||
|
# Check whether 'rlspolicy' in response as it supported for
|
||||||
|
# version 9.5 and above
|
||||||
|
if 'rlspolicy' in res['rows'][0]:
|
||||||
|
# Set the value of rls policy
|
||||||
|
if res['rows'][0]['rlspolicy'] == "true":
|
||||||
|
res['rows'][0]['rlspolicy'] = True
|
||||||
|
|
||||||
|
# Set the value of force rls policy for table owner
|
||||||
|
if res['rows'][0]['forcerlspolicy'] == "true":
|
||||||
|
res['rows'][0]['forcerlspolicy'] = True
|
||||||
|
|
||||||
def _fetch_properties(self, did, scid, tid):
|
def _fetch_properties(self, did, scid, tid):
|
||||||
"""
|
"""
|
||||||
This function is used to fetch the properties of the specified object
|
This function is used to fetch the properties of the specified object
|
||||||
|
@ -608,16 +621,16 @@ class TableView(BaseTableView, DataTypeReader, VacuumSettings,
|
||||||
:param tid:
|
:param tid:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
SQL = render_template(
|
sql = render_template(
|
||||||
"/".join([self.table_template_path, 'properties.sql']),
|
"/".join([self.table_template_path, 'properties.sql']),
|
||||||
did=did, scid=scid, tid=tid,
|
did=did, scid=scid, tid=tid,
|
||||||
datlastsysoid=self.datlastsysoid
|
datlastsysoid=self.datlastsysoid
|
||||||
)
|
)
|
||||||
status, res = self.conn.execute_dict(SQL)
|
status, res = self.conn.execute_dict(sql)
|
||||||
if not status:
|
if not status:
|
||||||
return False, internal_server_error(errormsg=res)
|
return False, internal_server_error(errormsg=res)
|
||||||
|
|
||||||
if len(res['rows']) == 0:
|
elif len(res['rows']) == 0:
|
||||||
return False, gone(
|
return False, gone(
|
||||||
gettext("The specified table could not be found."))
|
gettext("The specified table could not be found."))
|
||||||
|
|
||||||
|
@ -667,14 +680,7 @@ class TableView(BaseTableView, DataTypeReader, VacuumSettings,
|
||||||
|
|
||||||
# Check whether 'rlspolicy' in response as it supported for
|
# Check whether 'rlspolicy' in response as it supported for
|
||||||
# version 9.5 and above
|
# version 9.5 and above
|
||||||
if 'rlspolicy' in res['rows'][0]:
|
TableView._check_rlspolicy_support(res)
|
||||||
# Set the value of rls policy
|
|
||||||
if res['rows'][0]['rlspolicy'] == "true":
|
|
||||||
res['rows'][0]['rlspolicy'] = True
|
|
||||||
|
|
||||||
# Set the value of force rls policy for table owner
|
|
||||||
if res['rows'][0]['forcerlspolicy'] == "true":
|
|
||||||
res['rows'][0]['forcerlspolicy'] = True
|
|
||||||
|
|
||||||
# If estimated rows are greater than threshold then
|
# If estimated rows are greater than threshold then
|
||||||
if estimated_row_count and \
|
if estimated_row_count and \
|
||||||
|
@ -684,13 +690,13 @@ class TableView(BaseTableView, DataTypeReader, VacuumSettings,
|
||||||
# If estimated rows is lower than threshold then calculate the count
|
# If estimated rows is lower than threshold then calculate the count
|
||||||
elif estimated_row_count and \
|
elif estimated_row_count and \
|
||||||
table_row_count_threshold >= estimated_row_count:
|
table_row_count_threshold >= estimated_row_count:
|
||||||
SQL = render_template(
|
sql = render_template(
|
||||||
"/".join(
|
"/".join(
|
||||||
[self.table_template_path, 'get_table_row_count.sql']
|
[self.table_template_path, 'get_table_row_count.sql']
|
||||||
), data=res['rows'][0]
|
), data=res['rows'][0]
|
||||||
)
|
)
|
||||||
|
|
||||||
status, count = self.conn.execute_scalar(SQL)
|
status, count = self.conn.execute_scalar(sql)
|
||||||
|
|
||||||
if not status:
|
if not status:
|
||||||
return False, internal_server_error(errormsg=count)
|
return False, internal_server_error(errormsg=count)
|
||||||
|
@ -921,6 +927,39 @@ class TableView(BaseTableView, DataTypeReader, VacuumSettings,
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return internal_server_error(errormsg=str(e))
|
return internal_server_error(errormsg=str(e))
|
||||||
|
|
||||||
|
def _parser_data_input_from_client(self, data):
|
||||||
|
# Parse privilege data coming from client according to database format
|
||||||
|
if 'relacl' in data:
|
||||||
|
data['relacl'] = parse_priv_to_db(data['relacl'], self.acl)
|
||||||
|
|
||||||
|
# Parse & format columns
|
||||||
|
data = column_utils.parse_format_columns(data)
|
||||||
|
data = TableView.check_and_convert_name_to_string(data)
|
||||||
|
|
||||||
|
# 'coll_inherits' is Array but it comes as string from browser
|
||||||
|
# We will convert it again to list
|
||||||
|
if 'coll_inherits' in data and \
|
||||||
|
isinstance(data['coll_inherits'], str):
|
||||||
|
data['coll_inherits'] = json.loads(
|
||||||
|
data['coll_inherits'], encoding='utf-8'
|
||||||
|
)
|
||||||
|
|
||||||
|
if 'foreign_key' in data:
|
||||||
|
for c in data['foreign_key']:
|
||||||
|
schema, table = fkey_utils.get_parent(
|
||||||
|
self.conn, c['columns'][0]['references'])
|
||||||
|
c['remote_schema'] = schema
|
||||||
|
c['remote_table'] = table
|
||||||
|
|
||||||
|
def _check_for_table_partitions(self, data):
|
||||||
|
partitions_sql = ''
|
||||||
|
if self.is_table_partitioned(data):
|
||||||
|
data['relkind'] = 'p'
|
||||||
|
# create partition scheme
|
||||||
|
data['partition_scheme'] = self.get_partition_scheme(data)
|
||||||
|
partitions_sql = self.get_partitions_sql(data)
|
||||||
|
return partitions_sql
|
||||||
|
|
||||||
@BaseTableView.check_precondition
|
@BaseTableView.check_precondition
|
||||||
def create(self, gid, sid, did, scid):
|
def create(self, gid, sid, did, scid):
|
||||||
"""
|
"""
|
||||||
|
@ -962,50 +1001,25 @@ class TableView(BaseTableView, DataTypeReader, VacuumSettings,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Parse privilege data coming from client according to database format
|
# Parse privilege data coming from client according to database format
|
||||||
if 'relacl' in data:
|
self._parser_data_input_from_client(data)
|
||||||
data['relacl'] = parse_priv_to_db(data['relacl'], self.acl)
|
|
||||||
|
|
||||||
# Parse & format columns
|
|
||||||
data = column_utils.parse_format_columns(data)
|
|
||||||
data = TableView.check_and_convert_name_to_string(data)
|
|
||||||
|
|
||||||
# 'coll_inherits' is Array but it comes as string from browser
|
|
||||||
# We will convert it again to list
|
|
||||||
if 'coll_inherits' in data and \
|
|
||||||
isinstance(data['coll_inherits'], str):
|
|
||||||
data['coll_inherits'] = json.loads(
|
|
||||||
data['coll_inherits'], encoding='utf-8'
|
|
||||||
)
|
|
||||||
|
|
||||||
if 'foreign_key' in data:
|
|
||||||
for c in data['foreign_key']:
|
|
||||||
schema, table = fkey_utils.get_parent(
|
|
||||||
self.conn, c['columns'][0]['references'])
|
|
||||||
c['remote_schema'] = schema
|
|
||||||
c['remote_table'] = table
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
partitions_sql = ''
|
partitions_sql = self._check_for_table_partitions(data)
|
||||||
if self.is_table_partitioned(data):
|
|
||||||
data['relkind'] = 'p'
|
|
||||||
# create partition scheme
|
|
||||||
data['partition_scheme'] = self.get_partition_scheme(data)
|
|
||||||
partitions_sql = self.get_partitions_sql(data)
|
|
||||||
|
|
||||||
# Update the vacuum table settings.
|
# Update the vacuum table settings.
|
||||||
BaseTableView.update_vacuum_settings(self, 'vacuum_table', data)
|
BaseTableView.update_vacuum_settings(self, 'vacuum_table', data)
|
||||||
# Update the vacuum toast table settings.
|
# Update the vacuum toast table settings.
|
||||||
BaseTableView.update_vacuum_settings(self, 'vacuum_toast', data)
|
BaseTableView.update_vacuum_settings(self, 'vacuum_toast', data)
|
||||||
|
|
||||||
SQL = render_template(
|
sql = render_template(
|
||||||
"/".join([self.table_template_path, 'create.sql']),
|
"/".join([self.table_template_path, 'create.sql']),
|
||||||
data=data, conn=self.conn
|
data=data, conn=self.conn
|
||||||
)
|
)
|
||||||
|
|
||||||
# Append SQL for partitions
|
# Append SQL for partitions
|
||||||
SQL += '\n' + partitions_sql
|
sql += '\n' + partitions_sql
|
||||||
|
|
||||||
status, res = self.conn.execute_scalar(SQL)
|
status, res = self.conn.execute_scalar(sql)
|
||||||
if not status:
|
if not status:
|
||||||
return internal_server_error(errormsg=res)
|
return internal_server_error(errormsg=res)
|
||||||
|
|
||||||
|
@ -1018,22 +1032,22 @@ class TableView(BaseTableView, DataTypeReader, VacuumSettings,
|
||||||
data['name'] = data['name'][0:CONST_MAX_CHAR_COUNT]
|
data['name'] = data['name'][0:CONST_MAX_CHAR_COUNT]
|
||||||
|
|
||||||
# Get updated schema oid
|
# Get updated schema oid
|
||||||
SQL = render_template(
|
sql = render_template(
|
||||||
"/".join([self.table_template_path, 'get_schema_oid.sql']),
|
"/".join([self.table_template_path, 'get_schema_oid.sql']),
|
||||||
tname=data['name']
|
tname=data['name']
|
||||||
)
|
)
|
||||||
|
|
||||||
status, new_scid = self.conn.execute_scalar(SQL)
|
status, new_scid = self.conn.execute_scalar(sql)
|
||||||
if not status:
|
if not status:
|
||||||
return internal_server_error(errormsg=new_scid)
|
return internal_server_error(errormsg=new_scid)
|
||||||
|
|
||||||
# we need oid to to add object in tree at browser
|
# we need oid to to add object in tree at browser
|
||||||
SQL = render_template(
|
sql = render_template(
|
||||||
"/".join([self.table_template_path, 'get_oid.sql']),
|
"/".join([self.table_template_path, 'get_oid.sql']),
|
||||||
scid=new_scid, data=data
|
scid=new_scid, data=data
|
||||||
)
|
)
|
||||||
|
|
||||||
status, tid = self.conn.execute_scalar(SQL)
|
status, tid = self.conn.execute_scalar(sql)
|
||||||
if not status:
|
if not status:
|
||||||
return internal_server_error(errormsg=tid)
|
return internal_server_error(errormsg=tid)
|
||||||
|
|
||||||
|
@ -1690,9 +1704,9 @@ class TableView(BaseTableView, DataTypeReader, VacuumSettings,
|
||||||
|
|
||||||
else:
|
else:
|
||||||
res = dict()
|
res = dict()
|
||||||
SQL = render_template("/".join([self.table_template_path,
|
sql = render_template("/".join([self.table_template_path,
|
||||||
'nodes.sql']), scid=scid)
|
'nodes.sql']), scid=scid)
|
||||||
status, tables = self.conn.execute_2darray(SQL)
|
status, tables = self.conn.execute_2darray(sql)
|
||||||
if not status:
|
if not status:
|
||||||
current_app.logger.error(tables)
|
current_app.logger.error(tables)
|
||||||
return False
|
return False
|
||||||
|
@ -1708,19 +1722,26 @@ class TableView(BaseTableView, DataTypeReader, VacuumSettings,
|
||||||
|
|
||||||
# Get sub module data of a specified table for object
|
# Get sub module data of a specified table for object
|
||||||
# comparison
|
# comparison
|
||||||
for module in sub_modules:
|
self._get_sub_module_data_for_compare(sid, did, scid, data,
|
||||||
module_view = SchemaDiffRegistry.get_node_view(module)
|
row, sub_modules)
|
||||||
if module_view.blueprint.server_type is None or \
|
|
||||||
self.manager.server_type in \
|
|
||||||
module_view.blueprint.server_type:
|
|
||||||
sub_data = module_view.fetch_objects_to_compare(
|
|
||||||
sid=sid, did=did, scid=scid, tid=row['oid'],
|
|
||||||
oid=None)
|
|
||||||
data[module] = sub_data
|
|
||||||
res[row['name']] = data
|
res[row['name']] = data
|
||||||
|
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
def _get_sub_module_data_for_compare(self, sid, did, scid, data,
|
||||||
|
row, sub_modules):
|
||||||
|
# Get sub module data of a specified table for object
|
||||||
|
# comparison
|
||||||
|
for module in sub_modules:
|
||||||
|
module_view = SchemaDiffRegistry.get_node_view(module)
|
||||||
|
if module_view.blueprint.server_type is None or \
|
||||||
|
self.manager.server_type in \
|
||||||
|
module_view.blueprint.server_type:
|
||||||
|
sub_data = module_view.fetch_objects_to_compare(
|
||||||
|
sid=sid, did=did, scid=scid, tid=row['oid'],
|
||||||
|
oid=None)
|
||||||
|
data[module] = sub_data
|
||||||
|
|
||||||
|
|
||||||
SchemaDiffRegistry(blueprint.node_type, TableView)
|
SchemaDiffRegistry(blueprint.node_type, TableView)
|
||||||
TableView.register_node_view(blueprint)
|
TableView.register_node_view(blueprint)
|
||||||
|
|
|
@ -860,11 +860,10 @@ class IndexesView(PGChildNodeView, SchemaDiffObjectCompare):
|
||||||
|
|
||||||
elif diff_schema:
|
elif diff_schema:
|
||||||
schema = diff_schema
|
schema = diff_schema
|
||||||
|
|
||||||
sql = index_utils.get_reverse_engineered_sql(
|
sql = index_utils.get_reverse_engineered_sql(
|
||||||
self.conn, schema,
|
self.conn, schema=schema,
|
||||||
self.table, did, tid, idx,
|
table=self.table, did=did, tid=tid, idx=idx,
|
||||||
self.datlastsysoid,
|
datlastsysoid=self.datlastsysoid,
|
||||||
template_path=None, with_header=False)
|
template_path=None, with_header=False)
|
||||||
|
|
||||||
drop_sql = ''
|
drop_sql = ''
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue