public boolean visit()

in core/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlOutputVisitor.java [259:439]


    public boolean visit(SQLColumnDefinition x) {
        boolean parameterized = this.parameterized;
        this.parameterized = false;

        x.getName().accept(this);

        SQLDataType dataType = x.getDataType();
        if (dataType != null) {
            print(' ');
            dataType.accept(this);
        }

        SQLExpr generatedAlawsAs = x.getGeneratedAlwaysAs();
        if (generatedAlawsAs != null) {
            print0(ucase ? " GENERATED ALWAYS AS (" : " generated always as (");
            printExpr(generatedAlawsAs);
            print(')');
        }

        if (x.isVirtual()) {
            print0(ucase ? " VIRTUAL" : " virtual");
        }

        if (x.isVisible()) {
            print0(ucase ? " VISIBLE" : " visible");
        }

        final SQLExpr charsetExpr = x.getCharsetExpr();
        if (charsetExpr != null) {
            print0(ucase ? " CHARACTER SET " : " character set ");
            charsetExpr.accept(this);
        }

        final SQLExpr collateExpr = x.getCollateExpr();
        if (collateExpr != null) {
            print0(ucase ? " COLLATE " : " collate ");
            collateExpr.accept(this);
        }

        for (SQLColumnConstraint item : x.getConstraints()) {
            if (item instanceof SQLColumnReference) {
                continue;
            }
            print(' ');
            item.accept(this);
        }

        final SQLExpr defaultExpr = x.getDefaultExpr();
        if (defaultExpr != null) {
            print0(ucase ? " DEFAULT " : " default ");
            defaultExpr.accept(this);
        }

        final SQLExpr storage = x.getStorage();
        if (storage != null) {
            print0(ucase ? " STORAGE " : " storage ");
            storage.accept(this);
        }

        final SQLExpr format = x.getFormat();
        if (format != null) {
            printUcase(" COLUMN_FORMAT ");
            format.accept(this);
        }

        SQLExpr onUpdate = x.getOnUpdate();
        if (onUpdate != null) {
            print0(ucase ? " ON UPDATE " : " on update ");

            onUpdate.accept(this);
        }

        if (x.getJsonIndexAttrsExpr() != null) {
            print0(ucase ? " JSONINDEXATTRS '" : " jsonindexattrs '");
            x.getJsonIndexAttrsExpr().accept(this);
            print0("' ");
        }

        boolean autoIncrement = x.isAutoIncrement();
        if (!autoIncrement && x.getGeneratedAlwaysAs() == null && x.getIdentity() != null) {
            autoIncrement = true;
        }

        if (autoIncrement) {
            print0(ucase ? " AUTO_INCREMENT" : " auto_increment");
        }

        if (x.getDelimiterTokenizer() != null) {
            print0(ucase ? " DELIMITER_TOKENIZER " : " delimiter_tokenizer ");
            x.getDelimiterTokenizer().accept(this);
        }
        if (x.getNlpTokenizer() != null) {
            print0(ucase ? " NLP_TOKENIZER " : " nlp_tokenizer ");
            x.getNlpTokenizer().accept(this);
        }
        if (x.getValueType() != null) {
            print0(ucase ? " VALUE_TYPE " : " value_type ");
            x.getValueType().accept(this);
        }

        final AutoIncrementType sequenceType = x.getSequenceType();
        if (sequenceType != null) {
            print0(ucase ? " BY " : " by ");
            print0(ucase ? sequenceType.getKeyword() : sequenceType.getKeyword().toLowerCase());
        }

        final SQLExpr unitCount = x.getUnitCount();
        if (unitCount != null) {
            print0(ucase ? " UNIT COUNT " : " unit count ");
            printExpr(unitCount);
        }

        final SQLExpr unitIndex = x.getUnitIndex();
        if (unitIndex != null) {
            print0(ucase ? " INDEX " : " index ");
            printExpr(unitIndex);
        }

        if (x.getStep() != null) {
            print0(ucase ? " STEP " : " STEP ");
            printExpr(x.getStep());
        }

        SQLExpr delimiter = x.getDelimiter();
        if (delimiter != null) {
            print0(ucase ? " DELIMITER " : " delimiter ");
            delimiter.accept(this);
        }

        if (x.isDisableIndex() == true) {
            print0(ucase ? " DISABLEINDEX TRUE" : " disableindex true");
        }

        final SQLAnnIndex annIndex = x.getAnnIndex();
        if (annIndex != null) {
            print(' ');
            annIndex.accept(this);
        }

        if (x.getComment() != null) {
            print0(ucase ? " COMMENT " : " comment ");
            x.getComment().accept(this);
        }

        if (x.getAsExpr() != null) {
            print0(ucase ? " AS (" : " as (");
            x.getAsExpr().accept(this);
            print(')');
        }

        if (x.isStored()) {
            print0(ucase ? " STORED" : " stored");
        }

        if (x.getEncode() != null) {
            print0(ucase ? " ENCODE=" : " encode=");
            x.getEncode().accept(this);
        }

        if (x.getCompression() != null) {
            print0(ucase ? " COMPRESSION=" : " compression=");
            x.getCompression().accept(this);
        }

        List<SQLAssignItem> colProperties = x.getColPropertiesDirect();
        if (colProperties != null && colProperties.size() > 0) {
            print0(ucase ? " COLPROPERTIES (" : " colproperties (");
            printAndAccept(colProperties, ", ");
            print0(ucase ? ")" : ")");
        }

        for (SQLColumnConstraint item : x.getConstraints()) {
            if (item instanceof SQLColumnReference) {
                print(' ');
                item.accept(this);
            }
        }

        this.parameterized = parameterized;
        return false;
    }