code: func (b *builtinValuesStringSig) evalString(_ chunk.Row) (string, bool, error) {
  	if !b.ctx.GetSessionVars().StmtCtx.InInsertStmt {
  		return "", true, nil
  	}
  	row := b.ctx.GetSessionVars().CurrInsertValues
  	if row.IsEmpty() {
  		return "", true, errors.New("Session current insert values is nil")
  	}
  	if b.offset >= row.Len() {
  		return "", true, errors.Errorf("Session current insert values len %d and column's offset %v don't match", row.Len(), b.offset)
  	}
  
  	if row.IsNull(b.offset) {
  		return "", true, nil
  	}
  
  	// Specially handle the ENUM/SET/BIT input value.
  	if retType := b.getRetTp(); retType.Hybrid() {
  		val := row.GetDatum(b.offset, retType)
  		res, err := val.ToString()
  		return res, err != nil, err
  	}
  
  	return row.GetString(b.offset), false, nil
  }
docs: // evalString evals a builtinValuesStringSig.
  // See https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_values