A method and apparatus for segmenting bitmaps in a bitmap index is provided. A segmented bitmap includes a plurality of bitmap segments that are used to indicate which records in a body of records that is associated with the segmented bitmap satisfy a particular criteria. Each bitmap segment contains a string of bits that correspond to a corresponding range of records in the body of records. There may be gaps between the ranges represented by the bitmap segments when, for example, the body of records does not contain records in a particular range. For the purposes of retrieval, compression, de-compression, locking and logging, the database system treats each bitmap segment as a distinct data item.
RELATED APPLICATIONS
The present application is a continuation of U.S. application Ser. No. 09/311,171, BITMAP SEGMENTATION, filed on May 13, 1999 by Cetin Ozbutun, Jeffrey I. Cohen, Hakan Jakobsson, Mark Kremer, Michael Depledge, Quoc Tai Tran, Alexander C. Ho, and Julian Hyde, and which is a continuation of U.S. application Ser. No. 08/808,584 filed Feb. 28, 1997, having the same title and inventorship, and issuing as U.S. Pat. No. 6,067,540 on May 25, 2000. The present application claims benefit of both U.S. application Ser. No. 09/311,171 and U.S. application Ser. No. 08/808,584.
The present application is related to: U.S. patent application Ser. No. 08/807,441, entitled "CREATING BITMAPS FROM MULTI-LEVEL IDENTIFIERS", filed by Cetin Ozbutun, Michael Depledge, Hakan Jakobsson, Mark Kremer, Jeffrey I. Cohen, Quoc Tai Tran, and Alexander C. Ho on the equal day herewith, the contents of which are incorporated herein by reference.
U.S. patent application Ser. No. 08/752,128, entitled "METHOD AND APPARATUS FOR PROCESSING COUNT STATEMENTS IN A DATABASE SYSTEM", filed by Cetin Ozbutun, Michael Depledge, Hakan Jakobsson, and Jeffrey I. Cohen, on Nov. 20, 1996, the contents of which are incorporated herein by reference.
U.S. patent application Ser. No. 08/808,097, entitled "GROUP BY AND DISTINCT SORT ELIMINATION USING COST-BASED OPTIMIZATION", filed by Jeffrey Ira Cohen, Cetin Ozbutun, Michael Depledge, and Hakan Jakobsson, on the equal day herewith, the contents of which are incorporated herein by reference.
U.S. patent application Ser. No. 08/808,096, entitled "METHOD AND APPARATUS FOR USING INCOMPATIBLE TYPES OF INDEXES TO PROCESS A SINGLE QUERY", filed by Jeffrey Ira Cohen, Cetin Ozbutun, Hakan Jakobsson, and Michael Depledge, on the equal day herewith, the contents of which are incorporated herein by reference.
U.S. patent application Ser. No. 08/808,094, entitled "INDEX SELECTION FOR AN INDEX ACCESS PATH ", filed by Hakan Jakobsson, Michael Depledge, Cetin Ozbutun, and Jeffrey I. Cohen, on the equal day herewith, the contents of which are incorporated herein by reference.
U.S. patent application Ser. No. 08/807,429, entitled "QUERY PROCESSING USING COMPRESSED BITMAPS ", filed by Cetin Ozbutun, Jeffry I. Cohen, Michael Depledge, Julian Hyde, Hakan Jakobsson, Mark Kremer, and Quoc Tai Tran, on the equal day herewith, the contents of which are incorporated herein by reference.
U.S. patent application Ser. No. 08/807,451, entitled "BITMAPPED INDEXING WITH HIGH GRANULARITY LOCKING", filed by Michael Depledge, Jeffrey I. Cohen, Hakan Jakobsson, Mark Kremer, Cetin Ozbutun, Quoc ai Tran, and Alexander C. Ho, on the equal day herewith, the contents of which are incorporated herein by reference.
U.S. patent application Ser. No. 08/808,585, entitled "UPDATING BITMAPPED INDEXES", filed by Michael Depledge, Hakan Jakobsson, Cetin Ozbutun, Jeffrey I. Cohen, and Quoc Tai Tran, on the equal day herewith, the contents of which are incorporated herein by reference.
U.S. patent application Ser. No. 08/808,560, entitled "BITMAP INDEX COMPRESSION", filed by Jeffrey I. Cohen, Michael Depledge, Hakan Jakobsson, Mark Kremer, Cetin Ozbutin, and Quoc Tai Tran, on the equal day herewith, the contents of which are incorporated herein by reference.
U.S. patent application Ser. No. 08/808,586, entitled "COMBINING BITMAPS WITHIN A MEMORY LIMIT", filed by Cetin Ozbutun, Jeffry I. Cohen, Michael Depledge, Julian Hyde, Hakan Jakobsson, Mark Kremer, and Quoc Tai Tran, on the equal day herewith, the contents of which are incorporated herein by reference.
A method and system for handling foreign key database updates. The database includes one or more tables where each table includes at least one row and a primary key or foreign key. The method and system include evaluating a list of row operations for foreign key relationships. After evaluating the foreign key relationships, the tables determined to have acyclic foreign key relationships are grouped into a first set of tables and the tables determined to have cyclic foreign key relationships are grouped into a second set of tables. The method and system further include ordering the first set of tables into a list based on the foreign key relationships among the set of tables, such that a parent table will be processed before a child table. The row operations are then applied to each table in the list in the specified order.
A method and mechanism is described for indexing a body of records. An index associates ranges with records that hold key field values that fall within those ranges. Such an index may be implemented as a bitmap index. The bitmap index may contain entries that associate a range with a bitmap. The bitmap of an index entry identifies which records have a key field value that falls within the range associated with the entry. The index may be a native index maintained by a database system. The database system uses the index to efficiently process queries that specify range criteria.
A database engine and a system running a database engine utilize a dynamic bitmap updating routine to avoid the delay associated with building an entire bitmap. When running a query on a table, the database engine can build a bitmap over a column of the table that helps avoid unnecessary I/O operations to retrieve records. The database engine initializes the bitmap so that all elements have a value of "1", or active, and proceeds to scan and retrieve the records of the table according to the bitmap using a first process. Any retrieved record is further analyzed to determine if it is part of the result set. Concurrently, a second process is initiated which continually updates the values within the bitmap according to a set of selection criteria. As the first process continues to operate, more and more elements of the bitmap are set to "0", or inactive, so that the first process can avoid unnecessary I/O operations.
A reference table has columns associated with data attributes and rows containing related words assigned to those attributes in a collection of data, those words coming from different data tables having independent numbers of records. The stored data include word thesauruses associated with the attributes, and reference table row identifier lists respectively associated with thesaurus entries. Each word thesaurus associated with an attribute has a respective entry for each word assigned to this data attribute in the collection of data. The reference table, which may be a virtual table, defines a unified algebraic framework for the entries of all the thesauruses. Query criteria can be examined with reference to the relevant thesauruses to obtain a row-ID list or bitmap vector which represents all the reference table rows matching the query criteria, if any. The results can then be delivered through the original data tables or, preferably, by means of the thesauruses.
A fine-grained access control mechanism uses policy functions that are associated with a database object (e.g. table and view). The policy functions are invoked, when, for example, a database server detects that a query is issued against the database object. The value of a policy function remains constant under certain conditions. For example, once a database server is brought up, the value of a policy function may remain the same. Users can specify the conditions under which the value of a policy function remain constant. Based on this information, when a policy function is computed while processing a query, the database server caches the value of the policy function. When processing another query that requires the value of the policy function, the database server retrieves the result from the cache rather than re-computing the policy function, as long as the condition under which the policy function remains constant persists.