Ejemplo n.º 1
0
        public static DefaultConstraintDefinition DefaultConstraint(Identifier column, ScalarExpression expression)
        {
            var fragment = new DefaultConstraintDefinition();

            fragment.Column     = column;
            fragment.Expression = expression;
            return(fragment);
        }
Ejemplo n.º 2
0
        public override void ExplicitVisit(DefaultConstraintDefinition node)
        {
            _buffer.Append("\talter column ");
            node.Column.Accept(this);
            _buffer.Append(" set default ");

            ScalarExpression expression = node.Expression;

            while (expression is ParenthesisExpression)
            {
                expression = ((ParenthesisExpression)expression).Expression;
            }

            string        columnName = node.Column.Value;
            PgTableColumn column     = _table.Columns[columnName];

            if (expression is IntegerLiteral literal)
            {
                string value = literal.Value;
                if (column.DataType == "bool")
                {
                    if (value == "0")
                    {
                        value = "(\'f\')";
                    }
                    else
                    {
                        value = "(\'t\')";
                    }
                    _buffer.Append(value);
                    return;
                }
            }
            else if (expression is FunctionCall call)
            {
                string functionName = call.FunctionName.Value.ToLower();
                switch (functionName)
                {
                case "getutcdate":
                    _buffer.Append("(current_timestamp at time zone 'UTC')");
                    return;

                case "getdate":
                    _buffer.Append("(localtimestamp)");
                    return;

                case "suser_sname":
                    _buffer.Append("(session_user)");
                    return;

                default:
                    throw new InvalidOperationException($"unsupported function {functionName}");
                }
            }
            _buffer.Append("(");
            expression.Accept(this);
            _buffer.Append(")");
        }
Ejemplo n.º 3
0
        protected override object InternalVisit(DefaultConstraintDefinition node)
        {
            Action <Column> applier = (column) =>
            {
                column.DefaultValue = EvaluateExpression <object>(node.Expression, Database.GlobalEnvironment);
            };

            return(applier);
        }
 /// <summary>
 /// This visitor looks for default constraints without any identifier (name) and for those explicitly names them.
 /// In the cases where the constraint is unnamed, the ConstraintIdentifier field is null.
 /// </summary>
 public override void ExplicitVisit(DefaultConstraintDefinition node)
 {
     if (node.ConstraintIdentifier == null)
     {
         node.ConstraintIdentifier = new Identifier()
         {
             Value = string.Format("DF_autonamed_{0}", Guid.NewGuid().ToString("N"))
         };
     }
 }
Ejemplo n.º 5
0
 public override void Visit(DefaultConstraintDefinition node) { this.action(node); }
 public override void ExplicitVisit(DefaultConstraintDefinition fragment)
 {
     _fragments.Add(fragment);
 }