public DropColumnFamily(String tableName, String cfName) throws ConfigurationException, IOException { super( UUIDGen.makeType1UUIDFromHost(FBUtilities.getLocalAddress()), DatabaseDescriptor.getDefsVersion()); this.tableName = tableName; this.cfName = cfName; KSMetaData ksm = DatabaseDescriptor.getTableDefinition(tableName); if (ksm == null) throw new ConfigurationException("Keyspace does not already exist."); else if (!ksm.cfMetaData().containsKey(cfName)) throw new ConfigurationException("CF is not defined in that keyspace."); KSMetaData newKsm = makeNewKeyspaceDefinition(ksm); rm = Migration.makeDefinitionMutation(newKsm, null, newVersion); }
public AddColumnFamily(CFMetaData cfm) throws ConfigurationException, IOException { super( UUIDGen.makeType1UUIDFromHost(GossipUtilities.getLocalAddress()), NodeDescriptor.getDefsVersion()); this.cfm = cfm; KSMetaData ksm = NodeDescriptor.getTableDefinition(cfm.ksName); if (ksm == null) throw new ConfigurationException("No such keyspace: " + cfm.ksName); else if (ksm.cfMetaData().containsKey(cfm.cfName)) throw new ConfigurationException( String.format("%s already exists in keyspace %s", cfm.cfName, cfm.ksName)); else if (!Migration.isLegalName(cfm.cfName)) throw new ConfigurationException("Invalid column family name: " + cfm.cfName); for (Map.Entry<ByteBuffer, ColumnDefinition> entry : cfm.getColumn_metadata().entrySet()) { String indexName = entry.getValue().getIndexName(); if (indexName != null && !Migration.isLegalName(indexName)) throw new ConfigurationException("Invalid index name: " + indexName); } // clone ksm but include the new cf def. KSMetaData newKsm = makeNewKeyspaceDefinition(ksm); rm = Migration.makeDefinitionMutation(newKsm, null, newVersion); }