-- --------------------------------------------------------
-- mysql-upgrade-1.0.1.sql
-- DB definition for MySQL
-- 
-- alter db engine to innoDB
-- modify command_line to varchar(1024)
-- sets index on several tables for improved delete
--
-- -- --------------------------------------------------------

-- -----------------------------------------
-- change db engine to innoDB
-- -----------------------------------------

ALTER TABLE `icinga_acknowledgements` ENGINE = InnoDB;
ALTER TABLE `icinga_commands` ENGINE = InnoDB;
ALTER TABLE `icinga_commenthistory` ENGINE = InnoDB;
ALTER TABLE `icinga_comments` ENGINE = InnoDB;
ALTER TABLE `icinga_configfiles` ENGINE = InnoDB;
ALTER TABLE `icinga_configfilevariables` ENGINE = InnoDB;
ALTER TABLE `icinga_conninfo` ENGINE = InnoDB;
ALTER TABLE `icinga_contactgroups` ENGINE = InnoDB;
ALTER TABLE `icinga_contactgroup_members` ENGINE = InnoDB;
ALTER TABLE `icinga_contactnotificationmethods` ENGINE = InnoDB;
ALTER TABLE `icinga_contactnotifications` ENGINE = InnoDB;
ALTER TABLE `icinga_contacts` ENGINE = InnoDB;
ALTER TABLE `icinga_contactstatus` ENGINE = InnoDB;
ALTER TABLE `icinga_contact_addresses` ENGINE = InnoDB;
ALTER TABLE `icinga_contact_notificationcommands` ENGINE = InnoDB;
ALTER TABLE `icinga_customvariables` ENGINE = InnoDB;
ALTER TABLE `icinga_customvariablestatus` ENGINE = InnoDB;
ALTER TABLE `icinga_dbversion` ENGINE = InnoDB;
ALTER TABLE `icinga_downtimehistory` ENGINE = InnoDB;
ALTER TABLE `icinga_eventhandlers` ENGINE = InnoDB;
ALTER TABLE `icinga_externalcommands` ENGINE = InnoDB;
ALTER TABLE `icinga_flappinghistory` ENGINE = InnoDB;
ALTER TABLE `icinga_hostchecks` ENGINE = InnoDB;
ALTER TABLE `icinga_hostdependencies` ENGINE = InnoDB;
ALTER TABLE `icinga_hostescalations` ENGINE = InnoDB;
ALTER TABLE `icinga_hostescalation_contactgroups` ENGINE = InnoDB;
ALTER TABLE `icinga_hostescalation_contacts` ENGINE = InnoDB;
ALTER TABLE `icinga_hostgroups` ENGINE = InnoDB;
ALTER TABLE `icinga_hostgroup_members` ENGINE = InnoDB;
ALTER TABLE `icinga_hosts` ENGINE = InnoDB;
ALTER TABLE `icinga_hoststatus` ENGINE = InnoDB;
ALTER TABLE `icinga_host_contactgroups` ENGINE = InnoDB;
ALTER TABLE `icinga_host_contacts` ENGINE = InnoDB;
ALTER TABLE `icinga_host_parenthosts` ENGINE = InnoDB;
ALTER TABLE `icinga_instances` ENGINE = InnoDB;
ALTER TABLE `icinga_logentries` ENGINE = InnoDB;
ALTER TABLE `icinga_notifications` ENGINE = InnoDB;
ALTER TABLE `icinga_objects` ENGINE = InnoDB;
ALTER TABLE `icinga_processevents` ENGINE = InnoDB;
ALTER TABLE `icinga_programstatus` ENGINE = InnoDB;
ALTER TABLE `icinga_runtimevariables` ENGINE = InnoDB;
ALTER TABLE `icinga_scheduleddowntime` ENGINE = InnoDB;
ALTER TABLE `icinga_servicechecks` ENGINE = InnoDB;
ALTER TABLE `icinga_servicedependencies` ENGINE = InnoDB;
ALTER TABLE `icinga_serviceescalations` ENGINE = InnoDB;
ALTER TABLE `icinga_serviceescalation_contactgroups` ENGINE = InnoDB;
ALTER TABLE `icinga_serviceescalation_contacts` ENGINE = InnoDB;
ALTER TABLE `icinga_servicegroups` ENGINE = InnoDB;
ALTER TABLE `icinga_servicegroup_members` ENGINE = InnoDB;
ALTER TABLE `icinga_services` ENGINE = InnoDB;
ALTER TABLE `icinga_servicestatus` ENGINE = InnoDB;
ALTER TABLE `icinga_service_contactgroups` ENGINE = InnoDB;
ALTER TABLE `icinga_service_contacts` ENGINE = InnoDB;
ALTER TABLE `icinga_statehistory` ENGINE = InnoDB;
ALTER TABLE `icinga_systemcommands` ENGINE = InnoDB;
ALTER TABLE `icinga_timedeventqueue` ENGINE = InnoDB;
ALTER TABLE `icinga_timedevents` ENGINE = InnoDB;
ALTER TABLE `icinga_timeperiods` ENGINE = InnoDB;
ALTER TABLE `icinga_timeperiod_timeranges` ENGINE = InnoDB;

