## org.apache.cassandra.config
Class Schema

    java.lang.Object
      org.apache.cassandra.config.Schema

    public class Schema

extends java.lang.Object

Field Summary
`static java.util.UUID` `emptyVersion`
`static Schema` `instance`
`static int` `NAME_LENGTH` longest permissible KS or CF name.

Constructor Summary
`Schema()` Initialize empty schema object

Method Summary
`void` `addSystemTable(KSMetaData systemTable)` Add a new system table
`void` `clear()` Clear all KS/CF metadata and reset version.
`void` `clearTableDefinition(KSMetaData ksm)` Remove table definition from system
`void` `fixCFMaxId()` This gets called after initialization to make sure that id generation happens properly.
`Pair<java.lang.String,java.lang.String>` `getCF(java.lang.Integer cfId)`
`CFMetaData` `getCFMetaData(Descriptor descriptor)`
`CFMetaData` `getCFMetaData(java.lang.Integer cfId)` Get ColumnFamily metadata by its identifier
`CFMetaData` `getCFMetaData(java.lang.String tableName, java.lang.String cfName)` Given a table name & column family name, get the column family meta data.
`ColumnFamilyType` `getColumnFamilyType(java.lang.String ksName, java.lang.String cfName)` Get type of the ColumnFamily but it's keyspace/name
`AbstractType<?>` `getComparator(java.lang.String ksName, java.lang.String cfName)` Get column comparator for ColumnFamily but it's keyspace/name
`java.lang.Integer` `getId(java.lang.String ksName, java.lang.String cfName)` Lookup keyspace/ColumnFamily identifier
`KSMetaData` `getKSMetaData(java.lang.String table)` Get metadata about table by its name
`java.util.List<java.lang.String>` `getNonSystemTables()`
`AbstractType<?>` `getSubComparator(java.lang.String ksName, java.lang.String cfName)` Get subComparator of the ColumnFamily
`KSMetaData` `getTableDefinition(java.lang.String table)` Get metadata about table by its name
`java.util.Collection<KSMetaData>` `getTableDefinitions()`
`Table` `getTableInstance(java.lang.String tableName)` Get table instance by name
`java.util.Map<java.lang.String,CFMetaData>` `getTableMetaData(java.lang.String tableName)` Get metadata about table inner ColumnFamilies
`java.util.Set<java.lang.String>` `getTables()`
`AbstractType<?>` `getValueValidator(java.lang.String ksName, java.lang.String cfName, java.nio.ByteBuffer column)` Get value validator for specific column
`java.util.UUID` `getVersion()`
`void` `load(CFMetaData cfm)` Load individual ColumnFamily Definition to the schema (to make ColumnFamily lookup faster)
`Schema` `load(java.util.Collection<KSMetaData> tableDefs)` Load up non-system tables
`Schema` `load(KSMetaData keyspaceDef)` Load specific keyspace into Schema
`int` `nextCFId()`
`void` `purge(CFMetaData cfm)` Used for ColumnFamily data eviction out from the schema
`Table` `removeTableInstance(java.lang.String tableName)` Remove table from schema
`void` `setTableDefinition(KSMetaData ksm)` Update (or insert) new table definition
`void` `storeTableInstance(Table table)` Store given Table instance to the schema
`void` `updateVersion()` Read schema from system table and calculate MD5 digest of every row, resulting digest will be converted into UUID which would act as content-based version of the schema.
`void` `updateVersionAndAnnounce()`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### instance

    public static final Schema instance

### NAME_LENGTH

    public static final int NAME_LENGTH

  longest permissible KS or CF name. Our main concern is that filename not be more than 255 characters; the filename will contain both the KS and CF names. Since non-schema-name components only take up ~64 characters, we could allow longer names than this, but on Windows, the entire path should be not greater than 255 characters, so a lower limit here helps avoid problems. See CASSANDRA-4110.

  See Also:
    Constant Field Values

### emptyVersion

    public static final java.util.UUID emptyVersion

Constructor Detail

### Schema

    public Schema()

  Initialize empty schema object

Method Detail

### load

    public Schema load(java.util.Collection<KSMetaData> tableDefs)

  Load up non-system tables

  Parameters:
    `tableDefs` - The non-system table definitions
  Returns:
    self to support chaining calls

### load

    public Schema load(KSMetaData keyspaceDef)

  Load specific keyspace into Schema

  Parameters:
    `keyspaceDef` - The keyspace to load up
  Returns:
    self to support chaining calls

### getTableInstance

    public Table getTableInstance(java.lang.String tableName)

  Get table instance by name

  Parameters:
    `tableName` - The name of the table
  Returns:
    Table object or null if table was not found

### storeTableInstance

    public void storeTableInstance(Table table)

  Store given Table instance to the schema

  Parameters:
    `table` - The Table instance to store
  Throws:
    `java.lang.IllegalArgumentException` - if Table is already stored

### removeTableInstance

    public Table removeTableInstance(java.lang.String tableName)

  Remove table from schema

  Parameters:
    `tableName` - The name of the table to remove
  Returns:
    removed table instance or null if it wasn't found

### clearTableDefinition

    public void clearTableDefinition(KSMetaData ksm)

  Remove table definition from system

  Parameters:
    `ksm` - The table definition to remove

