abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

včera 15:44 | Komunita

Nadace The Document Foundation (TDF) zastřešující vývoj svobodného kancelářského balíku LibreOffice dnes slaví 6 let od svého oficiálního vzniku. Nadace byla představena 28. září 2010. Formálně ale byla založena až 17. února 2012. Poslední lednový den byl vydán LibreOffice 6.0. Dle zveřejněných statistik byl za dva týdny stažen již cca milionkrát.

Ladislav Hagara | Komentářů: 1
včera 04:44 | Bezpečnostní upozornění

CSIRT.CZ upozorňuje, že byla vydána nová verze 1.2.3 svobodného routovacího démona Quagga (Wikipedie) přinášející několik bezpečnostních záplat. Při nejhorší variantě může dojít až k ovládnutí běžícího procesu, mezi dalšími možnostmi je únik informací z běžícího procesu nebo odepření služby DoS. Konkrétní zranitelnosti mají následující ID CVE-2018-5378, CVE-2018-5379, CVE-2018-5380 a CVE-2018-5381.

Ladislav Hagara | Komentářů: 0
včera 00:22 | Pozvánky

V sobota 7. dubna proběhne v Brně na FIT VUT nekomerční konference Security Session '18 věnovaná novinkám a aktuálním problémům v oblasti bezpečnosti mobilních a informačních technologií. Organizátoři vyhlásili CFP. Návrhy přednášek a workshopů lze zaslat do 4. března. Spuštěna byla registrace.

Ladislav Hagara | Komentářů: 0
16.2. 23:55 | Nová verze

Byla vydána verze 1.10 programovacího jazyka Go (Wikipedie). Přehled novinek v poznámkách k vydání. Zdůraznit lze vylepšené cachování buildů.

Ladislav Hagara | Komentářů: 0
15.2. 22:55 | Komunita

V sobotu 21. dubna proběhne v Bratislavě na Fakultě informatiky a informačních technologií STU konference Bratislava OpenCamp 2018. Organizátoři vyhlásili CFP. Návrhy přednášek a workshopů lze zaslat do 10. března. Spuštěna byla registrace.

Ladislav Hagara | Komentářů: 0
15.2. 21:22 | Nová verze

Byla vydána verze 1.24 programovacího jazyka Rust (Wikipedie). Z novinek vývojáři zdůrazňují nový nástroj rustfmt pro reformátování zdrojových kódů dle požadovaného programovacího stylu a inkrementální překlad. Více v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust By Example.

Ladislav Hagara | Komentářů: 6
15.2. 13:00 | Komunita

Desktopovému týmu Ubuntu by se hodilo více informací o desktopech uživatelů Ubuntu. V diskusním listu ubuntu-devel byl k diskusi předložen návrh řešení a seznam odesílaných informací. Ve výchozím stavu by mělo být odesílaní informací povoleno. Uživatel by měl mít možnost odesílaní kdykoli jednoduše zakázat [reddit].

Ladislav Hagara | Komentářů: 20
15.2. 05:55 | Komunita

V úterý 13. února vypršela platnost posledního patentu US 7,334,248 souvisejícího s MPEG-2 [Hacker News].

Ladislav Hagara | Komentářů: 22
15.2. 04:44 | Komunita

Organizace Electronic Frontier Foundation (EFF) na svém blogu oznámila, že otevřená certifikační autorita Let's Encrypt dosáhla dalšího milníku. Počet platných certifikátů překročil 50 milionů, viz statistiky. Cekově bylo vydáno již přes 217 milionů certifikátů.

Ladislav Hagara | Komentářů: 0
15.2. 00:22 | Pozvánky

Konference SUSE Expert Days 2018 proběhnou mimo jiné také 1. března v Bratislavě a 15. března v Praze.

Ladislav Hagara | Komentářů: 0
Který webový vyhledávač používáte nejčastěji?
 (3%)
 (27%)
 (62%)
 (2%)
 (3%)
 (1%)
 (1%)
 (1%)
