Search in sources :

Example 1 with Composite

use of org.apache.cassandra.db.composites.Composite in project titan by thinkaurelius.

the class CassandraEmbeddedKeyColumnValueStore method getSlice.

@Override
public EntryList getSlice(KeySliceQuery query, StoreTransaction txh) throws BackendException {
    /**
         * This timestamp mimics the timestamp used by
         * {@link org.apache.cassandra.thrift.CassandraServer#get(ByteBuffer,ColumnPath,ConsistencyLevel)}.
         *
         * That method passes the server's System.currentTimeMillis() to
         * {@link ReadCommand#create(String, ByteBuffer, String, long, IDiskAtomFilter)}.
         * {@code create(...)} in turn passes that timestamp to the SliceFromReadCommand constructor.
         */
    final long nowMillis = times.getTime().toEpochMilli();
    Composite startComposite = CellNames.simpleDense(query.getSliceStart().asByteBuffer());
    Composite endComposite = CellNames.simpleDense(query.getSliceEnd().asByteBuffer());
    SliceQueryFilter sqf = new SliceQueryFilter(startComposite, endComposite, false, query.getLimit() + (query.hasLimit() ? 1 : 0));
    ReadCommand sliceCmd = new SliceFromReadCommand(keyspace, query.getKey().asByteBuffer(), columnFamily, nowMillis, sqf);
    List<Row> slice = read(sliceCmd, getTx(txh).getReadConsistencyLevel().getDB());
    if (null == slice || 0 == slice.size())
        return EntryList.EMPTY_LIST;
    int sliceSize = slice.size();
    if (1 < sliceSize)
        throw new PermanentBackendException("Received " + sliceSize + " rows for single key");
    Row r = slice.get(0);
    if (null == r) {
        log.warn("Null Row object retrieved from Cassandra StorageProxy");
        return EntryList.EMPTY_LIST;
    }
    ColumnFamily cf = r.cf;
    if (null == cf) {
        log.debug("null ColumnFamily (\"{}\")", columnFamily);
        return EntryList.EMPTY_LIST;
    }
    if (cf.isMarkedForDelete())
        return EntryList.EMPTY_LIST;
    return CassandraHelper.makeEntryList(Iterables.filter(cf.getSortedColumns(), new FilterDeletedColumns(nowMillis)), entryGetter, query.getSliceEnd(), query.getLimit());
}
Also used : Composite(org.apache.cassandra.db.composites.Composite) SliceQueryFilter(org.apache.cassandra.db.filter.SliceQueryFilter)

Example 2 with Composite

use of org.apache.cassandra.db.composites.Composite in project stargate-core by tuplejump.

the class ResultMapper method getColumnSlices.

private ColumnSlice[] getColumnSlices(Collection<IndexEntry> entries) {
    ColumnSlice[] columnSlices = new ColumnSlice[entries.size()];
    int i = 0;
    for (IndexEntry entry : entries) {
        Composite start = tableMapper.start(entry.clusteringKey);
        Composite end = tableMapper.end(start);
        ColumnSlice columnSlice = new ColumnSlice(start, end);
        columnSlices[i++] = columnSlice;
    }
    return columnSlices;
}
Also used : Composite(org.apache.cassandra.db.composites.Composite) ColumnSlice(org.apache.cassandra.db.filter.ColumnSlice) IndexEntry(com.tuplejump.stargate.lucene.IndexEntryCollector.IndexEntry)

Example 3 with Composite

use of org.apache.cassandra.db.composites.Composite in project stargate-core by tuplejump.

the class ResultMapper method getPagedColumnSlices.

private ColumnSlice[] getPagedColumnSlices(DecoratedKey dk, Collection<IndexEntry> entries, int pageSize) {
    ArrayList<ColumnSlice> columnSlices = new ArrayList<>(Math.min(entries.size(), pageSize));
    for (IndexEntry entry : entries) {
        CellName cellName = entry.clusteringKey;
        if (!filter.columnFilter(dk.getKey()).maySelectPrefix(tableMapper.table.getComparator(), cellName.start())) {
            continue;
        }
        Composite start = tableMapper.start(cellName);
        Composite end = tableMapper.end(start);
        ColumnSlice columnSlice = new ColumnSlice(start, end);
        columnSlices.add(columnSlice);
        if (columnSlices.size() == pageSize) {
            break;
        }
    }
    return columnSlices.toArray(new ColumnSlice[columnSlices.size()]);
}
Also used : Composite(org.apache.cassandra.db.composites.Composite) ColumnSlice(org.apache.cassandra.db.filter.ColumnSlice) ArrayList(java.util.ArrayList) IndexEntry(com.tuplejump.stargate.lucene.IndexEntryCollector.IndexEntry) CellName(org.apache.cassandra.db.composites.CellName)

