-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 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 <<