Patent ID: 8108421

Claim:
A method of processing queries, the method comprising: receiving, at a computing system, an original query from a querying client, the original query expressed in a first query language, wherein the first query language is Language Integrated Query (LINQ); automatically determining, at the computing system, whether the original query includes a clause unsupported by a second query language, wherein the second query language is Collaborative Application Markup Language (CAML); in response to determining that the original query includes a clause unsupported by the second query language, automatically separating, at the computing system, the original query into a server-side query and a client-side query, the server-side query comprising supported clauses of the original query, the client-side query comprising unsupported clauses of the original query; after separating the original query into the server-side query and the client-side query, automatically determining, at the computing system, whether the client-side query is efficient; automatically translating, at the computing system, the server-side query into a supplemental query expressed in the second query language; automatically receiving, at the computing system, a server-side result set from a database management system, the database management system managing a database, the server-side result set comprising data items in the database responsive to the supplemental query; when the computing system determines that the client-side query is efficient, automatically generating, by the computing system, a client-side result set by querying the server-side result set using the client-side query; and automatically returning, by the computing system, the client-side result set to the querying client as a result set of the original query.