/// <summary> /// Extract Generated Column from context /// </summary> /// <param name="context"></param> /// <returns></returns> public static GeneratedColumnDefinition Extract(GeneratedColumnConstraintContext context) { // Get Generated Column detail: "GENERATEDALWAYSAS(hex(id))STORED" if (context == null) { throw new ArgumentOutOfRangeException($"{nameof(context)} is null"); } var predicateExpressionContext = context.GetChild <PredicateExpressionContext>(); var generatedElements = Enumerable.Range(0, context.ChildCount) .Select(x => context.GetChild(x)) .Select(x => x.GetText()) .ToArray(); var isAlways = generatedElements.Contains("ALWAYS"); var isStored = generatedElements.Contains("STORED"); var statement = predicateExpressionContext.GetText(); var generatedColumn = new GeneratedColumnDefinition() { Always = isAlways, IsStored = isStored, Statement = statement, }; return(generatedColumn); }
/// <summary> /// Listener for Generated column detection /// </summary> /// <param name="context"></param> public override void EnterGeneratedColumnConstraint([NotNull] GeneratedColumnConstraintContext context) { base.EnterGeneratedColumnConstraint(context); // generated column var column = TableDefinition.LookupColumnDefinition(context); var generatedColumn = GeneratedColumnDefinition.Extract(context); column.GeneratedColumn = generatedColumn; }