Akcije
Podrška #30684
ZatvorenF18 u2.set_knowhow_package_version(), verzija treba da se update-uje samo ako je veća od postojeće u bazi...
Status:
Zatvoreno
Prioritet:
Urgentno
Odgovorna osoba:
Saša Vranić
Početak:
04.04.2013
Završetak:
% završeno:
0%
Procjena vremena:
Izmjenjeno od Saša Vranić prije oko 13 godina
znači, postoji jedan problem
trenutna verzija baze je 4.6.3 recimo
i sada puknemo paket za update 4.6.1... sam paket ne odradi ništa jer postoji provjera verzije unutar sql upita, međutim uvijek se na kraju update procesa izvrši funkcija setversion() na onu koja je zadata tim paketom...
Što znači da ako greškom pozovemo update 4.6.1 na 4.6.3, što se tiče podataka neće se ništa desiti, sve će preletiti, ali ćemo setovati verziju - vratiti je na 4.6.1
Ovdje imamo dvije stvari:
- funkcija setversion treba da radi samo u slučaju ako je update verzija > trenutne verzije u bazi
- sam db paket, potrebno je staviti uvijek one uslove, tako da praktično ne možemo ni pokrenuti paket 4.6.1 ako je baza već na 4.6.3
Izmjenjeno od Saša Vranić prije oko 13 godina
- Naslov promijenjeno iz F18 u2.setversion(), verzija treba da se update-uje samo ako je veća od postojeće u bazi... u F18 u2.set_knowhow_package_version(), verzija treba da se update-uje samo ako je veća od postojeće u bazi...
-- Function: u2.set_knowhow_package_version(text)
-- DROP FUNCTION u2.set_knowhow_package_version(text);
CREATE OR REPLACE FUNCTION u2.set_knowhow_package_version(package_name text)
RETURNS boolean AS
$BODY$
DECLARE
m_cnt integer;
m_version varchar;
BEGIN
-- kreiraj tabelu skeleton._versions
EXECUTE 'create table if not exists u2._versions( name text primary key, version text );';
SELECT pkghead_version INTO m_version FROM pkghead WHERE pkghead_name = package_name;
select count(*) INTO m_cnt FROM u2._versions WHERE name = package_name;
IF m_cnt > 0 THEN
UPDATE u2._versions SET version = m_version
WHERE name = package_name;
ELSE
INSERT INTO u2._versions(name, version)
VALUES (package_name, m_version);
END IF;
RETURN true;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION u2.set_knowhow_package_version(text)
OWNER TO admin;
Izmjenjeno od Saša Vranić prije oko 13 godina
znači ovo je funkcija koju bi trebao korigovati
Izmjenjeno od Saša Vranić prije oko 13 godina
treba ovako:
....
IF m_cnt > 0 THEN
---- mjenjamo samo update komandu !
UPDATE u2._versions SET version = m_version
WHERE name = package_name AND m_version > version;
ELSE
---- insert se radi svakako samo ako nema nikakvog zapisa !
INSERT INTO u2._versions(name, version)
VALUES (package_name, m_version);
END IF;
Izmjenjeno od Saša Vranić prije oko 13 godina
nova verzija u2 paketa 3.0.3
Izmjenjeno od Saša Vranić prije oko 13 godina
ispravio i make_pkg skriptu također
Izmjenjeno od Saša Vranić prije oko 13 godina
- Status promijenjeno iz Dodijeljeno u Zatvoreno
Akcije