Раз уж вспомнила сегодня про SQLite, то напишу про одну багу, на которую я наткнулась:
Есть довольно большая база (60 метров), в ней, в частности, таблица LOG такого вида:
CREATE TABLE LOG(
ID INTEGER PRIMARY KEY,
CONFIG_ID INTEGER NOT NULL,
TIMESTAMP_BEGIN INTEGER NOT NULL,
TIME_US_BEGIN INTEGER NOT NULL,
TIMESTAMP_END INTEGER NOT NULL,
TIME_US_END INTEGER NOT NULL,
STATE INTEGER NOT NULL,
PLD_FUNCTION INTEGER,
PLD_VERSION INTEGER)
select ID,CONFIG_ID,
datetime(TIMESTAMP_BEGIN,'unixepoch','localtime')||' '||substr('00000'||TIME_US_BEGIN,length(TIME_US_BEGIN)) as TIME_BEGIN,
datetime(TIMESTAMP_END,'unixepoch','localtime')||' '||substr('00000'||TIME_US_END, length(TIME_US_END)) as ТIME_END,
STATE,PLD_FUNCTION,PLD_VERSION,TIMESTAMP_BEGIN,TIME_US_BEGIN,TIMESTAMP_END,TIME_
US_END
from LOG
where (((TIMESTAMP_BEGIN>1281376800 and TIMESTAMP_BEGIN<1281463200) or
(TIMESTAMP_BEGIN==1281376800 and TIME_US_BEGIN>=0) or (TIMESTAMP_BEGIN==1281463200 and TIME_US_BEGIN<=0)))
order by ID
...
where (((TIMESTAMP_BEGIN>1281376800 and TIMESTAMP_BEGIN<1281463200) or
(TIMESTAMP_BEGIN==1281376800 and TIME_US_BEGIN>=0) or (TIMESTAMP_BEGIN==1281463200 and TIME_US_BEGIN<=0)))
order by ID
...
where ((((TIMESTAMP_BEGIN>1281376800) and (TIMESTAMP_BEGIN<1281463200)) or
((TIMESTAMP_BEGIN==1281376800) and (TIME_US_BEGIN>=0)) or ((TIMESTAMP_BEGIN==1281463200) and (TIME_US_BEGIN<=0))))
order by ID
скобки не помогали. если бы всё было так просто... я это первым делом пробовала, естессна.
SQLite поддерживает и་ AND и &. а вот в чём разница - я хз. но она есть. ибо факт, что на одной и той же базе при смене только обозначений либо работает, либо глючит. пустые записи - это вообще какой-то нездоровый глюк. ибо В БАЗЕ ИХ НЕТ. откуда они берутся - я даже не могу предположить.
я ещё поковыряю этот вопрос, когда время появится. и если что - напишу разработчикам SQLite.
кстати, там ещё была бага, но я тогда её связывала с проблемами транзакций, хотя может это и не оно... в общем, когда у меня база дорастала примерно до 300 метров - при попытке добавления записи возвращалась ошибка, что база "занята". может, это не размер, а количество записей вредило или ещё что. в итоге я просто стала её делить вручную, по 100 метров, и проблема исчезла.
но это тоже надо исследовать.
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)