From 4d5a613ca3e4cc00d1f9cf7b8adcabafa86b541f Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Wed, 4 Aug 2021 13:02:42 +0530 Subject: [PATCH] db: make *_details.value non-nullable Fixes #4897 Some details tables were allowing null values for detail value which can cause NPE in some cases. mysql> SELECT TABLE_NAME, COLUMN_NAME, COLUMN_TYPE FROM information_schema.columns WHERE table_schema='cloud' AND table_name LIKE'%_details' AND column_name='value' AND IS_NULLABLE='YES'; +-------------------------------+-------------+---------------+ | TABLE_NAME | COLUMN_NAME | COLUMN_TYPE | +-------------------------------+-------------+---------------+ | account_details | value | varchar(255) | | cluster_details | value | varchar(255) | | data_center_details | value | varchar(1024) | | domain_details | value | varchar(255) | | image_store_details | value | varchar(255) | | storage_pool_details | value | varchar(255) | | template_deploy_as_is_details | value | text | | user_vm_deploy_as_is_details | value | text | | user_vm_details | value | varchar(5120) | +-------------------------------+-------------+---------------+ 9 rows in set (0.00 sec) Brings consistency for value column of *_details tables with preventing null values. Signed-off-by: Abhishek Kumar --- .../META-INF/db/schema-41510to41600.sql | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/engine/schema/src/main/resources/META-INF/db/schema-41510to41600.sql b/engine/schema/src/main/resources/META-INF/db/schema-41510to41600.sql index 9a8302f765ce..419920a33ac6 100644 --- a/engine/schema/src/main/resources/META-INF/db/schema-41510to41600.sql +++ b/engine/schema/src/main/resources/META-INF/db/schema-41510to41600.sql @@ -695,3 +695,23 @@ CREATE VIEW `cloud`.`host_view` AS `cloud`.`user` ON `user`.`uuid` = `last_annotation_view`.`user_uuid` GROUP BY `host`.`id`; + +-- Alter value column of *_details table to prevent NULL values +UPDATE cloud.account_details SET value='' WHERE value IS NULL; +ALTER TABLE cloud.account_details MODIFY value varchar(255) NOT NULL; +UPDATE cloud.cluster_details SET value='' WHERE value IS NULL; +ALTER TABLE cloud.cluster_details MODIFY value varchar(255) NOT NULL; +UPDATE cloud.data_center_details SET value='' WHERE value IS NULL; +ALTER TABLE cloud.data_center_details MODIFY value varchar(1024) NOT NULL; +UPDATE cloud.domain_details SET value='' WHERE value IS NULL; +ALTER TABLE cloud.domain_details MODIFY value varchar(255) NOT NULL; +UPDATE cloud.image_store_details SET value='' WHERE value IS NULL; +ALTER TABLE cloud.image_store_details MODIFY value varchar(255) NOT NULL; +UPDATE cloud.storage_pool_details SET value='' WHERE value IS NULL; +ALTER TABLE cloud.storage_pool_details MODIFY value varchar(255) NOT NULL; +UPDATE cloud.template_deploy_as_is_details SET value='' WHERE value IS NULL; +ALTER TABLE cloud.template_deploy_as_is_details MODIFY value text NOT NULL; +UPDATE cloud.user_vm_deploy_as_is_details SET value='' WHERE value IS NULL; +ALTER TABLE cloud.user_vm_deploy_as_is_details MODIFY value text NOT NULL; +UPDATE cloud.user_vm_details SET value='' WHERE value IS NULL; +ALTER TABLE cloud.user_vm_details MODIFY value varchar(5120) NOT NULL;