mirror of
https://github.com/Icinga/icingadb.git
synced 2026-02-17 01:31:25 -05:00
144 lines
6.4 KiB
SQL
144 lines
6.4 KiB
SQL
ALTER TABLE host ADD COLUMN total_children uint DEFAULT NULL;
|
|
ALTER TABLE host_state ADD COLUMN affects_children boolenum NOT NULL DEFAULT 'n';
|
|
ALTER TABLE host_state ALTER COLUMN affects_children DROP DEFAULT;
|
|
|
|
ALTER TABLE host_state ADD COLUMN is_sticky_acknowledgement boolenum NOT NULL DEFAULT 'n';
|
|
UPDATE host_state SET is_sticky_acknowledgement = 'y' WHERE is_acknowledged = 'sticky';
|
|
-- The USING clause used below to typecast is_acknowledged to boolenum doesn't apply to default value [^1]
|
|
-- of a column, so we need to drop the DEFAULT constraint and then recreate it after the typecast.
|
|
-- [^1]: https://www.postgresql.org/docs/9.6/sql-altertable.html#notes
|
|
ALTER TABLE host_state ALTER COLUMN is_acknowledged DROP DEFAULT;
|
|
ALTER TABLE host_state ALTER COLUMN is_acknowledged TYPE boolenum USING (
|
|
CASE is_acknowledged
|
|
WHEN 'y' THEN 'y'::boolenum
|
|
WHEN 'sticky' THEN 'y'::boolenum
|
|
ELSE 'n'::boolenum
|
|
END
|
|
);
|
|
ALTER TABLE host_state ALTER COLUMN is_acknowledged SET DEFAULT 'n';
|
|
|
|
ALTER TABLE service_state ADD COLUMN is_sticky_acknowledgement boolenum NOT NULL DEFAULT 'n';
|
|
UPDATE service_state SET is_sticky_acknowledgement = 'y' WHERE is_acknowledged = 'sticky';
|
|
ALTER TABLE service_state ALTER COLUMN is_acknowledged DROP DEFAULT; -- Same as above for host_state!
|
|
ALTER TABLE service_state ALTER COLUMN is_acknowledged TYPE boolenum USING (
|
|
CASE is_acknowledged
|
|
WHEN 'y' THEN 'y'::boolenum
|
|
WHEN 'sticky' THEN 'y'::boolenum
|
|
ELSE 'n'::boolenum
|
|
END
|
|
);
|
|
ALTER TABLE service_state ALTER COLUMN is_acknowledged SET DEFAULT 'n';
|
|
|
|
DROP TYPE acked;
|
|
|
|
ALTER TABLE service ADD COLUMN total_children uint DEFAULT NULL;
|
|
ALTER TABLE service_state ADD COLUMN affects_children boolenum NOT NULL DEFAULT 'n';
|
|
ALTER TABLE service_state ALTER COLUMN affects_children DROP DEFAULT;
|
|
|
|
CREATE TABLE redundancy_group (
|
|
id bytea20 NOT NULL,
|
|
environment_id bytea20 NOT NULL,
|
|
display_name text NOT NULL,
|
|
|
|
CONSTRAINT pk_redundancy_group PRIMARY KEY (id)
|
|
);
|
|
|
|
ALTER TABLE redundancy_group ALTER COLUMN id SET STORAGE PLAIN;
|
|
ALTER TABLE redundancy_group ALTER COLUMN environment_id SET STORAGE PLAIN;
|
|
|
|
COMMENT ON COLUMN redundancy_group.id IS 'sha1(name + all(member parent_name + timeperiod.name + states + ignore_soft_states))';
|
|
COMMENT ON COLUMN redundancy_group.environment_id IS 'environment.id';
|
|
|
|
CREATE TABLE redundancy_group_state (
|
|
id bytea20 NOT NULL,
|
|
environment_id bytea20 NOT NULL,
|
|
redundancy_group_id bytea20 NOT NULL,
|
|
failed boolenum NOT NULL,
|
|
is_reachable boolenum NOT NULL,
|
|
last_state_change biguint NOT NULL,
|
|
|
|
CONSTRAINT pk_redundancy_group_state PRIMARY KEY (id)
|
|
);
|
|
|
|
ALTER TABLE redundancy_group_state ALTER COLUMN id SET STORAGE PLAIN;
|
|
ALTER TABLE redundancy_group_state ALTER COLUMN environment_id SET STORAGE PLAIN;
|
|
ALTER TABLE redundancy_group_state ALTER COLUMN redundancy_group_id SET STORAGE PLAIN;
|
|
|
|
CREATE UNIQUE INDEX idx_redundancy_group_state_redundancy_group_id ON redundancy_group_state(redundancy_group_id);
|
|
|
|
COMMENT ON COLUMN redundancy_group_state.id IS 'redundancy_group.id';
|
|
COMMENT ON COLUMN redundancy_group_state.environment_id IS 'environment.id';
|
|
COMMENT ON COLUMN redundancy_group_state.redundancy_group_id IS 'redundancy_group.id';
|
|
|
|
CREATE TABLE dependency_node (
|
|
id bytea20 NOT NULL,
|
|
environment_id bytea20 NOT NULL,
|
|
host_id bytea20 DEFAULT NULL,
|
|
service_id bytea20 DEFAULT NULL,
|
|
redundancy_group_id bytea20 DEFAULT NULL,
|
|
|
|
CONSTRAINT pk_dependency_node PRIMARY KEY (id),
|
|
|
|
CONSTRAINT ck_dependency_node_either_checkable_or_redundancy_group_id CHECK (
|
|
CASE WHEN redundancy_group_id IS NULL THEN host_id IS NOT NULL ELSE host_id IS NULL AND service_id IS NULL END
|
|
)
|
|
);
|
|
|
|
ALTER TABLE dependency_node ALTER COLUMN id SET STORAGE PLAIN;
|
|
ALTER TABLE dependency_node ALTER COLUMN environment_id SET STORAGE PLAIN;
|
|
ALTER TABLE dependency_node ALTER COLUMN host_id SET STORAGE PLAIN;
|
|
ALTER TABLE dependency_node ALTER COLUMN service_id SET STORAGE PLAIN;
|
|
ALTER TABLE dependency_node ALTER COLUMN redundancy_group_id SET STORAGE PLAIN;
|
|
|
|
CREATE UNIQUE INDEX idx_dependency_node_host_service_redundancygroup_id ON dependency_node(host_id, service_id, redundancy_group_id);
|
|
|
|
COMMENT ON COLUMN dependency_node.id IS 'host.id|service.id|redundancy_group.id';
|
|
COMMENT ON COLUMN dependency_node.environment_id IS 'environment.id';
|
|
COMMENT ON COLUMN dependency_node.host_id IS 'host.id';
|
|
COMMENT ON COLUMN dependency_node.service_id IS 'service.id';
|
|
COMMENT ON COLUMN dependency_node.redundancy_group_id IS 'redundancy_group.id';
|
|
|
|
CREATE TABLE dependency_edge_state (
|
|
id bytea20 NOT NULL,
|
|
environment_id bytea20 NOT NULL,
|
|
failed boolenum NOT NULL,
|
|
|
|
CONSTRAINT pk_dependency_edge_state PRIMARY KEY (id)
|
|
);
|
|
|
|
ALTER TABLE dependency_edge_state ALTER COLUMN id SET STORAGE PLAIN;
|
|
ALTER TABLE dependency_edge_state ALTER COLUMN environment_id SET STORAGE PLAIN;
|
|
|
|
COMMENT ON COLUMN dependency_edge_state.id IS 'sha1([dependency_edge.from_node_id|parent_name + timeperiod.name + states + ignore_soft_states] + dependency_edge.to_node_id)';
|
|
COMMENT ON COLUMN dependency_edge_state.environment_id IS 'environment.id';
|
|
|
|
CREATE TABLE dependency_edge (
|
|
id bytea20 NOT NULL,
|
|
environment_id bytea20 NOT NULL,
|
|
from_node_id bytea20 NOT NULL,
|
|
to_node_id bytea20 NOT NULL,
|
|
dependency_edge_state_id bytea20 NOT NULL,
|
|
display_name text NOT NULL,
|
|
|
|
CONSTRAINT pk_dependency_edge PRIMARY KEY (id)
|
|
);
|
|
|
|
ALTER TABLE dependency_edge ALTER COLUMN id SET STORAGE PLAIN;
|
|
ALTER TABLE dependency_edge ALTER COLUMN environment_id SET STORAGE PLAIN;
|
|
ALTER TABLE dependency_edge ALTER COLUMN from_node_id SET STORAGE PLAIN;
|
|
ALTER TABLE dependency_edge ALTER COLUMN to_node_id SET STORAGE PLAIN;
|
|
ALTER TABLE dependency_edge ALTER COLUMN dependency_edge_state_id SET STORAGE PLAIN;
|
|
|
|
CREATE UNIQUE INDEX idx_dependency_edge_from_node_to_node_id ON dependency_edge(from_node_id, to_node_id);
|
|
|
|
COMMENT ON COLUMN dependency_edge.id IS 'sha1(from_node_id + to_node_id)';
|
|
COMMENT ON COLUMN dependency_edge.environment_id IS 'environment.id';
|
|
COMMENT ON COLUMN dependency_edge.from_node_id IS 'dependency_node.id';
|
|
COMMENT ON COLUMN dependency_edge.to_node_id IS 'dependency_node.id';
|
|
COMMENT ON COLUMN dependency_edge.dependency_edge_state_id IS 'sha1(dependency_edge_state.id)';
|
|
|
|
ALTER TABLE icingadb_instance ADD COLUMN icingadb_version varchar(255) NOT NULL DEFAULT 'unknown';
|
|
ALTER TABLE icingadb_instance ALTER COLUMN icingadb_version DROP DEFAULT;
|
|
|
|
INSERT INTO icingadb_schema (version, timestamp)
|
|
VALUES (5, extract(epoch from now()) * 1000);
|