Hi,
  I ran the sqlite3 test suite on ARM Linux (Ubuntu) and got a set of
failures in the
rtree2 set of tests, including the following set:

rtree2-rtree_i32.1.3 rtree2-rtree_i32.1.5.0.2
rtree2-rtree_i32.1.5.10.2 rtree2-rtree_i32.1.5.20.2
rtree2-rtree_i32.1.5.30.2 rtree2-rtree_i32.1.5.40.2
rtree2-rtree_i32.1.5.50.2

the errors all had the form of one of either:

rtree.rtree2-rtree_i32.1.3...
Error: No such node: -1094175624

and some of:
rtree.rtree2-rtree_i32.1.5.60.2...Node 1: t1_rowid entry for cell -1094175624 is

Expected: [0]
     Got: [1]

(The full list is on the Ubuntu bug report I filed
https://bugs.launchpad.net/ubuntu/+source/sqlite3/+bug/725052 )

I tracked this down to ext/rtree/rtree.c rtreenode() line at line 3136:

    sqlite3_snprintf(512-nCell,&zCell[nCell],"%d", cell.iRowid);

iRowid is 64bit, and that %d isn't.

I'm not familiar with the sqlite3 source, but I think that's possibly
the private sprintf code and
hence will need that changing to a %lld (rather than one of the nicer
portable macros)

--- sqlite3-3.7.4/ext/rtree/rtree.c     2010-12-07 16:24:21.000000000 +0000
+++ sqlite3-3.7.4.good/ext/rtree/rtree.c        2011-03-01 14:29:31.000000000 
+0000
@@ -3133,7 +3133,7 @@
     int jj;

     nodeGetCell(&tree, &node, ii, &cell);
-    sqlite3_snprintf(512-nCell,&zCell[nCell],"%d", cell.iRowid);
+    sqlite3_snprintf(512-nCell,&zCell[nCell],"%lld", cell.iRowid);
     nCell = strlen(zCell);
     for(jj=0; jj<tree.nDim*2; jj++){
       sqlite3_snprintf(512-nCell,&zCell[nCell],"
%f",(double)cell.aCoord[jj].f);

That's against 3.7.4 but it looks like it's the same in the trunk.

With that change the test suite passes.  However, that %f looks a bit
odd a few lines below
and is probably worth thinking about.

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

Reply via email to