6 let mut test = Test::new("Add index");
10 name = "create_users_table"
27 test.second_migration(
29 name = "add_users_name_index"
41 test.intermediate(|db, _| {
42 // Ensure index is valid and ready
43 let (is_ready, is_valid): (bool, bool) = db
46 SELECT pg_index.indisready, pg_index.indisvalid
47 FROM pg_catalog.pg_index
48 JOIN pg_catalog.pg_class ON pg_index.indexrelid = pg_class.oid
49 WHERE pg_class.relname = 'name_idx'
55 .map(|row| (row.get("indisready"), row.get("indisvalid")))
58 assert!(is_ready, "expected index to be ready");
59 assert!(is_valid, "expected index to be valid");
62 test.after_completion(|db| {
63 // Ensure index is valid and ready
64 let (is_ready, is_valid): (bool, bool) = db
67 SELECT pg_index.indisready, pg_index.indisvalid
68 FROM pg_catalog.pg_index
69 JOIN pg_catalog.pg_class ON pg_index.indexrelid = pg_class.oid
70 WHERE pg_class.relname = 'name_idx'
76 .map(|row| (row.get("indisready"), row.get("indisvalid")))
79 assert!(is_ready, "expected index to be ready");
80 assert!(is_valid, "expected index to be valid");
87fn add_index_unique() {
88 let mut test = Test::new("Add unique index");
92 name = "create_users_table"
109 test.second_migration(
111 name = "add_name_index"
124 test.intermediate(|db, _| {
125 // Ensure index is valid, ready and unique
126 let (is_ready, is_valid, is_unique): (bool, bool, bool) = db
129 SELECT pg_index.indisready, pg_index.indisvalid, pg_index.indisunique
130 FROM pg_catalog.pg_index
131 JOIN pg_catalog.pg_class ON pg_index.indexrelid = pg_class.oid
132 WHERE pg_class.relname = 'name_idx'
140 row.get("indisready"),
141 row.get("indisvalid"),
142 row.get("indisunique"),
147 assert!(is_ready, "expected index to be ready");
148 assert!(is_valid, "expected index to be valid");
149 assert!(is_unique, "expected index to be unique");
156fn add_index_with_type() {
157 let mut test = Test::new("Add GIN index");
159 test.first_migration(
161 name = "create_users_table"
164 type = "create_table"
178 test.second_migration(
180 name = "add_data_index"
193 test.intermediate(|db, _| {
194 // Ensure index is valid, ready and has the right type
195 let (is_ready, is_valid, index_type): (bool, bool, String) = db
198 SELECT pg_index.indisready, pg_index.indisvalid, pg_am.amname
199 FROM pg_catalog.pg_index
200 JOIN pg_catalog.pg_class ON pg_index.indexrelid = pg_class.oid
201 JOIN pg_catalog.pg_am ON pg_class.relam = pg_am.oid
202 WHERE pg_class.relname = 'data_idx'
210 row.get("indisready"),
211 row.get("indisvalid"),
217 assert!(is_ready, "expected index to be ready");
218 assert!(is_valid, "expected index to be valid");
219 assert_eq!("gin", index_type, "expected index type to be GIN");
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list