public inbox for [email protected]help / color / mirror / Atom feed
Re: TR: pgadmin not displaying data from postgresql_fdw 16+ messages / 8 participants [nested] [flat]
* Re: TR: pgadmin not displaying data from postgresql_fdw @ 2018-09-03 14:06 Alvaro Herrera <[email protected]> 0 siblings, 0 replies; 16+ messages in thread From: Alvaro Herrera @ 2018-09-03 14:06 UTC (permalink / raw) To: Olivier Leprêtre <[email protected]>; +Cc: [email protected] On 2018-Aug-31, Olivier Leprêtre wrote: > Hi, > > > > Please find a question that didn't get an answer in the pgsql-sql list. I > hope I'll get an answer here. This seems a question for pgadmin-users instead: > So everything seems fine, except the pgadmin tree which does not display any > table under the fdw_prod01 branch, even if it's possible to query it's > tables with sql. -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services ^ permalink raw reply [nested|flat] 16+ messages in thread
* [PATCH v5 07/12] consistent language: to which @ 2019-05-21 00:02 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 16+ messages in thread From: Justin Pryzby @ 2019-05-21 00:02 UTC (permalink / raw) XXX: should have trailing period in tables? --- doc/src/sgml/monitoring.sgml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml index cba36c0..df5df62 100644 --- a/doc/src/sgml/monitoring.sgml +++ b/doc/src/sgml/monitoring.sgml @@ -602,12 +602,12 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser <row> <entry><structfield>datid</structfield></entry> <entry><type>oid</type></entry> - <entry>OID of the database this backend is connected to</entry> + <entry>OID of the database to which this backend is connected</entry> </row> <row> <entry><structfield>datname</structfield></entry> <entry><type>name</type></entry> - <entry>Name of the database this backend is connected to</entry> + <entry>Name of the database to which this backend is connected</entry> </row> <row> <entry><structfield>pid</structfield></entry> @@ -2099,7 +2099,7 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i <entry><type>text</type></entry> <entry> Host of the <productname>PostgreSQL</productname> instance - this WAL receiver is connected to. This can be a host name, + to which this WAL receiver is connected. This can be a host name, an IP address, or a directory path if the connection is via Unix socket. (The path case can be distinguished because it will always be an absolute path, beginning with <literal>/</literal>.) @@ -2110,7 +2110,7 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i <entry><type>integer</type></entry> <entry> Port number of the <productname>PostgreSQL</productname> instance - this WAL receiver is connected to. + to which this WAL receiver is connected. </entry> </row> <row> @@ -3375,7 +3375,7 @@ SELECT pg_stat_get_backend_pid(s.backendid) AS pid, <row> <entry><literal><function>pg_stat_get_backend_dbid(integer)</function></literal></entry> <entry><type>oid</type></entry> - <entry>OID of the database this backend is connected to</entry> + <entry>OID of the database to which this backend is connected</entry> </row> <row> -- 2.7.4 --FkmkrVfFsRoUs1wW Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v5-0008-Consistent-language-contains.patch" ^ permalink raw reply [nested|flat] 16+ messages in thread
* [PATCH v17 1/3] Remember PK oid for partitioned tables even when it's invalid @ 2023-07-12 16:57 Alvaro Herrera <[email protected]> 0 siblings, 0 replies; 16+ messages in thread From: Alvaro Herrera @ 2023-07-12 16:57 UTC (permalink / raw) --- src/backend/utils/cache/relcache.c | 34 ++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c index 8e08ca1c68..7234cb3da6 100644 --- a/src/backend/utils/cache/relcache.c +++ b/src/backend/utils/cache/relcache.c @@ -4789,19 +4789,41 @@ RelationGetIndexList(Relation relation) result = lappend_oid(result, index->indexrelid); /* - * Invalid, non-unique, non-immediate or predicate indexes aren't - * interesting for either oid indexes or replication identity indexes, - * so don't check them. + * Non-unique, non-immediate or predicate indexes aren't interesting + * for either oid indexes or replication identity indexes, so don't + * check them. */ - if (!index->indisvalid || !index->indisunique || + if (!index->indisunique || !index->indimmediate || !heap_attisnull(htup, Anum_pg_index_indpred, NULL)) continue; - /* remember primary key index if any */ - if (index->indisprimary) + /* + * Remember primary key index, if any. We do this only if the index + * is valid; but if the table is partitioned, then we do it even if + * it's invalid. + * + * The reason for returning invalid primary keys for foreign tables is + * because of pg_dump of NOT NULL constraints, and the fact that PKs + * remain marked invalid until the partitions' PKs are attached to it. + * If we make rd_pkindex invalid, then the attnotnull flag is reset + * after the PK is created, which causes the ALTER INDEX ATTACH + * PARTITION to fail with 'column ... is not marked NOT NULL'. With + * this, dropconstraint_internal() will believe that the columns must + * not have attnotnull reset, so the PKs-on-partitions can be attached + * correctly, until finally the PK-on-parent is marked valid. + * + * Also, this doesn't harm anything, because rd_pkindex is not a + * "real" index anyway, but a RELKIND_PARTITIONED_INDEX. + */ + if (index->indisprimary && + (index->indisvalid || + relation->rd_rel->relkind == RELKIND_PARTITIONED_TABLE)) pkeyIndex = index->indexrelid; + if (!index->indisvalid) + continue; + /* remember explicitly chosen replica index */ if (index->indisreplident) candidateIndex = index->indexrelid; -- 2.39.2 --u5bqxbslpyv5rwih Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v17-0002-Add-pg_constraint-rows-for-NOT-NULL-constraints.patch" ^ permalink raw reply [nested|flat] 16+ messages in thread
* [PATCH v17 1/3] Remember PK oid for partitioned tables even when it's invalid @ 2023-07-12 16:57 Alvaro Herrera <[email protected]> 0 siblings, 0 replies; 16+ messages in thread From: Alvaro Herrera @ 2023-07-12 16:57 UTC (permalink / raw) --- src/backend/utils/cache/relcache.c | 34 ++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c index 8e08ca1c68..7234cb3da6 100644 --- a/src/backend/utils/cache/relcache.c +++ b/src/backend/utils/cache/relcache.c @@ -4789,19 +4789,41 @@ RelationGetIndexList(Relation relation) result = lappend_oid(result, index->indexrelid); /* - * Invalid, non-unique, non-immediate or predicate indexes aren't - * interesting for either oid indexes or replication identity indexes, - * so don't check them. + * Non-unique, non-immediate or predicate indexes aren't interesting + * for either oid indexes or replication identity indexes, so don't + * check them. */ - if (!index->indisvalid || !index->indisunique || + if (!index->indisunique || !index->indimmediate || !heap_attisnull(htup, Anum_pg_index_indpred, NULL)) continue; - /* remember primary key index if any */ - if (index->indisprimary) + /* + * Remember primary key index, if any. We do this only if the index + * is valid; but if the table is partitioned, then we do it even if + * it's invalid. + * + * The reason for returning invalid primary keys for foreign tables is + * because of pg_dump of NOT NULL constraints, and the fact that PKs + * remain marked invalid until the partitions' PKs are attached to it. + * If we make rd_pkindex invalid, then the attnotnull flag is reset + * after the PK is created, which causes the ALTER INDEX ATTACH + * PARTITION to fail with 'column ... is not marked NOT NULL'. With + * this, dropconstraint_internal() will believe that the columns must + * not have attnotnull reset, so the PKs-on-partitions can be attached + * correctly, until finally the PK-on-parent is marked valid. + * + * Also, this doesn't harm anything, because rd_pkindex is not a + * "real" index anyway, but a RELKIND_PARTITIONED_INDEX. + */ + if (index->indisprimary && + (index->indisvalid || + relation->rd_rel->relkind == RELKIND_PARTITIONED_TABLE)) pkeyIndex = index->indexrelid; + if (!index->indisvalid) + continue; + /* remember explicitly chosen replica index */ if (index->indisreplident) candidateIndex = index->indexrelid; -- 2.39.2 --u5bqxbslpyv5rwih Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v17-0002-Add-pg_constraint-rows-for-NOT-NULL-constraints.patch" ^ permalink raw reply [nested|flat] 16+ messages in thread
* [PATCH v15 1/2] Remember PK oid for partitioned tables even when it's invalid @ 2023-07-12 16:57 Alvaro Herrera <[email protected]> 0 siblings, 0 replies; 16+ messages in thread From: Alvaro Herrera @ 2023-07-12 16:57 UTC (permalink / raw) --- src/backend/utils/cache/relcache.c | 34 ++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c index 8e28335915..7c3bfde571 100644 --- a/src/backend/utils/cache/relcache.c +++ b/src/backend/utils/cache/relcache.c @@ -4789,19 +4789,41 @@ RelationGetIndexList(Relation relation) result = lappend_oid(result, index->indexrelid); /* - * Invalid, non-unique, non-immediate or predicate indexes aren't - * interesting for either oid indexes or replication identity indexes, - * so don't check them. + * Non-unique, non-immediate or predicate indexes aren't interesting + * for either oid indexes or replication identity indexes, so don't + * check them. */ - if (!index->indisvalid || !index->indisunique || + if (!index->indisunique || !index->indimmediate || !heap_attisnull(htup, Anum_pg_index_indpred, NULL)) continue; - /* remember primary key index if any */ - if (index->indisprimary) + /* + * Remember primary key index, if any. We do this only if the index + * is valid; but if the table is partitioned, then we do it even if + * it's invalid. + * + * The reason for returning invalid primary keys for foreign tables is + * because of pg_dump of NOT NULL constraints, and the fact that PKs + * remain marked invalid until the partitions' PKs are attached to it. + * If we make rd_pkindex invalid, then the attnotnull flag is reset + * after the PK is created, which causes the ALTER INDEX ATTACH + * PARTITION to fail with 'column ... is not marked NOT NULL'. With + * this, dropconstraint_internal() will believe that the columns must + * not have attnotnull reset, so the PKs-on-partitions can be attached + * correctly, until finally the PK-on-parent is marked valid. + * + * Also, this doesn't harm anything, because rd_pkindex is not a + * "real" index anyway, but a RELKIND_PARTITIONED_INDEX. + */ + if (index->indisprimary && + (index->indisvalid || + relation->rd_rel->relkind == RELKIND_PARTITIONED_TABLE)) pkeyIndex = index->indexrelid; + if (!index->indisvalid) + continue; + /* remember explicitly chosen replica index */ if (index->indisreplident) candidateIndex = index->indexrelid; -- 2.39.2 --icqk4nrzalktuh5g Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v15-0002-Add-pg_constraint-rows-for-NOT-NULL-constraints.patch" ^ permalink raw reply [nested|flat] 16+ messages in thread
* [PATCH v13 1/2] Remember PK oid for partitioned tables even when it's invalid @ 2023-07-12 16:57 Alvaro Herrera <[email protected]> 0 siblings, 0 replies; 16+ messages in thread From: Alvaro Herrera @ 2023-07-12 16:57 UTC (permalink / raw) --- src/backend/utils/cache/relcache.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c index 8a08463c2b..b5a99b4edc 100644 --- a/src/backend/utils/cache/relcache.c +++ b/src/backend/utils/cache/relcache.c @@ -4788,19 +4788,28 @@ RelationGetIndexList(Relation relation) result = lappend_oid(result, index->indexrelid); /* - * Invalid, non-unique, non-immediate or predicate indexes aren't - * interesting for either oid indexes or replication identity indexes, - * so don't check them. + * Non-unique, non-immediate or predicate indexes aren't interesting + * for either oid indexes or replication identity indexes, so don't + * check them. */ - if (!index->indisvalid || !index->indisunique || + if (!index->indisunique || !index->indimmediate || !heap_attisnull(htup, Anum_pg_index_indpred, NULL)) continue; - /* remember primary key index if any */ - if (index->indisprimary) + /* + * Remember primary key index, if any. We do this only if the index + * is valid; but if the table is partitioned, then we do it even if + * it's invalid. XXX does this cause other problems? + */ + if (index->indisprimary && + (index->indisvalid || + relation->rd_rel->relkind == RELKIND_PARTITIONED_TABLE)) pkeyIndex = index->indexrelid; + if (!index->indisvalid) + continue; + /* remember explicitly chosen replica index */ if (index->indisreplident) candidateIndex = index->indexrelid; -- 2.39.2 --57gotikuhuh4be5c Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v13-0002-Add-pg_constraint-rows-for-NOT-NULL-constraints.patch" ^ permalink raw reply [nested|flat] 16+ messages in thread
* [PATCH v14 1/2] Remember PK oid for partitioned tables even when it's invalid @ 2023-07-12 16:57 Alvaro Herrera <[email protected]> 0 siblings, 0 replies; 16+ messages in thread From: Alvaro Herrera @ 2023-07-12 16:57 UTC (permalink / raw) --- src/backend/utils/cache/relcache.c | 34 ++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c index 8e28335915..7c3bfde571 100644 --- a/src/backend/utils/cache/relcache.c +++ b/src/backend/utils/cache/relcache.c @@ -4789,19 +4789,41 @@ RelationGetIndexList(Relation relation) result = lappend_oid(result, index->indexrelid); /* - * Invalid, non-unique, non-immediate or predicate indexes aren't - * interesting for either oid indexes or replication identity indexes, - * so don't check them. + * Non-unique, non-immediate or predicate indexes aren't interesting + * for either oid indexes or replication identity indexes, so don't + * check them. */ - if (!index->indisvalid || !index->indisunique || + if (!index->indisunique || !index->indimmediate || !heap_attisnull(htup, Anum_pg_index_indpred, NULL)) continue; - /* remember primary key index if any */ - if (index->indisprimary) + /* + * Remember primary key index, if any. We do this only if the index + * is valid; but if the table is partitioned, then we do it even if + * it's invalid. + * + * The reason for returning invalid primary keys for foreign tables is + * because of pg_dump of NOT NULL constraints, and the fact that PKs + * remain marked invalid until the partitions' PKs are attached to it. + * If we make rd_pkindex invalid, then the attnotnull flag is reset + * after the PK is created, which causes the ALTER INDEX ATTACH + * PARTITION to fail with 'column ... is not marked NOT NULL'. With + * this, dropconstraint_internal() will believe that the columns must + * not have attnotnull reset, so the PKs-on-partitions can be attached + * correctly, until finally the PK-on-parent is marked valid. + * + * Also, this doesn't harm anything, because rd_pkindex is not a + * "real" index anyway, but a RELKIND_PARTITIONED_INDEX. + */ + if (index->indisprimary && + (index->indisvalid || + relation->rd_rel->relkind == RELKIND_PARTITIONED_TABLE)) pkeyIndex = index->indexrelid; + if (!index->indisvalid) + continue; + /* remember explicitly chosen replica index */ if (index->indisreplident) candidateIndex = index->indexrelid; -- 2.39.2 --6opfqulj2xnxqhkn Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v14-0002-Add-pg_constraint-rows-for-NOT-NULL-constraints.patch" ^ permalink raw reply [nested|flat] 16+ messages in thread
* [PATCH v15 1/2] Remember PK oid for partitioned tables even when it's invalid @ 2023-07-12 16:57 Alvaro Herrera <[email protected]> 0 siblings, 0 replies; 16+ messages in thread From: Alvaro Herrera @ 2023-07-12 16:57 UTC (permalink / raw) --- src/backend/utils/cache/relcache.c | 34 ++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c index 8e28335915..7c3bfde571 100644 --- a/src/backend/utils/cache/relcache.c +++ b/src/backend/utils/cache/relcache.c @@ -4789,19 +4789,41 @@ RelationGetIndexList(Relation relation) result = lappend_oid(result, index->indexrelid); /* - * Invalid, non-unique, non-immediate or predicate indexes aren't - * interesting for either oid indexes or replication identity indexes, - * so don't check them. + * Non-unique, non-immediate or predicate indexes aren't interesting + * for either oid indexes or replication identity indexes, so don't + * check them. */ - if (!index->indisvalid || !index->indisunique || + if (!index->indisunique || !index->indimmediate || !heap_attisnull(htup, Anum_pg_index_indpred, NULL)) continue; - /* remember primary key index if any */ - if (index->indisprimary) + /* + * Remember primary key index, if any. We do this only if the index + * is valid; but if the table is partitioned, then we do it even if + * it's invalid. + * + * The reason for returning invalid primary keys for foreign tables is + * because of pg_dump of NOT NULL constraints, and the fact that PKs + * remain marked invalid until the partitions' PKs are attached to it. + * If we make rd_pkindex invalid, then the attnotnull flag is reset + * after the PK is created, which causes the ALTER INDEX ATTACH + * PARTITION to fail with 'column ... is not marked NOT NULL'. With + * this, dropconstraint_internal() will believe that the columns must + * not have attnotnull reset, so the PKs-on-partitions can be attached + * correctly, until finally the PK-on-parent is marked valid. + * + * Also, this doesn't harm anything, because rd_pkindex is not a + * "real" index anyway, but a RELKIND_PARTITIONED_INDEX. + */ + if (index->indisprimary && + (index->indisvalid || + relation->rd_rel->relkind == RELKIND_PARTITIONED_TABLE)) pkeyIndex = index->indexrelid; + if (!index->indisvalid) + continue; + /* remember explicitly chosen replica index */ if (index->indisreplident) candidateIndex = index->indexrelid; -- 2.39.2 --icqk4nrzalktuh5g Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v15-0002-Add-pg_constraint-rows-for-NOT-NULL-constraints.patch" ^ permalink raw reply [nested|flat] 16+ messages in thread
* [PATCH v16 1/3] Remember PK oid for partitioned tables even when it's invalid @ 2023-07-12 16:57 Alvaro Herrera <[email protected]> 0 siblings, 0 replies; 16+ messages in thread From: Alvaro Herrera @ 2023-07-12 16:57 UTC (permalink / raw) --- src/backend/utils/cache/relcache.c | 34 ++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c index 8e28335915..7c3bfde571 100644 --- a/src/backend/utils/cache/relcache.c +++ b/src/backend/utils/cache/relcache.c @@ -4789,19 +4789,41 @@ RelationGetIndexList(Relation relation) result = lappend_oid(result, index->indexrelid); /* - * Invalid, non-unique, non-immediate or predicate indexes aren't - * interesting for either oid indexes or replication identity indexes, - * so don't check them. + * Non-unique, non-immediate or predicate indexes aren't interesting + * for either oid indexes or replication identity indexes, so don't + * check them. */ - if (!index->indisvalid || !index->indisunique || + if (!index->indisunique || !index->indimmediate || !heap_attisnull(htup, Anum_pg_index_indpred, NULL)) continue; - /* remember primary key index if any */ - if (index->indisprimary) + /* + * Remember primary key index, if any. We do this only if the index + * is valid; but if the table is partitioned, then we do it even if + * it's invalid. + * + * The reason for returning invalid primary keys for foreign tables is + * because of pg_dump of NOT NULL constraints, and the fact that PKs + * remain marked invalid until the partitions' PKs are attached to it. + * If we make rd_pkindex invalid, then the attnotnull flag is reset + * after the PK is created, which causes the ALTER INDEX ATTACH + * PARTITION to fail with 'column ... is not marked NOT NULL'. With + * this, dropconstraint_internal() will believe that the columns must + * not have attnotnull reset, so the PKs-on-partitions can be attached + * correctly, until finally the PK-on-parent is marked valid. + * + * Also, this doesn't harm anything, because rd_pkindex is not a + * "real" index anyway, but a RELKIND_PARTITIONED_INDEX. + */ + if (index->indisprimary && + (index->indisvalid || + relation->rd_rel->relkind == RELKIND_PARTITIONED_TABLE)) pkeyIndex = index->indexrelid; + if (!index->indisvalid) + continue; + /* remember explicitly chosen replica index */ if (index->indisreplident) candidateIndex = index->indexrelid; -- 2.39.2 --arayebouu3vhq6bx Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v16-0002-Add-pg_constraint-rows-for-NOT-NULL-constraints.patch" ^ permalink raw reply [nested|flat] 16+ messages in thread
* [PATCH v17 1/3] Remember PK oid for partitioned tables even when it's invalid @ 2023-07-12 16:57 Alvaro Herrera <[email protected]> 0 siblings, 0 replies; 16+ messages in thread From: Alvaro Herrera @ 2023-07-12 16:57 UTC (permalink / raw) --- src/backend/utils/cache/relcache.c | 34 ++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c index 8e08ca1c68..7234cb3da6 100644 --- a/src/backend/utils/cache/relcache.c +++ b/src/backend/utils/cache/relcache.c @@ -4789,19 +4789,41 @@ RelationGetIndexList(Relation relation) result = lappend_oid(result, index->indexrelid); /* - * Invalid, non-unique, non-immediate or predicate indexes aren't - * interesting for either oid indexes or replication identity indexes, - * so don't check them. + * Non-unique, non-immediate or predicate indexes aren't interesting + * for either oid indexes or replication identity indexes, so don't + * check them. */ - if (!index->indisvalid || !index->indisunique || + if (!index->indisunique || !index->indimmediate || !heap_attisnull(htup, Anum_pg_index_indpred, NULL)) continue; - /* remember primary key index if any */ - if (index->indisprimary) + /* + * Remember primary key index, if any. We do this only if the index + * is valid; but if the table is partitioned, then we do it even if + * it's invalid. + * + * The reason for returning invalid primary keys for foreign tables is + * because of pg_dump of NOT NULL constraints, and the fact that PKs + * remain marked invalid until the partitions' PKs are attached to it. + * If we make rd_pkindex invalid, then the attnotnull flag is reset + * after the PK is created, which causes the ALTER INDEX ATTACH + * PARTITION to fail with 'column ... is not marked NOT NULL'. With + * this, dropconstraint_internal() will believe that the columns must + * not have attnotnull reset, so the PKs-on-partitions can be attached + * correctly, until finally the PK-on-parent is marked valid. + * + * Also, this doesn't harm anything, because rd_pkindex is not a + * "real" index anyway, but a RELKIND_PARTITIONED_INDEX. + */ + if (index->indisprimary && + (index->indisvalid || + relation->rd_rel->relkind == RELKIND_PARTITIONED_TABLE)) pkeyIndex = index->indexrelid; + if (!index->indisvalid) + continue; + /* remember explicitly chosen replica index */ if (index->indisreplident) candidateIndex = index->indexrelid; -- 2.39.2 --u5bqxbslpyv5rwih Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v17-0002-Add-pg_constraint-rows-for-NOT-NULL-constraints.patch" ^ permalink raw reply [nested|flat] 16+ messages in thread
* Avoid switching between system-user and system-username in the doc @ 2024-02-19 08:52 Bertrand Drouvot <[email protected]> 0 siblings, 1 reply; 16+ messages in thread From: Bertrand Drouvot @ 2024-02-19 08:52 UTC (permalink / raw) To: [email protected] Hi hackers, While working on [1] it has been mentioned that this page https://www.postgresql.org/docs/current/auth-username-maps.html is switching between system-user and system-username. Please find attached a tiny patch to clean that up. [1]: https://www.postgresql.org/message-id/CAOBaU_Yp08MQOK7_k4QVyxL6sf7TURGpjX3tn1Z%2BWxJo2x7%2BGQ%40mail... Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com Attachments: [text/x-diff] v1-0001-Use-system-username-instead-of-system-user-in-doc.patch (1.4K, ../../[email protected]/2-v1-0001-Use-system-username-instead-of-system-user-in-doc.patch) download | inline diff: From 379473a4d7172042107ef587e430f168bc133ad5 Mon Sep 17 00:00:00 2001 From: Bertrand Drouvot <[email protected]> Date: Mon, 19 Feb 2024 08:31:45 +0000 Subject: [PATCH v1] Use system-username instead of system-user in documentation system-username was used most of the time but system-user was used too. Using system-username everywhere for consistency. --- doc/src/sgml/client-auth.sgml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 100.0% doc/src/sgml/ diff --git a/doc/src/sgml/client-auth.sgml b/doc/src/sgml/client-auth.sgml index 56747c0e36..0b7100d9d8 100644 --- a/doc/src/sgml/client-auth.sgml +++ b/doc/src/sgml/client-auth.sgml @@ -965,8 +965,8 @@ local db1,db2,@demodbs all md5 external authentication system with the database user name that the user has requested to connect as. The value <literal>all</literal> can be used as the <replaceable>database-username</replaceable> to specify - that if the <replaceable>system-user</replaceable> matches, then this user - is allowed to log in as any of the existing database users. Quoting + that if the <replaceable>system-username</replaceable> matches, then this + user is allowed to log in as any of the existing database users. Quoting <literal>all</literal> makes the keyword lose its special meaning. </para> <para> -- 2.34.1 ^ permalink raw reply [nested|flat] 16+ messages in thread
* Re: Avoid switching between system-user and system-username in the doc @ 2024-02-19 17:00 Jelte Fennema-Nio <[email protected]> parent: Bertrand Drouvot <[email protected]> 0 siblings, 1 reply; 16+ messages in thread From: Jelte Fennema-Nio @ 2024-02-19 17:00 UTC (permalink / raw) To: Bertrand Drouvot <[email protected]>; +Cc: [email protected] On Mon, 19 Feb 2024 at 09:52, Bertrand Drouvot <[email protected]> wrote: > Please find attached a tiny patch to clean that up. LGTM ^ permalink raw reply [nested|flat] 16+ messages in thread
* Re: Avoid switching between system-user and system-username in the doc @ 2024-02-19 23:06 Michael Paquier <[email protected]> parent: Jelte Fennema-Nio <[email protected]> 0 siblings, 0 replies; 16+ messages in thread From: Michael Paquier @ 2024-02-19 23:06 UTC (permalink / raw) To: Jelte Fennema-Nio <[email protected]>; +Cc: Bertrand Drouvot <[email protected]>; [email protected] On Mon, Feb 19, 2024 at 06:00:11PM +0100, Jelte Fennema-Nio wrote: > On Mon, 19 Feb 2024 at 09:52, Bertrand Drouvot > <[email protected]> wrote: >> Please find attached a tiny patch to clean that up. > > LGTM Looks like a mistake from me in efb6f4a4f9b6, will fix and backpatch for consistency. -- Michael Attachments: [application/pgp-signature] signature.asc (833B, ../../[email protected]/2-signature.asc) download ^ permalink raw reply [nested|flat] 16+ messages in thread
* [PATCH v20 8/8] Allow to print raw parse tree. @ 2024-05-24 02:26 Tatsuo Ishii <[email protected]> 0 siblings, 0 replies; 16+ messages in thread From: Tatsuo Ishii @ 2024-05-24 02:26 UTC (permalink / raw) --- src/backend/tcop/postgres.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c index 45a3794b8e..ecbf8e7999 100644 --- a/src/backend/tcop/postgres.c +++ b/src/backend/tcop/postgres.c @@ -653,6 +653,10 @@ pg_parse_query(const char *query_string) } #endif + if (Debug_print_parse) + elog_node_display(LOG, "raw parse tree", raw_parsetree_list, + Debug_pretty_print); + TRACE_POSTGRESQL_QUERY_PARSE_DONE(query_string); return raw_parsetree_list; -- 2.25.1 ----Next_Part(Fri_May_24_11_39_19_2024_763)---- ^ permalink raw reply [nested|flat] 16+ messages in thread
* [PATCH v3a] edit comments and stuff @ 2026-01-05 14:26 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 16+ messages in thread From: Álvaro Herrera @ 2026-01-05 14:26 UTC (permalink / raw) --- src/backend/utils/sort/tuplesort.c | 2 +- src/include/executor/instrument_node.h | 146 ++++++++++++------------- src/include/utils/tuplesort.h | 15 --- 3 files changed, 73 insertions(+), 90 deletions(-) diff --git a/src/backend/utils/sort/tuplesort.c b/src/backend/utils/sort/tuplesort.c index 473d31188b8..9e4cd816137 100644 --- a/src/backend/utils/sort/tuplesort.c +++ b/src/backend/utils/sort/tuplesort.c @@ -200,7 +200,7 @@ struct Tuplesortstate int64 maxSpace; /* maximum amount of space occupied among sort * of groups, either in-memory or on-disk */ bool isMaxSpaceDisk; /* true when maxSpace is value for on-disk - * space, false when its value for in-memory + * space, false when it's value for in-memory * space */ TupSortStatus maxSpaceStatus; /* sort status when maxSpace was reached */ LogicalTapeSet *tapeset; /* logtape.c object for tapes in a temp file */ diff --git a/src/include/executor/instrument_node.h b/src/include/executor/instrument_node.h index 75520008c36..49627eb4a27 100644 --- a/src/include/executor/instrument_node.h +++ b/src/include/executor/instrument_node.h @@ -1,8 +1,12 @@ /*------------------------------------------------------------------------- * * instrument_node.h - * Definitions for node-specific instrumentation + * Definitions for node-specific support for parallel query instrumentation * + * These structs purposely contain no pointers because they are copied + * across processes during parallel query execution. Each worker copies its + * individual information into the container struct at executor shutdown time, + * to allow the leader to display the information in EXPLAIN ANALYZE. * * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California @@ -15,32 +19,30 @@ #define INSTRUMENT_NODE_H - /* --------------------- - * per-worker aggregate information + * Instrumentation information for aggregate function execution * --------------------- */ typedef struct AggregateInstrumentation { - Size hash_mem_peak; /* peak hash table memory usage */ - uint64 hash_disk_used; /*kB of disk space used */ - int hash_batches_used; /* batches used during entire execution */ + Size hash_mem_peak; /* peak hash table memory usage */ + uint64 hash_disk_used; /* kB of disk space used */ + int hash_batches_used; /* batches used during entire execution */ } AggregateInstrumentation; -/* ---------------- - * Shared memory container for per-worker aggregate information - * ---------------- +/* + * Shared memory container for per-worker aggregate information */ typedef struct SharedAggInfo { - int num_workers; + int num_workers; AggregateInstrumentation sinstrument[FLEXIBLE_ARRAY_MEMBER]; } SharedAggInfo; -/* - * Struct for statistics maintained by amgettuple and amgetbitmap - * - * Note: IndexScanInstrumentation can't contain any pointers, since it is - * copied into a SharedIndexScanInstrumentation during parallel scans + + +/* --------------------- + * Instrumentation information for indexscans (amgettuple and amgetbitmap) + * --------------------- */ typedef struct IndexScanInstrumentation { @@ -49,7 +51,7 @@ typedef struct IndexScanInstrumentation } IndexScanInstrumentation; /* - * Struct for every worker's IndexScanInstrumentation, stored in shared memory + * Shared memory container for per-worker information */ typedef struct SharedIndexScanInstrumentation { @@ -57,11 +59,13 @@ typedef struct SharedIndexScanInstrumentation IndexScanInstrumentation winstrument[FLEXIBLE_ARRAY_MEMBER]; } SharedIndexScanInstrumentation; -/* - * BitmapHeapScanInstrumentation information + +/* --------------------- + * Instrumentation information for bitmap heap scans * * exact_pages total number of exact pages retrieved * lossy_pages total number of lossy pages retrieved + * --------------------- */ typedef struct BitmapHeapScanInstrumentation { @@ -70,11 +74,7 @@ typedef struct BitmapHeapScanInstrumentation } BitmapHeapScanInstrumentation; /* - * Instrumentation data for a parallel bitmap heap scan. - * - * A shared memory struct that each parallel worker copies its - * BitmapHeapScanInstrumentation information into at executor shutdown to - * allow the leader to display the information in EXPLAIN ANALYZE. + * Shared memory container for per-worker information */ typedef struct SharedBitmapHeapInstrumentation { @@ -83,25 +83,27 @@ typedef struct SharedBitmapHeapInstrumentation } SharedBitmapHeapInstrumentation; +/* --------------------- + * Instrumentation information for Memoize + * --------------------- + */ typedef struct MemoizeInstrumentation { - uint64 cache_hits; /* number of rescans where we've found the - * scan parameters values to be cached */ - uint64 cache_misses; /* number of rescans where we've not found the - * scan parameters values to be cached */ - uint64 cache_evictions; /* number of cache entries removed due to - * the need to free memory */ - uint64 cache_overflows; /* number of times we've had to bypass the - * cache when filling it due to not being - * able to free enough space to store the - * current scan's tuples */ - uint64 mem_peak; /* peak memory usage in bytes */ - + uint64 cache_hits; /* number of rescans where we've found the + * scan parameters values to be cached */ + uint64 cache_misses; /* number of rescans where we've not found the + * scan parameters values to be cached */ + uint64 cache_evictions; /* number of cache entries removed due to + * the need to free memory */ + uint64 cache_overflows; /* number of times we've had to bypass the + * cache when filling it due to not being + * able to free enough space to store the + * current scan's tuples */ + uint64 mem_peak; /* peak memory usage in bytes */ } MemoizeInstrumentation; -/* ---------------- - * Shared memory container for per-worker memoize information - * ---------------- +/* + * Shared memory container for per-worker memoize information */ typedef struct SharedMemoizeInfo { @@ -110,27 +112,25 @@ typedef struct SharedMemoizeInfo } SharedMemoizeInfo; -/* - * Data structures for reporting sort statistics. Note that - * TuplesortInstrumentation can't contain any pointers because we - * sometimes put it in shared memory. - * - * The parallel-sort infrastructure relies on having a zero TuplesortMethod - * to indicate that a worker never did anything, so we assign zero to - * SORT_TYPE_STILL_IN_PROGRESS. The other values of this enum can be - * OR'ed together to represent a situation where different workers used - * different methods, so we need a separate bit for each one. Keep the - * NUM_TUPLESORTMETHODS constant in sync with the number of bits! +/* --------------------- + * Instrumentation information for Sorts. + * --------------------- */ -#define NUM_TUPLESORTMETHODS 4 - typedef enum { SORT_SPACE_TYPE_DISK, SORT_SPACE_TYPE_MEMORY, } TuplesortSpaceType; +/* + * The parallel-sort infrastructure relies on having a zero TuplesortMethod + * to indicate that a worker never did anything, so we assign zero to + * SORT_TYPE_STILL_IN_PROGRESS. The other values of this enum can be + * OR'ed together to represent a situation where different workers used + * different methods, so we need a separate bit for each one. Keep the + * NUM_TUPLESORTMETHODS constant in sync with the number of bits! + */ typedef enum { SORT_TYPE_STILL_IN_PROGRESS = 0, @@ -139,40 +139,40 @@ typedef enum SORT_TYPE_EXTERNAL_SORT = 1 << 2, SORT_TYPE_EXTERNAL_MERGE = 1 << 3 } TuplesortMethod; +#define NUM_TUPLESORTMETHODS 4 typedef struct TuplesortInstrumentation { - TuplesortMethod sortMethod; /* sort algorithm used */ + TuplesortMethod sortMethod; /* sort algorithm used */ TuplesortSpaceType spaceType; /* type of space spaceUsed represents */ - int64 spaceUsed; /* space consumption, in kB */ + int64 spaceUsed; /* space consumption, in kB */ } TuplesortInstrumentation; -/* ---------------- - * Shared memory container for per-worker sort information - * ---------------- +/* + * Shared memory container for per-worker sort information */ typedef struct SharedSortInfo { - int num_workers; + int num_workers; TuplesortInstrumentation sinstrument[FLEXIBLE_ARRAY_MEMBER]; } SharedSortInfo; -/* ---------------- - * Values displayed by EXPLAIN ANALYZE - * ---------------- + +/* --------------------- + * Instrumentation information for nodeHash.c + * --------------------- */ typedef struct HashInstrumentation { - int nbuckets; /* number of buckets at end of execution */ - int nbuckets_original; /* planned number of buckets */ - int nbatch; /* number of batches at end of execution */ - int nbatch_original; /* planned number of batches */ - Size space_peak; /* peak memory usage in bytes */ + int nbuckets; /* number of buckets at end of execution */ + int nbuckets_original; /* planned number of buckets */ + int nbatch; /* number of batches at end of execution */ + int nbatch_original; /* planned number of batches */ + Size space_peak; /* peak memory usage in bytes */ } HashInstrumentation; -/* ---------------- - * Shared memory container for per-worker hash information - * ---------------- +/* + * Shared memory container for per-worker information */ typedef struct SharedHashInfo { @@ -180,9 +180,10 @@ typedef struct SharedHashInfo HashInstrumentation hinstrument[FLEXIBLE_ARRAY_MEMBER]; } SharedHashInfo; -/* ---------------- + +/* --------------------- * Instrumentation information for IncrementalSort - * ---------------- + * --------------------- */ typedef struct IncrementalSortGroupInfo { @@ -200,10 +201,7 @@ typedef struct IncrementalSortInfo IncrementalSortGroupInfo prefixsortGroupInfo; } IncrementalSortInfo; -/* ---------------- - * Shared memory container for per-worker incremental sort information - * ---------------- - */ +/* Shared memory container for per-worker incremental sort information */ typedef struct SharedIncrementalSortInfo { int num_workers; diff --git a/src/include/utils/tuplesort.h b/src/include/utils/tuplesort.h index a7e867f36b8..943a2b7dc93 100644 --- a/src/include/utils/tuplesort.h +++ b/src/include/utils/tuplesort.h @@ -62,21 +62,6 @@ typedef struct SortCoordinateData typedef struct SortCoordinateData *SortCoordinate; -/* - * Data structures for reporting sort statistics. Note that - * TuplesortInstrumentation can't contain any pointers because we - * sometimes put it in shared memory. - * - * The parallel-sort infrastructure relies on having a zero TuplesortMethod - * to indicate that a worker never did anything, so we assign zero to - * SORT_TYPE_STILL_IN_PROGRESS. The other values of this enum can be - * OR'ed together to represent a situation where different workers used - * different methods, so we need a separate bit for each one. Keep the - * NUM_TUPLESORTMETHODS constant in sync with the number of bits! - */ - -#define NUM_TUPLESORTMETHODS 4 - /* Bitwise option flags for tuple sorts */ #define TUPLESORT_NONE 0 -- 2.47.3 --xs5il3t73pzvzpq7-- ^ permalink raw reply [nested|flat] 16+ messages in thread
* [PATCH v3a] edit comments and stuff @ 2026-01-05 14:26 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 16+ messages in thread From: Álvaro Herrera @ 2026-01-05 14:26 UTC (permalink / raw) --- src/backend/utils/sort/tuplesort.c | 2 +- src/include/executor/instrument_node.h | 146 ++++++++++++------------- src/include/utils/tuplesort.h | 15 --- 3 files changed, 73 insertions(+), 90 deletions(-) diff --git a/src/backend/utils/sort/tuplesort.c b/src/backend/utils/sort/tuplesort.c index 473d31188b8..9e4cd816137 100644 --- a/src/backend/utils/sort/tuplesort.c +++ b/src/backend/utils/sort/tuplesort.c @@ -200,7 +200,7 @@ struct Tuplesortstate int64 maxSpace; /* maximum amount of space occupied among sort * of groups, either in-memory or on-disk */ bool isMaxSpaceDisk; /* true when maxSpace is value for on-disk - * space, false when its value for in-memory + * space, false when it's value for in-memory * space */ TupSortStatus maxSpaceStatus; /* sort status when maxSpace was reached */ LogicalTapeSet *tapeset; /* logtape.c object for tapes in a temp file */ diff --git a/src/include/executor/instrument_node.h b/src/include/executor/instrument_node.h index 75520008c36..49627eb4a27 100644 --- a/src/include/executor/instrument_node.h +++ b/src/include/executor/instrument_node.h @@ -1,8 +1,12 @@ /*------------------------------------------------------------------------- * * instrument_node.h - * Definitions for node-specific instrumentation + * Definitions for node-specific support for parallel query instrumentation * + * These structs purposely contain no pointers because they are copied + * across processes during parallel query execution. Each worker copies its + * individual information into the container struct at executor shutdown time, + * to allow the leader to display the information in EXPLAIN ANALYZE. * * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California @@ -15,32 +19,30 @@ #define INSTRUMENT_NODE_H - /* --------------------- - * per-worker aggregate information + * Instrumentation information for aggregate function execution * --------------------- */ typedef struct AggregateInstrumentation { - Size hash_mem_peak; /* peak hash table memory usage */ - uint64 hash_disk_used; /*kB of disk space used */ - int hash_batches_used; /* batches used during entire execution */ + Size hash_mem_peak; /* peak hash table memory usage */ + uint64 hash_disk_used; /* kB of disk space used */ + int hash_batches_used; /* batches used during entire execution */ } AggregateInstrumentation; -/* ---------------- - * Shared memory container for per-worker aggregate information - * ---------------- +/* + * Shared memory container for per-worker aggregate information */ typedef struct SharedAggInfo { - int num_workers; + int num_workers; AggregateInstrumentation sinstrument[FLEXIBLE_ARRAY_MEMBER]; } SharedAggInfo; -/* - * Struct for statistics maintained by amgettuple and amgetbitmap - * - * Note: IndexScanInstrumentation can't contain any pointers, since it is - * copied into a SharedIndexScanInstrumentation during parallel scans + + +/* --------------------- + * Instrumentation information for indexscans (amgettuple and amgetbitmap) + * --------------------- */ typedef struct IndexScanInstrumentation { @@ -49,7 +51,7 @@ typedef struct IndexScanInstrumentation } IndexScanInstrumentation; /* - * Struct for every worker's IndexScanInstrumentation, stored in shared memory + * Shared memory container for per-worker information */ typedef struct SharedIndexScanInstrumentation { @@ -57,11 +59,13 @@ typedef struct SharedIndexScanInstrumentation IndexScanInstrumentation winstrument[FLEXIBLE_ARRAY_MEMBER]; } SharedIndexScanInstrumentation; -/* - * BitmapHeapScanInstrumentation information + +/* --------------------- + * Instrumentation information for bitmap heap scans * * exact_pages total number of exact pages retrieved * lossy_pages total number of lossy pages retrieved + * --------------------- */ typedef struct BitmapHeapScanInstrumentation { @@ -70,11 +74,7 @@ typedef struct BitmapHeapScanInstrumentation } BitmapHeapScanInstrumentation; /* - * Instrumentation data for a parallel bitmap heap scan. - * - * A shared memory struct that each parallel worker copies its - * BitmapHeapScanInstrumentation information into at executor shutdown to - * allow the leader to display the information in EXPLAIN ANALYZE. + * Shared memory container for per-worker information */ typedef struct SharedBitmapHeapInstrumentation { @@ -83,25 +83,27 @@ typedef struct SharedBitmapHeapInstrumentation } SharedBitmapHeapInstrumentation; +/* --------------------- + * Instrumentation information for Memoize + * --------------------- + */ typedef struct MemoizeInstrumentation { - uint64 cache_hits; /* number of rescans where we've found the - * scan parameters values to be cached */ - uint64 cache_misses; /* number of rescans where we've not found the - * scan parameters values to be cached */ - uint64 cache_evictions; /* number of cache entries removed due to - * the need to free memory */ - uint64 cache_overflows; /* number of times we've had to bypass the - * cache when filling it due to not being - * able to free enough space to store the - * current scan's tuples */ - uint64 mem_peak; /* peak memory usage in bytes */ - + uint64 cache_hits; /* number of rescans where we've found the + * scan parameters values to be cached */ + uint64 cache_misses; /* number of rescans where we've not found the + * scan parameters values to be cached */ + uint64 cache_evictions; /* number of cache entries removed due to + * the need to free memory */ + uint64 cache_overflows; /* number of times we've had to bypass the + * cache when filling it due to not being + * able to free enough space to store the + * current scan's tuples */ + uint64 mem_peak; /* peak memory usage in bytes */ } MemoizeInstrumentation; -/* ---------------- - * Shared memory container for per-worker memoize information - * ---------------- +/* + * Shared memory container for per-worker memoize information */ typedef struct SharedMemoizeInfo { @@ -110,27 +112,25 @@ typedef struct SharedMemoizeInfo } SharedMemoizeInfo; -/* - * Data structures for reporting sort statistics. Note that - * TuplesortInstrumentation can't contain any pointers because we - * sometimes put it in shared memory. - * - * The parallel-sort infrastructure relies on having a zero TuplesortMethod - * to indicate that a worker never did anything, so we assign zero to - * SORT_TYPE_STILL_IN_PROGRESS. The other values of this enum can be - * OR'ed together to represent a situation where different workers used - * different methods, so we need a separate bit for each one. Keep the - * NUM_TUPLESORTMETHODS constant in sync with the number of bits! +/* --------------------- + * Instrumentation information for Sorts. + * --------------------- */ -#define NUM_TUPLESORTMETHODS 4 - typedef enum { SORT_SPACE_TYPE_DISK, SORT_SPACE_TYPE_MEMORY, } TuplesortSpaceType; +/* + * The parallel-sort infrastructure relies on having a zero TuplesortMethod + * to indicate that a worker never did anything, so we assign zero to + * SORT_TYPE_STILL_IN_PROGRESS. The other values of this enum can be + * OR'ed together to represent a situation where different workers used + * different methods, so we need a separate bit for each one. Keep the + * NUM_TUPLESORTMETHODS constant in sync with the number of bits! + */ typedef enum { SORT_TYPE_STILL_IN_PROGRESS = 0, @@ -139,40 +139,40 @@ typedef enum SORT_TYPE_EXTERNAL_SORT = 1 << 2, SORT_TYPE_EXTERNAL_MERGE = 1 << 3 } TuplesortMethod; +#define NUM_TUPLESORTMETHODS 4 typedef struct TuplesortInstrumentation { - TuplesortMethod sortMethod; /* sort algorithm used */ + TuplesortMethod sortMethod; /* sort algorithm used */ TuplesortSpaceType spaceType; /* type of space spaceUsed represents */ - int64 spaceUsed; /* space consumption, in kB */ + int64 spaceUsed; /* space consumption, in kB */ } TuplesortInstrumentation; -/* ---------------- - * Shared memory container for per-worker sort information - * ---------------- +/* + * Shared memory container for per-worker sort information */ typedef struct SharedSortInfo { - int num_workers; + int num_workers; TuplesortInstrumentation sinstrument[FLEXIBLE_ARRAY_MEMBER]; } SharedSortInfo; -/* ---------------- - * Values displayed by EXPLAIN ANALYZE - * ---------------- + +/* --------------------- + * Instrumentation information for nodeHash.c + * --------------------- */ typedef struct HashInstrumentation { - int nbuckets; /* number of buckets at end of execution */ - int nbuckets_original; /* planned number of buckets */ - int nbatch; /* number of batches at end of execution */ - int nbatch_original; /* planned number of batches */ - Size space_peak; /* peak memory usage in bytes */ + int nbuckets; /* number of buckets at end of execution */ + int nbuckets_original; /* planned number of buckets */ + int nbatch; /* number of batches at end of execution */ + int nbatch_original; /* planned number of batches */ + Size space_peak; /* peak memory usage in bytes */ } HashInstrumentation; -/* ---------------- - * Shared memory container for per-worker hash information - * ---------------- +/* + * Shared memory container for per-worker information */ typedef struct SharedHashInfo { @@ -180,9 +180,10 @@ typedef struct SharedHashInfo HashInstrumentation hinstrument[FLEXIBLE_ARRAY_MEMBER]; } SharedHashInfo; -/* ---------------- + +/* --------------------- * Instrumentation information for IncrementalSort - * ---------------- + * --------------------- */ typedef struct IncrementalSortGroupInfo { @@ -200,10 +201,7 @@ typedef struct IncrementalSortInfo IncrementalSortGroupInfo prefixsortGroupInfo; } IncrementalSortInfo; -/* ---------------- - * Shared memory container for per-worker incremental sort information - * ---------------- - */ +/* Shared memory container for per-worker incremental sort information */ typedef struct SharedIncrementalSortInfo { int num_workers; diff --git a/src/include/utils/tuplesort.h b/src/include/utils/tuplesort.h index a7e867f36b8..943a2b7dc93 100644 --- a/src/include/utils/tuplesort.h +++ b/src/include/utils/tuplesort.h @@ -62,21 +62,6 @@ typedef struct SortCoordinateData typedef struct SortCoordinateData *SortCoordinate; -/* - * Data structures for reporting sort statistics. Note that - * TuplesortInstrumentation can't contain any pointers because we - * sometimes put it in shared memory. - * - * The parallel-sort infrastructure relies on having a zero TuplesortMethod - * to indicate that a worker never did anything, so we assign zero to - * SORT_TYPE_STILL_IN_PROGRESS. The other values of this enum can be - * OR'ed together to represent a situation where different workers used - * different methods, so we need a separate bit for each one. Keep the - * NUM_TUPLESORTMETHODS constant in sync with the number of bits! - */ - -#define NUM_TUPLESORTMETHODS 4 - /* Bitwise option flags for tuple sorts */ #define TUPLESORT_NONE 0 -- 2.47.3 --xs5il3t73pzvzpq7-- ^ permalink raw reply [nested|flat] 16+ messages in thread
end of thread, other threads:[~2026-01-05 14:26 UTC | newest] Thread overview: 16+ messages (download: mbox mbox.gz follow: Atom feed) -- links below jump to the message on this page -- 2018-09-03 14:06 Re: TR: pgadmin not displaying data from postgresql_fdw Alvaro Herrera <[email protected]> 2019-05-21 00:02 [PATCH v5 07/12] consistent language: to which Justin Pryzby <[email protected]> 2023-07-12 16:57 [PATCH v17 1/3] Remember PK oid for partitioned tables even when it's invalid Alvaro Herrera <[email protected]> 2023-07-12 16:57 [PATCH v17 1/3] Remember PK oid for partitioned tables even when it's invalid Alvaro Herrera <[email protected]> 2023-07-12 16:57 [PATCH v16 1/3] Remember PK oid for partitioned tables even when it's invalid Alvaro Herrera <[email protected]> 2023-07-12 16:57 [PATCH v17 1/3] Remember PK oid for partitioned tables even when it's invalid Alvaro Herrera <[email protected]> 2023-07-12 16:57 [PATCH v15 1/2] Remember PK oid for partitioned tables even when it's invalid Alvaro Herrera <[email protected]> 2023-07-12 16:57 [PATCH v15 1/2] Remember PK oid for partitioned tables even when it's invalid Alvaro Herrera <[email protected]> 2023-07-12 16:57 [PATCH v13 1/2] Remember PK oid for partitioned tables even when it's invalid Alvaro Herrera <[email protected]> 2023-07-12 16:57 [PATCH v14 1/2] Remember PK oid for partitioned tables even when it's invalid Alvaro Herrera <[email protected]> 2024-02-19 08:52 Avoid switching between system-user and system-username in the doc Bertrand Drouvot <[email protected]> 2024-02-19 17:00 ` Re: Avoid switching between system-user and system-username in the doc Jelte Fennema-Nio <[email protected]> 2024-02-19 23:06 ` Re: Avoid switching between system-user and system-username in the doc Michael Paquier <[email protected]> 2024-05-24 02:26 [PATCH v20 8/8] Allow to print raw parse tree. Tatsuo Ishii <[email protected]> 2026-01-05 14:26 [PATCH v3a] edit comments and stuff Álvaro Herrera <[email protected]> 2026-01-05 14:26 [PATCH v3a] edit comments and stuff Álvaro Herrera <[email protected]>
This inbox is served by agora; see mirroring instructions for how to clone and mirror all data and code used for this inbox