Api v1.17.0 (#1778) (#1779)

* refactor(DB): Defined v1.17.0 delta scripts

* feat(DB): support of UT flag in sessions table
This commit is contained in:
Kraiem Taha Yassine 2023-12-14 19:10:34 +01:00 committed by GitHub
parent a6d5fe420b
commit 86a38aa61a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 147 additions and 6 deletions

View file

@ -0,0 +1 @@
CREATE OR REPLACE FUNCTION openreplay_version AS() -> 'v1.17.0-ee';

View file

@ -0,0 +1,38 @@
\set previous_version 'v1.16.0-ee'
\set next_version 'v1.17.0-ee'
SELECT openreplay_version() AS current_version,
openreplay_version() = :'previous_version' AS valid_previous,
openreplay_version() = :'next_version' AS is_next
\gset
\if :valid_previous
\echo valid previous DB version :'previous_version', starting DB upgrade to :'next_version'
BEGIN;
SELECT format($fn_def$
CREATE OR REPLACE FUNCTION openreplay_version()
RETURNS text AS
$$
SELECT '%1$s'
$$ LANGUAGE sql IMMUTABLE;
$fn_def$, :'next_version')
\gexec
--
ALTER TABLE IF EXISTS public.sessions
ADD COLUMN IF NOT EXISTS has_ut_test boolean DEFAULT FALSE;
-- !!! The following query takes a lot of time
CREATE INDEX IF NOT EXISTS sessions_session_id_has_ut_test_idx ON public.sessions (session_id, has_ut_test);
UPDATE public.sessions
SET has_ut_test= TRUE
WHERE session_id IN (SELECT session_id FROM public.ut_tests_signals);
COMMIT;
\elif :is_next
\echo new version detected :'next_version', nothing to do
\else
\warn skipping DB upgrade of :'next_version', expected previous version :'previous_version', found :'current_version'
\endif

View file

@ -9,7 +9,7 @@ CREATE EXTENSION IF NOT EXISTS pgcrypto;
CREATE OR REPLACE FUNCTION openreplay_version()
RETURNS text AS
$$
SELECT 'v1.16.0-ee'
SELECT 'v1.17.0-ee'
$$ LANGUAGE sql IMMUTABLE;
@ -460,6 +460,7 @@ $$
referrer text NULL DEFAULT NULL,
base_referrer text NULL DEFAULT NULL,
file_key bytea DEFAULT NULL,
has_ut_test boolean DEFAULT FALSE,
metadata_1 text DEFAULT NULL,
metadata_2 text DEFAULT NULL,
metadata_3 text DEFAULT NULL,
@ -515,12 +516,13 @@ $$
CREATE INDEX sessions_utm_medium_gin_idx ON public.sessions USING GIN (utm_medium gin_trgm_ops);
CREATE INDEX sessions_utm_campaign_gin_idx ON public.sessions USING GIN (utm_campaign gin_trgm_ops);
CREATE INDEX sessions_base_referrer_gin_idx ON public.sessions USING GIN (base_referrer gin_trgm_ops);
CREATE INDEX sessions_session_id_has_ut_test_idx ON public.sessions (session_id, has_ut_test);
ALTER TABLE public.sessions
ADD CONSTRAINT web_browser_constraint CHECK (
(sessions.platform = 'web' AND sessions.user_browser NOTNULL) OR
(sessions.platform != 'web' AND sessions.user_browser ISNULL));
(sessions.platform = 'web' AND sessions.user_browser NOTNULL) OR
(sessions.platform != 'web' AND sessions.user_browser ISNULL));
ALTER TABLE public.sessions
ADD CONSTRAINT web_user_browser_version_constraint CHECK ( sessions.platform = 'web' OR sessions.user_browser_version ISNULL);

View file

@ -0,0 +1 @@
CREATE OR REPLACE FUNCTION openreplay_version AS() -> 'v1.16.0-ee';

View file

@ -0,0 +1,29 @@
\set previous_version 'v1.17.0-ee'
\set next_version 'v1.16.0-ee'
SELECT openreplay_version() AS current_version,
openreplay_version() = :'previous_version' AS valid_previous,
openreplay_version() = :'next_version' AS is_next
\gset
\if :valid_previous
\echo valid previous DB version :'previous_version', starting DB downgrade to :'next_version'
BEGIN;
SELECT format($fn_def$
CREATE OR REPLACE FUNCTION openreplay_version()
RETURNS text AS
$$
SELECT '%1$s'
$$ LANGUAGE sql IMMUTABLE;
$fn_def$, :'next_version')
\gexec
--
COMMIT;
\elif :is_next
\echo new version detected :'next_version', nothing to do
\else
\warn skipping DB downgrade of :'next_version', expected previous version :'previous_version', found :'current_version'
\endif

