Thanks for pointing to this issue.
But the method that overrides lock create statement has a bug... If
isUseLockCreateWhereClause() is true, the produced statement will look
something like this:
*SELECT * FROM ACTIVEMQ_LOCK WHERE ID=1 WITH (UPDLOCK, ROWLOCK)* which will
throw a
*/com.microsoft.sqlserver.jdbc.SQLServerException: A processing error
"Incorrect syntax near '('." has occurred/*... with MS SQL Server 2008 and
up... I guess it was tested with earlier versions which were more loose in
terms syntax...
The right way is
*SELECT * FROM ACTIVEMQ_LOCK WITH (UPDLOCK, ROWLOCK) WHERE ID=1 *
public void setStatements(Statements statements) {
String lockCreateStatement = "SELECT * FROM " +
statements.getFullLockTableName();
if (statements.isUseLockCreateWhereClause()) {
lockCreateStatement += " WHERE ID = 1";
}
lockCreateStatement += " WITH (UPDLOCK, ROWLOCK)";
statements.setLockCreateStatement(lockCreateStatement);
super.setStatements(statements);
}
--
View this message in context:
http://activemq.2283324.n4.nabble.com/Problem-with-TransactDatabaseLocker-s-lock-statement-tp4653552p4653776.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.