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.
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í :-)
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.