migrate 1.1 schema_columnfamilies.key_alias column to key_aliases

patch by Alex Liu; reviewed by Tyler Hobbs for CASSANDRA-5800
This commit is contained in:
Jonathan Ellis 2013-08-09 15:56:07 -05:00
parent f5d632fa7a
commit fd14512fd2
2 changed files with 40 additions and 0 deletions

View File

@ -1,4 +1,6 @@
1.2.9
* migrate 1.1 schema_columnfamilies.key_alias column to key_aliases
(CASSANDRA-5800)
* add --migrate option to sstableupgrade and sstablescrub (CASSANDRA-5831)
* fix bulk-loading compressed sstables (CASSANDRA-5820)
* (Hadoop) fix quoting in CqlPagingRecordReader and CqlRecordWriter

View File

@ -180,6 +180,44 @@ public class SystemTable
logger.info("Possible old-format hints found. Truncating");
oldHintsCfs.truncate();
}
migrateKeyAliases();
}
/**
* 1.1 used a key_alias column; 1.2 changed that to key_aliases as part of CQL3
*/
private static void migrateKeyAliases()
{
for (UntypedResultSet.Row row : processInternal("SELECT keyspace_name, columnfamily_name, key_aliases, key_alias FROM system.schema_columnfamilies"))
{
String key_alias = null;
String key_aliases = null;
try
{
key_alias = row.getString("key_alias");
}
catch (NullPointerException e)
{
// column value is null
}
try
{
key_aliases = row.getString("key_aliases");
}
catch (NullPointerException e)
{
// column value is null
}
if (key_alias != null && key_aliases == null)
{
String keyspace = row.getString("keyspace_name");
String columnfamily = row.getString("columnfamily_name");
processInternal(String.format("UPDATE system.schema_columnfamilies set key_aliases='[\"%s\"]' , key_alias = null where keyspace_name='%s' and columnfamily_name='%s'",
key_alias, keyspace, columnfamily));
}
}
}
public static void saveTruncationRecord(ColumnFamilyStore cfs, long truncatedAt, ReplayPosition position)