private static boolean isResultSuccessful(CqlRow cqlRow) { Column appliedColumn = cqlRow.getColumns() .stream() .filter(column -> APPLIED_COLUMN.equals(decodeCqlColumnName(column))) .findFirst() .orElseThrow(() -> new IllegalStateException("CQL row " + cqlRow + " was missing an [applied] column")); return Arrays.equals(SUCCESSFUL_OPERATION, appliedColumn.getValue()); }
private static byte[] getNamedColumnValue(List<Column> columns, String columnName) { return getNamedColumn(columns, columnName).getValue(); }
private static List<ByteString> existingValues(CqlRow cqlRow) { return cqlRow.getColumns() .stream() .filter(column -> VALUE_COLUMN.equals(decodeCqlColumnName(column))) .findFirst() .map(column -> ImmutableList.of(ByteString.of(column.getValue()))) .orElseGet(ImmutableList::of); }
private static long extractTimestamp(CqlRow row, int columnIndex) { byte[] flippedTimestampAsBytes = row.getColumns().get(columnIndex).getValue(); return ~PtBytes.toLong(flippedTimestampAsBytes); }
private long extractUpperLimit(ColumnOrSuperColumn result) { try { Column column = result.getColumn(); return PtBytes.toLong(column.getValue()); } catch (IllegalArgumentException e) { String msg = "Caught an IllegalArgumentException trying to convert the stored value to a long. " + "This can happen if you attempt to run AtlasDB without a timelock block after having " + "previously migrated to the TimeLock server. Please adjust your configuration to allow " + "AtlasDB to talk to TimeLock, shut down all service nodes, and then restart. Consult the " + "documentation here: https://palantir.github.io/atlasdb/html/configuration/" + "external_timelock_service_configs/timelock_client_config.html#timelock-client-" + "configuration - contact AtlasDB support for additional guidance if necessary."; throw new IllegalStateException(msg, e); } } });
/** * @param result * @param entityMetadata * @param em * @return */ private List onNativeCassResults(List result, EntityMetadata entityMetadata, EntityManager em) { Map<String, Client<Query>> clients = (Map<String, Client<Query>>) em.getDelegate(); Client client = clients.get(entityMetadata.getPersistenceUnit()); if((client.getClass().getSimpleName().equals("ThriftClient") || client.getClass().getSimpleName().equals("PelopsClient") || client.getClass().getSimpleName().equals("DSClient")) && Column.class.equals(result.get(0).getClass())) { int count = 0; for(Object column : result) { Map<Object, Object> valueMap = new HashMap<Object, Object>(); valueMap.put(PropertyAccessorHelper.getObject(String.class, ((Column) column).getName()), PropertyAccessorHelper.getObject(Long.class, ((Column) column).getValue())); result.set(count, valueMap); count ++; } } return result; }
public void extractResults(Iterable<byte[]> canonicalRows, Map<ByteBuffer, List<ColumnOrSuperColumn>> colsByKey, long startTs) { // Make sure returned maps are keyed by the given rows Map<ByteBuffer, byte[]> canonicalRowsByHash = Maps.uniqueIndex(canonicalRows, ByteBuffer::wrap); for (Map.Entry<ByteBuffer, List<ColumnOrSuperColumn>> colEntry : colsByKey.entrySet()) { byte[] rawRow = CassandraKeyValueServices.getBytesFromByteBuffer(colEntry.getKey()); byte[] row = canonicalRowsByHash.get(ByteBuffer.wrap(rawRow)); List<ColumnOrSuperColumn> columns = colEntry.getValue(); if (!columns.isEmpty()) { rowsToLastCompositeColumns.put(row, columns.get(columns.size() - 1).getColumn()); } else { emptyRows.add(row); } rowsToRawColumnCount.put(row, columns.size()); for (ColumnOrSuperColumn c : columns) { Pair<byte[], Long> pair = CassandraKeyValueServices.decomposeName(c.getColumn()); internalExtractResult(startTs, row, pair.lhSide, c.getColumn().getValue(), pair.rhSide); } } }
@Override public Object generate(Client<?> client, String dataType) { CqlResult cqlResult = ((CassandraClientBase) client).execute("SELECT NOW() FROM system_schema.columns LIMIT 1", ((CassandraClientBase) client).getRawClient(SYSTEM)); CqlRow cqlRow = cqlResult.getRowsIterator().next(); TimeUUIDType t = TimeUUIDType.instance; UUID timeUUID = t.compose(ByteBuffer.wrap(cqlRow.getColumns().get(0).getValue())); switch (dataType.toLowerCase()) { case UUID: return timeUUID; default: return java.util.UUID.randomUUID(); } }
private static CellWithTimestamp getCellFromKeylessRow(CqlRow row, byte[] key) { byte[] rowName = key; byte[] columnName = row.getColumns().get(0).getValue(); long timestamp = extractTimestamp(row, 1); return CellWithTimestamp.of(Cell.create(rowName, columnName), timestamp); }
@SuppressWarnings("VisibilityModifier") public final byte[] extractResults( Map<ByteBuffer, List<ColumnOrSuperColumn>> colsByKey, long startTs, ColumnSelection selection) { byte[] maxRow = null; for (Entry<ByteBuffer, List<ColumnOrSuperColumn>> colEntry : colsByKey.entrySet()) { byte[] row = CassandraKeyValueServices.getBytesFromByteBuffer(colEntry.getKey()); maxRow = updatedMaxRow(maxRow, row); for (ColumnOrSuperColumn c : colEntry.getValue()) { Pair<byte[], Long> pair = CassandraKeyValueServices.decomposeName(c.getColumn()); internalExtractResult(startTs, selection, row, pair.lhSide, c.getColumn().getValue(), pair.rhSide); } } return maxRow; }
byte[] thriftColumnValue = column.getValue(); PropertyAccessorHelper.set(embeddedObject, superColumnFieldMap.get(thriftColumnName), thriftColumnValue);
public static long getColumnSize(Column column) { if (column == null) { return getNullSize(); } return getByteArraySize(column.getValue()) + getByteArraySize(column.getName()) + getTtlSize() + getTimestampSize(); }
@Test public void testMultigetSlice() throws HectorException { // insert value ColumnPath cp = new ColumnPath("Standard1"); cp.setColumn(bytes("testMultigetSlice")); ArrayList<String> keys = new ArrayList<String>(100); for (int i = 0; i < 100; i++) { keyspace.insert("testMultigetSlice_" + i, cp, StringSerializer.get().toByteBuffer("testMultigetSlice_value_" + i)); keys.add("testMultigetSlice_" + i); } // get value ColumnParent clp = new ColumnParent("Standard1"); SliceRange sr = new SliceRange(ByteBuffer.wrap(new byte[0]), ByteBuffer.wrap(new byte[0]), false, 150); SlicePredicate sp = new SlicePredicate(); sp.setSlice_range(sr); Map<String, List<Column>> ms = se.fromBytesMap(keyspace.multigetSlice(se.toBytesList(keys), clp, sp)); for (int i = 0; i < 100; i++) { List<Column> cl = ms.get(keys.get(i)); assertNotNull(cl); assertEquals(1, cl.size()); assertTrue(string(cl.get(0).getValue()).startsWith("testMultigetSlice_")); } // remove value for (int i = 0; i < 100; i++) { keyspace.remove("testMultigetSlice_" + i, cp); } }
@Test public void testGetSuperRangeSlices() throws HectorException { for (int i = 0; i < 10; i++) { ColumnPath cp = new ColumnPath("Super1"); cp.setSuper_column(bytes("SuperColumn_1")); cp.setColumn(bytes("testGetSuperRangeSlices_" + i)); keyspace.insert("testGetSuperRangeSlices0", cp, StringSerializer.get().toByteBuffer("testGetSuperRangeSlices_Value_" + i)); keyspace.insert("testGetSuperRangeSlices1", cp, StringSerializer.get().toByteBuffer("testGetSuperRangeSlices_Value_" + i)); } // get value ColumnParent clp = new ColumnParent("Super1"); SliceRange sr = new SliceRange(ByteBuffer.wrap(new byte[0]), ByteBuffer.wrap(new byte[0]), false, 150); SlicePredicate sp = new SlicePredicate(); sp.setSlice_range(sr); KeyRange range = new KeyRange(); range.setStart_key( "".getBytes()); range.setEnd_key( "".getBytes()); Map<String, List<SuperColumn>> keySlices = se.fromBytesMap(keyspace.getSuperRangeSlices(clp, sp, range)); assertNotNull(keySlices); assertNotNull("testGetSuperRangSlices0 is null", keySlices.get("testGetSuperRangeSlices0")); assertEquals("testGetSuperRangeSlices_Value_0", string(keySlices.get("testGetSuperRangeSlices0").get(0).getColumns().get(0).getValue())); assertEquals(1, keySlices.get("testGetSuperRangeSlices1").size()); assertEquals(10, keySlices.get("testGetSuperRangeSlices1").get(0).getColumns().size()); ColumnPath cp = new ColumnPath("Super1"); keyspace.remove("testGetSuperRangeSlices0", cp); keyspace.remove("testGetSuperRangeSlices1", cp); }
@Test public void testGetRangeSlices() throws HectorException { for (int i = 0; i < 10; i++) { ColumnPath cp = new ColumnPath("Standard1"); cp.setColumn(bytes("testGetRangeSlices_" + i)); keyspace.insert("testGetRangeSlices0", cp, StringSerializer.get().toByteBuffer("testGetRangeSlices_Value_" + i)); keyspace.insert("testGetRangeSlices1", cp, StringSerializer.get().toByteBuffer("testGetRangeSlices_Value_" + i)); keyspace.insert("testGetRangeSlices2", cp, StringSerializer.get().toByteBuffer("testGetRangeSlices_Value_" + i)); } // get value ColumnParent clp = new ColumnParent("Standard1"); SliceRange sr = new SliceRange(ByteBuffer.wrap(new byte[0]), ByteBuffer.wrap(new byte[0]), false, 150); SlicePredicate sp = new SlicePredicate(); sp.setSlice_range(sr); KeyRange range = new KeyRange(); range.setStart_key( "".getBytes()); range.setEnd_key( "".getBytes()); Map<String, List<Column>> keySlices = se.fromBytesMap(keyspace.getRangeSlices(clp, sp, range)); assertNotNull(keySlices); assertNotNull("testGetRangeSlices1 is null", keySlices.get("testGetRangeSlices1")); assertEquals("testGetRangeSlices_Value_0", string(keySlices.get("testGetRangeSlices1").get(0).getValue())); assertEquals(10, keySlices.get("testGetRangeSlices1").size()); ColumnPath cp = new ColumnPath("Standard1"); keyspace.remove("testGetRanageSlices0", cp); keyspace.remove("testGetRanageSlices1", cp); keyspace.remove("testGetRanageSlices2", cp); }
Column col = keyspace.getColumn("testInsertAndGetAndRemove_" + i, cp); assertNotNull(col); String value = string(col.getValue()); assertEquals("testInsertAndGetAndRemove_value_" + i, value);
Column col = keyspace.getColumn("testInsertAndGetAndRemove_" + i, cp); assertNotNull(col); String value = string(col.getValue()); assertEquals("testInsertAndGetAndRemove_value_" + i, value);
/** * Test insertion of a supercolumn using insert */ @Test public void testInsertSuper() throws IllegalArgumentException, NoSuchElementException, IllegalStateException, HNotFoundException, Exception { // insert value ColumnParent columnParent = new ColumnParent("Super1"); columnParent.setSuper_column(StringSerializer.get().toByteBuffer("testInsertSuper_super")); Column column = new Column(StringSerializer.get().toByteBuffer("testInsertSuper_column")); column.setValue(StringSerializer.get().toByteBuffer("testInsertSuper_value")); column.setTimestamp(connectionManager.createClock()); keyspace.insert(StringSerializer.get().toByteBuffer("testInsertSuper_key"), columnParent, column); column.setName(StringSerializer.get().toByteBuffer("testInsertSuper_column2")); keyspace.insert(StringSerializer.get().toByteBuffer("testInsertSuper_key"), columnParent, column); // get value and assert ColumnPath cp2 = new ColumnPath("Super1"); cp2.setSuper_column(bytes("testInsertSuper_super")); SuperColumn sc = keyspace.getSuperColumn("testInsertSuper_key", cp2); assertNotNull(sc); assertEquals("testInsertSuper_super", string(sc.getName())); assertEquals(2, sc.getColumns().size()); assertEquals("testInsertSuper_value", string(sc.getColumns().get(0).getValue())); // remove value keyspace.remove("testInsertSuper_super", cp2); }
String value = string(col.getValue()); assertEquals("testBatchMutateColumn_value_" + j, value);