public boolean createIndex(final Index index) throws IOException { final String indexName = index.getName(); return createTable(getQualifiedTableName(indexName), DataIndexUtils.isDataIndex(indexName)); } }
private boolean createTable(final String indexName) { synchronized (CREATE_TABLE_MUTEX) { try { if (!indexExists(indexName)) { final String tableName = getCassandraSafeName(indexName); final Create create = getCreateTable(tableName); CassandraField[] fields = CassandraField.values(); if (DataIndexUtils.isDataIndex(tableName)) { fields = Arrays.stream(fields).filter(f -> f.isDataIndexColumn()).toArray( i -> new CassandraField[i]); } for (final CassandraField f : fields) { f.addColumn(create); } executeCreateTable(create, tableName); return true; } } catch (final IOException e) { LOGGER.error("Unable to create table '" + indexName + "'", e); } } return false; }
final String[] additionalAuthorizations, final int dataIndexBatchSize) { if ((dataIndexBatchSize > 0) && !isDataIndex(index.getName())) {
@Override public RowWriter createWriter(final Index index, final InternalDataAdapter<?> adapter) { final boolean isDataIndex = DataIndexUtils.isDataIndex(index.getName()); final String qName = getQualifiedTableName(index.getName()); final DynamoDBWriter writer = new DynamoDBWriter(client, qName, isDataIndex); createTable(qName, isDataIndex); return writer; }
public BatchedWrite getBatchedWrite(final String tableName) { PreparedStatement preparedWrite; final String safeTableName = getCassandraSafeName(tableName); final boolean isDataIndex = DataIndexUtils.isDataIndex(tableName); synchronized (state.preparedWritesPerTable) { preparedWrite = state.preparedWritesPerTable.get(safeTableName); if (preparedWrite == null) { final Insert insert = getInsert(safeTableName); CassandraField[] fields = CassandraField.values(); if (isDataIndex) { fields = Arrays.stream(fields).filter(f -> f.isDataIndexColumn()).toArray( i -> new CassandraField[i]); } for (final CassandraField f : fields) { insert.value(f.getFieldName(), QueryBuilder.bindMarker(f.getBindMarkerName())); } preparedWrite = session.prepare(insert); state.preparedWritesPerTable.put(safeTableName, preparedWrite); } } return new BatchedWrite( session, preparedWrite, isDataIndex ? 1 : options.getBatchWriteSize(), isDataIndex, options.isVisibilityEnabled()); }