By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
Help with an interesting Postgres question: Why isn't an Index Only Scan used on a partition accessed via the parent table?.
version |
---|
PostgreSQL 12.17 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-20), 64-bit |
SELECT 1
CREATE TABLE
INSERT 0 5
user_id | name |
---|---|
1 | Sam |
2 | Linda |
3 | George |
4 | Tom |
5 | Ritta |
SELECT 5
CREATE TABLE
CREATE INDEX
INSERT 0 4
f_id | user_id_1 | user_id_2 | status | friends_since |
---|---|---|---|---|
1 | 1 | 3 | P | 2023-11-27 |
2 | 2 | 5 | P | 2023-11-27 |
3 | 3 | 4 | P | 2023-11-27 |
4 | 5 | 1 | P | 2023-11-27 |
SELECT 4
ERROR: duplicate key value violates unique constraint "already_friends" DETAIL: Key (LEAST(user_id_1, user_id_2), GREATEST(user_id_1, user_id_2))=(1, 5) already exists.
ERROR: new row for relation "friends" violates check constraint "cannot_friend_self" DETAIL: Failing row contains (6, 3, 3, P, 2023-11-27).
INSERT 0 6
f_id | user_id_1 | user_id_2 | status | friends_since |
---|---|---|---|---|
7 | 1 | 2 | P | 2023-11-27 |
1 | 1 | 3 | P | 2023-11-27 |
9 | 1 | 4 | P | 2023-11-27 |
12 | 2 | 3 | P | 2023-11-27 |
13 | 2 | 4 | P | 2023-11-27 |
2 | 2 | 5 | P | 2023-11-27 |
3 | 3 | 4 | P | 2023-11-27 |
18 | 3 | 5 | P | 2023-11-27 |
22 | 4 | 5 | P | 2023-11-27 |
4 | 5 | 1 | P | 2023-11-27 |
SELECT 10
INSERT 0 2
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
user_name_in | friend_name_in |
---|---|
Donald | null |
Vladimir | null |
SELECT 2
make_friends |
---|
null |
SELECT 1
user_name | friends_name |
---|---|
Donald | Vladimir |
SELECT 1
user_name | friends_name |
---|---|
Vladimir | Donald |
SELECT 1
user_name | friends_name |
---|---|
Sam | George |
Sam | Linda |
Sam | Ritta |
Sam | Tom |
SELECT 4