Hi, > A function would be perfect! A String would work for SymmetricDS.
I'm currently implementing such a function. I have a question: if there is currently no uncommitted change (that is, a transaction is not started, or one is started, but no changes have been made so far), is it OK if NULL is returned? My plan is to return: - NULL if there is no uncommitted change currently - Otherwise the position of the first uncommitted change in the transaction log file, and session id. Format: <logFileId>-<position>-<sessionId>. TRANSACTION_ID() returns a VARCHAR Returns the current transaction id for this session. This method returns NULL if there is no uncommitted change, or if the the database is not persisted. Otherwise a value of the following form is returned: logFileId-position-sessionId. The value is unique across database restarts (values are not re-used). Example: CALL TRANSACTION_ID() Regards, Thomas > The value needs to be unique across database restarts. The faster the > better. We use it to track changes that need to be 'synchronized' > atomically. I am really looking for the equivalent of > DBMS_TRANSACTION.local_transaction_id(false) on Oracle. I would think > the name could be as simple as TRANSACTION_ID() ?? > > Thank you. > > On Feb 6, 2:10 pm, Thomas Mueller <[email protected]> > wrote: >> Hi, >> >> > I am currently implementing an H2 'database dialect' for SymmetricDS >> > (www.symmetricds.org). I am trying to figure out the best way to >> > access a 'transaction id' from an H2 trigger. The following is the >> > Java code I have come up with. Does anybody have suggestions for >> > improvements (or more likely can they poke holes in my approach)? >> >> > protected String getTransactionId(Connection c) { >> > JdbcConnection con = (JdbcConnection) c; >> > Session session = (Session) con.getSession(); >> > return StringUtils.leftPad(Integer.toString(session.getId >> > ()), 3, "0") + "-" >> > + session.getFirstUncommittedLog() + "-" + >> > session.getFirstUncommittedPos(); >> > } >> >> There is currently no good way to do that. How unique does the >> transaction id need to be? I mean, is it a problem if the id starts >> from 0 when you restart the application? Is there a sort requirements >> (larger transaction ids means later)? >> >> Your solution doesn't work for remote connections. I suggest I add a >> SQL system function that returns the current transaction id. What is >> your preferred function name? >> >> Is a String good enough, or is a byte array better? How fast does it >> need to be? >> >> Regards, >> Thomas > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
