code: func (e *GrantExec) checkAndInitColumnPriv(user string, host string, cols []*ast.ColumnName) error {
  	dbName, tbl, err := getTargetSchemaAndTable(e.ctx, e.Level.DBName, e.Level.TableName, e.is)
  	if err != nil {
  		return err
  	}
  	for _, c := range cols {
  		col := table.FindCol(tbl.Cols(), c.Name.L)
  		if col == nil {
  			return errors.Errorf("Unknown column: %s", c.Name.O)
  		}
  		ok, err := columnPrivEntryExists(e.ctx, user, host, dbName, tbl.Meta().Name.O, col.Name.O)
  		if err != nil {
  			return err
  		}
  		if ok {
  			continue
  		}
  		// Entry does not exist for user-host-db-tbl-col. Insert a new entry.
  		err = initColumnPrivEntry(e.ctx, user, host, dbName, tbl.Meta().Name.O, col.Name.O)
  		if err != nil {
  			return err
  		}
  	}
  	return nil
  }
docs: // checkAndInitColumnPriv checks if column scope privilege entry exists in mysql.Columns_priv.
  // If unexists, insert a new one.