code: func (c *Constant) Eval(_ chunk.Row) (types.Datum, error) {
  	if c.DeferredExpr != nil {
  		if sf, sfOK := c.DeferredExpr.(*ScalarFunction); sfOK {
  			dt, err := sf.Eval(chunk.Row{})
  			if err != nil {
  				return c.Value, err
  			}
  			if dt.IsNull() {
  				c.Value.SetNull()
  				return c.Value, nil
  			}
  			val, err := dt.ConvertTo(sf.GetCtx().GetSessionVars().StmtCtx, c.RetType)
  			if err != nil {
  				return dt, err
  			}
  			c.Value.SetValue(val.GetValue())
  		}
  	}
  	return c.Value, nil
  }
docs: // Eval implements Expression interface.