You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Harmen Renkema (JIRA)" <ji...@apache.org> on 2017/07/11 09:05:00 UTC
[jira] [Created] (AMQ-6767) Support for Hana jdbc persistence
adapter
Harmen Renkema created AMQ-6767:
-----------------------------------
Summary: Support for Hana jdbc persistence adapter
Key: AMQ-6767
URL: https://issues.apache.org/jira/browse/AMQ-6767
Project: ActiveMQ
Issue Type: Improvement
Affects Versions: 5.14.3
Reporter: Harmen Renkema
Priority: Minor
We're using jdbc for persistence with a SAP HANA database, which isn't supported out of the box.
As per the documentation (http://activemq.apache.org/jdbc-support.html) we've created a HanaJdbcAdapter in the same way as the already existing AxionJdbcAdapter.
We would like to share this adapter with the project, so others can benefit. Feel free to include it in the project.
{code:java}
import org.apache.activemq.store.jdbc.Statements;
import org.apache.activemq.store.jdbc.adapter.DefaultJDBCAdapter;
public class HanaJdbcAdapter extends DefaultJDBCAdapter {
@Override
public void setStatements(Statements statements) {
String[] createSchemaStatements = new String[] {
"CREATE TABLE " + statements.getFullMessageTableName() + "(" + "ID " + statements.getSequenceDataType()
+ " NOT NULL" + ", CONTAINER " + statements.getContainerNameDataType() + ", MSGID_PROD " + statements
.getMsgIdDataType() + ", MSGID_SEQ " + statements.getSequenceDataType() + ", EXPIRATION " + statements
.getLongDataType() + ", MSG " + (statements.isUseExternalMessageReferences() ?
statements.getStringIdDataType() :
statements.getBinaryDataType()) + ", PRIMARY KEY ( ID ) )",
"CREATE INDEX " + statements.getFullMessageTableName() + "_MIDX ON " + statements.getFullMessageTableName()
+ " (MSGID_PROD,MSGID_SEQ)",
"CREATE INDEX " + statements.getFullMessageTableName() + "_CIDX ON " + statements.getFullMessageTableName()
+ " (CONTAINER)",
"CREATE INDEX " + statements.getFullMessageTableName() + "_EIDX ON " + statements.getFullMessageTableName()
+ " (EXPIRATION)",
"CREATE TABLE " + statements.getFullAckTableName() + "(" + "CONTAINER " + statements.getContainerNameDataType()
+ " NOT NULL" + ", SUB_DEST " + statements.getStringIdDataType() + ", CLIENT_ID " + statements
.getStringIdDataType() + " NOT NULL" + ", SUB_NAME " + statements.getStringIdDataType() + " NOT NULL"
+ ", SELECTOR " + statements.getStringIdDataType() + ", LAST_ACKED_ID " + statements.getSequenceDataType()
+ ", PRIMARY KEY ( CONTAINER, CLIENT_ID, SUB_NAME))",
"ALTER TABLE " + statements.getFullMessageTableName() + " ADD (PRIORITY " + statements.getSequenceDataType() + ")",
"CREATE INDEX " + statements.getFullMessageTableName() + "_PIDX ON " + statements.getFullMessageTableName()
+ " (PRIORITY)",
"ALTER TABLE " + statements.getFullMessageTableName() + " ADD (XID " + statements.getStringIdDataType() + ")",
"ALTER TABLE " + statements.getFullAckTableName() + " ADD (PRIORITY " + statements.getSequenceDataType()
+ " DEFAULT 5 NOT NULL)",
"ALTER TABLE " + statements.getFullAckTableName() + " ADD (XID " + statements.getStringIdDataType() + ")",
"ALTER TABLE " + statements.getFullAckTableName() + " " + statements.getDropAckPKAlterStatementEnd(),
"ALTER TABLE " + statements.getFullAckTableName() + " ADD PRIMARY KEY (CONTAINER, CLIENT_ID, SUB_NAME, PRIORITY)",
"CREATE INDEX " + statements.getFullMessageTableName() + "_XIDX ON " + statements.getFullMessageTableName()
+ " (XID)",
"CREATE INDEX " + statements.getFullAckTableName() + "_XIDX ON " + statements.getFullAckTableName() + " (XID)" };
statements.setCreateSchemaStatements(createSchemaStatements);
super.setStatements(statements);
}
}
{code}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)