Chystané vydání verze 2.0.11

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
David Grudl
Nette Core | 8227
+
0
-

Rád bych vydal verzi 2.0.11, která obsahuje řadu fixů v Nette\Database, opravuje #700, #1026, #634, #900, #1057, přidává dopřednou kompatibilitu pro |noescape v Latte a třídu Nette\Configurator a v Sandboxu je Adminer přístupný jen z localhostu. Pokud se neobjeví nějaký bezpečnostní problém, zřejmě by šlo o poslední verzi v řadě 2.0.x.

Update by pochopitelně neměl způsobit žádné komplikace. Pokud byste narazili na nějakou chybu nebo pokud víte o issue, které by mělo být do této verze zařazeno, dejte vědět.

enumag
Člen | 2118
+
0
-

Včera jsem něco dělal s 2.0.10 a všiml jsem si že rozkliknuté panely z debugBaru nepřekrývají laděnku. V masteru je to dávno opravené, tuším že to fixoval tento commit.

llsm
Člen | 121
+
0
-

enumag +1

David Grudl
Nette Core | 8227
+
0
-

fixed

Majkl578
Moderator | 1364
+
0
-

Letmo jsem to prošel a zaujaly mě následující:

Jinak jsem zkusil na pár projektech a zdá se být OK.

Editoval Majkl578 (17. 6. 2013 19:47)

Caine
Člen | 216
+
0
-

Nešlo by tam ještě zahrnout nejnovější laděnku resp alespoň nějakou verzi, která zobrazuje všechny panely mezi požadavkama…?

enumag
Člen | 2118
+
0
-

@Caine: Osobně bych tuhle featuru nestrkal do stable dokud nebude totéž fungovat i pro ajaxové požadavky. Když je to jenom pro redirecty, připadá mi to neúplné…

Caine
Člen | 216
+
0
-

@enumag mno nevím, ja jsem to pro ajax moc nepotřeboval a když už, tak je tu firelog…

Jinak aplikace většinou píšu tak, aby ajax šel vypnout v configu, a když je potřeba debugovat, tak se ajax prostě vypne:)

saimons
Člen | 293
+
0
-

Dnes jsem udelal upgrade z verze 2.0.10 na release-2.0.x z Githubu a je tam BC break. Na tabulkach bez PK jsem pri insertu pres Nette\Database\Table dsotal chybu: Table … does not have any primary key.

MartinitCZ
Člen | 580
+
0
-

@**saimons**: Tohle je chyba tvého návrhnu. ;) Primary key máš mít všude.

enumag
Člen | 2118
+
0
-

@martinit: To je sice pravda, ale pokud to fungovalo doteď, nemá takový BC break v poslední 2.0 verzi co dělat. Související diskusi najdeš zde.

Editoval enumag (26. 6. 2013 21:43)

saimons
Člen | 293
+
0
-

@martinit: S tim bych nesouhlasil, ze ma byt primarni klic vsude. Nechci se tu poustet do podrobnych popisu, protoze DB model navrchoval jiny clen tymu, ale v mem pripade ja umisteni PK navrhove spatne. Jedna se o tabulku s obrovskym objemem dat v rozsahu BIGINT a INDEX je nastaven na jiny atribut, pro ktery je potreba. Primarni klic se nevyuzije. Pokud si MySQL nekde stejne dela INDEX na skryty PK, tak to uz je vec MySQL (mozna docasna), ale v jinych DB se to da efektivne vyuzit.

enumag
Člen | 2118
+
0
-

@saimons: A proč ten jiný sloupec na kterym je index neni primární klíč? Není unikátní? Není tam nějaká kombinace sloupců, která dohromady identifikuje řádek a mohla by sloužit jako PK?

saimons
Člen | 293
+
0
-

@enumag: Atribut na kterem je INDEX neni unikanti a je tam proto, ze pouze pres tento atribut se dela vyber mnoziny. Vzajemna kombinace sloucu by sla pouzit, ale tzn., ze by na ne musel byt INDEX a to by zpomalilo zapis, protoze by se musel prepocitavat pro vsechny sloupce a pri vyberu by to v rychlosti nepomohlo, protoze se pres ne vyber nedela.

paranoiq
Člen | 392
+
0
-

@saimons skrytý PK není dočasná záležitost a není to specialita MySQL. každá běžná databáze potřebuje jednoznačně identifikovat záznam. ad „Primarni klic se nevyuzije“ – PK je to co říká enginu, kde konkrétně jsou uložena data. v sekundárních indexech jsou pouze odkazy na PK

RTFM http://dev.mysql.com/…d-index.html 14.2.3.12.2

ale samozřejmě BCbreaky v setinkové verzi jsou EE

saimons
Člen | 293
+
0
-

@paranoiq: No ale napr. v Teradate a v Oraclu to tak neni. Tam tuto funkci zastupuje row number na kterem nemas/nemusis mit INDEX. A pak je muj datovy model spravny. Ale stejne jak rikate, tak pokud budu mit jak kombinaci unikatnich atributu, nebo PK, tak stejne se zeslozituje pri kazdem insertu doba na jejich prepocteni. To jestli to MySQL stejne dela jako kdyby tam ten PK byl (ikdyz neni videt), to nevim.

