Seems my problem are related to sqlite not handling multiple prepared
statements properly.


Oyvind



On Tue, Nov 25, 2008 at 6:25 PM, Oyvind Idland <[EMAIL PROTECTED]>wrote:

> Thanks for the reply,
>
> I misunderstood the concept of dimensions here (i have fairly good
> knowledge about r-trees)
>
> Still i am stuck with binding values, and cant really figure out why
> (possibly been looking
> myself blind on the code ?)
>
> Here is a portion of the code that shows what I do, the bind on index 3
> fails:
>
>
> sqlite3_exec(db, "CREATE VIRTUAL TABLE points_index USING rtree(id, xmin,
> xmax, ymin, ymax);", callback, 0, &errmsg);
>
> char *sql_idx = "INSERT INTO points_index (id, xmin, xmax, ymin, ymax)
> VALUES (?, ?, ?, ?, ?);";
> sqlite3_stmt *stmt_idx = NULL;
> tail = NULL;
> rc = sqlite3_prepare(db, sql, -1, &stmt_idx, &tail);
>
> for(i=0; i<NUM_POINTS; i++)
> {
>     /* <snip> */
>     rc = sqlite3_bind_int(stmt_idx, 1, i+1);
>     if( rc!=SQLITE_OK )
>       return sqlerror(db);
>     rc = sqlite3_bind_double(stmt_idx, 2, blob.x);
>     if( rc!=SQLITE_OK )
>       return sqlerror(db);
>     rc = sqlite3_bind_double(stmt_idx, 3, blob.x);
>     if( rc!=SQLITE_OK )
>       return sqlerror(db);
>     rc = sqlite3_bind_double(stmt_idx, 4, blob.y);
>     if( rc!=SQLITE_OK )
>       return sqlerror(db);
>     rc = sqlite3_bind_double(stmt_idx, 5, blob.y);
>     if( rc!=SQLITE_OK )
>       return sqlerror(db);
>     /* </snip> */
> }
>
>
> Oyvind
>
>
>
>
>
> On Tue, Nov 25, 2008 at 4:25 PM, Jay A. Kreibich <[EMAIL PROTECTED]> wrote:
>
>> On Tue, Nov 25, 2008 at 01:26:48PM +0100, Oyvind Idland scratched on the
>> wall:
>> > Hi,
>> >
>> > as far as I can see from docs, the r-tree extension uses 32-bit floats
>> to
>> > store rectangles.
>> >
>> > However, when I try to insert this one
>> >
>> > INSERT INTO points_index (id, x, y) VALUES (3, 731.293, 74.463);
>> >
>> > i get "SQL error: constraint failed".
>> >
>> > Reducing the x to 31.293 works.
>> >
>> > Is the r-tree limitied to WGS84 latitude/longitude coordinates ?
>>
>>   From this and your other post, I think you're missing a fundamental
>>  point about the R-tree extension: it is designed to hold ranges of
>>  data, not points.  An R-tree with three values defines a
>>  one-dimensional space not as (id, x, y), but as (id, min_x, max_x).
>>
>>  If you want to do 2D coords, such as lat/long, you need an R-tree
>>  with five columns: (id, x_min, x_max, y_min, y_max).  You can put
>>  equal values in to define points, or you can define "boxes" of space.
>>  Either way, it must be true that (x_min <= x_max) (and so on), hence
>>  the bind and constraint errors you're getting.
>>
>>    -j
>>
>> --
>> Jay A. Kreibich < J A Y  @  K R E I B I.C H >
>>
>>
>
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to