Projekat

Općenito

Profil

Akcije

Podrška #30684

Zatvoren

F18 u2.set_knowhow_package_version(), verzija treba da se update-uje samo ako je veća od postojeće u bazi...

Dodano od Saša Vranić prije oko 13 godina. Izmjenjeno prije oko 13 godina.

Status:
Zatvoreno
Prioritet:
Urgentno
Odgovorna osoba:
Saša Vranić
Početak:
04.04.2013
Završetak:
% završeno:

0%

Procjena vremena:
Akcije #1

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
Akcije #2

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;

Akcije #3

Izmjenjeno od Saša Vranić prije oko 13 godina

znači ovo je funkcija koju bi trebao korigovati

Akcije #4

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; 
Akcije #5

Izmjenjeno od Saša Vranić prije oko 13 godina

commit

nova verzija u2 paketa 3.0.3

Akcije #6

Izmjenjeno od Saša Vranić prije oko 13 godina

ispravio i make_pkg skriptu također

Akcije #7

Izmjenjeno od Saša Vranić prije oko 13 godina

  • Status promijenjeno iz Dodijeljeno u Zatvoreno
Akcije

Također dostupno kao Atom PDF