setup
CREATE TABLE defaultdb.t1 (id INT8 PRIMARY KEY, name VARCHAR(256), money INT8)
----

build
CREATE INDEX id1 ON defaultdb.t1(id, name) STORING (money)
----
- [[IndexData:{DescID: 104, IndexID: 1}, PUBLIC], PUBLIC]
  {indexId: 1, tableId: 104}
- [[TableData:{DescID: 104, ReferencedDescID: 100}, PUBLIC], PUBLIC]
  {databaseId: 100, tableId: 104}
- [[SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1, RecreateSourceIndexID: 0}, PUBLIC], ABSENT]
  {indexId: 2, sourceIndexId: 1, tableId: 104, temporaryIndexId: 3}
- [[IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2}, PUBLIC], ABSENT]
  {columnId: 1, indexId: 2, tableId: 104}
- [[IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2}, PUBLIC], ABSENT]
  {columnId: 2, indexId: 2, ordinalInKind: 1, tableId: 104}
- [[IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2}, PUBLIC], ABSENT]
  {columnId: 3, indexId: 2, kind: STORED, tableId: 104}
- [[IndexData:{DescID: 104, IndexID: 2}, PUBLIC], ABSENT]
  {indexId: 2, tableId: 104}
- [[IndexName:{DescID: 104, Name: id1, IndexID: 2}, PUBLIC], ABSENT]
  {indexId: 2, name: id1, tableId: 104}
- [[TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1}, TRANSIENT_ABSENT], ABSENT]
  {constraintId: 1, indexId: 3, isUsingSecondaryEncoding: true, sourceIndexId: 1, tableId: 104}
- [[IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3}, TRANSIENT_ABSENT], ABSENT]
  {columnId: 1, indexId: 3, tableId: 104}
- [[IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3}, TRANSIENT_ABSENT], ABSENT]
  {columnId: 2, indexId: 3, ordinalInKind: 1, tableId: 104}
- [[IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3}, TRANSIENT_ABSENT], ABSENT]
  {columnId: 3, indexId: 3, kind: STORED, tableId: 104}
- [[IndexData:{DescID: 104, IndexID: 3}, TRANSIENT_ABSENT], ABSENT]
  {indexId: 3, tableId: 104}

build
CREATE INVERTED INDEX CONCURRENTLY id2
	ON defaultdb.t1 (id, name gin_trgm_ops)
----
- [[IndexData:{DescID: 104, IndexID: 1}, PUBLIC], PUBLIC]
  {indexId: 1, tableId: 104}
- [[TableData:{DescID: 104, ReferencedDescID: 100}, PUBLIC], PUBLIC]
  {databaseId: 100, tableId: 104}
- [[SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1, RecreateSourceIndexID: 0}, PUBLIC], ABSENT]
  {indexId: 2, isConcurrently: true, isInverted: true, sourceIndexId: 1, tableId: 104, temporaryIndexId: 3}
- [[IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2}, PUBLIC], ABSENT]
  {columnId: 1, indexId: 2, tableId: 104}
- [[IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2}, PUBLIC], ABSENT]
  {columnId: 2, indexId: 2, invertedKind: 1, ordinalInKind: 1, tableId: 104}
- [[IndexData:{DescID: 104, IndexID: 2}, PUBLIC], ABSENT]
  {indexId: 2, tableId: 104}
- [[IndexName:{DescID: 104, Name: id2, IndexID: 2}, PUBLIC], ABSENT]
  {indexId: 2, name: id2, tableId: 104}
- [[TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1}, TRANSIENT_ABSENT], ABSENT]
  {constraintId: 1, indexId: 3, isConcurrently: true, isInverted: true, isUsingSecondaryEncoding: true, sourceIndexId: 1, tableId: 104}
- [[IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3}, TRANSIENT_ABSENT], ABSENT]
  {columnId: 1, indexId: 3, tableId: 104}
- [[IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3}, TRANSIENT_ABSENT], ABSENT]
  {columnId: 2, indexId: 3, invertedKind: 1, ordinalInKind: 1, tableId: 104}
- [[IndexData:{DescID: 104, IndexID: 3}, TRANSIENT_ABSENT], ABSENT]
  {indexId: 3, tableId: 104}

build skip=sql_dependencies
CREATE INDEX id3
	ON defaultdb.t1 (id, name)
	STORING (money)
	PARTITION BY LIST (id) (PARTITION p1 VALUES IN (1))
----
- [[IndexData:{DescID: 104, IndexID: 1}, PUBLIC], PUBLIC]
  {indexId: 1, tableId: 104}
- [[TableData:{DescID: 104, ReferencedDescID: 100}, PUBLIC], PUBLIC]
  {databaseId: 100, tableId: 104}
- [[SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1, RecreateSourceIndexID: 0}, PUBLIC], ABSENT]
  {indexId: 2, sourceIndexId: 1, tableId: 104, temporaryIndexId: 3}
- [[IndexPartitioning:{DescID: 104, IndexID: 2}, PUBLIC], ABSENT]
  {indexId: 2, partitioning: {list: [{name: p1, subpartitioning: {}, values: [AwI=]}], numColumns: 1}, tableId: 104}
- [[IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2}, PUBLIC], ABSENT]
  {columnId: 1, indexId: 2, tableId: 104}
- [[IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2}, PUBLIC], ABSENT]
  {columnId: 2, indexId: 2, ordinalInKind: 1, tableId: 104}
- [[IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2}, PUBLIC], ABSENT]
  {columnId: 3, indexId: 2, kind: STORED, tableId: 104}
- [[IndexData:{DescID: 104, IndexID: 2}, PUBLIC], ABSENT]
  {indexId: 2, tableId: 104}