-- -----------------------------------------
-- modify command_line size to varchar(1024)
-- -----------------------------------------

ALTER TABLE `icinga_hostchecks` MODIFY COLUMN `command_line` varchar(1024) NOT NULL;
ALTER TABLE `icinga_servicechecks` MODIFY COLUMN `command_line` varchar(1024) NOT NULL;
ALTER TABLE `icinga_systemcommands` MODIFY COLUMN `command_line` varchar(1024) NOT NULL;
ALTER TABLE `icinga_eventhandlers` MODIFY COLUMN `command_line` varchar(1024) NOT NULL;


-- -----------------------------------------
-- add index (delete)
-- -----------------------------------------

-- for periodic delete 
-- instance_id and
-- TIMEDEVENTS => scheduled_time
-- SYSTEMCOMMANDS, SERVICECHECKS, HOSTCHECKS, EVENTHANDLERS  => start_time
-- EXTERNALCOMMANDS => entry_time

-- instance_id
CREATE INDEX timedevents_i_id_idx on icinga_timedevents(instance_id);
CREATE INDEX timedeventq_i_id_idx on icinga_timedeventqueue(instance_id);
CREATE INDEX systemcommands_i_id_idx on icinga_systemcommands(instance_id);
CREATE INDEX servicechecks_i_id_idx on icinga_servicechecks(instance_id);
CREATE INDEX hostchecks_i_id_idx on icinga_hostchecks(instance_id);
CREATE INDEX eventhandlers_i_id_idx on icinga_eventhandlers(instance_id);
CREATE INDEX externalcommands_i_id_idx on icinga_externalcommands(instance_id);

-- time
CREATE INDEX timedevents_time_id_idx on icinga_timedevents(scheduled_time);
CREATE INDEX timedeventq_time_id_idx on icinga_timedeventqueue(scheduled_time);
CREATE INDEX systemcommands_time_id_idx on icinga_systemcommands(start_time);
CREATE INDEX servicechecks_time_id_idx on icinga_servicechecks(start_time);
CREATE INDEX hostchecks_time_id_idx on icinga_hostchecks(start_time);
CREATE INDEX eventhandlers_time_id_idx on icinga_eventhandlers(start_time);
CREATE INDEX externalcommands_time_id_idx on icinga_externalcommands(entry_time);


-- for starting cleanup - referenced in dbhandler.c:882
-- instance_id only

-- realtime data
CREATE INDEX programstatus_i_id_idx on icinga_programstatus(instance_id);
CREATE INDEX hoststatus_i_id_idx on icinga_hoststatus(instance_id);
CREATE INDEX servicestatus_i_id_idx on icinga_servicestatus(instance_id);
CREATE INDEX contactstatus_i_id_idx on icinga_contactstatus(instance_id);
CREATE INDEX timedeventqueue_i_id_idx on icinga_timedeventqueue(instance_id);
CREATE INDEX comments_i_id_idx on icinga_comments(instance_id);
CREATE INDEX scheduleddowntime_i_id_idx on icinga_scheduleddowntime(instance_id);
CREATE INDEX runtimevariables_i_id_idx on icinga_runtimevariables(instance_id);
CREATE INDEX customvariablestatus_i_id_idx on icinga_customvariablestatus(instance_id);

