code: func (d *ddl) ShardRowID(ctx sessionctx.Context, tableIdent ast.Ident, uVal uint64) error {
  	schema, t, err := d.getSchemaAndTableByIdent(ctx, tableIdent)
  	if err != nil {
  		return errors.Trace(err)
  	}
  	ok, _ := hasAutoIncrementColumn(t.Meta())
  	if ok && uVal != 0 {
  		return errUnsupportedShardRowIDBits
  	}
  	if uVal == t.Meta().ShardRowIDBits {
  		// Nothing need to do.
  		return nil
  	}
  	err = verifyNoOverflowShardBits(d.sessPool, t, uVal)
  	if err != nil {
  		return err
  	}
  	job := &model.Job{
  		Type:       model.ActionShardRowID,
  		SchemaID:   schema.ID,
  		TableID:    t.Meta().ID,
  		BinlogInfo: &model.HistoryInfo{},
  		Args:       []interface{}{uVal},
  	}
  	err = d.doDDLJob(ctx, job)
  	err = d.callHookOnChanged(err)
  	return errors.Trace(err)
  }
docs: // ShardRowID shards the implicit row ID by adding shard value to the row ID's first few bits.