Package com.foundationdb.ais.model

Examples of com.foundationdb.ais.model.TableName


    public static void dropSequence (DDLFunctions ddlFunctions,
                                        Session session,
                                        String defaultSchemaName,
                                        DropSequenceNode dropSequence,
                                        QueryContext context) {
        final TableName sequenceName = DDLHelper.convertName(defaultSchemaName, dropSequence.getObjectName());

        Sequence sequence = ddlFunctions.getAIS(session).getSequence(sequenceName);
        if((sequence == null) &&
           skipOrThrow(context, dropSequence.getExistenceCheck(), sequence, new NoSuchSequenceException(sequenceName))) {
            return;
View Full Code Here


            finalChangeLevel = level;
        }
    }

    private void compareTable() {
        TableName oldName = oldTable.getName();
        TableName newName = newTable.getName();
        if(!oldName.equals(newName) ||
           !Objects.equal(oldTable.getCharsetName(), newTable.getCharsetName()) ||
           !Objects.equal(oldTable.getCollationName(), newTable.getCollationName())) {
            updateFinalChangeLevel(ChangeLevel.METADATA);
        }
View Full Code Here

                }
                String oldName = column.getName();
                boolean isTargetTable = column.getTable() == oldTable;
                String newName = isTargetTable ? findNewName(state.columnChanges, oldName) : oldName;
                if(newName != null) {
                    TableName tableName = isTargetTable ? newTable.getName() : column.getTable().getName();
                    remainingCols.add(new ColumnName(tableName, newName));
                    if(column.getTable() == oldTable) {
                        Column oldColumn = oldTable.getColumn(oldName);
                        Column newColumn = newTable.getColumn(newName);
                        dataChange |= (compare(oldColumn, newColumn) == ChangeLevel.TABLE);
View Full Code Here

        }

        boolean renamed = !oldTable.getName().equals(newTable.getName()) || !renamedColumns.isEmpty();

        Map<String,String> preserveIndexes = new TreeMap<>();
        TableName parentName = (newTable.getParentJoin() != null) ? newTable.getParentJoin().getParent().getName() : null;
        state.descriptions.add(
            new ChangedTableDescription(
                oldTable.getTableId(),
                oldTable.getName(),
                newTable,
                renamedColumns,
                parentChange,
                parentName,
                EMPTY_STRING_MAP,
                preserveIndexes,
                droppedSequences,
                addedIdentity,
                addedIndexes,
                finalChangeLevel == ChangeLevel.TABLE,
                isParentChanged() || primaryKeyChanged
            )
        );

        if(!isParentChanged() && !primaryKeyChanged) {
            for(Index index : newTable.getIndexesIncludingInternal()) {
                String oldName = index.getIndexName().getName();
                String newName = findNewName(state.tableIndexChanges, oldName);
                if(!containsOldOrNew(state.tableIndexChanges, oldName)) {
                    preserveIndexes.put(oldName, newName);
                }
            }
        }

        Collection<Join> oldChildJoins = new ArrayList<>(oldTable.getCandidateChildJoins());
        for(Join join : oldChildJoins) {
            Table oldChildTable = join.getChild();

            // If referenced column has anymore has a TABLE change (or is missing), join needs dropped
            boolean dropParent = false;
            for(JoinColumn joinCol : join.getJoinColumns()) {
                Column oldColumn = joinCol.getParent().getColumn();
                String newName = findNewName(state.columnChanges, oldColumn.getName());
                if(newName == null) {
                    dropParent = true;
                } else {
                    Column newColumn = newTable.getColumn(newName);
                    if(compare(oldColumn, newColumn) == ChangeLevel.TABLE) {
                        dropParent = true;
                    }
                }
            }

            boolean preserve = false;
            ParentChange change = null;

            // If PK changed and table had children, PK was dropped
            if(primaryKeyChanged || dropParent) {
                updateFinalChangeLevel(ChangeLevel.GROUP);
                change = ParentChange.DROP;
            } else if(isParentChanged() || (parentChange == ParentChange.ADD)) {
                updateFinalChangeLevel(ChangeLevel.GROUP);
                change = ParentChange.UPDATE;
            } else if(renamed) {
                updateFinalChangeLevel(ChangeLevel.METADATA);
                change = ParentChange.META;
                preserve = true;
            }

            if(change != null) {
                TableName newParent = (change == ParentChange.DROP) ? null : newTable.getName();
                trackChangedTable(oldChildTable, change, newParent, renamedColumns, preserve);
                propagateChildChange(oldChildTable, ParentChange.UPDATE, preserve);
            }
        }
View Full Code Here

        }
        // TODO: Would be nice to track complete details (e.g. constraint name) instead of just table
        for(TableName refName : referencedChanges) {
            if(!state.hasOldTable(refName)) {
                Table table = oldTable.getAIS().getTable(refName);
                TableName parentName = (table.getParentJoin() != null) ? table.getParentJoin().getParent().getName() : null;
                trackChangedTable(table, ParentChange.NONE, parentName, null, true);
            }
        }
        if(!referencedChanges.isEmpty()) {
            switch(finalChangeLevel) {
View Full Code Here

    private void propagateChildChange(final Table table, final ParentChange change, final boolean allIndexes) {
        table.visitBreadthFirst(new AbstractVisitor() {
            @Override
            public void visit(Table curTable) {
                if(table != curTable) {
                    TableName parentName = curTable.getParentJoin().getParent().getName();
                    trackChangedTable(curTable, change, parentName, null, allIndexes);
                }
            }
        });
    }
View Full Code Here

        if (covering.length > 1) {
            parts[0] = inputs.get(0).getString();
            parts[1] = inputs.get(1).getString();
        }
        else {
            TableName name = TableName.parse("", inputs.get(0).getString());
            parts[0] = name.getSchemaName();
            parts[1] = name.getTableName();
        }
        if (parts[0].isEmpty()) {
            parts[0] = context.getCurrentSchema();
        }

        TableName sequenceName = new TableName(parts[0], parts[1]);
        StoreAdapter store = context.getQueryContext().getStore();
        Sequence sequence = store.getSequence(sequenceName);
        long value = nextValue ?
            store.sequenceNextValue(sequence) :
            store.sequenceCurrentValue(sequence);
View Full Code Here

        }
    }

    private class SchemaManagerSummaryFactory extends BasicFactoryBase {
        public SchemaManagerSummaryFactory() {
            super(new TableName(TableName.INFORMATION_SCHEMA, "schema_manager_summary"));
        }
View Full Code Here

    // PersistitNameGenerator
    //

    public synchronized String generateIndexTreeName(Index index) {
        // schema.table.index
        final TableName tableName;
        switch(index.getIndexType()) {
            case TABLE:
                tableName = ((TableIndex)index).getTable().getName();
            break;
            case GROUP:
                Table root = ((GroupIndex)index).getGroup().getRoot();
                if(root == null) {
                    throw new IllegalArgumentException("Grouping incomplete (no root)");
                }
                tableName = root.getName();
            break;
            case FULL_TEXT:
                tableName = ((FullTextIndex)index).getIndexedTable().getName();
            break;
            default:
                throw new IllegalArgumentException("Unknown type: " + index.getIndexType());
        }
        return generateIndexTreeName(tableName.getSchemaName(), tableName.getTableName(), index.getIndexName().getName());
    }
View Full Code Here

            escapeForTreeName(groupName);
        return makeUnique(treeNames, proposed, MAX_TREE_NAME_LENGTH);
    }

    public synchronized String generateSequenceTreeName(Sequence sequence) {
        TableName tableName = sequence.getSequenceName();
        return generateSequenceTreeName(tableName.getSchemaName(), tableName.getTableName());
    }
View Full Code Here

TOP

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

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.