Hi - Thanks for the pointer.
I've created a very basic scenario of extending RegularTable with initial success. My goal is to perform the steps below - most of which are staight-forward except STEP # 4: 0) H2 starts up, seeds an in-memory db with several tables that implement MyTableEngine, extending RegularTable 1) User issues a query from some query tool against H2 2) H2 BEFORE SELECT trigger fires for participating tables in query; addRow() called on MyTable to populate required data set via external java classes; possible filtering occurs on the data set prior to H2 activities etc ... 3) Data send back to client 4) H2 AFTER SELECT trigger fires and truncates MyTable tables *Question:* How can I programmatically drop results from one of my Tables provided via TableEngine AFTER its data has been queried via SELECT ? >From what I understand, I CANNOT use "AFTER SELECT". But I'd still like a way to automatically drop results from MyTable tables. (This may not be an issue if the session (single-connection) closes after the query completes; eg. my application's "disconnect from client" is enabled, but for now I must assume this is not guaranteed) Thanks - AC On Sun, May 20, 2012 at 3:32 PM, Sergi Vladykin <[email protected]>wrote: > Hi, > > Yes, table engine is quite an advanced feature and you just have to > understand how H2 works to implement it right. So the best example for > you so far is RegularTable and its indexes in parts where they work in > in-memory mode. Better to use them as base for your table engine > instead of this oversimplified test example. > > Sergi > > > On May 20, 9:56 pm, Atul Chowdhury <[email protected]> wrote: > > Hi all - > > > > I'm trying to flatten an object graph and have it surface through a > TABLE. > > > > For example, I might have a "Person" class: > > > > String name = person.getName(); > > String phone = person.getPhone(); > > String add1 = person.getAddress1(); > > String add2 = person.getAddress2(); > > > > Output: > > > > Joe | 333-222-4444 | 8 Rancho Driver > > Joe | 333-222-4444 | Sector 22 > > Joe | 333-222-4444 | Palo Alto, CA > > > > Via SQL, I should be able to issue a SQL query like so: > > > > select NAME, PHONE, ADD1, ADD2, ADD3 from PERSONS > > > > I initially thought of using user-defined functions as tables returning a > > ResultSet. The problems with this were: > > > > - Cannot implement filtering ("WHERE id=...") at query-time; instad the > UDF > > retrieves the complete result set and THEN filters via WHERE > > - I need to implement paging as datasets can be large > > - I don't want to wrap this in a UDF as it would require syntax like > > "select NAME from PERSONS()". I'd rather have "select NAME from PERSONS". > > If I create a view, it computes the complete dataset first (in this case > it > > would retrieve all 500k persons and THEN provide the view) which I don't > > want to do. > > > > So, I've decided to use the TableEngine feature (extending TableBase) - > > however, I'm at a loss as to the implementation details. > > > > My question: To start with, how do I modify the example I've provided > (see > > my pastebin link for code) to allow MULTIPLE rows in a custom table? I > > want the 5 rows I insert to actually get stored in their entirety. Also, > > if someone has a more feature-rich example, I'd love to see that as well. > > > > Link to SSCCE code TableEngine Example:http://pastebin.com/qQPQWFnn > > > > Thanks in advance - > > > > AC > > -- > You received this message because you are subscribed to the Google Groups > "H2 Database" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/h2-database?hl=en. > > -- You received this message because you are subscribed to the Google Groups "H2 Database" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/h2-database?hl=en.
