public override IASTNode VisitColumnDefinition(SqlServerCommandParser.ColumnDefinitionContext context) { ColumnSegment column = (ColumnSegment)Visit(context.columnName()); DataTypeSegment dataType = (DataTypeSegment)Visit(context.dataType()); var isPrimaryKey = IsPrimaryKey(context); ColumnDefinitionSegment result = new ColumnDefinitionSegment( context.Start.StartIndex, context.Stop.StopIndex, column, dataType, isPrimaryKey); foreach (var columnDefinitionOptionContext in context.columnDefinitionOption()) { foreach (var columnConstraintContext in columnDefinitionOptionContext.columnConstraint()) { if (null != columnConstraintContext.columnForeignKeyConstraint()) { result.ReferencedTables.Add((SimpleTableSegment)Visit(columnConstraintContext.columnForeignKeyConstraint().tableName())); } } } foreach (var columnConstraintContext in context.columnConstraints().columnConstraint()) { if (null != columnConstraintContext.columnForeignKeyConstraint()) { result.ReferencedTables.Add((SimpleTableSegment)Visit(columnConstraintContext.columnForeignKeyConstraint().tableName())); } } return(result); }
public override IASTNode VisitModifyColumnSpecification(SqlServerCommandParser.ModifyColumnSpecificationContext context) { // TODO visit pk and table ref ColumnSegment column = (ColumnSegment)Visit(context.alterColumnOperation().columnName()); DataTypeSegment dataType = (DataTypeSegment)Visit(context.dataType()); ColumnDefinitionSegment columnDefinition = new ColumnDefinitionSegment(context.Start.StartIndex, context.Stop.StopIndex, column, dataType, false); return(new ModifyColumnDefinitionSegment(context.Start.StartIndex, context.Stop.StopIndex, columnDefinition)); }
public override IASTNode VisitDataType(SqlServerCommandParser.DataTypeContext context) { DataTypeSegment dataTypeSegment = new DataTypeSegment(); dataTypeSegment.SetDataTypeName(((KeywordValue)Visit(context.dataTypeName())).GetValue()); dataTypeSegment.SetStartIndex(context.Start.StartIndex); dataTypeSegment.SetStopIndex(context.Stop.StopIndex); if (null != context.dataTypeLength()) { DataTypeLengthSegment dataTypeLengthSegment = (DataTypeLengthSegment)Visit(context.dataTypeLength()); dataTypeSegment.SetDataLength(dataTypeLengthSegment); } return(dataTypeSegment); }
public ColumnDefinitionSegment(int startIndex, int stopIndex, ColumnSegment columnName, DataTypeSegment dataType, bool primaryKey) { this._startIndex = startIndex; this._stopIndex = stopIndex; this.ColumnName = columnName; this.DataType = dataType; this.PrimaryKey = primaryKey; }