Снощи след изпита и бирата и пицата в Торонто реших да разпусна с малко работа. За съжаление машината ми в офиса беше спряна и се наложи да измисля да правя нещо на windows-ката у нас… Сетих се, че трябва да се пренапише чатчето да работи с SQLite. Самото преправяне ми отне около 3 пъти по-малко време от чуденето дали избщо да го започна. Методите на стария клас за абстракция на ДБ-то и на PEAR::DB се оказаха почти еднакви. Пък и заявките не са бог знае колко. Странното беше, че след като всичко тръгна със SQLite после при опита да си го върна да работи с MySQL (като само се смени dsn-а де…) нещата малко се сбозиха. Забелязах следните две неща:
- SQLite разрешава около имената на таблиците да има кавички – това го разбрах след като на няколко места бях написал заявки от рода на
SELECT баба FROM ? WHERE дядо
, а DB-то нали escape-ва всичко де що е с въпрос. Решението е вместо ? да се ползва ! – тогава шляпва параметъра в заявката едно към едно - SQLite не го бърка да не оставиш интервал между името на таблицата и
WHERE
– като например вSELECT баба FROM дядоWHERE стринка
Сега трябва да се напише нещо дето товари чата с много потребители за да се знае колко може да удържи. И освен това за да се сравни производителността на SQLite и на HEAP таблиците в MySQL.
Иначе първите ми впечатленията от PEAR::DB са малко противоречиви. Първо – вързано е с PEAR. Мразя обработката на грешки там защото няма лесен начин да му кажа например да умира при всяка DB грешка, а тези от другите PEAR класове да си бъдат прихващани по нормално му. Е има – след всяка заявка да проверявам за грешка. Ама няма. Второто го забравих…
Мисля, че много съм се изнежил с този perl.