code: func (c *Constant) EvalDecimal(ctx sessionctx.Context, _ chunk.Row) (*types.MyDecimal, bool, error) {
  	if c.DeferredExpr != nil {
  		dt, err := c.DeferredExpr.Eval(chunk.Row{})
  		if err != nil {
  			return nil, true, err
  		}
  		if dt.IsNull() {
  			return nil, true, nil
  		}
  		c.Value.SetValue(dt.GetValue())
  	} else {
  		if c.GetType().Tp == mysql.TypeNull || c.Value.IsNull() {
  			return nil, true, nil
  		}
  	}
  	res, err := c.Value.ToDecimal(ctx.GetSessionVars().StmtCtx)
  	return res, err != nil, err
  }
docs: // EvalDecimal returns decimal representation of Constant.