Patent ID: 8631034

Claim:
A database system supporting persistent queries, the system comprising: a client software application operating on a computer comprising at least a listener comprising client code to be executed when the listener is invoked; a persistent query service stored and operating on a network-attached computer adapted to receive connections and requests from the client software application; and a plurality of network-attached data sources; wherein, on receiving a request to create a persistent query from the client software application, the persistent query service: creates a query virtual table corresponding to the persistent query; parses the persistent query to create a tree structure representing a logical arrangement of a plurality of operators that yield results required by the persistent query; creates a plurality of intermediate virtual tables corresponding to the plurality of operators, wherein the step of creating an intermediate virtual table further comprises establishing listeners associated with the intermediate virtual table to receive data change notifications; establishes listeners for the query virtual table to receive data change notifications from a plurality of intermediate virtual tables; creates a plurality of data source virtual tables, each corresponding to a specific data source required to fulfill the persistent query; causes the plurality of data source virtual tables to retrieve initial data from the plurality of data sources; and propagates data via the plurality of intermediate virtual tables and their associated listeners to the persistent query virtual table; and wherein, on detection of a data change in a data source, the associated data source virtual table invokes a plurality of corresponding methods of listeners of a plurality of virtual intermediate tables and propagates the data change via the plurality of intermediate virtual tables and their associated listeners to the persistent query virtual table, and the client software application executes the client code of at least one affected listener.