From: Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> To: Alexander Korotkov <aekorotkov(at)gmail(dot)com> Cc: Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru>, jian he <jian(dot)universality(at)gmail(dot)com>, Robert Haas <robertmhaas(at)gmail(dot)com>, pgsql-hackers(at)postgresql(dot)org, Peter Geoghegan <pg(at)bowt(dot)ie>, "Finnerty, Jim" <jfinnert(at)amazon(dot)com>, Marcos Pegoraro <marcos(at)f10(dot)com(dot)br>, teodor(at)sigaev(dot)ru, Tomas Vondra <tomas(dot)vondra(at)enterprisedb(dot)com>, Peter Eisentraut <peter(at)eisentraut(dot)org>, Ranier Vilela <ranier(dot)vf(at)gmail(dot)com> Subject: Re: POC, WIP: OR-clause support for indexes Date: 2024-06-17 10:33:49 Message-ID: 7d5aed92-d4cc-4b76-8ae0-051d182c9eec@postgrespro.ru Views: Whole Thread |Raw Message |Download mbox |Resend email Thread: 2015-12-26 18:04:58 from Teodor Sigaev <teodor(at)sigaev(dot)ru>📎 2015-12-26 18:40:02 from Feng Tian <ftian(at)vitessedata(dot)com> 2015-12-26 19:25:19 from Teodor Sigaev <teodor(at)sigaev(dot)ru> 2016-01-11 03:16:23 from David Rowley <david(dot)rowley(at)2ndquadrant(dot)com> 2016-01-28 11:16:04 from Alvaro Herrera <alvherre(at)2ndquadrant(dot)com> 2016-02-29 18:04:38 from Teodor Sigaev <teodor(at)sigaev(dot)ru>📎 2016-03-10 13:04:37 from Tomas Vondra <tomas(dot)vondra(at)2ndquadrant(dot)com> 2016-03-17 17:19:55 from Teodor Sigaev <teodor(at)sigaev(dot)ru>📎 2016-03-20 00:44:37 from Tomas Vondra <tomas(dot)vondra(at)2ndquadrant(dot)com> 2016-03-25 15:13:26 from David Steele <david(at)pgmasters(dot)net> 2016-03-29 14:01:21 from David Steele <david(at)pgmasters(dot)net> 2016-03-18 16:38:05 from Teodor Sigaev <teodor(at)sigaev(dot)ru>📎 2016-03-18 23:46:26 from Andreas Karlsson <andreas(at)proxel(dot)se> 2022-12-28 04:19:27 from Andrey Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru>📎 2023-01-14 15:13:54 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2023-01-14 15:45:27 from Marcos Pegoraro <marcos(at)f10(dot)com(dot)br> 2023-06-26 01:47:43 from Alena Rybakina <lena(dot)ribackina(at)yandex(dot)ru>📎 2023-06-26 02:38:14 from Alena Rybakina <lena(dot)ribackina(at)yandex(dot)ru>📎 2023-06-26 03:18:37 from Peter Geoghegan <pg(at)bowt(dot)ie>📎 2023-06-27 13:19:48 from Alena Rybakina <lena(dot)ribackina(at)yandex(dot)ru>📎 2023-06-27 15:49:20 from Alena Rybakina <lena(dot)ribackina(at)yandex(dot)ru>📎 2023-06-27 19:50:37 from Peter Geoghegan <pg(at)bowt(dot)ie> 2023-06-29 09:32:51 from Alena Rybakina <lena(dot)ribackina(at)yandex(dot)ru>📎 2023-06-29 09:55:58 from Alena Rybakina <lena(dot)ribackina(at)yandex(dot)ru> 2023-06-29 11:23:22 from Ranier Vilela <ranier(dot)vf(at)gmail(dot)com> 2023-06-29 15:16:50 from Alena Rybakina <lena(dot)ribackina(at)yandex(dot)ru> 2023-07-05 19:39:08 from Alena Rybakina <lena(dot)ribackina(at)yandex(dot)ru>📎 2023-07-05 20:06:26 from Alena Rybakina <lena(dot)ribackina(at)yandex(dot)ru>📎 2023-07-06 10:20:46 from Andrey Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru>📎 2023-07-07 08:20:20 from Alena Rybakina <lena(dot)ribackina(at)yandex(dot)ru>📎 2023-07-10 03:12:23 from Andrey Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru>📎 2023-07-10 08:38:17 from Alena Rybakina <lena(dot)ribackina(at)yandex(dot)ru>📎 2023-07-10 12:03:59 from Ranier Vilela <ranier(dot)vf(at)gmail(dot)com> 2023-07-10 12:15:51 from Ranier Vilela <ranier(dot)vf(at)gmail(dot)com> 2023-07-11 12:29:21 from Alena Rybakina <lena(dot)ribackina(at)yandex(dot)ru>📎 2023-07-11 13:29:14 from Ranier Vilela <ranier(dot)vf(at)gmail(dot)com> 2023-07-11 14:13:05 from Alena Rybakina <lena(dot)ribackina(at)yandex(dot)ru>📎 2023-07-11 08:47:45 from Andrey Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru>📎 2023-07-11 18:11:31 from Alena Rybakina <lena(dot)ribackina(at)yandex(dot)ru>📎 2023-07-18 14:25:28 from Alena Rybakina <lena(dot)ribackina(at)yandex(dot)ru>📎 2023-07-07 02:43:26 from Andrey Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru>📎 2023-07-25 23:47:41 from Peter Geoghegan <pg(at)bowt(dot)ie> 2023-07-26 22:30:00 from Alena Rybakina <lena(dot)ribackina(at)yandex(dot)ru> 2023-07-29 16:15:10 from Peter Geoghegan <pg(at)bowt(dot)ie> 2023-07-31 16:38:23 from Alena Rybakina <lena(dot)ribackina(at)yandex(dot)ru> 2023-08-01 19:42:18 from Peter Geoghegan <pg(at)bowt(dot)ie> 2023-08-01 20:11:07 from "Finnerty, Jim" <jfinnert(at)amazon(dot)com> 2023-08-01 21:16:09 from Peter Geoghegan <pg(at)bowt(dot)ie> 2023-08-02 15:58:37 from Alena Rybakina <lena(dot)ribackina(at)yandex(dot)ru>📎 2023-08-02 18:58:11 from Peter Geoghegan <pg(at)bowt(dot)ie> 2023-08-03 19:47:44 from Alena Rybakina <lena(dot)ribackina(at)yandex(dot)ru> 2023-08-06 02:01:14 from Peter Geoghegan <pg(at)bowt(dot)ie> 2023-08-06 21:43:08 from Peter Geoghegan <pg(at)bowt(dot)ie> 2023-08-09 11:33:31 from Alena Rybakina <lena(dot)ribackina(at)yandex(dot)ru> 2023-08-17 10:08:03 from "a(dot)rybakina" <a(dot)rybakina(at)postgrespro(dot)ru>📎 2023-08-17 10:20:33 from "a(dot)rybakina" <a(dot)rybakina(at)postgrespro(dot)ru>📎 2023-08-20 22:11:24 from Peter Geoghegan <pg(at)bowt(dot)ie> 2023-08-20 22:26:32 from Peter Geoghegan <pg(at)bowt(dot)ie> 2023-08-29 03:37:51 from "a(dot)rybakina" <a(dot)rybakina(at)postgrespro(dot)ru> 2023-09-20 09:37:05 from Peter Eisentraut <peter(at)eisentraut(dot)org> 2023-09-20 12:06:35 from "a(dot)rybakina" <a(dot)rybakina(at)postgrespro(dot)ru> 2023-09-26 09:08:52 from "a(dot)rybakina" <a(dot)rybakina(at)postgrespro(dot)ru>📎 2023-09-26 09:13:29 from "a(dot)rybakina" <a(dot)rybakina(at)postgrespro(dot)ru>📎 2023-09-26 09:21:10 from "a(dot)rybakina" <a(dot)rybakina(at)postgrespro(dot)ru>📎 2023-09-26 09:39:02 from "a(dot)rybakina" <a(dot)rybakina(at)postgrespro(dot)ru> 2023-09-29 17:35:13 from "a(dot)rybakina" <a(dot)rybakina(at)postgrespro(dot)ru>📎 2023-10-04 19:19:59 from "a(dot)rybakina" <a(dot)rybakina(at)postgrespro(dot)ru>📎 2023-10-14 22:34:51 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2023-10-15 23:21:39 from "a(dot)rybakina" <a(dot)rybakina(at)postgrespro(dot)ru> 2023-10-25 11:04:24 from "a(dot)rybakina" <a(dot)rybakina(at)postgrespro(dot)ru>📎 2023-10-25 19:54:12 from Robert Haas <robertmhaas(at)gmail(dot)com> 2023-10-26 19:47:20 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2023-10-26 19:58:47 from Robert Haas <robertmhaas(at)gmail(dot)com> 2023-10-26 20:41:54 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2023-10-26 21:04:44 from Peter Geoghegan <pg(at)bowt(dot)ie> 2023-10-29 16:41:06 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2023-10-30 13:40:11 from Robert Haas <robertmhaas(at)gmail(dot)com> 2023-10-30 14:06:41 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2023-11-06 13:51:45 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru>📎 2023-11-10 09:20:57 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru>📎 2023-11-13 19:48:23 from "a(dot)rybakina" <a(dot)rybakina(at)postgrespro(dot)ru>📎 2023-11-25 01:13:47 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2023-11-25 11:10:18 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2023-11-25 16:13:18 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2023-11-28 03:52:20 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru>📎 2023-11-20 08:52:08 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru>📎 2023-11-20 09:29:47 from "a(dot)rybakina" <a(dot)rybakina(at)postgrespro(dot)ru> 2023-11-21 00:50:15 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru>📎 2023-11-21 11:31:11 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru>📎 2023-11-23 09:23:20 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru>📎 2023-11-24 03:30:39 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru>📎 2023-11-24 05:05:14 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2023-11-25 01:23:38 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2023-11-27 08:02:09 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru>📎 2023-11-27 21:03:50 from Robert Haas <robertmhaas(at)gmail(dot)com> 2023-11-27 22:15:48 from Peter Geoghegan <pg(at)bowt(dot)ie> 2023-11-28 00:06:35 from Matthias van de Meent <boekewurm+postgres(at)gmail(dot)com> 2023-11-28 00:07:18 from Robert Haas <robertmhaas(at)gmail(dot)com> 2023-11-28 01:07:46 from Peter Geoghegan <pg(at)bowt(dot)ie> 2023-11-28 03:56:34 from Peter Geoghegan <pg(at)bowt(dot)ie> 2023-11-28 12:52:02 from Robert Haas <robertmhaas(at)gmail(dot)com> 2023-11-28 11:46:51 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru>📎 2023-11-30 08:00:28 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2023-11-30 08:05:31 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru>📎 2023-11-30 08:30:28 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru> 2023-11-30 09:00:41 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2023-11-30 10:57:26 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru>📎 2023-12-04 06:50:34 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru>📎 2023-12-05 10:55:00 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru>📎 2024-01-27 02:58:53 from vignesh C <vignesh21(at)gmail(dot)com> 2024-01-30 14:15:20 from jian he <jian(dot)universality(at)gmail(dot)com> 2024-01-31 02:55:56 from jian he <jian(dot)universality(at)gmail(dot)com> 2024-01-31 10:15:00 from jian he <jian(dot)universality(at)gmail(dot)com>📎 2024-01-31 11:10:44 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2024-02-01 05:00:00 from jian he <jian(dot)universality(at)gmail(dot)com> 2024-02-02 19:06:17 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru>📎 2024-02-08 05:34:38 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru>📎 2024-02-10 05:00:00 from jian he <jian(dot)universality(at)gmail(dot)com>📎 2024-02-12 05:52:13 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru>📎 2024-02-12 08:55:40 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2024-02-12 09:01:50 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru> 2024-02-12 10:51:45 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2024-02-13 10:43:21 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru>📎 2024-02-13 00:00:00 from jian he <jian(dot)universality(at)gmail(dot)com> 2024-02-13 10:03:20 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru> 2024-02-14 03:21:41 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru> 2024-02-16 00:00:00 from jian he <jian(dot)universality(at)gmail(dot)com>📎 2024-02-16 05:32:36 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru> 2024-02-16 12:54:16 from jian he <jian(dot)universality(at)gmail(dot)com> 2024-02-19 08:35:19 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru>📎 2024-02-19 12:53:26 from Ranier Vilela <ranier(dot)vf(at)gmail(dot)com> 2024-02-20 03:18:23 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru>📎 2024-02-20 11:17:07 from Ranier Vilela <ranier(dot)vf(at)gmail(dot)com> 2024-02-24 11:28:01 from jian he <jian(dot)universality(at)gmail(dot)com>📎 2024-02-26 04:10:47 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru>📎 2024-02-28 04:18:59 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru> 2024-02-28 10:07:21 from jian he <jian(dot)universality(at)gmail(dot)com> 2024-02-28 10:27:41 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2024-02-29 08:59:23 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru>📎 2024-03-01 15:33:05 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2024-03-03 09:26:19 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2024-03-03 09:48:19 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2024-03-04 04:31:03 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru> 2024-03-04 02:26:48 from jian he <jian(dot)universality(at)gmail(dot)com>📎 2024-03-05 05:30:25 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru> 2024-03-05 07:59:16 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru>📎 2024-03-07 14:51:43 from Alexander Korotkov <aekorotkov(at)gmail(dot)com>📎 2024-03-07 20:28:59 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru>📎 2024-03-09 00:00:00 from jian he <jian(dot)universality(at)gmail(dot)com> 2024-03-11 05:13:02 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru> 2024-03-11 11:31:12 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2024-03-11 12:43:39 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru> 2024-03-12 15:20:12 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2024-03-13 05:52:50 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru>📎 2024-03-13 11:05:41 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2024-03-13 12:16:09 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru> 2024-03-14 09:31:58 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2024-03-14 10:11:15 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru>📎 2024-03-14 10:39:42 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2024-03-15 05:05:02 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru>📎 2024-03-19 05:16:59 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru>📎 2024-03-28 13:54:57 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2024-04-01 06:37:58 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru>📎 2024-04-07 22:34:37 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2024-04-08 00:38:36 from Justin Pryzby <pryzby(at)telsasoft(dot)com> 2024-06-14 12:00:33 from Alexander Korotkov <aekorotkov(at)gmail(dot)com>📎 2024-06-17 04:01:54 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru>📎 2024-06-17 12:14:27 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2024-06-21 17:05:24 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2024-06-21 20:35:44 from Robert Haas <robertmhaas(at)gmail(dot)com> 2024-06-21 22:52:02 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2024-06-24 15:28:13 from Robert Haas <robertmhaas(at)gmail(dot)com> 2024-06-24 16:08:59 from Peter Geoghegan <pg(at)bowt(dot)ie> 2024-06-24 17:29:18 from Robert Haas <robertmhaas(at)gmail(dot)com> 2024-06-24 17:46:42 from Peter Geoghegan <pg(at)bowt(dot)ie> 2024-06-24 17:54:10 from Peter Geoghegan <pg(at)bowt(dot)ie> 2024-06-24 18:28:02 from Robert Haas <robertmhaas(at)gmail(dot)com> 2024-06-24 19:02:47 from Peter Geoghegan <pg(at)bowt(dot)ie> 2024-06-25 23:13:53 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2024-06-26 20:19:01 from Robert Haas <robertmhaas(at)gmail(dot)com> 2024-06-27 19:56:56 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2024-06-27 20:06:49 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2024-07-10 23:30:22 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru>📎 2024-06-21 21:07:56 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2024-06-17 10:33:49 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2024-06-17 12:11:09 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2024-06-17 15:21:09 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2024-06-24 20:33:29 from Nikolay Shaplov <dhyan(at)nataraj(dot)su> 2024-06-24 20:51:56 from Nikolay Shaplov <dhyan(at)nataraj(dot)su> 2024-06-26 17:41:13 from Nikolay Shaplov <dhyan(at)nataraj(dot)su> 2024-07-09 01:57:15 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru>📎 2024-07-11 16:17:42 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru>📎 2024-07-11 16:29:02 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2024-07-17 00:03:03 from Alexander Korotkov <aekorotkov(at)gmail(dot)com>📎 2024-07-17 12:53:24 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2024-07-17 19:36:19 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2024-07-21 08:17:01 from Nikolay Shaplov <dhyan(at)nataraj(dot)su> 2024-07-21 22:53:51 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2024-07-22 00:52:43 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2024-07-22 00:54:43 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2024-07-25 14:04:44 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru>📎 2024-07-27 10:56:40 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2024-07-28 09:59:32 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2024-07-29 02:36:57 from Alexander Korotkov <aekorotkov(at)gmail(dot)com>📎 2024-08-05 19:48:53 from Alexander Korotkov <aekorotkov(at)gmail(dot)com>📎 2024-08-05 20:24:47 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru>📎 2024-08-07 01:11:08 from Alexander Korotkov <aekorotkov(at)gmail(dot)com>📎 2024-08-07 23:53:35 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru>📎 2024-08-15 19:13:32 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru>📎 2024-08-21 00:17:40 from Alexander Korotkov <aekorotkov(at)gmail(dot)com>📎 2024-08-21 13:08:14 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru> 2024-08-21 14:52:03 from Alexander Korotkov <aekorotkov(at)gmail(dot)com>📎 2024-08-23 10:23:49 from Andrei Lepikhov <lepihov(at)gmail(dot)com> 2024-08-23 12:58:46 from Alexander Korotkov <aekorotkov(at)gmail(dot)com>📎 2024-08-23 14:06:04 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2024-08-23 16:38:36 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2024-08-24 13:08:51 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2024-08-24 13:23:18 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2024-08-24 13:36:24 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2024-08-25 14:16:07 from Andrei Lepikhov <lepihov(at)gmail(dot)com> 2024-08-26 03:12:00 from jian he <jian(dot)universality(at)gmail(dot)com> 2024-08-26 10:41:01 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru>📎 2024-08-27 06:53:00 from jian he <jian(dot)universality(at)gmail(dot)com> 2024-09-03 09:52:55 from Andrei Lepikhov <lepihov(at)gmail(dot)com>📎 2024-09-04 15:31:36 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru>📎 2024-09-04 15:42:17 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru>📎 2024-09-09 10:36:54 from Alexander Korotkov <aekorotkov(at)gmail(dot)com>📎 2024-09-16 02:53:47 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2024-09-16 12:44:12 from Andrei Lepikhov <lepihov(at)gmail(dot)com> 2024-09-23 11:10:59 from Alexander Korotkov <aekorotkov(at)gmail(dot)com>📎 2024-10-01 10:25:27 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2024-10-02 06:45:11 from Andrei Lepikhov <lepihov(at)gmail(dot)com> 2024-10-03 20:15:30 from Peter Geoghegan <pg(at)bowt(dot)ie> 2024-10-04 03:31:22 from Andrei Lepikhov <lepihov(at)gmail(dot)com> 2024-10-04 11:45:18 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2024-10-04 17:43:52 from Peter Geoghegan <pg(at)bowt(dot)ie> 2024-10-04 18:00:00 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2024-10-04 18:19:54 from Peter Geoghegan <pg(at)bowt(dot)ie> 2024-10-04 18:40:30 from Robert Haas <robertmhaas(at)gmail(dot)com> 2024-10-04 22:31:48 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2024-10-07 15:11:28 from Peter Geoghegan <pg(at)bowt(dot)ie> 2024-10-07 16:02:10 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> 2024-10-07 16:12:04 from Peter Geoghegan <pg(at)bowt(dot)ie> 2024-10-07 16:41:12 from Peter Geoghegan <pg(at)bowt(dot)ie> 2024-10-07 16:43:36 from Robert Haas <robertmhaas(at)gmail(dot)com> 2024-10-04 22:29:55 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2024-10-04 15:00:23 from Peter Geoghegan <pg(at)bowt(dot)ie> 2024-10-09 03:54:54 from Andrei Lepikhov <lepihov(at)gmail(dot)com> 2024-10-04 09:19:03 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2024-10-04 12:31:02 from Robert Haas <robertmhaas(at)gmail(dot)com> 2024-10-04 14:20:20 from Peter Geoghegan <pg(at)bowt(dot)ie> 2024-10-04 14:24:15 from Robert Haas <robertmhaas(at)gmail(dot)com> 2024-10-04 16:45:52 from Peter Geoghegan <pg(at)bowt(dot)ie> 2024-10-04 13:34:23 from Robert Haas <robertmhaas(at)gmail(dot)com> 2024-10-06 11:25:38 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2024-10-07 14:06:16 from jian he <jian(dot)universality(at)gmail(dot)com> 2024-10-08 05:11:00 from jian he <jian(dot)universality(at)gmail(dot)com> 2024-10-08 14:00:08 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2024-10-08 14:03:29 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2024-10-09 09:31:49 from Andrei Lepikhov <lepihov(at)gmail(dot)com>📎 2024-10-11 13:20:32 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2024-10-11 16:15:54 from Alexander Korotkov <aekorotkov(at)gmail(dot)com>📎 2024-10-12 14:25:45 from Alexander Korotkov <aekorotkov(at)gmail(dot)com>📎 2024-10-16 04:22:20 from Andrei Lepikhov <lepihov(at)gmail(dot)com>📎 2024-10-16 20:39:01 from Alexander Korotkov <aekorotkov(at)gmail(dot)com>📎 2024-10-17 02:09:29 from Andrei Lepikhov <lepihov(at)gmail(dot)com> 2024-10-28 07:19:00 from jian he <jian(dot)universality(at)gmail(dot)com> 2024-10-28 16:55:35 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru>📎 2024-11-15 13:27:43 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2024-11-17 23:19:49 from Alexander Korotkov <aekorotkov(at)gmail(dot)com>📎 2024-11-20 06:19:58 from Andrei Lepikhov <lepihov(at)gmail(dot)com> 2024-11-21 06:34:15 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2024-11-25 02:59:20 from jian he <jian(dot)universality(at)gmail(dot)com> 2024-11-25 06:27:57 from Richard Guo <guofenglinux(at)gmail(dot)com> 2024-11-25 07:08:41 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2024-11-25 07:21:11 from Andrei Lepikhov <lepihov(at)gmail(dot)com> 2024-11-28 18:00:01 from Alexander Lakhin <exclusion(at)gmail(dot)com> 2024-11-28 19:03:36 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru>📎 2024-11-28 19:08:51 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru>📎 2024-11-28 19:28:04 from Ranier Vilela <ranier(dot)vf(at)gmail(dot)com> 2024-11-28 19:33:23 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru>📎 2024-11-29 00:04:05 from Alexander Korotkov <aekorotkov(at)gmail(dot)com>📎 2024-11-29 05:10:42 from Andrei Lepikhov <lepihov(at)gmail(dot)com> 2024-11-29 05:51:30 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2024-11-29 07:54:02 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2025-01-12 18:39:03 from Alexander Korotkov <aekorotkov(at)gmail(dot)com>📎 2025-01-12 20:38:35 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2025-01-13 00:47:56 from Yura Sokolov <y(dot)sokolov(at)postgrespro(dot)ru>📎 2025-01-13 01:06:42 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2025-01-13 03:39:23 from Andrei Lepikhov <lepihov(at)gmail(dot)com>📎 2025-01-15 08:24:27 from Andrei Lepikhov <lepihov(at)gmail(dot)com> 2025-01-25 05:04:57 from Alexander Korotkov <aekorotkov(at)gmail(dot)com>📎 2025-01-27 08:52:16 from Andrei Lepikhov <lepihov(at)gmail(dot)com> 2025-01-27 09:50:09 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2025-01-28 04:36:47 from Andrei Lepikhov <lepihov(at)gmail(dot)com> 2025-01-28 08:42:38 from Andrei Lepikhov <lepihov(at)gmail(dot)com> 2025-01-30 13:22:55 from Pavel Borisov <pashkin(dot)elfe(at)gmail(dot)com> 2025-02-02 17:57:55 from Alexander Korotkov <aekorotkov(at)gmail(dot)com>📎 2025-02-03 06:24:04 from Andrei Lepikhov <lepihov(at)gmail(dot)com> 2025-02-02 17:58:27 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2025-01-31 14:31:44 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2025-02-02 18:00:06 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2025-02-03 10:22:20 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2025-02-03 11:32:10 from Alexander Korotkov <aekorotkov(at)gmail(dot)com>📎 2025-02-03 11:54:47 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2025-02-03 12:16:03 from Pavel Borisov <pashkin(dot)elfe(at)gmail(dot)com> 2025-03-24 10:10:00 from Andrei Lepikhov <lepihov(at)gmail(dot)com>📎 2025-03-24 10:46:07 from Pavel Borisov <pashkin(dot)elfe(at)gmail(dot)com> 2025-03-24 12:46:03 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2025-03-27 23:18:19 from Alexander Korotkov <aekorotkov(at)gmail(dot)com>📎 2025-03-28 10:47:56 from Pavel Borisov <pashkin(dot)elfe(at)gmail(dot)com> 2025-03-28 11:32:51 from Andrei Lepikhov <lepihov(at)gmail(dot)com> 2025-03-28 11:59:30 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2025-03-28 12:15:35 from Andrei Lepikhov <lepihov(at)gmail(dot)com> 2025-03-28 12:23:24 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2025-03-28 12:31:31 from Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> 2024-11-15 13:12:49 from Alexander Korotkov <aekorotkov(at)gmail(dot)com> 2024-02-29 01:50:06 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru> 2024-02-20 04:03:31 from jian he <jian(dot)universality(at)gmail(dot)com> 2024-02-20 04:29:36 from Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru> 2023-10-30 16:01:29 from Peter Geoghegan <pg(at)bowt(dot)ie> 2023-08-20 22:42:39 from Peter Geoghegan <pg(at)bowt(dot)ie> Lists: pgsql-hackers
Hi, thank you for your work with this subject!
On 14.06.2024 15:00, Alexander Korotkov wrote: > On Mon, Apr 8, 2024 at 1:34 AM Alexander Korotkov<aekorotkov(at)gmail(dot)com> wrote: >> I've revised the patch. Did some beautification, improvements for >> documentation, commit messages etc. >> >> I've pushed the 0001 patch without 0002. I think 0001 is good by >> itself given that there is the or_to_any_transform_limit GUC option. >> The more similar OR clauses are here the more likely grouping them >> into SOAP will be a win. But I've changed the default value to 5. >> This will make it less invasive and affect only queries with obvious >> repeating patterns. That also reduced the changes in the regression >> tests expected outputs. >> >> Regarding 0002, it seems questionable since it could cause a planning >> slowdown for SAOP's with large arrays. Also, it might reduce the win >> of transformation made by 0001. So, I think we should skip it for >> now. > The patch has been reverted from pg17. Let me propose a new version > for pg18 based on the valuable feedback from Tom Lane [1][2]. > > * The transformation is moved to the stage of adding restrictinfos to > the base relation (in particular add_base_clause_to_rel()). This > leads to interesting consequences. While this allows IndexScans to > use transformed clauses, BitmapScans and SeqScans seem unaffected. > Therefore, I wasn't able to find a planning regression. > * As soon as there is no planning regression anymore, I've removed > or_to_any_transform_limit GUC, which was a source of critics. > * Now, not only Consts allowed in the SAOP's list, but also Params. > * The criticized hash based on expression jumbling has been removed. > Now, the plain list is used instead. > * OrClauseGroup now gets a legal node tag. That allows to mix it in > the list with other nodes without hacks. > > I think this patch shouldn't be as good as before for optimizing > performance of large OR lists, given that BitmapScans and SeqScans > still deal with ORs. However, it allows IndexScans to handle more, > doesn't seem to cause planning regression and therefore introduce no > extra GUC. Overall, this seems like a good compromise. > > This patch could use some polishing, but I'd like to first hear some > feedback on general design. > > Links >1.https://www.postgresql.org/message-id/3604469.1712628736%40sss.pgh.pa.us >2.https://www.postgresql.org/message-id/3649287.1712642139%40sss.pgh.pa.us
Inoticedthat7librarieshave beenaddedtosrc/backend/optimizer/plan/initsplan.c,andas faras Iremember,TomLanehas alreadyexpresseddoubtsaboutthe approachthatrequiresaddinga largenumberof libraries[0], but I'm afraid I'm out of ideas about alternative approach.
In addition,Icheckedthe fixinthe previouscasesthatyouwroteearlier[1]andnoticedthatSeqScancontinuesto generate,unfortunately,withoutconvertingexpressions:
with patch:
create table test as (select (random()*10)::int x, (random()*1000) y from generate_series(1,1000000) i); create index test_x_1_y on test (y) where x = 1; create index test_x_2_y on test (y) where x = 2; vacuum analyze test; SELECT 1000000 CREATE INDEX CREATE INDEX VACUUM alena(at)postgres=# explain select * from test where (x = 1 or x = 2) and y = 100; QUERY PLAN -------------------------------------------------------------------------- Gather (cost=1000.00..12690.10 rows=1 width=12) Workers Planned: 2 -> Parallel Seq Scan on test (cost=0.00..11690.00 rows=1 width=12) Filter: (((x = 1) OR (x = 2)) AND (y = '100'::double precision)) (4 rows) alena(at)postgres=# set enable_seqscan =off; SET alena(at)postgres=# explain select * from test where (x = 1 or x = 2) and y = 100; QUERY PLAN ------------------------------------------------------------------------- Seq Scan on test (cost=10000000000.00..10000020440.00 rows=1 width=12) Filter: (((x = 1) OR (x = 2)) AND (y = '100'::double precision)) (2 rows)
without patch:
-------------------------------------------------------------------------------------------------------------- Bitmap Heap Scan on test (cost=8.60..12.62 rows=1 width=12) Recheck Cond: (((y = '100'::double precision) AND (x = 1)) OR ((y = '100'::double precision) AND (x = 2))) -> BitmapOr (cost=8.60..8.60 rows=1 width=0) -> Bitmap Index Scan on test_x_1_y (cost=0.00..4.30 rows=1 width=0) Index Cond: (y = '100'::double precision) -> Bitmap Index Scan on test_x_2_y (cost=0.00..4.30 rows=1 width=0) Index Cond: (y = '100'::double precision) (7 rows)
[0]https://www.postgresql.org/message-id/3604469.1712628736%40sss.pgh.pa.us
[1]https://www.postgresql.org/message-id/CAPpHfduJtO0s9E%3DSHUTzrCD88BH0eik0UNog1_q3XBF2wLmH6g%40mail.gmail.com
-- Regards, Alena Rybakina PostgresProfessional:http://www.postgrespro.com The Russian Postgres Company