D7VK byl vydán ve verzi 1.2. Jedná se o fork DXVK implementující překlad volání Direct3D 5, 6 a 7 na Vulkan. DXVK zvládá Direct3D 8, 9, 10 a 11.
Byla vydána verze 12.0.0 knihovny libvirt (Wikipedie) zastřešující různé virtualizační technologie a vytvářející jednotné rozhraní pro správu virtuálních strojů. Současně byl ve verzi 12.0.0 vydán související modul pro Python libvirt-python. Přehled novinek v poznámkách k vydání.
CreepyLink.com je nový zkracovač URL adres, 'díky kterému budou vaše odkazy vypadat tak podezřele, jak je to jen možné'. Například odkaz na abclinuxu.cz tento zkracovač převádí do podoby 'https://netflix.web-safe.link/logger_8oIlgs_free_money.php'. Dle prohlášení autora je CreepyLink alternativou ke zkracovači ShadyURL (repozitář na githubu), který dnes již bohužel není v provozu.
Na blogu Raspberry Pi byla představena rozšiřující deska Raspberry Pi AI HAT+ 2 s akcelerátorem Hailo-10 a 8 GB RAM. Na rozdíl od předchozí Raspberry Pi AI HAT+ podporuje generativní AI. Cena desky je 130 dolarů.
Wikipedie slaví 25. výročí svého založení. Vznikla 15. ledna 2001 jako doplňkový projekt k dnes již neexistující encyklopedii Nupedia. Doména wikipedia.org byla zaregistrována 12. ledna 2001. Zítra proběhne v Praze Večer svobodné kultury, který pořádá spolek Wikimedia ČR.
Po více než dvou letech od vydání předchozí verze 2.12 byla vydána nová stabilní verze 2.14 systémového zavaděče GNU GRUB (GRand Unified Bootloader, Wikipedie). Přehled novinek v souboru NEWS a v aktualizované dokumentaci.
Google Chrome 144 byl prohlášen za stabilní. Nejnovější stabilní verze 144.0.7559.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 10 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře (YouTube).
Microsoft zveřejnil zdrojový kód XAML Studia a uvolnil ho pod MIT licencí. XAML Studio je nástroj ze světa Windows, určený pro tvorbu uživatelského rozhraní aplikací pomocí XAML (Extensible Application Markup Language). Stalo se tak zhruba po osmi letech od prvního prohlášení Microsoftu, že se tento kód chystá zveřejnit.
TimeCapsule, 'časová kapsle', je jazykový model trénovaný výhradně na datech z určitých míst a časových období, aby se tak napodobila autentická slovní zásoba, způsob vyjadřování a názory dané doby. Na Hugging face jsou k dispozici modely natrénované na historických textech dostupných v oblasti Londýna mezi lety 1800 až 1875.
Radicle byl vydán ve verzi 1.6.0 s kódovým jménem Amaryllis. Jedná se o distribuovanou alternativu k softwarům pro spolupráci jako např. GitLab.
Zdravím.
Mám Postgres 8.0.13, v ňom databázu s takýmito tabuľkami:
CREATE TABLE uzivatel (
id SERIAL NOT NULL,
meno VARCHAR NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO uzivatel (meno) VALUES ('Jozko');
-- dostane id = 1
INSERT INTO uzivatel (meno) VALUES ('Ferko');
-- dostane id = 2
INSERT INTO uzivatel (meno) VALUES ('Samko');
-- dostane id = 3
CREATE TABLE uloha (
id SERIAL NOT NULL,
zadavatel INT REFERENCES uzivatel (id) ON UPDATE CASCADE ON DELETE SET NULL,
riesitel INT REFERENCES uzivatel (id) ON UPDATE CASCADE ON DELETE SET NULL,
kontrolor INT REFERENCES uzivatel (id) ON UPDATE CASCADE ON DELETE SET NULL,
-- plus nejake dalsie nepodstatne stlpce
PRIMARY KEY (id)
);
INSERT INTO uloha (zadavatel, riesitel, kontrolor) VALUES (1,NULL,NULL);
INSERT INTO uloha (zadavatel, riesitel, kontrolor) VALUES (2,2,NULL);
INSERT INTO uloha (zadavatel, riesitel, kontrolor) VALUES (3,3,3);
T.j. sú tam užívatelia a úlohy k nim. Eviduje sa kto úlohu zadal, kto ju rieši (resp. riešil) a kto ju skontroloval. Je to ošetrené referenciami tam, aby zmazanie užívateľa nastavilo v príslušnom stĺpci NULL. Problém nastáva, ak vo všetkých 3 stĺpcoch je tá istá hodnota (ten istý užívateľ). Pri pokuse o vymazanie takého užívateľa sa to zasekne, namiesto toho aby nastavilo všade NULL:
araxon=# DELETE FROM uzivatel WHERE id=1; -- toto je v pohode DELETE 1 araxon=# DELETE FROM uzivatel WHERE id=2; -- toto je este tiez v pohode DELETE 1 araxon=# DELETE FROM uzivatel WHERE id=3; -- a toto uz je problem ERROR: insert or update on table "uloha" violates foreign key constraint "uloha_kontrolor_fkey" DETAIL: Key (kontrolor)=(3) is not present in table "uzivatel". CONTEXT: SQL statement "UPDATE ONLY "public"."uloha" SET "riesitel" = NULL WHERE "riesitel" = $1"
T.j. ak sú referencie na užívateľa len v jednom či dvoch stĺpcoch, tak to ide, ale v troch a viac sa to už sekne. Vyzerá to, že pri mazaní toho tretieho užívateľa to opraví prvé dve referencie (zadavatel, riesitel) a potom sa pokúsi užívateľa vymazať nehľadiac na tretiu referenciu (kontrolor). Bude to najskôr nejaký limit, ktorý je v Postgresi zakomponovaný natvrdo. Ak sa na ten istý záznam odkazujú len ľubovoľné 2 stĺpce, tak to ide bez problémov, ak ich je viac, tak to už zlyhá. Nenašiel som k tomuto nič v dokumentácii, ani na fórach, tak sa pýtam: nestretol sa s tým niekto? Viem, že je možné zmeniť štruktúru aplikácie, ale toto je len príklad - v skutočnosti to máme zložitejšie, týka sa to viacerých tabuliek a je to nasadené kade-tade. Tento problém nie je vôbec častý, akurát trochu nahlodáva moju vieru v to, že všetko vždy bude fungovať tak ako má.
Otázka teda znie: dá sa tento limit nastaviť v konfigurácii, alebo pri kompilácii postgresu? Rád by som to vyriešil bez toho aby trebalo meniť aplikáciu - o referenčnú integritu sa má starať databáza, a nie že to bude kontrolovať ešte aj aplikácia.
Řešení dotazu:
CREATE TABLE users ( id SERIAL NOT NULL, name VARCHAR NOT NULL, PRIMARY KEY (id) ); INSERT INTO users VALUES (1, 'Jozko'); INSERT INTO users VALUES (2, 'Ferko'); INSERT INTO users VALUES (3, 'Samko'); CREATE TABLE tasks ( id SERIAL NOT NULL, owner INT REFERENCES users (id) ON UPDATE CASCADE ON DELETE SET NULL, worker INT REFERENCES users (id) ON UPDATE CASCADE ON DELETE SET NULL, checked_by INT REFERENCES users (id) ON UPDATE CASCADE ON DELETE SET NULL, PRIMARY KEY (id) ); INSERT INTO tasks VALUES (1,NULL,NULL); INSERT INTO tasks VALUES (2,2,NULL); INSERT INTO tasks VALUES (3,3,3); DELETE FROM users WHERE id = 1; -- works simple DELETE FROM users WHERE id = 2; -- works ok DELETE FROM users WHERE id = 3; -- doesn't work, why
CREATE TABLE users ( id integer NOT NULL, name VARCHAR NOT NULL, PRIMARY KEY (id) ); INSERT INTO users VALUES (1, 'Jozko'); INSERT INTO users VALUES (2, 'Ferko'); INSERT INTO users VALUES (3, 'Samko'); CREATE TABLE tasks ( id integer NOT NULL, owner INT REFERENCES users (id) ON UPDATE CASCADE ON DELETE SET NULL INITIALLY DEFERRED, worker INT REFERENCES users (id) ON UPDATE CASCADE ON DELETE SET NULL INITIALLY DEFERRED, checked_by INT REFERENCES users (id) ON UPDATE CASCADE ON DELETE SET NULL INITIALLY DEFERRED, PRIMARY KEY (id) ); INSERT INTO tasks VALUES (1,1,NULL,NULL); INSERT INTO tasks VALUES (2,2,2,NULL); INSERT INTO tasks VALUES (3,3,3,3); DELETE FROM users WHERE id = 1; -- works simple DELETE FROM users WHERE id = 2; -- works ok DELETE FROM users WHERE id = 3; -- works tooDocela bych rekl, ze se jedna o bug postgresql (vlastnost), resp. nedomyslenost pri vyhodnocovani podminek. Pavel
INITIALLY DEFERRED to chodí.
Tiskni
Sdílej: