Restructure migration_timescaledb
With this restructuration we adjust the FK before we make the messages2 table a hypertable. Fingers crossed that'll help Signed-off-by: Pierre-Yves Chibon <pingou@pingoured.fr>
This commit is contained in:
parent
c5ea7e4010
commit
9971f132fb
1 changed files with 42 additions and 30 deletions
|
@ -37,6 +37,9 @@ CREATE SEQUENCE public.messages2_id_seq
|
|||
NO MAXVALUE
|
||||
CACHE 1;
|
||||
|
||||
ALTER TABLE messages2
|
||||
ADD CONSTRAINT messages2_pkey PRIMARY KEY (id, "timestamp");
|
||||
|
||||
ALTER TABLE public.messages2 OWNER TO datanommer;
|
||||
ALTER TABLE public.messages2_id_seq OWNER TO datanommer;
|
||||
-- ALTER SEQUENCE public.messages2_id_seq OWNED BY public.messages2.id;
|
||||
|
@ -44,6 +47,36 @@ ALTER TABLE ONLY public.messages2 ALTER COLUMN id SET DEFAULT nextval('public.me
|
|||
GRANT SELECT ON TABLE public.messages2 TO datagrepper;
|
||||
GRANT SELECT ON SEQUENCE public.messages2_id_seq TO datagrepper;
|
||||
|
||||
-- user_messages2
|
||||
CREATE TABLE user_messages2 (LIKE user_messages INCLUDING DEFAULTS INCLUDING ALL);
|
||||
ALTER TABLE user_messages ADD "timestamp" timestamp without time zone;
|
||||
ALTER TABLE user_messages2 ALTER "timestamp" SET NOT NULL;
|
||||
ALTER TABLE user_messages2 DROP CONSTRAINT user_messages2_pkey;
|
||||
ALTER TABLE user_messages2
|
||||
ADD CONSTRAINT user_messages2_pkey PRIMARY KEY (username, msg, "timestamp");
|
||||
ALTER TABLE user_messages2
|
||||
ADD CONSTRAINT user_messages2_username_fkey
|
||||
FOREIGN KEY (username) REFERENCES "user"(name) MATCH FULL;
|
||||
ALTER TABLE user_messages2
|
||||
ADD CONSTRAINT user_messages2_msg_fkey
|
||||
FOREIGN KEY (msg, "timestamp") REFERENCES messages2(id, "timestamp") MATCH FULL;
|
||||
|
||||
|
||||
-- package_messages2
|
||||
CREATE TABLE package_messages2 (LIKE package_messages INCLUDING DEFAULTS INCLUDING ALL);
|
||||
ALTER TABLE package_messages2 ADD "timestamp" timestamp without time zone;
|
||||
ALTER TABLE package_messages2 ALTER "timestamp" SET NOT NULL;
|
||||
ALTER TABLE package_messages2 DROP CONSTRAINT package_messages2_pkey;
|
||||
ALTER TABLE package_messages2
|
||||
ADD CONSTRAINT package_messages2_pkey PRIMARY KEY (package, msg, "timestamp");
|
||||
ALTER TABLE package_messages2
|
||||
ADD CONSTRAINT package_messages_package_fkey
|
||||
FOREIGN KEY (package) REFERENCES package(name) MATCH FULL;
|
||||
ALTER TABLE package_messages2
|
||||
ADD CONSTRAINT package_messages2_msg_fkey
|
||||
FOREIGN KEY (msg, "timestamp") REFERENCES messages2(id, "timestamp") MATCH FULL;
|
||||
|
||||
|
||||
-- Convert the timestamp to the hypertable
|
||||
|
||||
SELECT create_hypertable('messages2', 'timestamp');
|
||||
|
@ -53,6 +86,15 @@ SELECT create_hypertable('messages2', 'timestamp');
|
|||
INSERT INTO messages2 (i,"timestamp",certificate,signature,topic,_msg,category,source_name,source_version,msg_id,_headers,username,crypto)
|
||||
SELECT i,"timestamp",certificate,signature,topic,_msg,category,source_name,source_version,msg_id,_headers,username,crypto FROM messages ORDER BY messages.id;
|
||||
|
||||
INSERT INTO user_messages2 (username, msg,"timestamp")
|
||||
SELECT user_messages.username, user_messages.msg, messages2.timestamp
|
||||
from user_messages, messages2 where messages2.id = user_messages.msg;
|
||||
|
||||
INSERT INTO package_messages2 (package, msg,"timestamp")
|
||||
SELECT package_messages.package, package_messages.msg, messages2.timestamp
|
||||
from package_messages, messages2 where messages2.id = package_messages2.msg;
|
||||
|
||||
|
||||
-- Create the indexes ones the data is in
|
||||
|
||||
CREATE INDEX index_msg2_category ON public.messages2 USING btree (category);
|
||||
|
@ -64,44 +106,14 @@ CREATE INDEX messages2_datanommer_timestamp_topic_idx ON public.messages2 USING
|
|||
|
||||
-- Adjust user_messages
|
||||
|
||||
ALTER TABLE user_messages DROP CONSTRAINT user_messages_msg_fkey;
|
||||
ALTER TABLE user_messages ADD "timestamp" timestamp without time zone;
|
||||
UPDATE user_messages
|
||||
SET "timestamp" = messages2.timestamp
|
||||
FROM messages2
|
||||
WHERE messages2.id = user_messages.msg;
|
||||
|
||||
ALTER TABLE user_messages ADD "timestamp" timestamp without time zone;
|
||||
UPDATE user_messages
|
||||
SET "timestamp" = messages2.timestamp
|
||||
FROM messages2
|
||||
WHERE user_messages.timestamp is NULL AND messages2.id = user_messages.msg;
|
||||
|
||||
ALTER TABLE user_messages ALTER "timestamp" SET NOT NULL;
|
||||
|
||||
ALTER TABLE user_messages
|
||||
ADD CONSTRAINT user_messages_msg_fkey
|
||||
FOREIGN KEY (msg, "timestamp") REFERENCES messages2(id, "timestamp") MATCH FULL;
|
||||
|
||||
|
||||
-- Adjust package_messages
|
||||
|
||||
ALTER TABLE package_messages DROP CONSTRAINT package_messages_msg_fkey;
|
||||
|
||||
ALTER TABLE package_messages ADD "timestamp" timestamp without time zone;
|
||||
UPDATE package_messages
|
||||
SET "timestamp" = messages2.timestamp
|
||||
FROM messages2
|
||||
WHERE messages2.id = package_messages.msg;
|
||||
|
||||
ALTER TABLE user_messages ADD "timestamp" timestamp without time zone;
|
||||
UPDATE user_messages
|
||||
SET "timestamp" = messages2.timestamp
|
||||
FROM messages2
|
||||
WHERE user_messages.timestamp is NULL AND messages2.id = user_messages.msg;
|
||||
|
||||
ALTER TABLE user_messages ALTER "timestamp" SET NOT NULL;
|
||||
|
||||
ALTER TABLE package_messages
|
||||
ADD CONSTRAINT package_messages_msg_fkey
|
||||
FOREIGN KEY (msg, "timestamp") REFERENCES messages2(id, "timestamp") MATCH FULL;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue