@Override public boolean isUpsertSupported() { // OR/ON CONFLICT introduced in 3.8.11 return super.isUpsertSupported() && (metaData.getMajorVersion() >= 4 || (metaData.getMajorVersion() >= 3 && metaData.getMinorVersion() >= 9)); }
@Override public String getDeleteAllRowsSql() { if (deleteAllRows == null) { deleteAllRows = "DELETE FROM " + getTableName(); } return deleteAllRows; }
public TableManager getTableManager() { if (tableManager == null) tableManager = TableManagerFactory.getManager(connectionFactory, configuration); return tableManager; }
public static TableManager getManager(DbMetaData metaData, ConnectionFactory connectionFactory, TableManipulationConfiguration tableConfig) { switch (metaData.getType()) { case DB2: case DB2_390: return new DB2TableManager(connectionFactory, tableConfig, metaData); case H2: return new H2TableManager(connectionFactory, tableConfig, metaData); case MARIA_DB: case MYSQL: return new MySQLTableManager(connectionFactory, tableConfig, metaData); case ORACLE: return new OracleTableManager(connectionFactory, tableConfig, metaData); case POSTGRES: return new PostgresTableManager(connectionFactory, tableConfig, metaData); case SQLITE: return new SQLiteTableManager(connectionFactory, tableConfig, metaData); case SYBASE: return new SybaseTableManager(connectionFactory, tableConfig, metaData); case SQL_SERVER: return new SQLServerTableManager(connectionFactory, tableConfig, metaData); default: return new GenericTableManager(connectionFactory, tableConfig, metaData); } }
private TableManager getTableManager(boolean binary) { TableManipulationConfiguration tableConfig = binary ? binaryConfig : stringConfig; TableManager tableManager = TableManagerFactory.getManager(metaData, connectionFactory, tableConfig); tableManager.setCacheName(props.cacheName()); return tableManager; }
private void createIndex(Connection conn, String indexExt, String columnName) throws PersistenceException { if (metaData.isIndexingDisabled()) return; boolean indexExists = indexExists(getIndexName(false, indexExt), conn); if (!indexExists) { String ddl = String.format("CREATE INDEX %s ON %s (%s)", getIndexName(true, indexExt), getTableName(), columnName); if (log.isTraceEnabled()) { log.tracef("Adding index with following DDL: '%s'.", ddl); } executeUpdateSql(conn, ddl); } }
public static TableManager getManager(ConnectionFactory connectionFactory, JdbcStringBasedStoreConfiguration config) { DbMetaData metaData = getDbMetaData(connectionFactory, config.dialect(), config.dbMajorVersion(), config.dbMinorVersion(), isPropertyDisabled(config, UPSERT_DISABLED), isPropertyDisabled(config, INDEXING_DISABLED), !config.segmented()); return getManager(metaData, connectionFactory, config.table()); }
public String getIndexName(boolean withIdentifier, String indexExt) { TableName table = getTableName(); String tableName = table.toString().replace(identifierQuoteString, ""); String indexName = tableName + "_" + indexExt; if (withIdentifier) { return identifierQuoteString + indexName + identifierQuoteString; } return indexName; }
@Override public String getIndexName(boolean withIdentifier, String indexExt) { if (indexExt.equals(timestampIndexExt)) { // Timestamp for Oracle began with IDX, to keep backwards compatible we have to keep using that indexExt = INDEX_PREFIX; } int maxNameSize = MAX_INDEX_IDENTIFIER_SIZE - indexExt.length() - 1; String tableName = getTableName().toString().replace(identifierQuoteString, ""); String truncatedName = tableName.length() > maxNameSize ? tableName.substring(0, maxNameSize) : tableName; String indexName = indexExt + "_" + truncatedName; if (withIdentifier) { return identifierQuoteString + indexName + identifierQuoteString; } return indexName; }
@Test(dependsOnMethods = "testCreateTable") public void testExists() throws PersistenceException { assert tableManager.tableExists(connection); assert !tableManager.tableExists(connection, new TableName("\"", "", "does_not_exist")); }
public boolean tableExists(Connection connection) throws PersistenceException { return tableExists(connection, getTableName()); }
public TableName getTableName() { if (tableName == null) { tableName = new TableName(identifierQuoteString, config.tableNamePrefix(), cacheName); } return tableName; }
@Override public String getUpsertRowSql() { if (upsertRowSql == null) { if (metaData.isSegmentedDisabled()) { upsertRowSql = String.format("MERGE INTO %1$s (%2$s, %3$s, %4$s) KEY(%4$s) VALUES(?, ?, ?)", getTableName(), config.dataColumnName(), config.timestampColumnName(), config.idColumnName()); } else { upsertRowSql = String.format("MERGE INTO %1$s (%2$s, %3$s, %4$s, %5$s) KEY(%4$s) VALUES(?, ?, ?, ?)", getTableName(), config.dataColumnName(), config.timestampColumnName(), config.idColumnName(), config.segmentColumnName()); } } return upsertRowSql; }
@Override public String getInsertRowSql() { if (insertRowSql == null) { if (metaData.isSegmentedDisabled()) { insertRowSql = String.format("INSERT INTO %s (%s,%s,%s) VALUES (?,?,?)", getTableName(), config.idColumnName(), config.timestampColumnName(), config.dataColumnName()); } else { insertRowSql = String.format("INSERT INTO %s (%s,%s,%s,%s) VALUES (?,?,?,?)", getTableName(), config.idColumnName(), config.timestampColumnName(), config.dataColumnName(), config.segmentColumnName()); } } return insertRowSql; }
@Override public boolean isStringEncodingRequired() { return metaData.getMajorVersion() <= 13; }
@Override public void prepareUpdateStatement(PreparedStatement ps, String key, long timestamp, int segment, ByteBuffer byteBuffer) throws SQLException { super.prepareUpsertStatement(ps, key, timestamp, segment, byteBuffer); }
@Override public boolean isUpsertSupported() { return !metaData.isUpsertDisabled(); }
protected String getSelectMultipleRowSql(int numberOfParams, String selectCriteria) { if (numberOfParams < 1) return null; if (numberOfParams == 1) return getSelectRowSql(); StringBuilder sb = new StringBuilder(getSelectRowSql()); for (int i = 0; i < numberOfParams - 1; i++) { sb.append(" OR "); sb.append(selectCriteria); } return sb.toString(); }
@Override public String getSelectMultipleRowSql(int numberOfParams) { String selectCriteria = config.idColumnName() + " = convert(" + config.idColumnType() + ",?)"; return getSelectMultipleRowSql(numberOfParams, selectCriteria); }
@Override public boolean isUpsertSupported() { // ON CONFLICT added in Postgres 9.5 return super.isUpsertSupported() && (metaData.getMajorVersion() >= 10 || (metaData.getMajorVersion() == 9 && metaData.getMinorVersion() >= 5)); }