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í
×
    dnes 03:33 | Nová verze

    Wayback byl vydán ve verzi 0.3. Wayback je "tak akorát Waylandu, aby fungoval Xwayland". Jedná se o kompatibilní vrstvu umožňující běh plnohodnotných X11 desktopových prostředí s využitím komponent z Waylandu. Cílem je nakonec nahradit klasický server X.Org, a tím snížit zátěž údržby aplikací X11.

    Ladislav Hagara | Komentářů: 0
    včera 14:44 | Nová verze

    Byla vydána verze 4.0.0 programovacího jazyka Ruby (Wikipedie). S Ruby Box a ZJIT. Ruby lze vyzkoušet na webové stránce TryRuby. U příležitosti 30. narozenin, první veřejná verze Ruby 0.95 byla oznámena 21. prosince 1995, proběhl redesign webových stránek.

    Ladislav Hagara | Komentářů: 0
    24.12. 02:11 | Komunita

    Všem čtenářkám a čtenářům AbcLinuxu krásné Vánoce.

    Ladislav Hagara | Komentářů: 22
    24.12. 02:00 | Nová verze

    Byla vydána nová verze 7.0 linuxové distribuce Parrot OS (Wikipedie). S kódovým názvem Echo. Jedná se o linuxovou distribuci založenou na Debianu a zaměřenou na penetrační testování, digitální forenzní analýzu, reverzní inženýrství, hacking, anonymitu nebo kryptografii. Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    23.12. 18:33 | Nová verze

    Vývojáři postmarketOS vydali verzi 25.12 tohoto před osmi lety představeného operačního systému pro chytré telefony vycházejícího z optimalizovaného a nakonfigurovaného Alpine Linuxu s vlastními balíčky. Přehled novinek v příspěvku na blogu. Na výběr jsou 4 uživatelská rozhraní: GNOME Shell on Mobile, KDE Plasma Mobile, Phosh a Sxmo.

    Ladislav Hagara | Komentářů: 0
    23.12. 13:55 | Nová verze

    Byla vydána nová verze 0.41.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 6.1 nebo novější a také libplacebo 6.338.2 nebo novější.

    Ladislav Hagara | Komentářů: 0
    23.12. 12:44 | Nová verze

    Byla vydána nová verze 5.5 (novinky) skriptovacího jazyka Lua (Wikipedie). Po pěti a půl letech od vydání verze 5.4.

    Ladislav Hagara | Komentářů: 0
    22.12. 23:44 | Nová verze

    Byla vydána nová verze 5.4.0 programu na úpravu digitálních fotografií darktable (Wikipedie). Z novinek lze vypíchnout vylepšenou podporu Waylandu. Nejnovější darktable by měl na Waylandu fungovat stejně dobře jako na X11.

    Ladislav Hagara | Komentářů: 0
    21.12. 05:00 | Nová verze

    Byla vydána beta verze Linux Mintu 22.3 s kódovým jménem Zena. Podrobnosti v přehledu novinek a poznámkách k vydání. Vypíchnout lze, že nástroj Systémová hlášení (System Reports) získal mnoho nových funkcí a byl přejmenován na Informace o systému (System Information). Linux Mint 22.3 bude podporován do roku 2029.

    Ladislav Hagara | Komentářů: 2
    21.12. 01:55 | Nová verze

    GNU Project Debugger aneb GDB byl vydán ve verzi 17.1. Podrobný přehled novinek v souboru NEWS.

    Ladislav Hagara | Komentářů: 0
    Kdo vám letos nadělí dárek?
     (35%)
     (2%)
     (11%)
     (2%)
     (1%)
     (2%)
     (16%)
     (18%)
     (13%)
    Celkem 94 hlasů
     Komentářů: 18, poslední 24.12. 15:29
    Rozcestník

    Dotaz: plpgsql a execute

    11.5.2005 16:36 stradivarius
    plpgsql a execute
    Přečteno: 170×
    ahoj, potreboval bych zmenit zaznam v tabulce pomoci funkce v plpgsql. UPDATE je sestavovan v cyklu FOR a vypada takto:

    EXECUTE ''UPDATE nodes_wgs set ycoord_float = '' || y || '' WHERE gid = '' || zaznam.gid || '';'';

    prikaz se jakoby provadi, ale nic se neupdatne. Kdyz si dam stejny retezec vypisovat na obrazovku, je v poradku, napr.: UPDATE nodes_wgs set ycoord_float = 50.0675771 WHERE gid = 6002;

    nesetkali jste se nekdo s timhle problemem? Asi to bude nejaka hloupost.. Dik

    Odpovědi

    11.5.2005 17:26 eXEden | skóre: 13 | blog: Plkoviny | Praha
    Rozbalit Rozbalit vše Re: plpgsql a execute
    Nevim sice, jak to volas, ale nechybi tam nekde commit?
    11.5.2005 23:43 stradivarius
    Rozbalit Rozbalit vše Re: plpgsql a execute
    ahoj, nemam transakci. je to normalni UDF v Pl/PgSQL, kterou volam z shellu psql. Jde o to, aby se ten update udelal rychle. Kdyz toto napisu v bashi tak je to na dva dny, protoze dat je moc. Souradnice mam 10000000x vetsi nez je wgs84 (napr. misto 15.12345 mam 151234560) a chci je tedy vlozit do noveho sloupce xcoord_float ve spravne velikosti. Funkce vypada tak:

    CREATE FUNCTION preved_wgs() RETURNS void AS '

    DECLARE

    zaznam nodes_wgs%ROWTYPE;

    x nodes_wgs.xcoord_float%TYPE;

    querytext1 varchar(100);

    BEGIN

    FOR zaznam IN SELECT * from nodes_wgs LOOP

    x := zaznam.xcoord / 10000000.0;

    EXECUTE ''UPDATE nodes_wgs set xcoord_float = '' || x || '' WHERE gid = '' || zaznam.gid || '';'';

    querytext1 := ''UPDATE nodes_wgs set xcoord_float = '' || x || '' WHERE gid = '' || zaznam.gid || '';'';

    UPDATE nodes_wgs SET xcoord_float = x WHERE gid = zaznam.gid;

    RAISE INFO ''querytext1 is %'', querytext1;

    END LOOP;

    RETURN "";

    END'

    LANGUAGE 'plpgsql';

    pri spusteni funkce to normalne vypisuje, co ma, tzn spoustu dat:-) UPDATE, ktery si nechavam vypisovat jako info mi funguje, kdyz ho zkopiruju do psql. Ale ten EXECUTE se proste neprovede.. Ten vypis:

    INFO: updating gid no. 9080

    INFO: querytext1 is UPDATE nodes_wgs set xcoord_float = 14.4307393 WHERE gid = 9080;

    .

    .

    .

    atd. sorry za hnusny format ale na "html znacky" dnes nejak nemam chut:-)
    12.5.2005 06:44 Pavel 'lingeek' Szalbot | skóre: 54 | Třinec
    Rozbalit Rozbalit vše Re: plpgsql a execute
    Řekl bych, že místo tvého EXECUTE "UPDATE .....

    PREPARE plan (BIGINT, BIGINT) AS UPDATE nodes_wgs set xcoord_float = $1 WHERE gid = $2; EXECUTE plan (x, zaznam.gid);

    -> Chybí mi tam PREPARE, které v téhle situaci stejně postrádá smysl, pokud ovšem daný "plán" neprovádíš častěji-

    BTW. dal bych si pozor na převody, ale o tom asi víš.
    Math, as Barbie says, is hard.
    12.5.2005 16:32 stradivarius
    Rozbalit Rozbalit vše Re: plpgsql a execute
    Ahoj, dik za tip, nicmene EXECUTE v plpgsql ma jiny vyznam nez v SQL, aspon tak chapu manual http://www.postgresql.org/docs/7.4/interactive/plpgsql-statements.html

    Bohuzel se mi to nepovedlo vyresit tak, jak jsem chtel - uz jsem nemel cas to resit, tak jsem to provedl jednim priisernym hackem, se kterym se nebudu ani chlubit. Rekl bych ze problem byl v prevodech, jak pises. Mam pocit, jako by EXECUTE v plpgsql nedavalo hlasky o chybach a varovani. Presto by me to zajimalo, dynamicke query v UDF budu jeste do budoucna resit. Pokud byste tedy nekdo vedel, kde jsem mel chybu? Dik
    13.5.2005 08:58 Pavel 'lingeek' Szalbot | skóre: 54 | Třinec
    Rozbalit Rozbalit vše Re: plpgsql a execute
    Máš pravdu... EXECUTE mi chybové hlášky vypisuje, tak zkus ještě SET client_min_messages=INFO;

    Chyba bude asi opravdu v těch převodech (zkus typ bigint, ale vidím, že budeš potřebovat spíše numeric) - kód mi přijde v pořádku, ale ... Pokud dobře vidím, tak jen updatuješ celou tabulku nodes_wgs a konkrétně jen přenastavuješ xcoord_float na jinou hodnotu. To se dá dobře udělat příkazem: UPDATE nodes_wgs SET xcoord_float=xcoord*10000000.0. Nebo mi zase něco uteklo? Btw. ten update bude stejně pomalý (a s typem numeric ještě pomalejší).
    Math, as Barbie says, is hard.
    16.5.2005 11:04 stradivarius
    Rozbalit Rozbalit vše Re: plpgsql a execute
    To se dá dobře udělat příkazem: UPDATE nodes_wgs SET xcoord_float=xcoord*10000000.0.
    mas pravdu:-), ale za tim pak jeste nasledovalo vlozeni bodu POINT v postgisu, ktere bohuzel nejde takto a navic setavovani retezce query budu potrebovat dale. Vyresil jsem to nakonec jinak:

    CREATE OR REPLACE FUNCTION preved_point(integer, float, float) RETURNS void AS '

    DECLARE

    ide integer;

    x float;

    y float;

    BEGIN

    ide := $1;

    x := $2;

    y := $3;

    UPDATE nodes_wgs SET nodes_geom = Geomfromtext((''POINT('' || x ||'' '' || y || '')'' ), 4326) WHERE gid = ide;

    RETURN;

    END

    ' LANGUAGE PLPGSQL;

    a potom samozrejme:

    select preved_point(gid, xcoord_float, ycoord_float) from nodes_wgs;

    Co se tyce rychlosti, bylo to do dvou minut (96000 zaznamu, PIII+256RAM). Sestavoveni dotazu, tak jak jsem uvedl v prvnim prispevku, jsem bohuzel nerozchodil. Zdravim

    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.