Package com.foundationdb.ais.model

Examples of com.foundationdb.ais.model.Column


    public Table getSourceTable () {
        return sourceTable;
    }

    private void copyFieldToIndexRow(GroupIndex groupIndex, Row row, int flattenedIndex) {
        Column column = groupIndex.getColumnForFlattenedRow(flattenedIndex);
        indexRow.append(row.value(flattenedIndex), column.getType());
    }
View Full Code Here


        if (ncols <= 1) {
            return rowColumns;
        }
        List<Column> result = new ArrayList<>(ncols);
        for (int i = 0; i < ncols; i++) {
            Column keyColumn = index.getKeyColumns().get(i).getColumn();
            result.add(rowColumns.get(indexColumns.indexOf(keyColumn)));
        }
        return result;
    }
View Full Code Here

        AkibanAppender appender = AkibanAppender.of(str);
        for (int i = 0; i < columns.size(); i++) {
            if (i > 0) {
                str.append(" and ");
            }
            Column column = columns.get(i);
            str.append(column.getName()).append(" = ");
            source.bind(column.getFieldDef(), row);
            source.getType().format(source, appender);
        }
        return str.toString();
    }
View Full Code Here

            Index index = foreignKey.getReferencingIndex();
            IndexRowType indexRowType = plan.schema.indexRowType(index);
            List<TPreparedExpression> vars = new ArrayList<>(plan.ncols);
            for (int i = 0; i < plan.ncols; i++) {
                // Convert from index column position to parameter number.
                Column indexedColumn = crossReferencedColumns.get(i);
                int fkpos = referencedColumns.indexOf(indexedColumn);
                vars.add(new TPreparedParameter(fkpos, indexedColumn.getType()));
            }
            UnboundExpressions indexExprs = new RowBasedUnboundExpressions(indexRowType, vars);
            IndexBound indexBound = new IndexBound(indexExprs, plan);
            IndexKeyRange indexKeyRange = IndexKeyRange.bounded(indexRowType, indexBound, true, indexBound, true);
            input = API.indexScan_Default(indexRowType, indexKeyRange, 1);
            input = API.groupLookup_Default(input, group, indexRowType,
                                            Collections.singletonList(tableRowType),
                                            API.InputPreservationOption.DISCARD_INPUT,
                                            groupLookupPipelineQuantum);
        }
        else {
            // referencing WHERE fk IS NOT NULL AND...
            List<Column> referencingColumns = foreignKey.getReferencingColumns();
            TPreptimeValue emptyTPV = new TPreptimeValue();
            TValidatedScalar isNull = typesRegistryService.getScalarsResolver().get("IsNull", Collections.nCopies(1, emptyTPV)).getOverload();
            TValidatedScalar not = typesRegistryService.getScalarsResolver().get("NOT", Collections.nCopies(1, emptyTPV)).getOverload();
            TValidatedScalar and = typesRegistryService.getScalarsResolver().get("AND", Collections.nCopies(2, emptyTPV)).getOverload();
            TInstance boolType = AkBool.INSTANCE.instance(false);
            TPreparedExpression predicate = null;
            for (int i = 0; i < plan.ncols; i++) {
                Column referencingColumn = referencingColumns.get(i);
                TPreparedField field = new TPreparedField(referencingColumn.getType(), referencingColumn.getPosition());
                TPreparedExpression clause = new TPreparedFunction(isNull, boolType, Arrays.asList(field));
                clause = new TPreparedFunction(not, boolType, Arrays.asList(clause));
                if (predicate == null) {
                    predicate = clause;
                }
                else {
                    predicate = new TPreparedFunction(and, boolType, Arrays.asList(predicate, clause));
                }
            }
            input = API.groupScan_Default(group);
            input = API.filter_Default(input, Collections.singletonList(tableRowType));
            input = API.select_HKeyOrdered(input, tableRowType, predicate);
        }
        ForeignKey.Action action;
        takeAction: {
            if (hasNewRow) {
                action = foreignKey.getUpdateAction();
            }
            else {
                action = foreignKey.getDeleteAction();
                if (action == ForeignKey.Action.CASCADE) {
                    // DELETE FROM referencing ...
                    plan.plannable = API.delete_Default(input);
                    break takeAction;
                }
            }
            // UPDATE referencing SET fk = $2 ...
            switch (action) {
            case SET_NULL:
            case SET_DEFAULT:
                plan.bindValues = new ValueSource[plan.ncols];
                for (int i = 0; i < plan.ncols; i++) {
                    Column column = foreignKey.getReferencingColumns().get(i);
                    plan.bindValues[i] = ValueSources.fromObject((action == ForeignKey.Action.SET_NULL) ?
                                                                 null :
                                                                 column.getDefaultValue(),
                                                                 column.getType()).value();
                }
                break;
            case CASCADE:
                plan.bindNewRow = true;
                break;
View Full Code Here

            if(newName.equals(change.getNewName())) {
                switch(ChangeType.valueOf(change.getChangeType())) {
                    case ADD:
                        return null;
                    case MODIFY:
                        Column oldColumn = oldTable.getColumn(change.getOldName());
                        assert oldColumn != null : newColumn;
                        return oldColumn.getPosition();
                    case DROP:
                        throw new IllegalStateException("Dropped new column: " + newName);
                }
            }
        }
        Column oldColumn = oldTable.getColumn(newName);
        if((oldColumn == null) && newColumn.isAkibanPKColumn()) {
            return null;
        }
        // Not in change list, must be an original column
        assert oldColumn != null : newColumn;
        return oldColumn.getPosition();
    }
