Home | History | Annotate | only in /external/chromium_org/third_party/sqlite/src/ext/rtree
Up to higher level directory
NameDateSize
README23-Apr-20154.1K
rtree.c23-Apr-201589.7K
rtree.h23-Apr-2015708
rtree1.test23-Apr-201511.5K
rtree2.test23-Apr-20153.9K
rtree3.test23-Apr-20155.9K
rtree4.test23-Apr-20157K
rtree5.test23-Apr-20152K
rtree6.test23-Apr-20154.5K
rtree7.test23-Apr-20151.4K
rtree8.test23-Apr-20154.7K
rtree9.test23-Apr-20154.1K
rtree_perf.tcl23-Apr-20151.7K
rtree_util.tcl23-Apr-20155.1K
rtreeA.test23-Apr-20156K
rtreeB.test23-Apr-20151.3K
sqlite3rtree.h23-Apr-20151.5K
tkt3363.test23-Apr-20151.1K
viewrtree.tcl23-Apr-20155.3K

README

      1 
      2 This directory contains an SQLite extension that implements a virtual 
      3 table type that allows users to create, query and manipulate r-tree[1] 
      4 data structures inside of SQLite databases. Users create, populate 
      5 and query r-tree structures using ordinary SQL statements.
      6 
      7     1.  SQL Interface
      8 
      9         1.1  Table Creation
     10         1.2  Data Manipulation
     11         1.3  Data Querying
     12         1.4  Introspection and Analysis
     13 
     14     2.  Compilation and Deployment
     15 
     16     3.  References
     17 
     18 
     19 1. SQL INTERFACE
     20 
     21   1.1 Table Creation.
     22 
     23     All r-tree virtual tables have an odd number of columns between
     24     3 and 11. Unlike regular SQLite tables, r-tree tables are strongly 
     25     typed. 
     26 
     27     The leftmost column is always the pimary key and contains 64-bit 
     28     integer values. Each subsequent column contains a 32-bit real
     29     value. For each pair of real values, the first (leftmost) must be 
     30     less than or equal to the second. R-tree tables may be 
     31     constructed using the following syntax:
     32 
     33       CREATE VIRTUAL TABLE <name> USING rtree(<column-names>)
     34 
     35     For example:
     36 
     37       CREATE VIRTUAL TABLE boxes USING rtree(boxno, xmin, xmax, ymin, ymax);
     38       INSERT INTO boxes VALUES(1, 1.0, 3.0, 2.0, 4.0);
     39 
     40     Constructing a virtual r-tree table <name> creates the following three
     41     real tables in the database to store the data structure:
     42 
     43       <name>_node
     44       <name>_rowid
     45       <name>_parent
     46 
     47     Dropping or modifying the contents of these tables directly will
     48     corrupt the r-tree structure. To delete an r-tree from a database,
     49     use a regular DROP TABLE statement:
     50 
     51       DROP TABLE <name>;
     52 
     53     Dropping the main r-tree table automatically drops the automatically
     54     created tables. 
     55 
     56   1.2 Data Manipulation (INSERT, UPDATE, DELETE).
     57 
     58     The usual INSERT, UPDATE or DELETE syntax is used to manipulate data
     59     stored in an r-tree table. Please note the following:
     60 
     61       * Inserting a NULL value into the primary key column has the
     62         same effect as inserting a NULL into an INTEGER PRIMARY KEY
     63         column of a regular table. The system automatically assigns
     64         an unused integer key value to the new record. Usually, this
     65         is one greater than the largest primary key value currently
     66         present in the table.
     67 
     68       * Attempting to insert a duplicate primary key value fails with
     69         an SQLITE_CONSTRAINT error.
     70 
     71       * Attempting to insert or modify a record such that the value
     72         stored in the (N*2)th column is greater than that stored in
     73         the (N*2+1)th column fails with an SQLITE_CONSTRAINT error.
     74 
     75       * When a record is inserted, values are always converted to 
     76         the required type (64-bit integer or 32-bit real) as if they
     77         were part of an SQL CAST expression. Non-numeric strings are
     78         converted to zero.
     79 
     80   1.3 Queries.
     81 
     82     R-tree tables may be queried using all of the same SQL syntax supported
     83     by regular tables. However, some query patterns are more efficient
     84     than others.
     85 
     86     R-trees support fast lookup by primary key value (O(logN), like 
     87     regular tables).
     88 
     89     Any combination of equality and range (<, <=, >, >=) constraints
     90     on spatial data columns may be used to optimize other queries. This
     91     is the key advantage to using r-tree tables instead of creating 
     92     indices on regular tables.
     93 
     94   1.4 Introspection and Analysis.
     95 
     96     TODO: Describe rtreenode() and rtreedepth() functions.
     97 
     98 
     99 2. COMPILATION AND USAGE
    100 
    101   The easiest way to compile and use the RTREE extension is to build
    102   and use it as a dynamically loadable SQLite extension. To do this
    103   using gcc on *nix:
    104 
    105     gcc -shared rtree.c -o libSqliteRtree.so
    106 
    107   You may need to add "-I" flags so that gcc can find sqlite3ext.h
    108   and sqlite3.h. The resulting shared lib, libSqliteRtree.so, may be
    109   loaded into sqlite in the same way as any other dynamicly loadable
    110   extension.
    111 
    112 
    113 3. REFERENCES
    114 
    115   [1]  Atonin Guttman, "R-trees - A Dynamic Index Structure For Spatial 
    116        Searching", University of California Berkeley, 1984.
    117 
    118   [2]  Norbert Beckmann, Hans-Peter Kriegel, Ralf Schneider, Bernhard Seeger,
    119        "The R*-tree: An Efficient and Robust Access Method for Points and
    120        Rectangles", Universitaet Bremen, 1990.
    121