@Test public void testQuerySingleSubColumnExtractSuper() { SuperCfTemplate<String, String, String> sTemplate = new ThriftSuperCfTemplate<String, String, String>(keyspace, "Super1", se, se, se); SuperCfUpdater<String,String,String> sUpdater = sTemplate.createUpdater("skey3","super1"); sUpdater.setString("sub1_col_1", "sub1_val_1"); sUpdater.setString("sub1_col_2", "sub1_val_2"); sTemplate.update(sUpdater); SuperCfResult<String, String, String> result = sTemplate.querySuperColumns("skey3"); HSuperColumn<String, String, ByteBuffer> superColumn = result.getSuperColumn("super1"); assertNotNull(superColumn); assertEquals("super1",superColumn.getName()); assertEquals(2,superColumn.getColumns().size()); }
public <SN,N,V> Mutator<K> addSubDelete(K key, String cf, HSuperColumn<SN,N,V> sc, long clock) { Deletion d = new Deletion().setTimestamp(clock); if ( sc.getColumns() != null ) { SlicePredicate pred = new SlicePredicate(); for (HColumn<N, V> col : sc.getColumns()) { pred.addToColumn_names(col.getNameSerializer().toByteBuffer(col.getName())); } d.setPredicate(pred); } d.setSuper_column(sc.getNameByteBuffer()); getPendingMutations().addDeletion(key, Arrays.asList(cf), d); return this; }
@Test public void testConstruction() { LongSerializer le = LongSerializer.get(); StringSerializer se = StringSerializer.get(); ByteBufferSerializer be = ByteBufferSerializer.get(); // empty one List<SuperColumn> tColumns = new ArrayList<SuperColumn>(); SuperSlice<String, Long, ByteBuffer> slice = new SuperSliceImpl<String, Long, ByteBuffer>(tColumns, se, le, be); Assert.assertTrue(slice.getSuperColumns().isEmpty()); // non-empty one Column c = new Column(le.toByteBuffer(5L)); c.setValue(be.toByteBuffer(ByteBuffer.wrap(new byte[] { 1 }))); c.setTimestamp(2L); tColumns.add(new SuperColumn(se.toByteBuffer("super"), Arrays.asList(c))); slice = new SuperSliceImpl<String, Long, ByteBuffer>(tColumns, se, le, be); Assert.assertEquals(1, slice.getSuperColumns().size()); Assert.assertEquals((Long) 5L, slice.getColumnByName("super").get(0).getName()); } }
@Test public void testSubDeleteHSuperColumn() { Mutator<String> m = createMutator(keyspace, se); List<HColumn<String, String>> columnList = new ArrayList<HColumn<String,String>>(); columnList.add(createColumn("col_1","val_1",se,se)); columnList.add(createColumn("col_2","val_2",se,se)); columnList.add(createColumn("col_3","val_3",se,se)); HSuperColumn<String, String, String> superColumn = createSuperColumn("super_name", columnList, se, se, se); m.insert("sk1", "Super1", superColumn); SuperColumnQuery<String, String, String, String> scq = HFactory.createSuperColumnQuery(keyspace, se, se, se, se); scq.setColumnFamily("Super1"); scq.setKey("sk1"); scq.setSuperName("super_name"); assertEquals(3,scq.execute().get().getColumns().size()); m.discardPendingMutations(); columnList.remove(1); columnList.remove(0); superColumn.setSubcolumns(columnList); m.addSubDelete("sk1", "Super1", superColumn); m.execute(); assertEquals(2,scq.execute().get().getColumns().size()); }
@Test public void testSubDelete() { Mutator<String> m = createMutator(keyspace, se); List<HColumn<String, String>> columnList = new ArrayList<HColumn<String,String>>(); columnList.add(createColumn("col_1","val_1",se,se)); columnList.add(createColumn("col_2","val_2",se,se)); columnList.add(createColumn("col_3","val_3",se,se)); HSuperColumn<String, String, String> superColumn = createSuperColumn("super_name", columnList, se, se, se); m.insert("sk1", "Super1", superColumn); SuperColumnQuery<String, String, String, String> scq = HFactory.createSuperColumnQuery(keyspace, se, se, se, se); scq.setColumnFamily("Super1"); scq.setKey("sk1"); scq.setSuperName("super_name"); assertEquals(3,scq.execute().get().getColumns().size()); m.discardPendingMutations(); m.addSubDelete("sk1", "Super1", "super_name", "col_1", se, se); m.execute(); assertEquals(2,scq.execute().get().getColumns().size()); }
public SuperSliceImpl(List<SuperColumn> tSuperColumns, Serializer<SN> sNameSerializer, Serializer<N> nameSerializer, Serializer<V> valueSerializer) { Assert.noneNull(tSuperColumns, sNameSerializer, nameSerializer, valueSerializer); columnsMap = new HashMap<SN,HSuperColumn<SN,N,V>>(tSuperColumns.size()); columnsList = new ArrayList<HSuperColumn<SN,N,V>>(tSuperColumns.size()); for (SuperColumn sc: tSuperColumns) { HSuperColumn<SN,N,V> column = new HSuperColumnImpl<SN,N,V>(sc, sNameSerializer, nameSerializer, valueSerializer); columnsMap.put(column.getName(), column); columnsList.add(column); } }
HSuperColumn<String, String, String> sc = r.get(); assertNotNull(sc); assertEquals(2, sc.getSize()); HColumn<String, String> c = sc.get(0); String value = c.getValue(); assertEquals("value1", value); assertEquals("name1", name); HColumn<String, String> c2 = sc.get(1); assertEquals("name2", c2.getName()); assertEquals("value2", c2.getValue()); Iterator<HColumn<String, String>> it = sc.getColumns().iterator(); while(it.hasNext()){ it.next(); it.remove(); assertEquals("The list of columns should be mutable", 0, sc.getColumns().size());
.get(0).getValue()); assertEquals("v022", slice.getColumnByName("testRangeSuperSlicesQuery2") .get(0).getValue()); assertNull(slice.getColumnByName("testRangeSuperSlicesQuery3")); for (HSuperColumn<String, String, String> column : slice .getSuperColumns()) { if (!column.getName().equals("testRangeSuperSlicesQuery1") && !column.getName().equals("testRangeSuperSlicesQuery2")) { fail("A columns with unexpected column name returned: " + column.getName()); if ( column.getSubColumnByName("c001") != null ) assertEquals("v001",column.getSubColumnByName("c001").getValue());
.getColumns().get(0).getValue()); assertNull(slice.getColumnByName("testSuperMultigetSliceQuery3"));
public SuperSliceImpl(List<SuperColumn> tSuperColumns, Serializer<SN> sNameSerializer, Serializer<N> nameSerializer, Serializer<V> valueSerializer) { Assert.noneNull(tSuperColumns, sNameSerializer, nameSerializer, valueSerializer); columnsMap = new HashMap<SN,HSuperColumn<SN,N,V>>(tSuperColumns.size()); columnsList = new ArrayList<HSuperColumn<SN,N,V>>(tSuperColumns.size()); for (SuperColumn sc: tSuperColumns) { HSuperColumn<SN,N,V> column = new HSuperColumnImpl<SN,N,V>(sc, sNameSerializer, nameSerializer, valueSerializer); columnsMap.put(column.getName(), column); columnsList.add(column); } }
.getColumns().get(0).getValue()); assertNotNull(slice); for (HSuperColumn<String, String, String> scolumn : slice.getSuperColumns()) { if (!scolumn.getName().equals("testSuperSliceQuery1") && !scolumn.getName().equals("testSuperSliceQuery2")) { fail("A columns with unexpected column name returned: " + scolumn.getName());
public <SN,N,V> Mutator<K> addSubDelete(K key, String cf, HSuperColumn<SN,N,V> sc, long clock) { Deletion d = new Deletion().setTimestamp(clock); if ( sc.getColumns() != null ) { SlicePredicate pred = new SlicePredicate(); for (HColumn<N, V> col : sc.getColumns()) { pred.addToColumn_names(col.getNameSerializer().toByteBuffer(col.getName())); } d.setPredicate(pred); } d.setSuper_column(sc.getNameByteBuffer()); getPendingMutations().addDeletion(key, Arrays.asList(cf), d); return this; }
List<Object> array = new ArrayList<Object>(); for (HColumn<ByteBuffer, ByteBuffer> hColumn : this.hSuperColumn.getColumns()) { Object memberValue = fromByteBuffer(fieldSchema.getElementType(), hColumn.getValue()); Map<CharSequence, Object> map = new HashMap<CharSequence, Object>(); for (HColumn<ByteBuffer, ByteBuffer> hColumn : this.hSuperColumn.getColumns()) { CharSequence mapKey = CharSequenceSerializer.get().fromByteBuffer(hColumn.getName()); if (mapKey.toString().indexOf(CassandraStore.UNION_COL_SUFIX) < 0) { + CassandraStore.UNION_COL_SUFIX, this.hSuperColumn.getColumns()); Integer unionIndex = getUnionIndex(mapKey.toString(), cc); Schema realSchema = fieldSchema.getValueType().getTypes().get(unionIndex); PersistentBase record = (PersistentBase) value; for (HColumn<ByteBuffer, ByteBuffer> hColumn : this.hSuperColumn.getColumns()) { String memberName = StringSerializer.get().fromByteBuffer(hColumn.getName()); if (memberName.indexOf(CassandraStore.UNION_COL_SUFIX) < 0) { + CassandraStore.UNION_COL_SUFIX, this.hSuperColumn.getColumns().toArray()); Integer unionIndex = getUnionIndex(memberField.name(),hc); cassandraColumn.setUnionType(unionIndex); for (HColumn<ByteBuffer, ByteBuffer> hColumn : this.hSuperColumn.getColumns()) { memberValue = fromByteBuffer(fieldSchema, hColumn.getValue());
public SuperSliceImpl(List<SuperColumn> tSuperColumns, Serializer<SN> sNameSerializer, Serializer<N> nameSerializer, Serializer<V> valueSerializer) { Assert.noneNull(tSuperColumns, sNameSerializer, nameSerializer, valueSerializer); columnsMap = new HashMap<SN,HSuperColumn<SN,N,V>>(tSuperColumns.size()); columnsList = new ArrayList<HSuperColumn<SN,N,V>>(tSuperColumns.size()); for (SuperColumn sc: tSuperColumns) { HSuperColumn<SN,N,V> column = new HSuperColumnImpl<SN,N,V>(sc, sNameSerializer, nameSerializer, valueSerializer); columnsMap.put(column.getName(), column); columnsList.add(column); } }
/** * Get messages within given range (excludes body) * * @param mailbox * @param start * @param count * @return */ public static Map<UUID, Message> getRange(final String mailbox, final UUID start, final int count) { // read message ids from the result Map<UUID, Message> result = new LinkedHashMap<UUID, Message>(); // Create a query SuperSliceQuery<String, UUID, String, byte[]> q = createSuperSliceQuery(CassandraDAOFactory.getKeyspace(), strSe, uuidSe, strSe, byteSe); // set keys, cf, range q.setColumnFamily(CF_METADATA); q.setKey(mailbox); q.setRange(start, null, true, count); // execute QueryResult<SuperSlice<UUID, String, byte[]>> r = q.execute(); List<HSuperColumn<UUID, String, byte[]>> superColumns = r.get().getSuperColumns(); for (HSuperColumn<UUID, String, byte[]> superColumn : superColumns) { result.put(superColumn.getName(), Marshaller.unmarshall(superColumn.getColumns(), false)); } return result; }
public <SN,N,V> Mutator<K> addSubDelete(K key, String cf, HSuperColumn<SN,N,V> sc, long clock) { Deletion d = new Deletion().setTimestamp(clock); if ( sc.getColumns() != null ) { SlicePredicate pred = new SlicePredicate(); for (HColumn<N, V> col : sc.getColumns()) { pred.addToColumn_names(col.getNameSerializer().toByteBuffer(col.getName())); } d.setPredicate(pred); } d.setSuper_column(sc.getNameByteBuffer()); getPendingMutations().addDeletion(key, Arrays.asList(cf), d); return this; }
&& !slice.getColumnByName(messageId).getColumns().isEmpty()) slice.getColumnByName(messageId).getColumns(), includeBody)); } else { logger.debug(
public ByteBuffer getName() { return StringSerializer.get().toByteBuffer(hSuperColumn.getName()); }
public <SN, N, V> Mutator<K> addSubDelete(K key, String cf, HSuperColumn<SN, N, V> sc, long clock) { Deletion d = new Deletion().setTimestamp(clock); if (sc.getColumns() != null) { SlicePredicate pred = new SlicePredicate(); for (HColumn<N, V> col : sc.getColumns()) { pred.addToColumn_names(col.getNameSerializer().toByteBuffer( col.getName())); } d.setPredicate(pred); } d.setSuper_column(sc.getNameByteBuffer()); getPendingMutations().addDeletion(key, Arrays.asList(cf), d); return this; }
private static void checkSuperColumns(Keyspace keyspace, ColumnFamilyModel expectedColumnFamilyModel, RowModel expectedRowModel) throws Error { String expectedColumnFamilyName = expectedColumnFamilyModel.getName(); List<SuperColumnModel> expectedSuperColumns = expectedRowModel.getSuperColumns(); checkNumberOfSuperColumns(keyspace, expectedColumnFamilyName, expectedRowModel, expectedSuperColumns.size()); for (SuperColumnModel expectedSuperColumnModel : expectedSuperColumns) { GenericType expectedSuperColumnName = expectedSuperColumnModel.getName(); SuperColumnQuery<byte[], byte[], byte[], byte[]> createSuperColumnQuery = HFactory.createSuperColumnQuery( keyspace, BytesArraySerializer.get(), BytesArraySerializer.get(), BytesArraySerializer.get(), BytesArraySerializer.get()); createSuperColumnQuery.setColumnFamily(expectedColumnFamilyName); createSuperColumnQuery.setKey(getBytes(expectedRowModel.getKey())); createSuperColumnQuery.setSuperName(getBytes(expectedSuperColumnName)); QueryResult<HSuperColumn<byte[], byte[], byte[]>> supercolumn = createSuperColumnQuery.execute(); List<ColumnModel> expectedColumns = expectedSuperColumnModel.getColumns(); HSuperColumn<byte[], byte[], byte[]> hSuperColumn = supercolumn.get(); checkSuperColumnNameAndKey(expectedSuperColumnName, hSuperColumn); List<HColumn<byte[], byte[]>> columns = hSuperColumn.getColumns(); checkNumberOfColumnsInsideSuperColumn(expectedSuperColumnModel.getName().getValue(), expectedRowModel .getKey().getValue(), expectedColumns.size(), columns.size()); checkColumnsOfSuperColumn(expectedRowModel, expectedSuperColumnModel, expectedColumns, columns); } }