- [[IndexName:{DescID: 104, Name: id3, IndexID: 2}, PUBLIC], ABSENT]
  {indexId: 2, name: id3, tableId: 104}
- [[TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1}, TRANSIENT_ABSENT], ABSENT]
  {constraintId: 1, indexId: 3, isUsingSecondaryEncoding: true, sourceIndexId: 1, tableId: 104}
- [[IndexPartitioning:{DescID: 104, IndexID: 3}, TRANSIENT_ABSENT], ABSENT]
  {indexId: 3, partitioning: {list: [{name: p1, subpartitioning: {}, values: [AwI=]}], numColumns: 1}, tableId: 104}
- [[IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3}, TRANSIENT_ABSENT], ABSENT]
  {columnId: 1, indexId: 3, tableId: 104}
- [[IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3}, TRANSIENT_ABSENT], ABSENT]
  {columnId: 2, indexId: 3, ordinalInKind: 1, tableId: 104}
- [[IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3}, TRANSIENT_ABSENT], ABSENT]
  {columnId: 3, indexId: 3, kind: STORED, tableId: 104}
- [[IndexData:{DescID: 104, IndexID: 3}, TRANSIENT_ABSENT], ABSENT]
  {indexId: 3, tableId: 104}

build
CREATE INDEX id4
	ON defaultdb.t1 (id, name) USING HASH STORING (money) WITH (bucket_count=8)
----
- [[IndexData:{DescID: 104, IndexID: 1}, PUBLIC], PUBLIC]
  {indexId: 1, tableId: 104}
- [[TableData:{DescID: 104, ReferencedDescID: 100}, PUBLIC], PUBLIC]
  {databaseId: 100, tableId: 104}
- [[Column:{DescID: 104, ColumnID: 4}, PUBLIC], ABSENT]
  {columnId: 4, isHidden: true, tableId: 104}
- [[ColumnName:{DescID: 104, Name: crdb_internal_id_name_shard_8, ColumnID: 4}, PUBLIC], ABSENT]
  {columnId: 4, name: crdb_internal_id_name_shard_8, tableId: 104}
- [[ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4, TypeName: INT8}, PUBLIC], ABSENT]
  {columnId: 4, elementCreationMetadata: {in231OrLater: true, in243OrLater: true}, isVirtual: true, tableId: 104, type: {family: IntFamily, oid: 20, width: 64}, typeName: INT8}
- [[ColumnComputeExpression:{DescID: 104, ColumnID: 4, Usage: REGULAR}, PUBLIC], ABSENT]
  {columnId: 4, expr: 'mod(fnv32(md5(crdb_internal.datums_to_bytes(id, name))), 8:::INT8)', referencedColumnIds: [1, 2], tableId: 104}
- [[ColumnNotNull:{DescID: 104, ColumnID: 4, IndexID: 1}, PUBLIC], ABSENT]
  {columnId: 4, indexIdForValidation: 1, tableId: 104}
- [[CheckConstraint:{DescID: 104, IndexID: 1, ConstraintID: 2, ReferencedColumnIDs: [4]}, PUBLIC], ABSENT]
  {columnIds: [4], constraintId: 2, expr: 'crdb_internal_id_name_shard_8 IN (0,1,2,3,4,5,6,7)', fromHashShardedColumn: true, indexIdForValidation: 1, referencedColumnIds: [4], tableId: 104}
- [[ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_id_name_shard_8, ConstraintID: 2}, PUBLIC], ABSENT]
  {constraintId: 2, name: check_crdb_internal_id_name_shard_8, tableId: 104}
- [[SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1, RecreateSourceIndexID: 0}, PUBLIC], ABSENT]
  {indexId: 2, sharding: {columnNames: [id, name], isSharded: true, name: crdb_internal_id_name_shard_8, shardBuckets: 8}, sourceIndexId: 1, tableId: 104, temporaryIndexId: 3}
- [[IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2}, PUBLIC], ABSENT]
  {columnId: 4, indexId: 2, tableId: 104}
- [[IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2}, PUBLIC], ABSENT]
  {columnId: 1, indexId: 2, ordinalInKind: 1, tableId: 104}
- [[IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2}, PUBLIC], ABSENT]
  {columnId: 2, indexId: 2, ordinalInKind: 2, tableId: 104}
- [[IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2}, PUBLIC], ABSENT]
  {columnId: 3, indexId: 2, kind: STORED, tableId: 104}
- [[IndexData:{DescID: 104, IndexID: 2}, PUBLIC], ABSENT]
  {indexId: 2, tableId: 104}
- [[IndexName:{DescID: 104, Name: id4, IndexID: 2}, PUBLIC], ABSENT]
  {indexId: 2, name: id4, tableId: 104}
- [[TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1}, TRANSIENT_ABSENT], ABSENT]
  {constraintId: 1, indexId: 3, isUsingSecondaryEncoding: true, sharding: {columnNames: [id, name], isSharded: true, name: crdb_internal_id_name_shard_8, shardBuckets: 8}, sourceIndexId: 1, tableId: 104}
- [[IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 3}, TRANSIENT_ABSENT], ABSENT]
  {columnId: 4, indexId: 3, tableId: 104}
- [[IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3}, TRANSIENT_ABSENT], ABSENT]
  {columnId: 1, indexId: 3, ordinalInKind: 1, tableId: 104}
- [[IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3}, TRANSIENT_ABSENT], ABSENT]
  {columnId: 2, indexId: 3, ordinalInKind: 2, tableId: 104}
- [[IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3}, TRANSIENT_ABSENT], ABSENT]
  {columnId: 3, indexId: 3, kind: STORED, tableId: 104}
- [[IndexData:{DescID: 104, IndexID: 3}, TRANSIENT_ABSENT], ABSENT]
  {indexId: 3, tableId: 104}
