# SHOW RANGE FOR ROW

The `SHOW RANGE ... FOR ROW` statement shows information about a range for a particular row of data. This information is useful for verifying how SQL data maps to underlying ranges, and where the replicas for a range are located.

Warning:

This is an experimental feature. The interface and output are subject to change.

Note:

To show information about the ranges that comprise the data for a table, index, or entire database, use the `SHOW RANGES` statement.

## Synopsis

## Required privileges

The user must have the `SELECT` privilege on the target table.

## Parameters

Parameter | Description
--- | ---
`table_name` | The name of the table that contains the row that you want range information about.
`table_index_name` | The name of the index for the row that you want range information about.
`row_vals` | The values of the row whose range information you want to show.

## Response

The following fields are returned:

Field | Description
--- | ---
`start_key` | The start key for the range.
`end_key` | The end key for the range.
`range_id` | The range ID.
`lease_holder` | The node that contains the range's leaseholder.
`lease_holder_locality` | The locality of the leaseholder.
`replicas` | The nodes that contain the range replicas.
`replica_localities` | The locality of the range.

## Examples

### Setup

The following examples use MovR, a fictional vehicle-sharing application, to demonstrate CockroachDB SQL statements. For more information about the MovR example application and dataset, see MovR: A Global Vehicle-sharing App.

To follow along, run `cockroach demo` with the `--geo-partitioned-replicas` flag. This command opens an interactive SQL shell to a temporary, 9-node in-memory cluster with the Geo-Partitioned Replicas Topology applied to the `movr` database.

    $ cockroach demo --geo-partitioned-replicas

### Show range information for a row in a table

    > SELECT * FROM [SHOW RANGE FROM TABLE users FOR ROW ('ae147ae1-47ae-4800-8000-000000000022', 'amsterdam', 'Tyler Dalton', '88194 Angela Gardens Suite 94', '4443538758')];

       start_key   |        end_key         | range_id | lease_holder |  lease_holder_locality   | replicas |                                 replica_localities
    +--------------+------------------------+----------+--------------+--------------------------+----------+------------------------------------------------------------------------------------+
      /"amsterdam" | /"amsterdam"/PrefixEnd |       47 |            9 | region=europe-west1,az=d | {7,8,9}  | {"region=europe-west1,az=b","region=europe-west1,az=c","region=europe-west1,az=d"}
    (1 row)

### Show range information for a row by a secondary index

    > SELECT * FROM [SHOW RANGE FROM INDEX vehicles_auto_index_fk_city_ref_users FOR ROW ('aaaaaaaa-aaaa-4800-8000-00000000000a', 'amsterdam', 'scooter', 'c28f5c28-f5c2-4000-8000-000000000026', '2019-01-02 03:04:05+00:00', 'in_use', '62609 Stephanie Route', '{"color": "red"}')];

       start_key   |        end_key         | range_id | lease_holder |  lease_holder_locality   | replicas |                                 replica_localities
    +--------------+------------------------+----------+--------------+--------------------------+----------+------------------------------------------------------------------------------------+
      /"amsterdam" | /"amsterdam"/PrefixEnd |       94 |            8 | region=europe-west1,az=c | {7,8,9}  | {"region=europe-west1,az=b","region=europe-west1,az=c","region=europe-west1,az=d"}
    (1 row)

## See also

- `SHOW RANGES`
- `SPLIT AT`
- `CREATE TABLE`
- `CREATE INDEX`
- Indexes
- Partitioning tables
- Architecture Overview