~akiban-technologies/akiban-server/trunk

« back to all changes in this revision

Viewing changes to src/main/java/com/akiban/server/store/AbstractSchemaManager.java

merge nwilliams: Change SERIAL back to BY DEFAULT, fix div by zero on maximum range cycling sequence and underlying support for ALTER SEQUENCE.

https://code.launchpad.net/~nwilliams/akiban-server/sequence-fix-and-tweak/+merge/177031

Show diffs side-by-side

added added

removed removed

Lines of Context:
362
362
    }
363
363
 
364
364
    @Override
 
365
    public void alterSequence(Session session, TableName sequenceName, Sequence newDefinition) {
 
366
        AkibanInformationSchema oldAIS = getAis(session);
 
367
        Sequence oldSequence = oldAIS.getSequence(sequenceName);
 
368
        if(oldSequence == null) {
 
369
            throw new NoSuchSequenceException(sequenceName);
 
370
        }
 
371
 
 
372
        if(!sequenceName.equals(newDefinition.getSequenceName())) {
 
373
            throw new UnsupportedOperationException("Renaming Sequence");
 
374
        }
 
375
 
 
376
        AkibanInformationSchema newAIS = AISCloner.clone(oldAIS);
 
377
        newAIS.removeSequence(sequenceName);
 
378
        Sequence newSequence = Sequence.create(newAIS, newDefinition);
 
379
        newSequence.setTreeName(getNameGenerator().generateSequenceTreeName(newDefinition));
 
380
 
 
381
        // newAIS may have mixed references to sequenceName. Re-clone to resolve.
 
382
        newAIS = AISCloner.clone(newAIS);
 
383
 
 
384
        saveAISChangeWithRowDefs(session, newAIS, Collections.singleton(sequenceName.getSchemaName()));
 
385
    }
 
386
 
 
387
    @Override
365
388
    public TableDefinition getTableDefinition(Session session, TableName tableName) {
366
389
        final Table table = getAis(session).getTable(tableName);
367
390
        if(table == null) {