pub struct CreateIndexStatement {Show 15 fields
pub name: String,
pub concurrently: bool,
pub key_order: IndexColumnOrder,
pub key_collation: Option<String>,
pub table: String,
pub column: String,
pub nulls_not_distinct: bool,
pub method: IndexMethod,
pub if_not_exists: bool,
pub included_columns: Vec<String>,
pub partial_predicate: Option<Expr>,
pub expression: Option<Expr>,
pub extra_columns: Vec<String>,
pub is_unique: bool,
pub opclass: Option<String>,
}Fields§
§name: String§concurrently: boolCREATE INDEX CONCURRENTLY. SPG builds indexes synchronously
either way, so this changes nothing about how the index is made
— it is carried because PG refuses the CONCURRENTLY form inside
a transaction block and accepts the plain one, and the engine
cannot tell them apart without it.
key_order: IndexColumnOrderv7.39 (round 537) — the leading key column’s ordering clause, which is the column SPG indexes.
key_collation: Option<String>v7.39 (round 538) — an explicit COLLATE on that key, as
written. SPG orders text by bytes, so honouring it changes
nothing; PG prints it, because an explicitly named collation and
the one a column inherits are different objects.
table: String§column: String§nulls_not_distinct: boolv7.39 (read01 round 52) — CREATE UNIQUE INDEX … NULLS NOT DISTINCT
(PG 15+). Default (false) is the SQL-standard NULLS DISTINCT, where
any NULL in the key exempts the row from the uniqueness check.
method: IndexMethodOptional USING <method> clause. v2.0 recognises hnsw (NSW
graph for vector kNN); unspecified is the default B-tree index.
if_not_exists: boolIF NOT EXISTS — engine returns CommandOk no-op when the
index name already exists, instead of raising DuplicateIndex.
included_columns: Vec<String>v6.8.0 — INCLUDE (col1, col2, …) columns. Identifies the
non-key columns the planner should treat as “covered” by
this index when checking whether a query can run as an
index-only scan. Empty when no INCLUDE clause was given.
partial_predicate: Option<Expr>v6.8.1 — WHERE <expr> partial-index predicate. Only rows
for which <expr> evaluates truthy enter the index;
queries whose WHERE clause’s canonical Display form
matches this expression’s Display form can be served by the
partial index. Stored as a parsed Expr so the engine
re-uses the existing evaluation path; storage persists the
Display form on the catalog snapshot.
expression: Option<Expr>v6.8.2 — expression-based index. When Some(expr), the
index key is the result of expr evaluated on each row
(e.g. CREATE INDEX … (lower(name))). The column
field still names the primary column the expression
touches so existing planner shortcuts that resolve a
column position stay valid. None = plain
column-reference index (the legacy shape).
extra_columns: Vec<String>v7.9.14 — extra column names after the leading column in a
multi-column CREATE INDEX … (a, b, c). mailrs F2. The
planner today still only uses the leading column for index
seeks; the extras are tracked verbatim so the same DDL
round-trips through WAL replay + catalog snapshot, and so
the engine can emit a clear warning at INDEX CREATE time
that only the leading column is currently honoured.
Composite BTree index keys land in v7.10.
is_unique: boolv7.9.29 — CREATE UNIQUE INDEX …. When true the engine
enforces uniqueness on the indexed key (combined with the
partial_predicate filter — only rows where the predicate
evaluates truthy enter the uniqueness check). Standard SQL
and PG’s canonical way to express conditional uniqueness.
mailrs K1.
opclass: Option<String>v7.15.0 — operator class on the leading column, when the
CREATE INDEX named one ((col vector_cosine_ops) shape).
Lower-cased. Most opclasses are still informational; the
engine routes on gin_trgm_ops specifically to build a
trigram-shingle GIN over a TEXT column, and otherwise
keeps the current “accepted and discarded” behaviour for
pg_dump compatibility.
Trait Implementations§
Source§impl Clone for CreateIndexStatement
impl Clone for CreateIndexStatement
Source§fn clone(&self) -> CreateIndexStatement
fn clone(&self) -> CreateIndexStatement
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more