---
name: "SQL::Translator::Schema::Index"
section: "3pm"
platform: "linux"
package: "libsql-translator-perl"
version: "1.66-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/SQL::Translator::Schema::Index"
---

# SQL::Translator::Schema::Index(3pm)

SQL::Translator index object

## NAME

SQL::Translator::Schema::Index - SQL::Translator index object

## SYNOPSIS

```
  use SQL::Translator::Schema::Index;
  my $index = SQL::Translator::Schema::Index->new(
      name   => 'foo',
      fields => [ id ],
      type   => 'unique',
  );
```

## DESCRIPTION

`"SQL::Translator::Schema::Index"` is the index object.

Primary and unique keys are table constraints, not indices.

## METHODS

### new

Object constructor.

```
  my $schema = SQL::Translator::Schema::Index->new;
```

### fields

Gets and set the fields the index is on.  Accepts a string, list or arrayref; returns an array or array reference.  Will unique the field names and keep them in order by the first occurrence of a field name.

```
  $index->fields('id');
  $index->fields('id', 'name');
  $index->fields( 'id, name' );
  $index->fields( [ 'id', 'name' ] );
  $index->fields( qw[ id name ] );
  $index->fields(id => { name => 'name', order_by => 'ASC NULLS LAST' });
  my @fields = $index->fields;
```

### is\_valid

Determine whether the index is valid or not.

```
  my $ok = $index->is_valid;
```

### name

Get or set the index's name.

```
  my $name = $index->name('foo');
```

### options

Get or set the index's options (e.g., "using" or "where" for PG).  Returns an array or array reference.

```
  my @options = $index->options;
```

### table

Get or set the index's table object.

```
  my $table = $index->table;
```

### type

Get or set the index's type.

```
  my $type = $index->type('unique');
```

Get or set the index's type.

Currently there are only four acceptable types: UNIQUE, NORMAL, FULL\_TEXT, and SPATIAL. The latter two might be MySQL-specific. While both lowercase and uppercase types are acceptable input, this method returns the type in uppercase.

### equals

Determines if this index is the same as another

```
  my $isIdentical = $index1->equals( $index2 );
```

## AUTHOR

Ken Youens-Clark \<kclark@cpan.org\>.
