@Override public void deleteByColumn(String schemaName, String tableName, String columnName, Object columnValue) { Session session = factory.getConnection(); String rowKeyName = null; CQLTranslator translator = new CQLTranslator(); try { List<ColumnMetadata> primaryKeys = session.getCluster().getMetadata().getKeyspace("\"" + schemaName + "\"") .getTable("\"" + tableName + "\"").getPrimaryKey(); rowKeyName = primaryKeys.get(0).getName(); } finally { // factory.releaseConnection(session); } List rowKeys = getColumnsById(schemaName, tableName, columnName, rowKeyName, columnValue, columnValue.getClass()); for (Object rowKey : rowKeys) { if (rowKey != null) { String deleteQuery = CQLTranslator.DELETE_QUERY; deleteQuery = StringUtils.replace(deleteQuery, CQLTranslator.COLUMN_FAMILY, translator.ensureCase(new StringBuilder(), tableName, false).toString()); StringBuilder deleteQueryBuilder = new StringBuilder(deleteQuery); deleteQueryBuilder.append(CQLTranslator.ADD_WHERE_CLAUSE); deleteQueryBuilder = translator.ensureCase(deleteQueryBuilder, rowKeyName, false); deleteQueryBuilder.append(CQLTranslator.EQ_CLAUSE); translator.appendValue(deleteQueryBuilder, rowKey.getClass(), rowKey, false, false); this.execute(deleteQueryBuilder.toString(), null); } } }
/** * Whether or not this column is part of the primary key * @param tablename * @param columnName * @return true if pk, false otherwise */ public boolean isPrimaryKey(Tablename tablename, String columnName) { final List<ColumnMetadata> primaryKeys = tableMetadataCache.getMetadata(tablename).tableMetadata.getPrimaryKey(); final ColumnMetadata columnMetadata = getColumnMetadata(tablename, columnName); return primaryKeys.contains(columnMetadata); }
public CassandraTable( final Session session, final TableMetadata table, final ConsistencyLevel consistencyLevel, final String bodyColumn, final boolean ignoreCase) { this.session = session; this.table = table; this.consistencyLevel = consistencyLevel; this.bodyColumn = bodyColumn; this.columns = table.getColumns(); this.totalColumns = this.columns.size(); this.primaryKeys = new ArrayList<String>(); for (final ColumnMetadata column : table.getPrimaryKey()) { primaryKeys.add(column.getName()); } this.ignoreCase = ignoreCase; }
private BlockedDeltaTableDDL createBlockedDeltaTableDDL(String tableName) { TableMetadata tableMetadata = _keyspace.getKeyspaceMetadata().getTable(tableName); String rowKeyColumnName = tableMetadata.getPrimaryKey().get(0).getName(); String timeSeriesColumnName = tableMetadata.getPrimaryKey().get(1).getName(); String blockColumnName = tableMetadata.getPrimaryKey().get(2).getName(); String valueColumnName = tableMetadata.getColumns().get(3).getName(); return new BlockedDeltaTableDDL(tableMetadata, rowKeyColumnName, timeSeriesColumnName, valueColumnName, blockColumnName); }
private BlockedDeltaTableDDL createBlockedDeltaTableDDL(String tableName) { TableMetadata tableMetadata = _keyspace.getKeyspaceMetadata().getTable(tableName); String rowKeyColumnName = tableMetadata.getPrimaryKey().get(0).getName(); String timeSeriesColumnName = tableMetadata.getPrimaryKey().get(1).getName(); String blockColumnName = tableMetadata.getPrimaryKey().get(2).getName(); String valueColumnName = tableMetadata.getColumns().get(3).getName(); return new BlockedDeltaTableDDL(tableMetadata, rowKeyColumnName, timeSeriesColumnName, valueColumnName, blockColumnName); }
/** * Because of the way databus tables were created historically using Astyanax and Cassandra 1.2 there may be * inconsistency in the names of the CQL columns in the subscription table. To be safe read the table metadata * to get the column names. */ private void getColumnNames() { TableMetadata table = _keyspace.getKeyspaceMetadata().getTable(CF_NAME); _rowkeyColumn = table.getPrimaryKey().get(0).getName(); _subscriptionNameColumn = table.getPrimaryKey().get(1).getName(); _subscriptionColumn = table.getColumns().get(2).getName(); } }
/** * Because of the way databus tables were created historically using Astyanax and Cassandra 1.2 there may be * inconsistency in the names of the CQL columns in the subscription table. To be safe read the table metadata * to get the column names. */ private void getColumnNames() { TableMetadata table = _keyspace.getKeyspaceMetadata().getTable(CF_NAME); _rowkeyColumn = table.getPrimaryKey().get(0).getName(); _subscriptionNameColumn = table.getPrimaryKey().get(1).getName(); _subscriptionColumn = table.getColumns().get(2).getName(); } }
private Map<String, List<String>> generatePrimaryKeyList() { Map<String, List<String>> primaryKeyMap = new HashMap<>(); for (String tableName : this.tableList) { List<String> primaryKey = new ArrayList<>(); for (ColumnMetadata columnMetadata : this.session.getCluster().getMetadata().getKeyspace(this.keyspace) .getTable(tableName).getPrimaryKey()) { primaryKey.add(columnMetadata.getName()); } primaryKeyMap.put(tableName, primaryKey); } return primaryKeyMap; }
private void registerPrimaryKeyColumnDefinitions(final TableMetadata tableMetadata) { List<ColumnMetadata> primaryKeyColumns = tableMetadata.getPrimaryKey(); for (ColumnMetadata primaryColumn : primaryKeyColumns) { columnDefinitions.put(primaryColumn.getName(), primaryColumn.getType()); pkColumnNames.add(primaryColumn.getName()); parseForSpecialDataType(primaryColumn); } }
/** * Both placement tables -- delta, and delta history -- follow the same DDL. */ private TableDDL createTableDDL(String tableName) { TableMetadata tableMetadata = _keyspace.getKeyspaceMetadata().getTable(tableName); String rowKeyColumnName = tableMetadata.getPrimaryKey().get(0).getName(); String timeSeriesColumnName = tableMetadata.getPrimaryKey().get(1).getName(); String valueColumnName = tableMetadata.getColumns().get(2).getName(); return new TableDDL(tableMetadata, rowKeyColumnName, timeSeriesColumnName, valueColumnName); }
/** * Both placement tables -- delta, and delta history -- follow the same DDL. */ private TableDDL createTableDDL(String tableName) { TableMetadata tableMetadata = _keyspace.getKeyspaceMetadata().getTable(tableName); String rowKeyColumnName = tableMetadata.getPrimaryKey().get(0).getName(); String timeSeriesColumnName = tableMetadata.getPrimaryKey().get(1).getName(); String valueColumnName = tableMetadata.getColumns().get(2).getName(); return new TableDDL(tableMetadata, rowKeyColumnName, timeSeriesColumnName, valueColumnName); }
private void registerPrimaryKeyColumnDefinitions(final TableMetadata tableMetadata) { List<ColumnMetadata> primaryKeyColumns = tableMetadata.getPrimaryKey(); for (ColumnMetadata primaryColumn : primaryKeyColumns) { columnDefinitions.put(primaryColumn.getName(), primaryColumn.getType()); pkColumnNames.add(primaryColumn.getName()); parseForSpecialDataType(primaryColumn); } }
private Object[] populateColumnMetaData(KeyspaceMetadata ks, TableMetadata t, ColumnMetadata c, int colIndex) { String cqlType = c.getType().toString().toLowerCase(); boolean isKey = t.getPrimaryKey().contains(c); return new Object[]{
private static <K> BoundStatementMapper<K> keySetter(Type keyTarget, TableMetadata tableMetadata, DatastaxMapperFactory mapperFactory, int offset) { SettableDataMapperBuilder<K> mapperBuilder = mapperFactory.newBuilderFrom(keyTarget); int i = offset; for(ColumnMetadata columnMetadata : tableMetadata.getPrimaryKey()) { mapperBuilder.addColumn(DatastaxColumnKey.of(columnMetadata, i++)); } return new BoundStatementMapper<K>(mapperBuilder.mapper()); }
private static String deleteQuery(TableMetadata tableMetadata) { Delete delete = QueryBuilder.delete().from(tableMetadata); Delete.Where where = delete.where(); List<ColumnMetadata> columns = tableMetadata.getPrimaryKey(); for(ColumnMetadata column : columns) { where.and(QueryBuilder.eq(column.getName(), QueryBuilder.bindMarker())); } return delete.toString(); }
private static String deleteQueryWithTimestamp(TableMetadata tableMetadata) { Delete delete = QueryBuilder.delete().from(tableMetadata); delete.using(QueryBuilder.timestamp(QueryBuilder.bindMarker())); Delete.Where where = delete.where(); List<ColumnMetadata> columns = tableMetadata.getPrimaryKey(); for(ColumnMetadata column : columns) { where.and(QueryBuilder.eq(column.getName(), QueryBuilder.bindMarker())); } return delete.toString(); }
private static String readQuery(TableMetadata tableMetadata) { Select.Selection select = QueryBuilder.select(); List<ColumnMetadata> columns = tableMetadata.getColumns(); for(ColumnMetadata column : columns) { select.column(column.getName()); } Select.Where where = select.from(tableMetadata).where(); columns = tableMetadata.getPrimaryKey(); for(ColumnMetadata column : columns) { where.and(QueryBuilder.eq(column.getName(), QueryBuilder.bindMarker())); } return where.toString(); }
if(tableName.equals(table.getName())){ int seq=0; for(ColumnMetadata col:table.getPrimaryKey()){ MetadataRow row = new MetadataRow().addEntry("TABLE_CAT", statement.connection.getCatalog()) .addEntry("TABLE_SCHEM", keyspace.getName())
@Override protected Schema getMainSchema() throws MetaModelException { final MutableSchema theSchema = new MutableSchema(getMainSchemaName()); for (final SimpleTableDef tableDef : tableDefs) { final MutableTable table = tableDef.toTable().setSchema(theSchema); final TableMetadata cassandraTable = cassandraCluster.getMetadata().getKeyspace(keySpaceName).getTable(table .getName()); if (cassandraTable != null) { final List<ColumnMetadata> primaryKeys = cassandraTable.getPrimaryKey(); for (ColumnMetadata primaryKey : primaryKeys) { final MutableColumn column = (MutableColumn) table.getColumnByName(primaryKey.getName()); if (column != null) { column.setPrimaryKey(true); } column.setNativeType(primaryKey.getType().getName().name()); } } theSchema.addTable(table); } return theSchema; }
@Override protected Schema getMainSchema() throws MetaModelException { final MutableSchema theSchema = new MutableSchema(getMainSchemaName()); for (final SimpleTableDef tableDef : tableDefs) { final MutableTable table = tableDef.toTable().setSchema(theSchema); final TableMetadata cassandraTable = cassandraCluster.getMetadata().getKeyspace(keySpaceName).getTable(table .getName()); if (cassandraTable != null) { final List<ColumnMetadata> primaryKeys = cassandraTable.getPrimaryKey(); for (ColumnMetadata primaryKey : primaryKeys) { final MutableColumn column = (MutableColumn) table.getColumnByName(primaryKey.getName()); if (column != null) { column.setPrimaryKey(true); } column.setNativeType(primaryKey.getType().getName().name()); } } theSchema.addTable(table); } return theSchema; }