View Full Code Here

            Integer oldPosition = findOldPosition(changeSet.getColumnChangeList(), origTable, newCol);
            TInstance newInst = newCol.getType();
            if(oldPosition == null) {
                projections.add(buildColumnDefault(newCol, typesRegistry, typesTranslator, origContext));
            } else {
                Column oldCol = origTable.getColumnsIncludingInternal().get(oldPosition);
                TInstance oldInst = oldCol.getType();
                TPreparedExpression pExp = new TPreparedField(oldInst, oldPosition);
                if(!oldInst.equalsExcludingNullable(newInst)) {
                    TCast cast = typesRegistry.getCastsResolver().cast(oldInst.typeClass(), newInst.typeClass());
                    pExp = new TCastExpression(pExp, cast, newInst);
                }
View Full Code Here

    public void createIdentity () throws Exception {
        String sql = "CREATE TABLE test.t7 (c1 integer primary key generated by default as identity)";
        executeDDL(sql);
        Table table = ais().getTable("test", "t7");
        assertNotNull(table);
        Column column = table.getColumn(0);
       
        assertNotNull(column.getIdentityGenerator());
        assertEquals (1, column.getIdentityGenerator().getStartsWith());
        assertEquals (1, column.getIdentityGenerator().getIncrement());
        assertNotNull(column.getDefaultIdentity());
        assertTrue(column.getDefaultIdentity().booleanValue());
    }
View Full Code Here

    public void createAlwaysIdentity() throws Exception {
        String sql = "CREATE TABLE test.t9 (c1 integer primary key generated ALWAYS as identity)";
        executeDDL(sql);
        Table table = ais().getTable("test", "t9");
        assertNotNull(table);
        Column column = table.getColumn(0);
       
        assertNotNull(column.getIdentityGenerator());
        assertEquals (1, column.getIdentityGenerator().getStartsWith());
        assertEquals (1, column.getIdentityGenerator().getIncrement());
        assertNotNull(column.getDefaultIdentity());
        assertFalse(column.getDefaultIdentity().booleanValue());
    }
View Full Code Here

    public void createIdentityValues() throws Exception {
        String sql = "CREATE TABLE test.t10 (c1 integer primary key generated by default as identity (start with 11, increment by -1))";
        executeDDL(sql);
        Table table = ais().getTable("test", "t10");
        assertNotNull(table);
        Column column = table.getColumn(0);
       
        assertNotNull(column.getIdentityGenerator());
        assertEquals (11, column.getIdentityGenerator().getStartsWith());
        assertEquals (-1, column.getIdentityGenerator().getIncrement());
        assertNotNull(column.getDefaultIdentity());
        assertTrue(column.getDefaultIdentity().booleanValue());
       
    }
View Full Code Here

    public void createSerialTable() throws Exception {
        String sql = "CREATE TABLE test.t12 (c1 SERIAL PRIMARY KEY)";
        executeDDL(sql);
        Table table = ais().getTable("test", "t12");
        assertNotNull (table);
        Column column = table.getColumn(0);
        assertEquals ("INT", column.getTypeName());
        assertEquals (column.getNullable(), false);
        assertNotNull (column.getIdentityGenerator());
        assertEquals (1, column.getIdentityGenerator().getStartsWith());
        assertEquals (1, column.getIdentityGenerator().getIncrement());
        assertNotNull(column.getDefaultIdentity());
        assertTrue(column.getDefaultIdentity());
        // No column index auto created
        assertNull (table.getIndex("c1"));
        // Primary key is
        assertNotNull (table.getPrimaryKey());
        Index index = table.getPrimaryKey().getIndex();
View Full Code Here

TOP

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

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.