From 87ddc76277fd63e6763663310f89598112067671 Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Sat, 14 Aug 2021 06:07:43 +0530 Subject: [PATCH] db: make *_details.value non-nullable (#5274) 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 e53bdc5529d..cc43cc61a03 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 @@ -737,3 +737,23 @@ CALL ADD_GUEST_OS_AND_HYPERVISOR_MAPPING (9, 'pfSense 2.4', 'KVM', 'default', 'p CALL ADD_GUEST_OS_AND_HYPERVISOR_MAPPING (9, 'OpenBSD 6.7', 'KVM', 'default', 'OpenBSD 6.7'); CALL ADD_GUEST_OS_AND_HYPERVISOR_MAPPING (9, 'OpenBSD 6.8', 'KVM', 'default', 'OpenBSD 6.8'); CALL ADD_GUEST_OS_AND_HYPERVISOR_MAPPING (1, 'AlmaLinux 8.3', 'KVM', 'default', 'AlmaLinux 8.3'); + +-- 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;