David Nelson wrote:
> 
> Getting "logic error or bad data" when using largw data strings:
> 
> 
> I create the database as follows:
>     create table Event( Key TEXT[unique], DateTime DATE, Event TEXT, PRIMARY
> KEY (Key) )
> 

This is incorrect and not doing what you want. The unique constraint 
must be a separate word, what you have is a "type" called 
"TEXT[unique]". Furthermore being a primary key implies that Key must be 
unique so that constraint is redundant.

Also, sqlite does not support a DATE type as you have used in your 
DateTime column. As you have just seen, sqlite allows almost anything to 
be used as a type name, but only a few special values have real meaning. 
See http://www.sqlite.org/datatype3.html for the details. The details of 
your table definition can be see using the table_info() pragma.

sqlite> create table Event( Key TEXT[unique], DateTime DATE, Event TEXT, 
PRIMARY
  KEY (Key) );
sqlite> pragma table_info(Event);
cid         name        type          notnull     dflt_value  pk
----------  ----------  ------------  ----------  ----------  ----------
0           Key         TEXT[unique]  0                       1
1           DateTime    DATE          0                       0
2           Event       TEXT          0                       0

The actual type of the data in the DateTime column can be seen using the 
typeof() function (after you put some data in the table).

sqlite> insert or replace into Event values( 'strKey', '07/25/2008 
08:00:00','da
ta string' );
sqlite> select typeof(DateTime) from Event limit 1;
typeof(DateTime)
----------------
text

Try this table definition instead:

     create table Event(
        Key             Text primary key,
        DateTime        Text,
        Event           Text
     );

> 
> I add records to the database as follows:
>     insert or replace into Event values( 'strKey', '07/25/2008 08:00:00',
> 'data string' )
> 
> And I query the database as follows:
>     SELECT * FROM [Event]  WHERE    ([Event] LIKE "*foo*" AND [Event] LIKE
> "*bar*") AND    [Date/Time] BETWEEN DateAdd("n",-5,Now()) AND Now()
> 
> 
> 
> The query works fine when my inserted data strings are small, like < 256
> bytes.
> 

This query never worked in sqlite. The column name [Date/Time] is wrong, 
and the functions Now() and DateAdd() don't exist (unless you have 
created you own custom functions), and the LIKE operator uses %, not *, 
for a wildcard character. Also, literal strings should be enclosed in 
single quotes not double quotes.

Try something like this instead:

     SELECT * FROM Event
     WHERE Event LIKE '%foo%'
     AND Event LIKE '%bar%'
     AND DateTime BETWEEN datetime('now', '-5 minutes')
                      AND datetime('now');

> However, I get 'logic error' on the query if my data strings are largere,
> like 2048 bytes.
> 

It works fine for me with 3000 bytes of lorem ipsum text.