### getCFMetaData

    public CFMetaData getCFMetaData(java.lang.String tableName,
                                    java.lang.String cfName)

  Given a table name & column family name, get the column family meta data. If the table name or column family name is not valid this function returns null.

  Parameters:
    `tableName` - The table name
    `cfName` - The ColumnFamily name
  Returns:
    ColumnFamily Metadata object or null if it wasn't found

### getCFMetaData

    public CFMetaData getCFMetaData(java.lang.Integer cfId)

  Get ColumnFamily metadata by its identifier

  Parameters:
    `cfId` - The ColumnFamily identifier
  Returns:
    metadata about ColumnFamily

### getCFMetaData

    public CFMetaData getCFMetaData(Descriptor descriptor)

### getColumnFamilyType

    public ColumnFamilyType getColumnFamilyType(java.lang.String ksName,
                                                java.lang.String cfName)

  Get type of the ColumnFamily but it's keyspace/name

  Parameters:
    `ksName` - The keyspace name
    `cfName` - The ColumnFamily name
  Returns:
    The type of the ColumnFamily

### getComparator

    public AbstractType<?> getComparator(java.lang.String ksName,
                                         java.lang.String cfName)

  Get column comparator for ColumnFamily but it's keyspace/name

  Parameters:
    `ksName` - The keyspace name
    `cfName` - The ColumnFamily name
  Returns:
    The comparator of the ColumnFamily

### getSubComparator

    public AbstractType<?> getSubComparator(java.lang.String ksName,
                                            java.lang.String cfName)

  Get subComparator of the ColumnFamily

  Parameters:
    `ksName` - The keyspace name
    `cfName` - The ColumnFamily name
  Returns:
    The subComparator of the ColumnFamily

### getValueValidator

    public AbstractType<?> getValueValidator(java.lang.String ksName,
                                             java.lang.String cfName,
                                             java.nio.ByteBuffer column)

  Get value validator for specific column

  Parameters:
    `ksName` - The keyspace name
    `cfName` - The ColumnFamily name
    `column` - The name of the column
  Returns:
    value validator specific to the column or default (per-cf) one

### getKSMetaData

    public KSMetaData getKSMetaData(java.lang.String table)

  Get metadata about table by its name

  Parameters:
    `table` - The name of the table
  Returns:
    The table metadata or null if it wasn't found

### getNonSystemTables

    public java.util.List<java.lang.String> getNonSystemTables()

  Returns:
    collection of the non-system tables

### getTableDefinition

    public KSMetaData getTableDefinition(java.lang.String table)

  Get metadata about table by its name

  Parameters:
    `table` - The name of the table
  Returns:
    The table metadata or null if it wasn't found

### getTableMetaData

    public java.util.Map<java.lang.String,CFMetaData> getTableMetaData(java.lang.String tableName)

  Get metadata about table inner ColumnFamilies

  Parameters:
    `tableName` - The name of the table
  Returns:
    metadata about ColumnFamilies the belong to the given table

### getTables

    public java.util.Set<java.lang.String> getTables()

  Returns:
    collection of the all table names registered in the system (system and non-system)

### getTableDefinitions

    public java.util.Collection<KSMetaData> getTableDefinitions()

  Returns:
    collection of the metadata about all tables registered in the system (system and non-system)

### setTableDefinition

    public void setTableDefinition(KSMetaData ksm)

  Update (or insert) new table definition

  Parameters:
    `ksm` - The metadata about table

### addSystemTable

    public void addSystemTable(KSMetaData systemTable)

  Add a new system table

  Parameters:
    `systemTable` - The metadata describing new system table

### getCF

    public Pair<java.lang.String,java.lang.String> getCF(java.lang.Integer cfId)

  Parameters:
    `cfId` - The identifier of the ColumnFamily to lookup
  Returns:
    The (ksname,cfname) pair for the given id, or null if it has been dropped.

### getId

    public java.lang.Integer getId(java.lang.String ksName,
                                   java.lang.String cfName)

  Lookup keyspace/ColumnFamily identifier

  Parameters:
    `ksName` - The keyspace name
    `cfName` - The ColumnFamily name
  Returns:
    The id for the given (ksname,cfname) pair, or null if it has been dropped.

### load

    public void load(CFMetaData cfm)

  Load individual ColumnFamily Definition to the schema (to make ColumnFamily lookup faster)

  Parameters:
    `cfm` - The ColumnFamily definition to load
  Throws:
    `ConfigurationException` - if ColumnFamily was already loaded

### purge

    public void purge(CFMetaData cfm)

  Used for ColumnFamily data eviction out from the schema

  Parameters:
    `cfm` - The ColumnFamily Definition to evict

### fixCFMaxId

    public void fixCFMaxId()

  This gets called after initialization to make sure that id generation happens properly.

### nextCFId

    public int nextCFId()

  Returns:
    identifier for the new ColumnFamily (called primarily by CFMetaData constructor)

### getVersion

    public java.util.UUID getVersion()

  Returns:
    current schema version

### updateVersion

    public void updateVersion()

  Read schema from system table and calculate MD5 digest of every row, resulting digest will be converted into UUID which would act as content-based version of the schema.

### updateVersionAndAnnounce

    public void updateVersionAndAnnounce()

### clear

    public void clear()

  Clear all KS/CF metadata and reset version.

Copyright © 2013 The Apache Software Foundation