Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia Tuesday TopDrive KupDnes Navrcholu Bomba NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Drizzle nedovolí implicitní kartézský součin

Poměrně záludnou ale typickou copy/paste chybou v SQL dotazech je nechtěný kartézský součin. Záludnost této chyby spočívá v tom, že se projevuje se značným zpožděním – někdy i po několika letech provozu. Jeden z nových a velice aktivních forků MySQL Drizzle řeší tento problém velice přímočaře (a já jim v tom fandím) – implicitní kartézský součin v SQL dotazech neumožňuje.

Tato zprávička byla zaslána čtenářem serveru Root.cz pomocí formuláře Přidat zprávičku. Děkujeme!

Dále čtěte…         

Předchozí zprávička Následující zprávička        
Petr Šmíd
Petr Šmíd (neregistrovaný) ---.frankfurt.ipgprs.viaginterkom.de
8. 2. 2011 16:30 Nový

Zpětná kompatibilita?

celé vlákno

To by mě zajímalo, jak budou řešit zpětnou kompatibilitu. No asi nijak. Takže pokud použiji novější verzi databáze, tak mi přestane starý program fungovat. Bezva...

Pavel Stěhule aura:89
8. 2. 2011 20:38 Nový

Re: Zpětná kompatibilita?

celé vlákno

Starý zápis povolený je. Jen nesmí vést ke kartézskému součinu. Osobně jsem ještě neviděl kód, který by nebyl zabugovaný a kartézský součin obsahoval. A k tomu ještě Drizzle kompatibilitu řešit nemusí - je kompatibilní sám se sebou a ještě teď ještě nevyšla finální verze. Co se týče funkcionality, tak se Drizzle pohybuje někde mezi 4 a 5 verzí MySQL. Takže apriori není kompatibilní s žádnou verzí MySQL, přičemž ovšem typické www aplikace by neměly mít zvláštní problém.

Karel
Karel (neregistrovaný) 93.90.162.---
9. 2. 2011 11:18 Nový

Re: Zpětná kompatibilita?

celé vlákno

1. U produkčního kódu máte víceméně pravdu, ale u testů a datových analýz je "plný" kartézský součin běžně používán. A protože žijeme v době, kdy testy jsou součástí produkčních kódů...

2. Chyb s kartézským součinem tak jak je ukázán ve článku je minimum. Taková chyba bude unikat vaší pozornosti jen pokud v jedné z těch tabulek bude právě jeden záznam. A pak je otázkou, proč taková tabulka vůbec existuje. Drtivá většina (víceméně všechny) chyb s kartézským součinem je neúplná reference. Mou noční můrou byl uživatel ERP systému, který provedl duplicitní příjem a ručně přepsal číslo šarže na již existující. Teprve v té chvíli se ukázalo, že pole "release_no" skutečně smysl má a "batch_no" nemusí být vždy unikátní (což evidentně řada programátorů nevěděla). To je právě ta chyba, která 10 let nevystrčí růžky. A s tou si Drizzle beztak neporadí :-)

Pavel Stěhule aura:89
9. 2. 2011 15:36 Nový

Re: Zpětná kompatibilita?

celé vlákno

Já mám trochu jinou zkušenost. Řada programátorů si všimne problematických řádků, ale jednoduše je eliminuje klauzulí DISTINCT - dokonce jsem narazil na programátora, který DISTINCT psal všude - preventivně. Jinak bezezbytku souhlasím s tím, že neúplná reference je vážnější problém. V prostředí, pro které je Drizzle zamýšleno si myslím, že blokování kartézského součinu (při starém zápisu) má smysl. Velká část programátorů webu SQL nerozumí, používá jej mechanicky - a tohle může pomoci.

jos
jos (neregistrovaný) ---.tabor.telecom.cz
11. 2. 2011 16:10 Nový

Re: Zpětná kompatibilita?

celé vlákno

dokonce jsem narazil na programátora, který DISTINCT psal všude

vona je v tomhle se SQL legrace, místo toho, aby DISTINCT byl default i pro SELECT (protože v relační db by to tak mělo bejt), tak je to default jen u UNIONu

Zasílat nově přidané příspěvky e-mailem        

Přehled názorů

Zpětná kompatibilita?
Petr Šmíd 8. 2. 2011 16:30
└ 
Re: Zpětná kompatibilita?
Pavel Stěhule 8. 2. 2011 20:38
 
└ 
Re: Zpětná kompatibilita?
Karel 9. 2. 2011 11:18
 
 
└ 
Re: Zpětná kompatibilita?
Pavel Stěhule 9. 2. 2011 15:36
 
 
 
└ 
Re: Zpětná kompatibilita?
jos 11. 2. 2011 16:10