sqlite> insert or replace into Event values( 'strKey2', '07/25/2008 
08:00:01','L
orem ipsum dolor sit amet, consectetuer adipiscing elit. Praesent porta 
tortor a
t leo. Vestibulum fringilla tempor nisi. Quisque in tellus. Quisque sit 
amet pur
us. Nulla euismod commodo lacus. Sed ut mi a urna pretium consectetuer. 
Cras fer
mentum dignissim massa. Pellentesque ante. Donec commodo scelerisque 
tortor. Mor
bi nisi lorem, ultrices quis, varius id, accumsan non, nulla. Vivamus 
mauris neq
ue, pellentesque ac, pharetra posuere, accumsan non, est. Nulla eu enim. 
Integer
  aliquam libero tempor turpis. Donec ut libero ut pede mattis 
tristique. Vivamus
  est.
    ...>
    ...> Aenean vitae purus. Aenean et velit. Donec felis nunc, pretium 
imperdiet
, lacinia ac, auctor at, massa. Ut vitae metus. In tempus viverra neque. 
Etiam f
acilisis, pede eu posuere euismod, felis neque tristique metus, a 
rhoncus est ar
cu a tellus. Vestibulum lacinia fringilla ante. Vestibulum ante ipsum 
primis in
faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur 
pellentesque t
ortor a neque. Mauris in quam.
    ...>
    ...> Phasellus rutrum. Pellentesque eget neque nec elit faucibus 
gravida. Aen
ean eu augue. Integer interdum consequat arcu. Mauris interdum, nisl eu 
convalli
s pulvinar, mi lectus cursus tellus, quis congue nisi risus eu felis. 
Morbi adip
iscing, est ut adipiscing ultrices, libero orci condimentum nunc, quis 
luctus ni
bh eros nec enim. Cras eros arcu, dignissim eget, ornare vitae, volutpat 
non, au
gue. Pellentesque aliquam fringilla ipsum. Nullam vulputate consectetuer 
massa.
Proin tincidunt pede a ante. Praesent luctus, nunc sed pellentesque 
suscipit, li
bero felis ultrices lectus, et vehicula ante mi quis augue.
    ...>
    ...> Nunc sit amet eros ut velit faucibus varius. Nulla facilisi. 
Cras non pe
de sed massa accumsan consequat. Proin in augue. Suspendisse potenti. 
Aenean tri
stique consequat lorem. Donec suscipit mi eu nibh. Duis feugiat tellus. 
Vivamus
tristique. Maecenas nunc lectus, egestas non, tempus eu, accumsan nec, 
sem. Sed
iaculis lacinia nulla.
    ...>
    ...> Etiam sem dui, accumsan sagittis, congue ut, mollis venenatis, 
dolor. Mo
rbi tincidunt, dolor hendrerit feugiat pellentesque, nulla justo 
venenatis quam,
  eu euismod turpis odio vitae nisl. Pellentesque eleifend, justo eget 
aliquet co
ndimentum, mi velit lacinia turpis, non euismod velit neque vel tortor. 
Praesent
  augue quam, consequat vel, posuere eget, tincidunt eget, justo. 
Vivamus auctor
dapibus ante. In lectus tortor, consequat ac, molestie non, pretium a, 
felis. Al
iquam vulputate ante ac lorem. Nullam congue, magna ac congue euismod, 
nisl just
o molestie velit, id egestas neque velit sed erat. Phasellus massa. In 
hac habit
asse platea dictumst. Nunc elit magna, condimentum sit amet, dignissim 
sit amet,
  mattis vel, eros. Aliquam risus nulla, pulvinar eget, varius non, 
luctus sceler
isque, ipsum. Morbi eleifend. Sed aliquam dignissim magna. Nulla vitae 
eros. Ali
quam placerat pulvinar odio. In mollis purus eu erat.
    ...>
    ...> Aenean tortor purus, lobortis a, eleifend eget, sagittis sed, 
lacus. Don
ec ut neque at odio congue eleifend. In mauris sapien, lobortis metus.' );
sqlite> select length(Event), Event from Event;
length(Event)  Event
-------------  -----------
11             data string
3010           Lorem ipsum

Note, the truncation of the second record above is caused by the .column 
display mode which sets the length based on the first records data. 
Changing the display mode back to list and repeating the query returns 
all the data.

sqlite> .mode list
sqlite> select length(Event), Event from Event;
length(Event)|Event
11|data string
3010|Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Praesent 
porta to
rtor at leo. Vestibulum fringilla tempor nisi. Quisque in tellus. 
Quisque sit am
et purus. Nulla euismod commodo lacus. Sed ut mi a urna pretium 
consectetuer. Cr
as fermentum dignissim massa. Pellentesque ante. Donec commodo 
scelerisque torto
r. Morbi nisi lorem, ultrices quis, varius id, accumsan non, nulla. 
Vivamus maur
is neque, pellentesque ac, pharetra posuere, accumsan non, est. Nulla eu 
enim. I
nteger aliquam libero tempor turpis. Donec ut libero ut pede mattis 
tristique. V
ivamus est.

Aenean vitae purus. Aenean et velit. Donec felis nunc, pretium 
imperdiet, lacini
a ac, auctor at, massa. Ut vitae metus. In tempus viverra neque. Etiam 
facilisis
, pede eu posuere euismod, felis neque tristique metus, a rhoncus est 
arcu a tel
lus. Vestibulum lacinia fringilla ante. Vestibulum ante ipsum primis in 
faucibus
  orci luctus et ultrices posuere cubilia Curae; Curabitur pellentesque 
tortor a
neque. Mauris in quam.

Phasellus rutrum. Pellentesque eget neque nec elit faucibus gravida. 
Aenean eu a
ugue. Integer interdum consequat arcu. Mauris interdum, nisl eu 
convallis pulvin
ar, mi lectus cursus tellus, quis congue nisi risus eu felis. Morbi 
adipiscing,
est ut adipiscing ultrices, libero orci condimentum nunc, quis luctus 
nibh eros
nec enim. Cras eros arcu, dignissim eget, ornare vitae, volutpat non, 
augue. Pel
lentesque aliquam fringilla ipsum. Nullam vulputate consectetuer massa. 
Proin ti
ncidunt pede a ante. Praesent luctus, nunc sed pellentesque suscipit, 
libero fel
is ultrices lectus, et vehicula ante mi quis augue.

Nunc sit amet eros ut velit faucibus varius. Nulla facilisi. Cras non 
pede sed m
assa accumsan consequat. Proin in augue. Suspendisse potenti. Aenean 
tristique c
onsequat lorem. Donec suscipit mi eu nibh. Duis feugiat tellus. Vivamus 
tristiqu
e. Maecenas nunc lectus, egestas non, tempus eu, accumsan nec, sem. Sed 
iaculis
lacinia nulla.

Etiam sem dui, accumsan sagittis, congue ut, mollis venenatis, dolor. 
Morbi tinc
idunt, dolor hendrerit feugiat pellentesque, nulla justo venenatis quam, 
eu euis
mod turpis odio vitae nisl. Pellentesque eleifend, justo eget aliquet 
condimentu
m, mi velit lacinia turpis, non euismod velit neque vel tortor. Praesent 
augue q
uam, consequat vel, posuere eget, tincidunt eget, justo. Vivamus auctor 
dapibus
ante. In lectus tortor, consequat ac, molestie non, pretium a, felis. 
Aliquam vu
lputate ante ac lorem. Nullam congue, magna ac congue euismod, nisl 
justo molest
ie velit, id egestas neque velit sed erat. Phasellus massa. In hac 
habitasse pla
tea dictumst. Nunc elit magna, condimentum sit amet, dignissim sit amet, 
mattis
vel, eros. Aliquam risus nulla, pulvinar eget, varius non, luctus 
scelerisque, i
psum. Morbi eleifend. Sed aliquam dignissim magna. Nulla vitae eros. 
Aliquam pla
cerat pulvinar odio. In mollis purus eu erat.

Aenean tortor purus, lobortis a, eleifend eget, sagittis sed, lacus. 
Donec ut ne
que at odio congue eleifend. In mauris sapien, lobortis metus.
sqlite>

HTH
Dennis Cote



_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to