Search in sources :

Example 1 with CommitAction

use of org.teiid.query.sql.lang.Create.CommitAction in project teiid by teiid.

the class SQLStringVisitor method visit.

@Override
public void visit(Create obj) {
    append(CREATE);
    append(SPACE);
    if (obj.getTableMetadata() != null) {
        append(FOREIGN);
        append(SPACE);
        append(TEMPORARY);
        append(SPACE);
        append(TABLE);
        append(SPACE);
        new DDLVisitor().addTableBody(obj.getTableMetadata());
        append(SPACE);
        append(ON);
        append(SPACE);
        outputLiteral(String.class, false, obj.getOn());
        return;
    }
    append(LOCAL);
    append(SPACE);
    append(TEMPORARY);
    append(SPACE);
    append(TABLE);
    append(SPACE);
    visitNode(obj.getTable());
    append(SPACE);
    // Columns clause
    List<Column> columns = obj.getColumns();
    // $NON-NLS-1$
    append("(");
    Iterator<Column> iter = columns.iterator();
    while (iter.hasNext()) {
        Column element = iter.next();
        outputDisplayName(element.getName());
        append(SPACE);
        if (element.isAutoIncremented()) {
            append(NonReserved.SERIAL);
        } else {
            append(element.getRuntimeType());
            if (element.getNullType() == NullType.No_Nulls) {
                append(SPACE);
                append(NOT);
                append(SPACE);
                append(NULL);
            }
        }
        if (iter.hasNext()) {
            // $NON-NLS-1$
            append(", ");
        }
    }
    if (!obj.getPrimaryKey().isEmpty()) {
        // $NON-NLS-1$
        append(", ");
        append(PRIMARY);
        // $NON-NLS-1$
        append(" ");
        append(NonReserved.KEY);
        append(Tokens.LPAREN);
        Iterator<ElementSymbol> pkiter = obj.getPrimaryKey().iterator();
        while (pkiter.hasNext()) {
            outputShortName(pkiter.next());
            if (pkiter.hasNext()) {
                // $NON-NLS-1$
                append(", ");
            }
        }
        append(Tokens.RPAREN);
    }
    append(Tokens.RPAREN);
    CommitAction commitAction = obj.getCommitAction();
    if (commitAction != null) {
        append(Tokens.SPACE);
        append(Reserved.ON);
        append(Tokens.SPACE);
        append(Reserved.COMMIT);
        append(Tokens.SPACE);
        switch(commitAction) {
            case PRESERVE_ROWS:
                append(NonReserved.PRESERVE);
                append(Tokens.SPACE);
                append(Reserved.ROWS);
                break;
        }
    }
}
Also used : ObjectColumn(org.teiid.query.sql.lang.ObjectTable.ObjectColumn) TextColumn(org.teiid.query.sql.lang.TextTable.TextColumn) XMLColumn(org.teiid.query.sql.lang.XMLTable.XMLColumn) ProjectedColumn(org.teiid.query.sql.lang.TableFunctionReference.ProjectedColumn) Column(org.teiid.metadata.Column) CommitAction(org.teiid.query.sql.lang.Create.CommitAction)

Aggregations

Column (org.teiid.metadata.Column)1 CommitAction (org.teiid.query.sql.lang.Create.CommitAction)1 ObjectColumn (org.teiid.query.sql.lang.ObjectTable.ObjectColumn)1 ProjectedColumn (org.teiid.query.sql.lang.TableFunctionReference.ProjectedColumn)1 TextColumn (org.teiid.query.sql.lang.TextTable.TextColumn)1 XMLColumn (org.teiid.query.sql.lang.XMLTable.XMLColumn)1