assertThat(tm.getPartitionKey().size()).isEqualTo(1); assertThat(tm.getPartitionKey().get(0).getName()).isEqualTo("address"); assertThat(tm.getClusteringColumns().size()).isEqualTo(1); assertThat(tm.getClusteringColumns().get(0).getName()).isEqualTo("port"); assertThat(tm.getIndexes().size()).isEqualTo(0); assertThat(tm.getViews().size()).isEqualTo(0); assertThat(tm.getClusteringColumns().size()).isEqualTo(1); assertThat(tm.getClusteringOrder().size()).isEqualTo(1); assertThat(tm.getId()).isEqualTo(new UUID(0L, 0L));
@Override public Optional<Key> getClusteringKey() { return getKey(metadata.getClusteringColumns()); }
private void matchWhereColsWithClusteringKeys(TableMetadata tableMetadata, Map<String, String> whereCols) { for (ColumnMetadata colMD : tableMetadata.getClusteringColumns()) { String operator = ""; for (Relation relation : where) { if (relation.getIdentifiers().contains(colMD.getName())) { operator = relation.getOperator(); } } if (whereCols.keySet().contains(colMD.getName()) && "=".equals(operator)) { whereCols.remove(colMD.getName()); } } }
CqlRecordWriter(Configuration conf) { this.conf = conf; this.queueSize = conf.getInt(CqlOutputFormat.QUEUE_SIZE, 32 * FBUtilities.getAvailableProcessors()); batchThreshold = conf.getLong(CqlOutputFormat.BATCH_THRESHOLD, 32); this.clients = new HashMap<>(); String keyspace = ConfigHelper.getOutputKeyspace(conf); try (Cluster cluster = CqlConfigHelper.getOutputCluster(ConfigHelper.getOutputInitialAddress(conf), conf)) { Metadata metadata = cluster.getMetadata(); ringCache = new NativeRingCache(conf, metadata); TableMetadata tableMetadata = metadata.getKeyspace(Metadata.quote(keyspace)).getTable(ConfigHelper.getOutputColumnFamily(conf)); clusterColumns = tableMetadata.getClusteringColumns(); partitionKeyColumns = tableMetadata.getPartitionKey(); String cqlQuery = CqlConfigHelper.getOutputCql(conf).trim(); if (cqlQuery.toLowerCase(Locale.ENGLISH).startsWith("insert")) throw new UnsupportedOperationException("INSERT with CqlRecordWriter is not supported, please use UPDATE/DELETE statement"); cql = appendKeyWhereClauses(cqlQuery); } catch (Exception e) { throw new RuntimeException(e); } }
CqlRecordWriter(Configuration conf) { this.conf = conf; this.queueSize = conf.getInt(CqlOutputFormat.QUEUE_SIZE, 32 * FBUtilities.getAvailableProcessors()); batchThreshold = conf.getLong(CqlOutputFormat.BATCH_THRESHOLD, 32); this.clients = new HashMap<>(); String keyspace = ConfigHelper.getOutputKeyspace(conf); try (Cluster cluster = CqlConfigHelper.getOutputCluster(ConfigHelper.getOutputInitialAddress(conf), conf)) { Metadata metadata = cluster.getMetadata(); ringCache = new NativeRingCache(conf, metadata); TableMetadata tableMetadata = metadata.getKeyspace(Metadata.quote(keyspace)).getTable(ConfigHelper.getOutputColumnFamily(conf)); clusterColumns = tableMetadata.getClusteringColumns(); partitionKeyColumns = tableMetadata.getPartitionKey(); String cqlQuery = CqlConfigHelper.getOutputCql(conf).trim(); if (cqlQuery.toLowerCase(Locale.ENGLISH).startsWith("insert")) throw new UnsupportedOperationException("INSERT with CqlRecordWriter is not supported, please use UPDATE/DELETE statement"); cql = appendKeyWhereClauses(cqlQuery); } catch (Exception e) { throw new RuntimeException(e); } }
CqlRecordWriter(Configuration conf) { this.conf = conf; this.queueSize = conf.getInt(CqlOutputFormat.QUEUE_SIZE, 32 * FBUtilities.getAvailableProcessors()); batchThreshold = conf.getLong(CqlOutputFormat.BATCH_THRESHOLD, 32); this.clients = new HashMap<>(); String keyspace = ConfigHelper.getOutputKeyspace(conf); try (Cluster cluster = CqlConfigHelper.getOutputCluster(ConfigHelper.getOutputInitialAddress(conf), conf)) { Metadata metadata = cluster.getMetadata(); ringCache = new NativeRingCache(conf, metadata); TableMetadata tableMetadata = metadata.getKeyspace(Metadata.quote(keyspace)).getTable(ConfigHelper.getOutputColumnFamily(conf)); clusterColumns = tableMetadata.getClusteringColumns(); partitionKeyColumns = tableMetadata.getPartitionKey(); String cqlQuery = CqlConfigHelper.getOutputCql(conf).trim(); if (cqlQuery.toLowerCase(Locale.ENGLISH).startsWith("insert")) throw new UnsupportedOperationException("INSERT with CqlRecordWriter is not supported, please use UPDATE/DELETE statement"); cql = appendKeyWhereClauses(cqlQuery); } catch (Exception e) { throw new RuntimeException(e); } }
List<ColumnMetadata> clusteringKeys = tableMetadata.getClusteringColumns(); List<ColumnMetadata> allColumns = tableMetadata.getColumns();
@Test public void getClusteringKey_RequiredValuesNotGiven_ShouldReturnEmpty() { // Arrange ResultImpl spy = spy(new ResultImpl(new ArrayList<>(), tableMetadata)); when(columnMetadata.getName()).thenReturn("another"); when(tableMetadata.getClusteringColumns()) .thenReturn(Collections.singletonList(columnMetadata)); doReturn(definitions.get()).when(spy).getColumnDefinitions(row); spy.interpret(row); // Act Optional<Key> key = spy.getClusteringKey(); // Assert assertThat(key.isPresent()).isFalse(); }
@Test public void getClusteringKey_RequiredValuesGiven_ShouldReturnClusteringKey() { // Arrange ResultImpl spy = spy(new ResultImpl(new ArrayList<>(), tableMetadata)); when(columnMetadata.getName()).thenReturn(ANY_COLUMN_NAME_2); when(tableMetadata.getClusteringColumns()) .thenReturn(Collections.singletonList(columnMetadata)); doReturn(definitions.get()).when(spy).getColumnDefinitions(row); spy.interpret(row); // Act Optional<Key> key = spy.getClusteringKey(); // Assert assertThat(key.get().get().size()).isEqualTo(1); assertThat(key.get().get().get(0)) .isEqualTo(new IntValue(ANY_COLUMN_NAME_2, Integer.MAX_VALUE)); }
List<ColumnMetadata> clusteringKeys = tableMetadata.getClusteringColumns();
private void initColumnDefinitionMap(TableMetadata tableMetadata) { columnDefinitionMap = new HashMap<>(); List<ColumnMetadata> partitionKeys = tableMetadata.getPartitionKey(); List<ColumnMetadata> clusteringKeys = tableMetadata.getClusteringColumns(); List<ColumnMetadata> allColumns = tableMetadata.getColumns(); for (ColumnMetadata key : partitionKeys) { Cell metadata = Cell.create(key.getName(), key.getType(), Boolean.TRUE, Boolean.FALSE); columnDefinitionMap.put(key.getName(), metadata); } for (ColumnMetadata key : clusteringKeys) { Cell metadata = Cell.create(key.getName(), key.getType(), Boolean.FALSE, Boolean.TRUE); columnDefinitionMap.put(key.getName(), metadata); } for (ColumnMetadata key : allColumns) { Cell metadata = Cell.create(key.getName(), key.getType(), Boolean.FALSE, Boolean.FALSE); if (!columnDefinitionMap.containsKey(key.getName())) { columnDefinitionMap.put(key.getName(), metadata); } } columnDefinitionMap = Collections.unmodifiableMap(columnDefinitionMap); }
for (ColumnMetadata colMeta : tableMeta.getClusteringColumns()) { TableMetadata.Order order = clusterOrderIter.next();
if (tableMetadata.getClusteringColumns().contains(columnMetadata)) { continue;
assertThat(tm.getPartitionKey().size()).isEqualTo(1); assertThat(tm.getPartitionKey().get(0).getName()).isEqualTo("keyspace_name"); assertThat(tm.getClusteringColumns().size()).isEqualTo(2); assertThat(tm.getClusteringColumns().get(0).getName()).isEqualTo("table_name"); assertThat(tm.getClusteringColumns().get(1).getName()).isEqualTo("task_id"); assertThat(tm.getIndexes().size()).isEqualTo(0); assertThat(tm.getViews().size()).isEqualTo(0); assertThat(tm.getClusteringColumns().size()).isEqualTo(2); assertThat(tm.getClusteringOrder().size()).isEqualTo(2); assertThat(tm.getId()).isEqualTo(new UUID(0L, 0L));
List<com.datastax.driver.core.ColumnMetadata> clusterColumns = cassandraTableMetadata.getClusteringColumns(); for (com.datastax.driver.core.ColumnMetadata cassandraClusterKey : clusterColumns) { ColumnName columnName = new ColumnName(cassandraClusterKey.getTable().getKeyspace().getName(),
checkPrimaryKeyColumns(persistenceManagerImpl.protocolVersion, updateStatus, metadata.getClusteringColumns(), clusteringKeyColumns, "clustering");