Package com.foundationdb.ais.model

Examples of com.foundationdb.ais.model.AkibanInformationSchema


        return isActive;
    }

    @Override
    public Collection<OnlineChangeState> getOnlineChangeStates(Session session) {
        AkibanInformationSchema ais = getAis(session);
        OnlineCache onlineCache = getOnlineCache(session, ais);
        List<OnlineChangeState> states = new ArrayList<>();
        for(Entry<Long, AkibanInformationSchema> entry : onlineCache.onlineToAIS.entrySet()) {
            AkibanInformationSchema onlineAIS = entry.getValue();
            Collection<ChangeSet> changeSets = onlineCache.onlineToChangeSets.get(entry.getKey());
            states.add(new ReadOnlyOnlineChangeState(onlineAIS, changeSets));
        }
        return states;
    }
View Full Code Here


    }

    @Override
    public AkibanInformationSchema getOnlineAIS(Session session) {
        OnlineSession onlineSession = getOnlineSession(session, true);
        AkibanInformationSchema sessionAIS = getSessionAIS(session);
        OnlineCache cache = getOnlineCache(session, sessionAIS);
        AkibanInformationSchema onlineAIS = cache.onlineToAIS.get(onlineSession.id);
        return (onlineAIS != null) ? onlineAIS : sessionAIS;
    }
View Full Code Here

    }

    @Override
    public void finishOnline(Session session) {
        OnlineSession onlineSession = getOnlineSession(session, true);
        AkibanInformationSchema ais = getOnlineAIS(session);
        AkibanInformationSchema newAIS = aisCloner.clone(ais);
        bumpTableVersions(session, newAIS, onlineSession.tableIDs);
        storedAISChange(session, newAIS, onlineSession.schemaNames);
        clearOnlineState(session, onlineSession);
        txnService.addCallback(session, CallbackType.COMMIT, REMOVE_ONLINE_SESSION_KEY_CALLBACK);
    }
View Full Code Here

    @Override
    public void renameTable(Session session, TableName currentName, TableName newName) {
        checkTableName(session, currentName, true, false);
        checkTableName(session, newName, false, false);

        final AkibanInformationSchema newAIS = aisCloner.clone(getAISForChange(session));
        final Table newTable = newAIS.getTable(currentName);
        // Rename does not affect scan or modify data, bumping version not required

        AISTableNameChanger nameChanger = new AISTableNameChanger(newTable);
        nameChanger.setSchemaName(newName.getSchemaName());
        nameChanger.setNewTableName(newName.getTableName());
View Full Code Here

            }
            tableIDs.addAll(newIndex.getAllTableIDs());
            schemas.add(DefaultNameGenerator.schemaNameForIndex(newIndex));
        }
        merge.merge();
        AkibanInformationSchema newAIS = merge.getAIS();
        saveAISChange(session, newAIS, schemas, tableIDs);
    }
View Full Code Here

        saveAISChange(session, newAIS, schemas, tableIDs);
    }

    @Override
    public void dropIndexes(Session session, final Collection<? extends Index> indexesToDrop) {
        final AkibanInformationSchema newAIS = aisCloner.clone(
                getAISForChange(session),
                new ProtobufWriter.TableSelector() {
                    @Override
                    public boolean isSelected(Columnar columnar) {
                        return true;
View Full Code Here


    @Override
    public void dropSchema(Session session, String schemaName) {

        AkibanInformationSchema newAIS = removeSchemaFromAIS(getAISForChange(session), schemaName);
        saveAISChange(session, newAIS, Collections.singleton(schemaName));
    }
View Full Code Here

        saveAISChange(session, newAIS, Collections.singleton(schemaName));
    }

    @Override
    public void dropNonSystemSchemas(Session session) {
        AkibanInformationSchema aisForChange = getAISForChange(session);
        List<String> affectedSchemas = new ArrayList<>();
        for (String schemaName : aisForChange.getSchemas().keySet()) {
            if (!TableName.inSystemSchema(schemaName)) {
                affectedSchemas.add(schemaName);
            }
        }
        AkibanInformationSchema newAIS = aisCloner.clone(aisForChange,
                new ProtobufWriter.WriteSelector() {
                    @Override
                    public Columnar getSelected(Columnar columnar) {
                        return columnar.getName().inSystemSchema() ? columnar : null;
                    }
View Full Code Here

    @Override
    public void alterTableDefinitions(Session session, Collection<ChangedTableDescription> alteredTables) {
        ArgumentValidation.notEmpty("alteredTables", alteredTables);

        AkibanInformationSchema oldAIS = getAISForChange(session);
        Set<String> schemas = new HashSet<>();
        List<Integer> tableIDs = new ArrayList<>(alteredTables.size());
        for(ChangedTableDescription desc : alteredTables) {
            TableName oldName = desc.getOldName();
            TableName newName = desc.getNewName();
            checkTableName(session, oldName, true, false);
            if(!oldName.equals(newName)) {
                checkTableName(session, newName, false, false);
            }
            Table newTable = desc.getNewDefinition();
            if(newTable != null) {
                AISInvariants.checkJoinTo(newTable.getParentJoin(), newName, false);
                if(newTable.getColumns().isEmpty()) {
                    throw new NoColumnsInTableException(newName);
                }
            }
            schemas.add(oldName.getSchemaName());
            schemas.add(newName.getSchemaName());
            tableIDs.add(oldAIS.getTable(oldName).getTableId());
        }

        AISMerge merge = AISMerge.newForModifyTable(aisCloner, getNameGenerator(session), oldAIS, alteredTables);
        merge.merge();
        final AkibanInformationSchema newAIS = merge.getAIS();

        for(ChangedTableDescription desc : alteredTables) {
            Table newTable = newAIS.getTable(desc.getNewName());
            ensureUuids(newTable);

            // New groups require new ordinals
            if(desc.isNewGroup()) {
                newTable.setOrdinal(null);
            }
        }

        // Two passes to ensure all tables in a group are reset before beginning assignment
        for(ChangedTableDescription desc : alteredTables) {
            if(desc.isNewGroup()) {
                Table newTable = newAIS.getTable(desc.getOldName());
                assignNewOrdinal(newTable);
            }
        }

        saveAISChange(session, newAIS, schemas, tableIDs);
View Full Code Here

        saveAISChange(session, newAIS, schemas, tableIDs);
    }

    @Override
    public void alterSequence(Session session, TableName sequenceName, Sequence newDefinition) {
        AkibanInformationSchema oldAIS = getAISForChange(session);
        Sequence oldSequence = oldAIS.getSequence(sequenceName);
        if(oldSequence == null) {
            throw new NoSuchSequenceException(sequenceName);
        }

        if(!sequenceName.equals(newDefinition.getSequenceName())) {
            throw new UnsupportedOperationException("Renaming Sequence");
        }

        AkibanInformationSchema newAIS = aisCloner.clone(oldAIS);
        newAIS.removeSequence(sequenceName);
        Sequence newSequence = Sequence.create(newAIS, newDefinition);
        storageFormatRegistry.finishStorageDescription(newSequence, getNameGenerator(session));

        // newAIS may have mixed references to sequenceName. Re-clone to resolve.
        newAIS = aisCloner.clone(newAIS);
View Full Code Here

TOP

Related Classes of com.foundationdb.ais.model.AkibanInformationSchema

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.