-- config data
CREATE INDEX configfiles_i_id_idx on icinga_configfiles(instance_id);
CREATE INDEX configfilevariables_i_id_idx on icinga_configfilevariables(instance_id);
CREATE INDEX customvariables_i_id_idx on icinga_customvariables(instance_id);
CREATE INDEX commands_i_id_idx on icinga_commands(instance_id);
CREATE INDEX timeperiods_i_id_idx on icinga_timeperiods(instance_id);
CREATE INDEX timeperiod_timeranges_i_id_idx on icinga_timeperiod_timeranges(instance_id);
CREATE INDEX contactgroups_i_id_idx on icinga_contactgroups(instance_id);
CREATE INDEX contactgroup_members_i_id_idx on icinga_contactgroup_members(instance_id);
CREATE INDEX hostgroups_i_id_idx on icinga_hostgroups(instance_id);
CREATE INDEX hostgroup_members_i_id_idx on icinga_hostgroup_members(instance_id);
CREATE INDEX servicegroups_i_id_idx on icinga_servicegroups(instance_id);
CREATE INDEX servicegroup_members_i_id_idx on icinga_servicegroup_members(instance_id);
CREATE INDEX hostesc_i_id_idx on icinga_hostescalations(instance_id);
CREATE INDEX hostesc_contacts_i_id_idx on icinga_hostescalation_contacts(instance_id);
CREATE INDEX serviceesc_i_id_idx on icinga_serviceescalations(instance_id);
CREATE INDEX serviceesc_contacts_i_id_idx on icinga_serviceescalation_contacts(instance_id);
CREATE INDEX hostdependencies_i_id_idx on icinga_hostdependencies(instance_id);
CREATE INDEX contacts_i_id_idx on icinga_contacts(instance_id);
CREATE INDEX contact_addresses_i_id_idx on icinga_contact_addresses(instance_id);
CREATE INDEX contact_notifcommands_i_id_idx on icinga_contact_notificationcommands(instance_id);
CREATE INDEX hosts_i_id_idx on icinga_hosts(instance_id);
CREATE INDEX host_parenthosts_i_id_idx on icinga_host_parenthosts(instance_id);
CREATE INDEX host_contacts_i_id_idx on icinga_host_contacts(instance_id);
CREATE INDEX services_i_id_idx on icinga_services(instance_id);
CREATE INDEX service_contacts_i_id_idx on icinga_service_contacts(instance_id);
CREATE INDEX service_contactgroups_i_id_idx on icinga_service_contactgroups(instance_id);
CREATE INDEX host_contactgroups_i_id_idx on icinga_host_contactgroups(instance_id);
CREATE INDEX hostesc_cgroups_i_id_idx on icinga_hostescalation_contactgroups(instance_id);
CREATE INDEX serviceesc_cgroups_i_id_idx on icinga_serviceescalation_contactgroups(instance_id);


-- -----------------------------------------
-- more index stuff (WHERE clauses)
-- -----------------------------------------

-- hosts
CREATE INDEX hosts_host_object_id_idx on icinga_hosts(host_object_id);

-- hoststatus
CREATE INDEX hoststatus_stat_upd_time_idx on icinga_hoststatus(status_update_time);
CREATE INDEX hoststatus_current_state_idx on icinga_hoststatus(current_state);
CREATE INDEX hoststatus_check_type_idx on icinga_hoststatus(check_type);
CREATE INDEX hoststatus_state_type_idx on icinga_hoststatus(state_type);
CREATE INDEX hoststatus_last_state_chg_idx on icinga_hoststatus(last_state_change);
CREATE INDEX hoststatus_notif_enabled_idx on icinga_hoststatus(notifications_enabled);
CREATE INDEX hoststatus_problem_ack_idx on icinga_hoststatus(problem_has_been_acknowledged);
CREATE INDEX hoststatus_act_chks_en_idx on icinga_hoststatus(active_checks_enabled);
CREATE INDEX hoststatus_pas_chks_en_idx on icinga_hoststatus(passive_checks_enabled);
CREATE INDEX hoststatus_event_hdl_en_idx on icinga_hoststatus(event_handler_enabled);
CREATE INDEX hoststatus_flap_det_en_idx on icinga_hoststatus(flap_detection_enabled);
CREATE INDEX hoststatus_is_flapping_idx on icinga_hoststatus(is_flapping);
CREATE INDEX hoststatus_p_state_chg_idx on icinga_hoststatus(percent_state_change);
CREATE INDEX hoststatus_latency_idx on icinga_hoststatus(latency);
CREATE INDEX hoststatus_ex_time_idx on icinga_hoststatus(execution_time);
CREATE INDEX hoststatus_sch_downt_d_idx on icinga_hoststatus(scheduled_downtime_depth);

-- services
CREATE INDEX services_host_object_id_idx on icinga_services(host_object_id);

