228 lines
6.0 KiB
Rust
228 lines
6.0 KiB
Rust
use super::*;
|
|
use pretty_assertions::assert_eq;
|
|
|
|
#[test]
|
|
fn create_1() {
|
|
assert_eq!(
|
|
Index::create()
|
|
.name("idx-glyph-aspect")
|
|
.table(Glyph::Table)
|
|
.col(Glyph::Aspect)
|
|
.to_string(PostgresQueryBuilder),
|
|
r#"CREATE INDEX "idx-glyph-aspect" ON "glyph" ("aspect")"#
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn create_2() {
|
|
assert_eq!(
|
|
Index::create()
|
|
.unique()
|
|
.name("idx-glyph-aspect-image")
|
|
.table(Glyph::Table)
|
|
.col(Glyph::Aspect)
|
|
.col(Glyph::Image)
|
|
.to_string(PostgresQueryBuilder),
|
|
r#"CREATE UNIQUE INDEX "idx-glyph-aspect-image" ON "glyph" ("aspect", "image")"#
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn create_3() {
|
|
assert_eq!(
|
|
Index::create()
|
|
.full_text()
|
|
.name("idx-glyph-image")
|
|
.table(Glyph::Table)
|
|
.col(Glyph::Image)
|
|
.to_string(PostgresQueryBuilder),
|
|
r#"CREATE INDEX "idx-glyph-image" ON "glyph" USING GIN ("image")"#
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn create_4() {
|
|
assert_eq!(
|
|
Index::create()
|
|
.full_text()
|
|
.name("idx-glyph-image")
|
|
.concurrently()
|
|
.table(Glyph::Table)
|
|
.col(Glyph::Image)
|
|
.to_string(PostgresQueryBuilder),
|
|
r#"CREATE INDEX CONCURRENTLY "idx-glyph-image" ON "glyph" USING GIN ("image")"#
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn create_5() {
|
|
assert_eq!(
|
|
Index::create()
|
|
.if_not_exists()
|
|
.full_text()
|
|
.name("idx-glyph-image")
|
|
.table(Glyph::Table)
|
|
.col(Glyph::Image)
|
|
.to_string(PostgresQueryBuilder),
|
|
r#"CREATE INDEX IF NOT EXISTS "idx-glyph-image" ON "glyph" USING GIN ("image")"#
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn create_6() {
|
|
assert_eq!(
|
|
Index::create()
|
|
.unique()
|
|
.name("idx-glyph-aspect-image")
|
|
.table(("schema", Glyph::Table))
|
|
.col(Glyph::Aspect)
|
|
.col(Glyph::Image)
|
|
.to_string(PostgresQueryBuilder),
|
|
r#"CREATE UNIQUE INDEX "idx-glyph-aspect-image" ON "schema"."glyph" ("aspect", "image")"#
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn create_7() {
|
|
assert_eq!(
|
|
Index::create()
|
|
.unique()
|
|
.nulls_not_distinct()
|
|
.name("idx-glyph-aspect-image")
|
|
.table(Glyph::Table)
|
|
.col(Glyph::Aspect)
|
|
.col(Glyph::Image)
|
|
.to_string(PostgresQueryBuilder),
|
|
r#"CREATE UNIQUE INDEX "idx-glyph-aspect-image" ON "glyph" ("aspect", "image") NULLS NOT DISTINCT"#
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn create_8() {
|
|
assert_eq!(
|
|
Index::create()
|
|
.unique()
|
|
.nulls_not_distinct()
|
|
.name("partial-index-glyph-image-not-null")
|
|
.table(Glyph::Table)
|
|
.col(Glyph::Image)
|
|
.and_where(Expr::col(Glyph::Image).is_not_null())
|
|
.to_string(PostgresQueryBuilder),
|
|
r#"CREATE UNIQUE INDEX "partial-index-glyph-image-not-null" ON "glyph" ("image") NULLS NOT DISTINCT WHERE "image" IS NOT NULL"#
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn create_9() {
|
|
assert_eq!(
|
|
Index::create()
|
|
.name("idx-font-name-include-id-language")
|
|
.table(Font::Table)
|
|
.col(Font::Name)
|
|
.include(Font::Id)
|
|
.include(Font::Language)
|
|
.unique()
|
|
.nulls_not_distinct()
|
|
.to_string(PostgresQueryBuilder),
|
|
r#"CREATE UNIQUE INDEX "idx-font-name-include-id-language" ON "font" ("name") INCLUDE ("id", "language") NULLS NOT DISTINCT"#
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn create_10() {
|
|
assert_eq!(
|
|
Index::create()
|
|
.name("idx-character-area")
|
|
.table(Character::Table)
|
|
.col(Expr::col(Character::SizeH).mul(Expr::col(Character::SizeW)))
|
|
.to_string(PostgresQueryBuilder),
|
|
r#"CREATE INDEX "idx-character-area" ON "character" (("size_h" * "size_w"))"#
|
|
)
|
|
}
|
|
|
|
#[test]
|
|
fn create_11() {
|
|
assert_eq!(
|
|
Index::create()
|
|
.name("idx-character-character-area-desc-created_at")
|
|
.table(Character::Table)
|
|
.col(Func::upper(Expr::col(Character::Character)))
|
|
.col((
|
|
Expr::col(Character::SizeH).mul(Expr::col(Character::SizeW)),
|
|
IndexOrder::Desc,
|
|
))
|
|
.col(Character::CreatedAt)
|
|
.to_string(PostgresQueryBuilder),
|
|
r#"CREATE INDEX "idx-character-character-area-desc-created_at" ON "character" ((UPPER("character")), ("size_h" * "size_w") DESC, "created_at")"#
|
|
)
|
|
}
|
|
|
|
#[test]
|
|
fn create_12() {
|
|
assert_eq!(
|
|
Index::create()
|
|
.if_not_exists()
|
|
.name("idx-glyph-image")
|
|
.table(Glyph::Table)
|
|
.col(
|
|
Glyph::Image
|
|
.into_index_column()
|
|
.with_operator_class("text_pattern_ops")
|
|
)
|
|
.to_string(PostgresQueryBuilder),
|
|
r#"CREATE INDEX IF NOT EXISTS "idx-glyph-image" ON "glyph" ("image" text_pattern_ops)"#
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn drop_1() {
|
|
assert_eq!(
|
|
Index::drop()
|
|
.name("idx-glyph-aspect")
|
|
.to_string(PostgresQueryBuilder),
|
|
r#"DROP INDEX "idx-glyph-aspect""#
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn drop_2() {
|
|
assert_eq!(
|
|
Index::drop()
|
|
.name("idx-glyph-aspect")
|
|
.concurrently()
|
|
.to_string(PostgresQueryBuilder),
|
|
r#"DROP INDEX CONCURRENTLY "idx-glyph-aspect""#
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn drop_3() {
|
|
assert_eq!(
|
|
Index::drop()
|
|
.name("idx-glyph-aspect")
|
|
.table(("schema", Glyph::Table))
|
|
.to_string(PostgresQueryBuilder),
|
|
r#"DROP INDEX "schema"."idx-glyph-aspect""#
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn drop_4() {
|
|
assert_eq!(
|
|
Index::drop()
|
|
.name("idx-glyph-aspect")
|
|
.table(Glyph::Table)
|
|
.to_string(PostgresQueryBuilder),
|
|
r#"DROP INDEX "idx-glyph-aspect""#
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
#[should_panic(expected = "Not supported")]
|
|
fn drop_5() {
|
|
Index::drop()
|
|
.name("idx-glyph-aspect")
|
|
.table(("database", "schema", Glyph::Table))
|
|
.to_string(PostgresQueryBuilder);
|
|
}
|