Internal uses of the support functions

The R-tree access method uses the required support functions in combination when it maintains the R-tree index. For example, when the access method is deciding into which subtree to place a new entry, it uses the Union and Size functions to determine how much each bounding box needs to expand if the new entry were added to that subtree. After a page splits, the access method uses the Union function to calculate a new bounding box for all entries on a page.

The RtreeInfo support function determines, for a given strategy function, which strategy function should actually be called when the R-tree access method is working on an internal nonleaf page. It also provides support for nearest-neighbor searches. You must define the RtreeInfo function if your DataBlade® module is going to support bounding-box-only R-tree indexes or nearest-neighbor searches.

The R-tree access method uses the four optional support functions (SFCbits, ObjectLength, SFCvalue, and SetUnion) to increase the performance of initial R-tree index creation by performing fast bulk loading of data into the index from a populated table. First, the R-tree access method groups together the rows that belong to the same page. At the same time, the access method identifies the neighbors of each page. Once this process is completed, the R-tree access method stores all the rows in a singly linked list of leaf pages, filled as compactly as possible. As the leaf pages become full, the access method recursively builds the pages at the higher levels. The R-tree access method repeats this process until all the rows are written into the leaf pages.

The R-tree access method uses this method of building R-tree indexes only if you specify the optional support functions in the appropriate operator class. If you do not specify these support functions, then the R-tree access method uses a slower method to create the R-tree index.
Important: Support functions can be executed many times during the creation of an R-tree index. For this reason, it is recommended that the corresponding C code for the support function be as fast and efficient as possible. Examples of increasing speed and efficiency in C code are to not allocate memory, not open and close database connections, and so on.