-- servicestatus
CREATE INDEX srvcstatus_stat_upd_time_idx on icinga_servicestatus(status_update_time);
CREATE INDEX srvcstatus_current_state_idx on icinga_servicestatus(current_state);
CREATE INDEX srvcstatus_check_type_idx on icinga_servicestatus(check_type);
CREATE INDEX srvcstatus_state_type_idx on icinga_servicestatus(state_type);
CREATE INDEX srvcstatus_last_state_chg_idx on icinga_servicestatus(last_state_change);
CREATE INDEX srvcstatus_notif_enabled_idx on icinga_servicestatus(notifications_enabled);
CREATE INDEX srvcstatus_problem_ack_idx on icinga_servicestatus(problem_has_been_acknowledged);
CREATE INDEX srvcstatus_act_chks_en_idx on icinga_servicestatus(active_checks_enabled);
CREATE INDEX srvcstatus_pas_chks_en_idx on icinga_servicestatus(passive_checks_enabled);
CREATE INDEX srvcstatus_event_hdl_en_idx on icinga_servicestatus(event_handler_enabled);
CREATE INDEX srvcstatus_flap_det_en_idx on icinga_servicestatus(flap_detection_enabled);
CREATE INDEX srvcstatus_is_flapping_idx on icinga_servicestatus(is_flapping);
CREATE INDEX srvcstatus_p_state_chg_idx on icinga_servicestatus(percent_state_change);
CREATE INDEX srvcstatus_latency_idx on icinga_servicestatus(latency);
CREATE INDEX srvcstatus_ex_time_idx on icinga_servicestatus(execution_time);
CREATE INDEX srvcstatus_sch_downt_d_idx on icinga_servicestatus(scheduled_downtime_depth);

-- timedeventqueue
CREATE INDEX timed_e_q_event_type_idx on icinga_timedeventqueue(event_type);
CREATE INDEX timed_e_q_sched_time_idx on icinga_timedeventqueue(scheduled_time);
CREATE INDEX timed_e_q_object_id_idx on icinga_timedeventqueue(object_id);
CREATE INDEX timed_e_q_rec_ev_id_idx on icinga_timedeventqueue(recurring_event);

-- timedevents
CREATE INDEX timed_e_event_type_idx on icinga_timedevents(event_type);
-- CREATE INDEX timed_e_sched_time_idx on icinga_timedevents(scheduled_time); --already set for delete
CREATE INDEX timed_e_object_id_idx on icinga_timedevents(object_id);
CREATE INDEX timed_e_rec_ev_idx on icinga_timedevents(recurring_event);

-- hostchecks
CREATE INDEX hostchks_h_obj_id_idx on icinga_hostchecks(host_object_id);

-- servicechecks
CREATE INDEX servicechks_s_obj_id_idx on icinga_servicechecks(service_object_id);

-- objects
CREATE INDEX objects_objtype_id_idx ON icinga_objects(objecttype_id);
CREATE INDEX objects_name1_idx ON icinga_objects(name1);
CREATE INDEX objects_name2_idx ON icinga_objects(name2);
CREATE INDEX objects_inst_id_idx ON icinga_objects(instance_id);


-- hostchecks
-- CREATE INDEX hostchks_h_obj_id_idx on icinga_hostchecks(host_object_id);

-- servicechecks
-- CREATE INDEX servicechks_s_obj_id_idx on icinga_servicechecks(service_object_id);


-- instances
-- CREATE INDEX instances_name_idx on icinga_instances(instance_name);

-- logentries
-- CREATE INDEX loge_instance_id_idx on icinga_logentries(instance_id);
-- #236
CREATE INDEX loge_time_idx on icinga_logentries(logentry_time);
-- CREATE INDEX loge_data_idx on icinga_logentries(logentry_data);

-- commenthistory
-- CREATE INDEX c_hist_instance_id_idx on icinga_logentries(instance_id);
-- CREATE INDEX c_hist_c_time_idx on icinga_logentries(comment_time);
-- CREATE INDEX c_hist_i_c_id_idx on icinga_logentries(internal_comment_id);

-- downtimehistory
-- CREATE INDEX d_t_hist_nstance_id_idx on icinga_downtimehistory(instance_id);
-- CREATE INDEX d_t_hist_type_idx on icinga_downtimehistory(downtime_type);
-- CREATE INDEX d_t_hist_object_id_idx on icinga_downtimehistory(object_id);
-- CREATE INDEX d_t_hist_entry_time_idx on icinga_downtimehistory(entry_time);
-- CREATE INDEX d_t_hist_sched_start_idx on icinga_downtimehistory(scheduled_start_time);
-- CREATE INDEX d_t_hist_sched_end_idx on icinga_downtimehistory(scheduled_end_time);

-- scheduleddowntime
-- CREATE INDEX sched_d_t_downtime_type_idx on icinga_scheduleddowntime(downtime_type);
-- CREATE INDEX sched_d_t_object_id_idx on icinga_scheduleddowntime(object_id);
-- CREATE INDEX sched_d_t_entry_time_idx on icinga_scheduleddowntime(entry_time);
-- CREATE INDEX sched_d_t_start_time_idx on icinga_scheduleddowntime(scheduled_start_time);
-- CREATE INDEX sched_d_t_end_time_idx on icinga_scheduleddowntime(scheduled_end_time);


