From fb49819cd74746771073a87effe664f91b40c7bc Mon Sep 17 00:00:00 2001 From: deepeshgarg007 Date: Mon, 18 Mar 2019 08:47:17 +0530 Subject: [PATCH] fix: Replace NULL values with zero having data type as INT, FLOAT or DECIMAL --- frappe/patches.txt | 1 + .../v12_0/replace_null_values_in_tables.py | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 frappe/patches/v12_0/replace_null_values_in_tables.py diff --git a/frappe/patches.txt b/frappe/patches.txt index 467efe6a62..619216c0af 100644 --- a/frappe/patches.txt +++ b/frappe/patches.txt @@ -236,3 +236,4 @@ execute:frappe.delete_doc("Page", "modules", ignore_missing=True) frappe.patches.v11_0.set_default_letter_head_source frappe.patches.v12_0.setup_comments_from_communications frappe.patches.v12_0.init_desk_settings #11-03-2019 +frappe.patches.v12_0.replace_null_values_in_tables diff --git a/frappe/patches/v12_0/replace_null_values_in_tables.py b/frappe/patches/v12_0/replace_null_values_in_tables.py new file mode 100644 index 0000000000..f3831c1643 --- /dev/null +++ b/frappe/patches/v12_0/replace_null_values_in_tables.py @@ -0,0 +1,22 @@ +import frappe + +def execute(): + + fields = frappe.db.sql(""" + SELECT COLUMN_NAME , TABLE_NAME, DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS + WHERE DATA_TYPE IN ('INT', 'FLOAT', 'DECIMAL') AND IS_NULLABLE = 'YES' + """, as_dict=1) + + update_column_table_map = {} + + for field in fields: + update_column_table_map.setdefault(field.TABLE_NAME, []) + + if field.TABLE_NAME not in ['tabDocPerm', 'tabCustom Field', 'tabWebsite Route Permission']: + update_column_table_map[field.TABLE_NAME].append(str(field.COLUMN_NAME)+"=COALESCE("+str(field.COLUMN_NAME)+", 0)") + + for table in frappe.db.get_tables(): + if update_column_table_map.get(table): + frappe.db.sql("""UPDATE `{table}` SET {columns}""" + .format(table=table, columns=",".join(update_column_table_map.get(table)))) +