From f93fbadd47dccd90fa3f229879edfe3e58230b0e Mon Sep 17 00:00:00 2001 From: Aditya Hase Date: Wed, 7 Aug 2019 13:22:53 +0530 Subject: [PATCH] fix(comments): Remove size restriction on _comments column Use LONGTEXT (2^32 - 1 bytes) instead of TEXT (2^16 - 1 bytes) data type --- frappe/model/db_schema.py | 2 +- frappe/patches.txt | 3 ++- .../change_comments_column_data_type_to_longtext.py | 11 +++++++++++ 3 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 frappe/patches/v12_0/change_comments_column_data_type_to_longtext.py diff --git a/frappe/model/db_schema.py b/frappe/model/db_schema.py index 16ccf284d5..94cfc36c21 100644 --- a/frappe/model/db_schema.py +++ b/frappe/model/db_schema.py @@ -228,7 +228,7 @@ class DbTable: for fieldname in optional_columns: fl.append({ "fieldname": fieldname, - "fieldtype": "Text" + "fieldtype": "Long Text" }) # add _seen column if track_seen diff --git a/frappe/patches.txt b/frappe/patches.txt index 0d5ccfcb8e..263e502166 100644 --- a/frappe/patches.txt +++ b/frappe/patches.txt @@ -248,4 +248,5 @@ frappe.patches.v12_0.move_form_attachments_to_attachments_folder frappe.patches.v12_0.move_timeline_links_to_dynamic_links frappe.patches.v12_0.delete_feedback_request_if_exists #1 frappe.patches.v12_0.rename_events_repeat_on -frappe.patches.v12_0.fix_public_private_files \ No newline at end of file +frappe.patches.v12_0.fix_public_private_files +frappe.patches.v12_0.change_comments_column_data_type_to_longtext \ No newline at end of file diff --git a/frappe/patches/v12_0/change_comments_column_data_type_to_longtext.py b/frappe/patches/v12_0/change_comments_column_data_type_to_longtext.py new file mode 100644 index 0000000000..8548fe86a6 --- /dev/null +++ b/frappe/patches/v12_0/change_comments_column_data_type_to_longtext.py @@ -0,0 +1,11 @@ +import frappe +from frappe.core.utils import find + +def execute(): + if frappe.db.db_type != "postgres": + doctypes = frappe.get_all("DocType") + for doctype in doctypes: + columns = frappe.db.get_table_columns_description("tab{}".format(doctype.name)) + comments_column = find(columns, lambda x: x.name == "_comments") + if comments_column and comments_column.type != "longtext": + frappe.db.sql("ALTER TABLE `tab{}` MODIFY _comments LONGTEXT".format(doctype.name))