Project

General

Profile

Экстендер MdbHistoryBrowser » SQL_PG_PH_HISTORY_Update.sql

Sergey Kolyshkin, 27/12/2025 12:32

 
-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> begin func >>
CREATE OR REPLACE FUNCTION pg_temp.AddGroupId()
RETURNS int AS
$func$

DECLARE
_comp_ver int := 4;
_comp_name text := 'mdb.ph_history';

BEGIN

IF EXISTS(SELECT *
FROM components
WHERE name = _comp_name
AND veri >= _comp_ver)
THEN
RAISE NOTICE 'Component: % already updated to version % or more', _comp_name, _comp_ver;
RETURN 1;
END IF;

-- ++++++++++++++++ begin payload ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
RAISE NOTICE 'Start component % update to version %', _comp_name, _comp_ver;

ALTER TABLE ph_history
ADD GroupID int NULL;
RAISE NOTICE 'Column GroupID added to table PH_HISTORY';

-- вычисляем значение для этой колонки
UPDATE ph_history ph_hist
SET GroupID =
(SELECT MIN(ph_hist_sub.ID)
FROM ph_history AS ph_hist_sub
WHERE ph_hist_sub.PH_ID = ph_hist.PH_ID
AND ph_hist_sub.ID <= ph_hist.ID
AND ph_hist_sub.ID > ph_hist.ID - 100
AND ph_hist_sub.UserName = ph_hist.UserName
AND ph_hist_sub.HostName = ph_hist.HostName
AND ABS(
DATE_PART('day', ph_hist_sub.ModifyDate - ph_hist.ModifyDate) * 24 +
DATE_PART('hour', ph_hist_sub.ModifyDate - ph_hist.ModifyDate) * 60 +
DATE_PART('minute', ph_hist_sub.ModifyDate - ph_hist.ModifyDate) * 60 +
DATE_PART('second', ph_hist_sub.ModifyDate - ph_hist.ModifyDate)
) < 5)
WHERE ph_hist.GroupID IS NULL;
RAISE NOTICE 'GroupID calculated for existing items';

-- ++++++++++++++++++ end payload ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

INSERT INTO components(name, veri) VALUES (_comp_name, _comp_ver);

RAISE NOTICE '****Component: % v: % OK', _comp_name, _comp_ver;
RETURN 1;

END
$func$ LANGUAGE plpgsql;
-- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< end func <<

-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> begin func >>
CREATE OR REPLACE FUNCTION pg_temp.ChangeDefaultHostNameConstraint()
RETURNS int AS
$func$

DECLARE
_comp_ver int := 5;
_comp_name text := 'mdb.ph_history';

BEGIN

IF EXISTS(SELECT *
FROM components
WHERE name = _comp_name
AND veri >= _comp_ver)
THEN
RAISE NOTICE 'Component: % already updated to version % or more', _comp_name, _comp_ver;
RETURN 1;
END IF;

-- ++++++++++++++++ begin payload ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
RAISE NOTICE 'Start component % update to version %', _comp_name, _comp_ver;

ALTER TABLE ph_history
ALTER COLUMN HostName SET DEFAULT host(inet_client_addr());

-- ++++++++++++++++++ end payload ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

INSERT INTO components(name, veri) VALUES (_comp_name, _comp_ver);

RAISE NOTICE '****Component: % v: % OK', _comp_name, _comp_ver;
RETURN 1;

END
$func$ LANGUAGE plpgsql;
-- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< end func <<

-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> begin step >>
BEGIN TRANSACTION;
SELECT pg_temp.AddGroupId();
COMMIT;
-- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< end step <<

-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> begin step >>
BEGIN TRANSACTION;
SELECT pg_temp.ChangeDefaultHostNameConstraint();
COMMIT;
-- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< end step <<
(8-8/9)
Add picture from clipboard (Maximum size: 742 MB)