View file

@ -0,0 +1,38 @@
\set previous_version 'v1.16.0'
\set next_version 'v1.17.0'
SELECT openreplay_version() AS current_version,
openreplay_version() = :'previous_version' AS valid_previous,
openreplay_version() = :'next_version' AS is_next
\gset
\if :valid_previous
\echo valid previous DB version :'previous_version', starting DB upgrade to :'next_version'
BEGIN;
SELECT format($fn_def$
CREATE OR REPLACE FUNCTION openreplay_version()
RETURNS text AS
$$
SELECT '%1$s'
$$ LANGUAGE sql IMMUTABLE;
$fn_def$, :'next_version')
\gexec
--
ALTER TABLE IF EXISTS public.sessions
ADD COLUMN IF NOT EXISTS has_ut_test boolean DEFAULT FALSE;
-- !!! The following query takes a lot of time
CREATE INDEX IF NOT EXISTS sessions_session_id_has_ut_test_idx ON public.sessions (session_id, has_ut_test);
UPDATE public.sessions
SET has_ut_test= TRUE
WHERE session_id IN (SELECT session_id FROM public.ut_tests_signals);
COMMIT;
\elif :is_next
\echo new version detected :'next_version', nothing to do
\else
\warn skipping DB upgrade of :'next_version', expected previous version :'previous_version', found :'current_version'
\endif

View file

@ -9,7 +9,7 @@ CREATE EXTENSION IF NOT EXISTS pgcrypto;
CREATE OR REPLACE FUNCTION openreplay_version()
RETURNS text AS
$$
SELECT 'v1.16.0'
SELECT 'v1.17.0'
$$ LANGUAGE sql IMMUTABLE;
@ -421,6 +421,7 @@ $$
utm_campaign text NULL DEFAULT NULL,
referrer text NULL DEFAULT NULL,
base_referrer text NULL DEFAULT NULL,
has_ut_test boolean DEFAULT FALSE,
metadata_1 text DEFAULT NULL,
metadata_2 text DEFAULT NULL,
metadata_3 text DEFAULT NULL,
@ -476,12 +477,13 @@ $$
CREATE INDEX sessions_utm_medium_gin_idx ON public.sessions USING GIN (utm_medium gin_trgm_ops);
CREATE INDEX sessions_utm_campaign_gin_idx ON public.sessions USING GIN (utm_campaign gin_trgm_ops);
CREATE INDEX sessions_base_referrer_gin_idx ON public.sessions USING GIN (base_referrer gin_trgm_ops);
CREATE INDEX sessions_session_id_has_ut_test_idx ON public.sessions (session_id, has_ut_test);
ALTER TABLE public.sessions
ADD CONSTRAINT web_browser_constraint CHECK (
(sessions.platform = 'web' AND sessions.user_browser NOTNULL) OR
(sessions.platform != 'web' AND sessions.user_browser ISNULL));
(sessions.platform = 'web' AND sessions.user_browser NOTNULL) OR
(sessions.platform != 'web' AND sessions.user_browser ISNULL));
ALTER TABLE public.sessions
ADD CONSTRAINT web_user_browser_version_constraint CHECK ( sessions.platform = 'web' OR sessions.user_browser_version ISNULL);

View file

@ -0,0 +1,30 @@
\set previous_version 'v1.17.0'
\set next_version 'v1.16.0'
SELECT openreplay_version() AS current_version,
openreplay_version() = :'previous_version' AS valid_previous,
openreplay_version() = :'next_version' AS is_next
\gset
\if :valid_previous
\echo valid previous DB version :'previous_version', starting DB downgrade to :'next_version'
BEGIN;
SELECT format($fn_def$
CREATE OR REPLACE FUNCTION openreplay_version()
RETURNS text AS
$$
SELECT '%1$s'
$$ LANGUAGE sql IMMUTABLE;
$fn_def$, :'next_version')
\gexec
--
COMMIT;
\elif :is_next
\echo new version detected :'next_version', nothing to do
\else
\warn skipping DB downgrade of :'next_version', expected previous version :'previous_version', found :'current_version'
\endif