Package com.foundationdb.ais.model

Examples of com.foundationdb.ais.model.TableName


        if(indexName == null) {
            indexName = namer.generateIndexName(null, cdn.getColumnList().get(0).getName());
        }

        // index is unique or primary
        TableName constraintName = null;
        if (cdn.getConstraintName() != null) {
            constraintName = DDLHelper.convertName(schemaName, cdn.getConstraintName());
        }
        if (isPrimary) {
            if (constraintName == null) {
View Full Code Here


        return convertName(schemaName, fkdn.getRefTableName());
    }

    public static void addJoin(final AISBuilder builder, final FKConstraintDefinitionNode fkdn,
                               final String defaultSchemaName, final String schemaName, final String tableName)  {
        TableName parentName = getReferencedName(defaultSchemaName, fkdn);

        AkibanInformationSchema ais = builder.akibanInformationSchema();
        // Check parent table exists
        Table parentTable = ais.getTable(parentName);
        if (parentTable == null) {
            throw new JoinToUnknownTableException(new TableName(schemaName, tableName), parentName);
        }
        // Check child table exists
        Table childTable = ais.getTable(schemaName, tableName);
        if (childTable == null) {
            throw new NoSuchTableException(schemaName, tableName);
        }
        // Check that we aren't joining to ourselves
        if (parentTable == childTable) {
            throw new JoinToSelfException(schemaName, tableName);
        }
        // Check that fk list and pk list are the same size
        String[] fkColumns = columnNamesFromListOrPK(fkdn.getColumnList(), null); // No defaults for child table
        String[] pkColumns = columnNamesFromListOrPK(fkdn.getRefResultColumnList(), parentTable.getPrimaryKey());

        int actualPkColCount = parentTable.getPrimaryKeyIncludingInternal().getColumns().size();
        if ((fkColumns.length != actualPkColCount) || (pkColumns.length != actualPkColCount)) {
            throw new JoinColumnMismatchException(fkdn.getColumnList().size(),
                                                  new TableName(schemaName, tableName),
                                                  parentName,
                                                  parentTable.getPrimaryKeyIncludingInternal().getColumns().size());
        }

        int colPos = 0;
        while((colPos < fkColumns.length) && (colPos < pkColumns.length)) {
            String fkColumn = fkColumns[colPos];
            String pkColumn = pkColumns[colPos];
            if (childTable.getColumn(fkColumn) == null) {
                throw new NoSuchColumnException(String.format("%s.%s.%s", schemaName, tableName, fkColumn));
            }
            if (parentTable.getColumn(pkColumn) == null) {
                throw new JoinToWrongColumnsException(new TableName(schemaName, tableName),
                                                      fkColumn,
                                                      parentName,
                                                      pkColumn);
            }
            ++colPos;
        }

        String joinName = builder.getNameGenerator().generateJoinName(parentName, childTable.getName(), pkColumns, fkColumns);

        if (fkdn.getConstraintName() != null) {
            joinName = fkdn.getConstraintName().getTableName();
        }
       
        builder.joinTables(joinName, parentName.getSchemaName(), parentName.getTableName(), schemaName, tableName);

        colPos = 0;
        while(colPos < fkColumns.length) {
            builder.joinColumns(joinName,
                                parentName.getSchemaName(), parentName.getTableName(), pkColumns[colPos],
                                schemaName, tableName, fkColumns[colPos]);
            ++colPos;
        }
        builder.addJoinToGroup(parentTable.getGroup().getName(), joinName, 0);
    }
View Full Code Here

            QueryContext context,
            DDLFunctions ddl
            ) {
        IndexColumnList columnList = id.getIndexColumnList();
        Index tableIndex;
        TableName constraintName = null;
        if(indexName == null) {
            indexName = namer.generateIndexName(null, columnList.get(0).getColumnName());
        }
        if(id.isUnique()) {
            constraintName = builder.getNameGenerator().generateUniqueConstraintName(table.getName().getSchemaName(), indexName);
View Full Code Here

                                        String defaultSchemaName,
                                        String referencingSchemaName,
                                        String referencingTableName) {
        AkibanInformationSchema targetAIS = builder.akibanInformationSchema();
        Table referencingTable = targetAIS.getTable(referencingSchemaName, referencingTableName);
        TableName referencedName = getReferencedName(defaultSchemaName, fkdn);
        Table referencedTable = sourceAIS.getTable(referencedName);
        if (referencedTable == null) {
            if (referencedName.equals(referencingTable.getName())) {
                referencedTable = referencingTable; // Circular reference to self.
            }
            else {
                throw new JoinToUnknownTableException(new TableName(referencingSchemaName, referencingTableName), referencedName);
            }
        }
        if (fkdn.getMatchType() != FKConstraintDefinitionNode.MatchType.SIMPLE) {
            throw new UnsupportedSQLException("MATCH " + fkdn.getMatchType(), fkdn);
        }
        String constraintName = fkdn.getName();
        if (constraintName == null) {
            constraintName = builder.getNameGenerator().generateFKConstraintName(referencingSchemaName, referencingTableName).getTableName();
        }
        String[] referencingColumnNames = columnNamesFromListOrPK(fkdn.getColumnList(),
                                                                  null);
        String[] referencedColumnNames = columnNamesFromListOrPK(fkdn.getRefResultColumnList(),
                                                                 referencedTable.getPrimaryKey());
        if (referencingColumnNames.length != referencedColumnNames.length) {
            throw new JoinColumnMismatchException(referencingColumnNames.length,
                                                  new TableName(referencingSchemaName, referencingTableName),
                                                  referencedName,
                                                  referencedColumnNames.length);
        }
        List<Column> referencedColumns = new ArrayList<>(referencedColumnNames.length);
        for (int i = 0; i < referencingColumnNames.length; i++) {
            if (referencingTable.getColumn(referencingColumnNames[i]) == null) {
                throw new NoSuchColumnException(referencingColumnNames[i]);
            }
            Column referencedColumn = referencedTable.getColumn(referencedColumnNames[i]);
            if (referencedColumn == null) {
                throw new NoSuchColumnException(referencedColumnNames[i]);
            }
            referencedColumns.add(referencedColumn);
        }
        // Pick an index.
        TableIndex referencedIndex = ForeignKey.findReferencedIndex(referencedTable,
                                                                    referencedColumns);
        if (referencedIndex == null) {
            throw new ForeignKeyIndexRequiredException(constraintName, referencedName,
                                                       Arrays.toString(referencedColumnNames));
        }
        builder.foreignKey(referencingSchemaName, referencingTableName,
                           Arrays.asList(referencingColumnNames),
                           referencedName.getSchemaName(), referencedName.getTableName(),
                           Arrays.asList(referencedColumnNames),
                           convertReferentialAction(fkdn.getRefActionDeleteRule()),
                           convertReferentialAction(fkdn.getRefActionUpdateRule()),
                           fkdn.isDeferrable(), fkdn.isInitiallyDeferred(),
                           constraintName);
View Full Code Here

    @Test
    public void test() {
        int c = createTable("schema", "customers", "cid int not null primary key, name varchar(32)");
        int o = createTable("schema", "orders", "oid int not null primary key, cid int not null, placed date",
                akibanFK("cid", "customers", "cid"));
        TableName groupName = getTable(c).getGroup().getName();
        createLeftGroupIndex(groupName, "name_placed", "customers.name", "orders.placed");

        writeRow(c, 1, "bob");
        writeRow(o, 11, 1, "2012-01-01");
View Full Code Here

    @Produces(MEDIATYPE_JSON_JAVASCRIPT)
    public Response postCall(@Context final HttpServletRequest request,
                             @PathParam("proc") String proc,
                             @Context final UriInfo uri,
                             final String jsonParams) throws Exception {
        final TableName procName = ResourceHelper.parseTableName(request, proc);
        ResourceHelper.checkSchemaAccessible(reqs.securityService, request, procName.getSchemaName());
        return RestResponseBuilder
                .forRequest(request)
                .body(new RestResponseBuilder.BodyGenerator() {
                    @Override
                    public void write(PrintWriter writer) throws Exception {
View Full Code Here

    @GET
    @Produces(MEDIATYPE_JSON_JAVASCRIPT)
    public Response retrieveEntity(@Context final HttpServletRequest request,
                                   @PathParam("view") String view,
                                   @Context final UriInfo uri) {
        final TableName tableName = parseTableName(request, view);
        checkTableAccessible(reqs.securityService, request, tableName);
        StringBuilder query = new StringBuilder();
        query.append("SELECT * FROM ");
        query.append(tableName.toString());
        List<String> params = new ArrayList<>();
        boolean first = true;
       
        for (Map.Entry<String,List<String>> entry : uri.getQueryParameters().entrySet()) {
            if (entry.getValue().size() != 1)
View Full Code Here

                                  Session session,
                                  String defaultSchemaName,
                                  CreateViewNode createView,
                                  AISBinderContext binderContext,
                                  QueryContext context) {
        TableName fullName = convertName(defaultSchemaName, createView.getObjectName());
        String schemaName = fullName.getSchemaName();
        String viewName = fullName.getTableName();

        View curView = ddlFunctions.getAIS(session).getView(schemaName, viewName);
        if((curView != null) &&
           skipOrThrow(context, createView.getExistenceCheck(), curView, new DuplicateViewException(schemaName, viewName))) {
            return;
View Full Code Here

                                 Session session,
                                 String defaultSchemaName,
                                 DropViewNode dropView,
                                 AISBinderContext binderContext,
                                 QueryContext context) {
        TableName viewName = convertName(defaultSchemaName, dropView.getObjectName());
        View curView = ddlFunctions.getAIS(session).getView(viewName);

        if((curView == null) &&
           skipOrThrow(context, dropView.getExistenceCheck(), curView, new UndefinedViewException(viewName))) {
            return;
View Full Code Here

                                         Session session,
                                         String defaultSchemaName,
                                         AlterTableNode alterTable,
                                         QueryContext context) {
        final AkibanInformationSchema curAIS = ddlFunctions.getAIS(session);
        final TableName tableName = convertName(defaultSchemaName, alterTable.getObjectName());
        final Table table = curAIS.getTable(tableName);
        if((table == null) &&
           skipOrThrow(context, alterTable.getExistenceCheck(), null, new NoSuchTableException(tableName))) {
            return null;
        }
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.