On Fri, Dec 24, 2010 at 5:19 PM, Andrew Z <ahz...@gmail.com> wrote:

> My application accesses an SQLite database created by another
> application, and I noticed on my system (SQLite 3.7.2, Fedora 14) if
> the subquery returns no values, the delete clause does nothing.  Is
> this a bug in SQLite?


No.  SQLite is giving the correct answer.  There are NULLs in the right-hand
side of your NOT IN clause.  Try this instead:

delete from moz_favicons where id not in (select favicon_id from moz_places
where favicon_id is not null);



>  The expected result below is that all rows from
> moz_favicons are deleted.
>
>
> CREATE TABLE moz_favicons (  id INTEGER PRIMARY KEY, url LONGVARCHAR
> UNIQUE, data BLOB, mime_type VARCHAR(32), expiration LONG);
> INSERT INTO "moz_favicons"
> VALUES(1,'http://fedoraproject.org/static/images/favicon.ico
> ','2','image/png',1293223842352252);
> INSERT INTO "moz_favicons"
> VALUES(2,'http://slashdot.org/favicon.ico
> ','82','image/png',1293221318471851);
> CREATE TABLE moz_places (   id INTEGER PRIMARY KEY, url LONGVARCHAR,
> title LONGVARCHAR, rev_host LONGVARCHAR, visit_count INTEGER DEFAULT
> 0, hidden INTEGER DEFAULT 0 NOT NULL, typed INTEGER DEFAULT 0 NOT
> NULL, favicon_id INTEGER, frecency INTEGER DEFAULT -1 NOT NULL,
> last_visit_date INTEGER );
> INSERT INTO "moz_places"
>
> VALUES(1,'place:redirectsMode=2&sort=8&maxResults=10','redirectsMode=2&sort=8&maxResults=10',NULL,0,1,0,NULL,0,NULL);
> INSERT INTO "moz_places"
>
> VALUES(2,'place:folder=BOOKMARKS_MENU&folder=UNFILED_BOOKMARKS&folder=TOOLBAR&queryType=1&sort=12&excludeItemIfParentHasAnnotation=livemark%2FfeedURI&maxResults=10&excludeQueries=1','folder=BOOKMARKS_MENU&folder=UNFILED_BOOKMARKS&folder=TOOLBAR&queryType=1&sort=12&excludeItemIfParentHasAnnotation=livemark%2FfeedURI&maxResults=10&excludeQueries=1',NULL,0,1,0,NULL,0,NULL);
> INSERT INTO "moz_places"
>
> VALUES(3,'place:type=6&sort=14&maxResults=10','type=6&sort=14&maxResults=10',NULL,0,1,0,NULL,0,NULL);
> INSERT INTO "moz_places"
> VALUES(4,'http://docs.fedoraproject.org/release-notes/
> ','/release-notes/','gro.tcejorparodef.scod.',0,0,0,NULL,140,NULL);
>
>
> select "select distinct favicon_id from moz_places";
> select distinct favicon_id from moz_places;
>
> select "deleting: standard method...";
> delete from moz_favicons where id not in (select distinct favicon_id
> from moz_places); -- here is the alleged bug?
>
> select "remaining URLs";
> select url from moz_favicons;
>
> select "deleting: dummy, non-null value...";
> delete from moz_favicons where id not in (0);
>
> select "remaining URLs";
> select url from moz_favicons;
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>



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

Reply via email to