Celkem 340 hlasů
 Komentářů: 34, poslední 14.2. 18:44
    Rozcestník

    Dotaz: PostgreSQL: GET DIAGNOSTICS ROW_COUNT

    xkucf03 avatar 29.5.2009 15:58 xkucf03 | skóre: 46 | blog: xkucf03
    PostgreSQL: GET DIAGNOSTICS ROW_COUNT
    Přečteno: 338×

    Mějme funkci pro změnu uživatelova hesla:

    CREATE OR REPLACE FUNCTION zmen_heslo("login" character varying, domena character varying, stare_heslo character varying, nove_heslo character varying)
      RETURNS text AS
    $BODY$DECLARE pocet integer;
    BEGIN
    UPDATE uzivatel
    SET heslo = md5($4)
    WHERE login = $1
    AND domena = $2
    AND heslo = md5($3);
    GET DIAGNOSTICS pocet = ROW_COUNT; IF pocet = 1 THEN RETURN 'Změna hesla pro ' || $1 || '@' || $2 || ' proběhla úspěšně.'; ELSE RAISE EXCEPTION 'Nesprávné heslo, nebo uživatel % neexistuje', $1 || '@' || $2; END IF; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE SECURITY DEFINER COST 100; ALTER FUNCTION zmen_heslo(character varying, character varying, character varying, character varying) OWNER TO posta; GRANT EXECUTE ON FUNCTION zmen_heslo(character varying, character varying, character varying, character varying) TO public; GRANT EXECUTE ON FUNCTION zmen_heslo(character varying, character varying, character varying, character varying) TO posta; GRANT EXECUTE ON FUNCTION zmen_heslo(character varying, character varying, character varying, character varying) TO posta_zmena_hesla; COMMENT ON FUNCTION zmen_heslo(character varying, character varying, character varying, character varying) IS 'Změní heslo uživatele.';

    Podle dokumentace by ROW_COUNT mělo vracet počet záznamů dotčených příkazem (updatem) – tedy 1, právě tehdy když uživatel existuje a zadal správě staré heslo.

    Problém je, pokud existují dva uživatelské účty se stejným heslem. ROW_COUNT je v takovém případě 2 a funkce skončí chybou.

    Můžu sice změnit podmínku na  IF pocet >= 1 THEN, ale to se mi nelíbí. Proč by ROW_COUNT mělo být dva? Vždyť když ten update pustím ručně, ukáže se mi správně: „1 rows affected“. Ve WHERE podmínkách se kontroluje login, doména a staré heslo a takový uživatel je tam jen jeden. Co s tím má společného, že existuje uživatel se stejným heslem (ale jiným jménem nebo doménou)?

    Pokud někdo potřebuje širší souvislosti, kompletní zdrojáky jsou tady: mercurial.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-Výuka.cz, Nekuřák.net

    Řešení dotazu:


    Odpovědi

    okbob avatar 29.5.2009 17:37 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
    Rozbalit Rozbalit vše Re: PostgreSQL: GET DIAGNOSTICS ROW_COUNT

    cus

    ono ti to fungovat nemuze - mas tam kolizi promenne a sql identifikatoru, kterou sice resis, ale spatne. V plpgsql maji vyssi prioritu plpgsql promenne. Tudiz zapis WHERE ... domena = $2 je fakticky $2 = $2 a tudiz se domena fakticky netestuje. Tak jak jsi to napsal by to fungovalo treba v Oraclu, ale ne v postgresu. To inkriminovane misto uprav (ta sama chyba je i s promennou login.

    Pouzij kvalifikatory -

    UPDATE uzivatel SET heslo = .. WHERE uzivatel.login = "login" and uzivatel.domena = domena

    Pavel

    xkucf03 avatar 29.5.2009 22:18 xkucf03 | skóre: 46 | blog: xkucf03
    Rozbalit Rozbalit vše Re: PostgreSQL: GET DIAGNOSTICS ROW_COUNT

    Ahoj,

    díky moc, to bylo ono, přidal jsem uzivatel. a na proměnné se radši odkazuji pomocí názvu v uvozovkách, názvy jsem změnil, aby se nepletly se sloupci tabulky. Dřív stačilo zadat správné heslo a jakéhokoli uživatele… ale naštěstí díky podmínce pocet = 1 to neprošlo.

    Franta

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-Výuka.cz, Nekuřák.net
    okbob avatar 30.5.2009 09:00 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
    Rozbalit Rozbalit vše Re: PostgreSQL: GET DIAGNOSTICS ROW_COUNT

    Používat úvozvoky není zrovna dobrý nápad - stejně, tak jako používat klíčová slova jako identifikátory. Bohatě postačí označit proměnné nějakým prefixem - mezi komunitou se používá podtržítko (a pokud to je možné, tak používat kvantifikátory (nebo aliasy)).

    http://www.postgres.cz/index.php/PL/pgSQL#Doporu.C4.8Den.C3.AD_pro_n.C3.A1vrh_ulo.C5.BEen.C3.BDch_procedur_v_jazyce_PL.2FpgSQL

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.