paranoiq
Člen | 392
+
0
-

dělá

ad Oracle: samozřejmě to tak jde dělat, ale pak předpokládám buď to, že řádky jsou fyzicky setříděné podle row number, nebo se dělá full-table-scan (tak je to třeba u MEMORY tabulek). ani jedno z toho není žádná výhra

btw. jak je Nette\DB odladěné s Oraclem?

hrach
Člen | 1838
+
0
-

Dnes jsem udelal upgrade z verze 2.0.10 na release-2.0.x z Githubu a je tam BC break. Na tabulkach bez PK jsem pri insertu pres Nette\Database\Table dsotal chybu: Table … does not have any primary key.

Abych to celé uzavřel: tabulky, co nemají PK není důvod využívat Nette\Database\Table, protože to bez PK nefunguje.

MartinitCZ
Člen | 580
+
0
-

Přesně to, co napsal hrach jsem myslel. :)

@**enumag**: Sám víš, že jsem měl úplně stejný problém. Jen asi o dvě-tři setinkové verze zpět a řešili jsme to spolu dokonce přes email.

enumag
Člen | 2118
+
0
-

@hrach, @martinit: Tak jak mu to mohlo fungovat až do 2.0.10?

Milo
Nette Core | 1283
+
0
-

@saimons: Pokud tento BC break ve 2.0.11 zůstane, můžeš insert přepsat na:

$connection->insert('tabulka', $data);
David Grudl
Nette Core | 8227
+
0
-

Hrachu, zkus prosím mrknout, které commity přidat nebo zrušit v 2.0.11 RC.

hrach
Člen | 1838
+
0
-

DG: Boze, toto uplne nesnasim :D
Prosel jsem zmeny a nenasel jsem nic, co by pro insert melo toto zpusovobat. Prosim o ladenku.

Milo
Nette Core | 1283
+
0
-

Dělá to tento commit. getPrimary() vyhazuje vyjímku.

Testováno na 2.0.10 a 2.0.11RC:

# CREATE TABLE nopk (name TEXT);
$db = $this->context->getService('database');
$db->table('nopk')->insert(array('name' => 'test'));

EDIT: Pokud se vyjímka zakomentuje, insert se provede.

EDIT2: A probublá to tam přes insert() > getPrimarySequence() > getPrimary()

Editoval Milo (28. 6. 2013 7:55)

hrach
Člen | 1838
+
0
-

Shit, ten commit sam o sobe neni problem, ale prehlidl jsem jedno volani, ktere bylo az za obzorem se scrollbarem :)

Editoval hrach (28. 6. 2013 10:32)

hrach
Člen | 1838
+
0
-

masteru je to v poradku. Udelam opravny fix, ktery by daval smysl.

hrach
Člen | 1838
+
0
-

Asi me sali zrak. Nemuzu to najit. Neradi se mi to zreplikovat. V metode insert neni zadne volani, ktere by vynucovalo primarni klic, jedine snad tu, kde to je ovšem s FALSE…

enumag
Člen | 2118
+
0
-

@hrach: Tohle (volání vpravo za scrollbarem) + tohle ho nevynucuje? (Myslím, že přesně tyhle řádky měl na mysli @Milo.)

EDIT: To volání cos našel ty ale taky způsobí volání Selection::getPrimary(). $need na to nemá vliv.

Editoval enumag (28. 6. 2013 11:30)

hrach
Člen | 1838
+
0
-

Diky, mel jsem spatne reflection… :| :D

hrach
Člen | 1838
+
0
-

Jojo, to uz jsem si vsiml. To bude oprava i do masteru.

hrach
Člen | 1838
+
0
-

Vypada to, ze opravny commit pro master opravil i BC break. Tak snad. Feel free to test it.

Milo
Nette Core | 1283
+
0
-

@hrach: Ano, BC break zmizel a INSERT se provede.

David Grudl
Nette Core | 8227
+
0
-

Dal jsem na web 2.0.11 RC2 a prosím o otestování v reálném provozu. Díky!

Majkl578
Moderator | 1364
+
0
-

Nebylo by možné BETA/RC releasy i tagovat na GitHubu? Takhle se to hrozně krkolomně testuje. :/

Jan Tvrdík
Nette guru | 2595
+
0
-

@David Grudl: Při zkoušení 2.0.11 RC2 jsem narazil na https://github.com/…te/pull/1162. Chyba je tam zřejmě odjakživa, byl bych rád, kdyby se oprava dostala do 2.0.11. Můžeš přihodit i ostatní opravy, ale ty nepotřebuji.

David Grudl
Nette Core | 8227
+
0
-

Honzo máš to tam.

Jan Jakeš
Člen | 177
+
0
-

Btw. zaregistrovali jste nové releases na Githubu? https://github.com/…our-software

Filip Procházka
Moderator | 4668
+
0
-

<ot> David to tam nasázel hned první den co to vyšlo, vypadá to super! :) </ot>

Editoval Filip Procházka (9. 7. 2013 14:49)

Jan Jakeš
Člen | 177
+
0
-

Aha, super :)