private static Collection<Keyspace> readSchema() { String query = format("SELECT keyspace_name FROM %s.%s", SchemaConstants.SYSTEM_KEYSPACE_NAME, SystemKeyspace.LEGACY_KEYSPACES); Collection<String> keyspaceNames = new ArrayList<>(); query(query).forEach(row -> keyspaceNames.add(row.getString("keyspace_name"))); keyspaceNames.removeAll(SchemaConstants.LOCAL_SYSTEM_KEYSPACE_NAMES); Collection<Keyspace> keyspaces = new ArrayList<>(); keyspaceNames.forEach(name -> keyspaces.add(readKeyspace(name))); return keyspaces; }
private static Collection<Type> readTypes(String keyspaceName) { String query = format("SELECT type_name FROM %s.%s WHERE keyspace_name = ?", SchemaConstants.SYSTEM_KEYSPACE_NAME, SystemKeyspace.LEGACY_USERTYPES); Collection<String> typeNames = new ArrayList<>(); query(query, keyspaceName).forEach(row -> typeNames.add(row.getString("type_name"))); Collection<Type> types = new ArrayList<>(); typeNames.forEach(name -> types.add(readType(keyspaceName, name))); return types; }
private static Collection<Keyspace> readSchema() { String query = format("SELECT keyspace_name FROM %s.%s", SchemaConstants.SYSTEM_KEYSPACE_NAME, SystemKeyspace.LEGACY_KEYSPACES); Collection<String> keyspaceNames = new ArrayList<>(); query(query).forEach(row -> keyspaceNames.add(row.getString("keyspace_name"))); keyspaceNames.removeAll(SchemaConstants.LOCAL_SYSTEM_KEYSPACE_NAMES); Collection<Keyspace> keyspaces = new ArrayList<>(); keyspaceNames.forEach(name -> keyspaces.add(readKeyspace(name))); return keyspaces; }
private static Collection<Type> readTypes(String keyspaceName) { String query = format("SELECT type_name FROM %s.%s WHERE keyspace_name = ?", SchemaConstants.SYSTEM_KEYSPACE_NAME, SystemKeyspace.LEGACY_USERTYPES); Collection<String> typeNames = new ArrayList<>(); query(query, keyspaceName).forEach(row -> typeNames.add(row.getString("type_name"))); Collection<Type> types = new ArrayList<>(); typeNames.forEach(name -> types.add(readType(keyspaceName, name))); return types; }
private static Collection<Table> readTables(String keyspaceName) { String query = format("SELECT columnfamily_name FROM %s.%s WHERE keyspace_name = ?", SchemaConstants.SYSTEM_KEYSPACE_NAME, SystemKeyspace.LEGACY_COLUMNFAMILIES); Collection<String> tableNames = new ArrayList<>(); query(query, keyspaceName).forEach(row -> tableNames.add(row.getString("columnfamily_name"))); Collection<Table> tables = new ArrayList<>(); tableNames.forEach(name -> tables.add(readTable(keyspaceName, name))); return tables; }
private static Collection<Table> readTables(String keyspaceName) { String query = format("SELECT columnfamily_name FROM %s.%s WHERE keyspace_name = ?", SchemaConstants.SYSTEM_KEYSPACE_NAME, SystemKeyspace.LEGACY_COLUMNFAMILIES); Collection<String> tableNames = new ArrayList<>(); query(query, keyspaceName).forEach(row -> tableNames.add(row.getString("columnfamily_name"))); Collection<Table> tables = new ArrayList<>(); tableNames.forEach(name -> tables.add(readTable(keyspaceName, name))); return tables; }
private static List<ColumnDefinition> fetchColumns(String keyspace, String table, Types types) { String query = format("SELECT * FROM %s.%s WHERE keyspace_name = ? AND table_name = ?", SchemaConstants.SCHEMA_KEYSPACE_NAME, COLUMNS); UntypedResultSet columnRows = query(query, keyspace, table); if (columnRows.isEmpty()) throw new MissingColumns("Columns not found in schema table for " + keyspace + "." + table); List<ColumnDefinition> columns = new ArrayList<>(); columnRows.forEach(row -> columns.add(createColumnFromRow(row, types))); if (columns.stream().noneMatch(ColumnDefinition::isPartitionKey)) throw new MissingColumns("No partition key columns found in schema table for " + keyspace + "." + table); return columns; }
private static Collection<Function> readFunctions(String keyspaceName) { String query = format("SELECT function_name, signature FROM %s.%s WHERE keyspace_name = ?", SchemaConstants.SYSTEM_KEYSPACE_NAME, SystemKeyspace.LEGACY_FUNCTIONS); HashMultimap<String, List<String>> functionSignatures = HashMultimap.create(); query(query, keyspaceName).forEach(row -> functionSignatures.put(row.getString("function_name"), row.getList("signature", UTF8Type.instance))); Collection<Function> functions = new ArrayList<>(); functionSignatures.entries().forEach(pair -> functions.add(readFunction(keyspaceName, pair.getKey(), pair.getValue()))); return functions; }
private static Collection<Aggregate> readAggregates(Functions functions, String keyspaceName) { String query = format("SELECT aggregate_name, signature FROM %s.%s WHERE keyspace_name = ?", SchemaConstants.SYSTEM_KEYSPACE_NAME, SystemKeyspace.LEGACY_AGGREGATES); HashMultimap<String, List<String>> aggregateSignatures = HashMultimap.create(); query(query, keyspaceName).forEach(row -> aggregateSignatures.put(row.getString("aggregate_name"), row.getList("signature", UTF8Type.instance))); Collection<Aggregate> aggregates = new ArrayList<>(); aggregateSignatures.entries().forEach(pair -> aggregates.add(readAggregate(functions, keyspaceName, pair.getKey(), pair.getValue()))); return aggregates; }
private static Collection<Function> readFunctions(String keyspaceName) { String query = format("SELECT function_name, signature FROM %s.%s WHERE keyspace_name = ?", SchemaConstants.SYSTEM_KEYSPACE_NAME, SystemKeyspace.LEGACY_FUNCTIONS); HashMultimap<String, List<String>> functionSignatures = HashMultimap.create(); query(query, keyspaceName).forEach(row -> functionSignatures.put(row.getString("function_name"), row.getList("signature", UTF8Type.instance))); Collection<Function> functions = new ArrayList<>(); functionSignatures.entries().forEach(pair -> functions.add(readFunction(keyspaceName, pair.getKey(), pair.getValue()))); return functions; }
private static List<ColumnDefinition> fetchColumns(String keyspace, String table, Types types) { String query = format("SELECT * FROM %s.%s WHERE keyspace_name = ? AND table_name = ?", SchemaConstants.SCHEMA_KEYSPACE_NAME, COLUMNS); UntypedResultSet columnRows = query(query, keyspace, table); if (columnRows.isEmpty()) throw new MissingColumns("Columns not found in schema table for " + keyspace + "." + table); List<ColumnDefinition> columns = new ArrayList<>(); columnRows.forEach(row -> columns.add(createColumnFromRow(row, types))); return columns; }
private static List<ColumnDefinition> fetchColumns(String keyspace, String table, Types types) { String query = format("SELECT * FROM %s.%s WHERE keyspace_name = ? AND table_name = ?", SchemaConstants.SCHEMA_KEYSPACE_NAME, COLUMNS); UntypedResultSet columnRows = query(query, keyspace, table); if (columnRows.isEmpty()) throw new MissingColumns("Columns not found in schema table for " + keyspace + "." + table); List<ColumnDefinition> columns = new ArrayList<>(); columnRows.forEach(row -> columns.add(createColumnFromRow(row, types))); if (columns.stream().noneMatch(ColumnDefinition::isPartitionKey)) throw new MissingColumns("No partition key columns found in schema table for " + keyspace + "." + table); return columns; }
private void migrateLegacyHints() { ByteBuffer buffer = ByteBuffer.allocateDirect(256 * 1024); String query = String.format("SELECT DISTINCT target_id FROM %s.%s", SchemaConstants.SYSTEM_KEYSPACE_NAME, SystemKeyspace.LEGACY_HINTS); //noinspection ConstantConditions QueryProcessor.executeInternal(query).forEach(row -> migrateLegacyHints(row.getUUID("target_id"), buffer)); FileUtils.clean(buffer); }
private void migrateLegacyHints() { ByteBuffer buffer = ByteBuffer.allocateDirect(256 * 1024); String query = String.format("SELECT DISTINCT target_id FROM %s.%s", SchemaConstants.SYSTEM_KEYSPACE_NAME, SystemKeyspace.LEGACY_HINTS); //noinspection ConstantConditions QueryProcessor.executeInternal(query).forEach(row -> migrateLegacyHints(row.getUUID("target_id"), buffer)); FileUtils.clean(buffer); }
private static Collection<Aggregate> readAggregates(Functions functions, String keyspaceName) { String query = format("SELECT aggregate_name, signature FROM %s.%s WHERE keyspace_name = ?", SchemaConstants.SYSTEM_KEYSPACE_NAME, SystemKeyspace.LEGACY_AGGREGATES); HashMultimap<String, List<String>> aggregateSignatures = HashMultimap.create(); query(query, keyspaceName).forEach(row -> aggregateSignatures.put(row.getString("aggregate_name"), row.getList("signature", UTF8Type.instance))); Collection<Aggregate> aggregates = new ArrayList<>(); aggregateSignatures.entries().forEach(pair -> aggregates.add(readAggregate(functions, keyspaceName, pair.getKey(), pair.getValue()))); return aggregates; }
private static Indexes fetchIndexes(String keyspace, String table) { String query = String.format("SELECT * FROM %s.%s WHERE keyspace_name = ? AND table_name = ?", SchemaConstants.SCHEMA_KEYSPACE_NAME, INDEXES); Indexes.Builder indexes = org.apache.cassandra.schema.Indexes.builder(); query(query, keyspace, table).forEach(row -> indexes.add(createIndexMetadataFromRow(row))); return indexes.build(); }
private static Triggers fetchTriggers(String keyspace, String table) { String query = String.format("SELECT * FROM %s.%s WHERE keyspace_name = ? AND table_name = ?", SchemaConstants.SCHEMA_KEYSPACE_NAME, TRIGGERS); Triggers.Builder triggers = org.apache.cassandra.schema.Triggers.builder(); query(query, keyspace, table).forEach(row -> triggers.add(createTriggerFromRow(row))); return triggers.build(); }
private static Indexes fetchIndexes(String keyspace, String table) { String query = String.format("SELECT * FROM %s.%s WHERE keyspace_name = ? AND table_name = ?", SchemaConstants.SCHEMA_KEYSPACE_NAME, INDEXES); Indexes.Builder indexes = org.apache.cassandra.schema.Indexes.builder(); query(query, keyspace, table).forEach(row -> indexes.add(createIndexMetadataFromRow(row))); return indexes.build(); }
private static Triggers fetchTriggers(String keyspace, String table) { String query = String.format("SELECT * FROM %s.%s WHERE keyspace_name = ? AND table_name = ?", SchemaConstants.SCHEMA_KEYSPACE_NAME, TRIGGERS); Triggers.Builder triggers = org.apache.cassandra.schema.Triggers.builder(); query(query, keyspace, table).forEach(row -> triggers.add(createTriggerFromRow(row))); return triggers.build(); }
private static Triggers createTriggersFromTriggerRows(UntypedResultSet rows) { Triggers.Builder triggers = org.apache.cassandra.schema.Triggers.builder(); rows.forEach(row -> triggers.add(createTriggerFromTriggerRow(row))); return triggers.build(); }