Patent ID: 7509307

Claim:
A method for querying for a database snapshot with more than one version without requiring a query having aggregates, joins, and sub-queries, comprising: providing a first version value for each data in a history table having redundant version information, wherein the first version value indicates a beginning of a period in which the data is valid; providing at least a second version value for each data in the history table, wherein the second version value indicates an end of the period in which the data is valid; receiving a request for a version of a database; retrieving the data by: performing a series of indexed scans including: a first scan of rows in the history table for rows with the first version value less than or equal to the requested version; a second scan of rows in the history table for rows with the second version value greater than or equal to the requested version; and determining an intersection of the first and second scans, wherein the retrieved data each has a Boolean value; wherein the adding further comprises: determining that the change is a row insert; and setting a delete Boolean value for the added row to ‘false’; determining that the change is a row delete; and setting a delete Boolean value for the added row to ‘true’; modifying an old row in the history table for a key of the changed row by changing its second version value to a previous version; determining that the change is a row update; and setting a delete Boolean value for the added row to ‘false’; and modifying an old row in the history table for a key of the changed row by changing its second version value to a previous version and, providing a response to the request received.