public static DefaultConstraintDefinition DefaultConstraint(Identifier column, ScalarExpression expression) { var fragment = new DefaultConstraintDefinition(); fragment.Column = column; fragment.Expression = expression; return(fragment); }
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(")"); }
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")) }; } }
public override void Visit(DefaultConstraintDefinition node) { this.action(node); }
public override void ExplicitVisit(DefaultConstraintDefinition fragment) { _fragments.Add(fragment); }