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));
        }
Beispiel #3
0
        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;
 }