Example 4 with Composite

use of org.apache.cassandra.db.composites.Composite in project stargate-core by tuplejump.

the class SearchSupport method isFirstPage.

private boolean isFirstPage(DataRange.Paging pageRange) {
    try {
        Composite start = (Composite) getPrivateProperty(pageRange, "firstPartitionColumnStart");
        Composite finish = (Composite) getPrivateProperty(pageRange, "lastPartitionColumnFinish");
        return (start == finish) && (start == Composites.EMPTY);
    } catch (NoSuchFieldException e) {
    //do nothing;
    } catch (IllegalAccessException e) {
    //do nothing
    }
    return false;
}
Also used : Composite(org.apache.cassandra.db.composites.Composite)

Example 5 with Composite

use of org.apache.cassandra.db.composites.Composite in project stargate-core by tuplejump.

the class RowIndexSupport method loadOldRow.

private void loadOldRow(DecoratedKey dk, ByteBuffer pkBuf, List<Field> fields) {
    CellName clusteringKey = tableMapper.makeClusteringKey(pkBuf);
    Composite start = tableMapper.start(clusteringKey);
    Composite end = tableMapper.end(start);
    ColumnSlice columnSlice = new ColumnSlice(start, end);
    SliceQueryFilter sliceQueryFilter = new SliceQueryFilter(columnSlice, false, Integer.MAX_VALUE);
    QueryFilter queryFilter = new QueryFilter(dk, tableMapper.table.name, sliceQueryFilter, new Date().getTime());
    ColumnFamily columnFamily = tableMapper.table.getColumnFamily(queryFilter);
    Map<CellName, ColumnFamily> fullSlice = tableMapper.getRows(columnFamily);
    ColumnFamily oldDocument = fullSlice.get(clusteringKey);
    for (Cell cell : oldDocument) {
        CellName cellName = cell.name();
        ColumnIdentifier cql3ColName = cellName.cql3ColumnName(tableMapper.cfMetaData);
        String actualColName = cql3ColName.toString();
        ColumnDefinition columnDefinition = tableMapper.cfMetaData.getColumnDefinition(cql3ColName);
        if (options.shouldIndex(actualColName)) {
            addFields(cell, actualColName, columnDefinition, fields);
        }
    }
}
Also used : SliceQueryFilter(org.apache.cassandra.db.filter.SliceQueryFilter) QueryFilter(org.apache.cassandra.db.filter.QueryFilter) Composite(org.apache.cassandra.db.composites.Composite) ColumnSlice(org.apache.cassandra.db.filter.ColumnSlice) SliceQueryFilter(org.apache.cassandra.db.filter.SliceQueryFilter) ColumnIdentifier(org.apache.cassandra.cql3.ColumnIdentifier) CellName(org.apache.cassandra.db.composites.CellName) ColumnDefinition(org.apache.cassandra.config.ColumnDefinition)

Aggregations

Composite (org.apache.cassandra.db.composites.Composite)7 ColumnSlice (org.apache.cassandra.db.filter.ColumnSlice)3 IndexEntry (com.tuplejump.stargate.lucene.IndexEntryCollector.IndexEntry)2 ColumnDefinition (org.apache.cassandra.config.ColumnDefinition)2 CellName (org.apache.cassandra.db.composites.CellName)2 SliceQueryFilter (org.apache.cassandra.db.filter.SliceQueryFilter)2 ByteBuffer (java.nio.ByteBuffer)1 ArrayList (java.util.ArrayList)1 ColumnIdentifier (org.apache.cassandra.cql3.ColumnIdentifier)1 CType (org.apache.cassandra.db.composites.CType)1 QueryFilter (org.apache.cassandra.db.filter.QueryFilter)1 Query (org.apache.lucene.search.Query)1