Patent ID: 7464084

Claim:
A processor-implemented method of performing an inexact query transformation in a heterogeneous environment including a plurality of heterogeneous datastores, the method comprising: selecting a query element from a query statement; determining whether an inexact transformation improves a performance of the query statement; in response to determining that the inexact transformation improves the performance of the query statement, selecting a plurality of candidate transformation rules applicable to the selected query element; prioritizing the selected candidate transformation rules; applying the prioritized candidate transformation rules to the selected query element to generate a transformed query element comprising a transformed remote query element and a transformed local query element; if the transformed remote query element is not pushdownable to at least one heterogeneous datastore of the heterogeneous datastores, wherein the query element is pushdownable if the query element can be evaluated by the at least one heterogeneous datastore, determining whether additional inexact transformations are possible; and if additional inexact transformations are possible, repeatedly applying additional candidate transformation rules to the selected query element to generate another transformed query element comprising a transformed remote query element and a transformed local query element and performing pushdown analysis on this transformed remote query element until the transformed remote query element determined to be pushdownable or until no additional inexact transformations are possible; if the transformed remote query element is pushdownable to at least one heterogeneous datastore of the heterogeneous datastores, adding the transformed remote query element to a transformed inexact query output; applying the transformed inexact query output to the heterogeneous datastore; and applying the transformed local query element to a query result returned from the heterogeneous datastore to provide a final query result.