agora inbox for pgsql-hackers@postgresql.org
help / color / mirror / Atom feed[PATCH v54 5/5] Reserve replication slots specifically for REPACK
554+ messages / 3 participants
[nested] [flat]
* [PATCH v54 5/5] Reserve replication slots specifically for REPACK
@ 2026-04-01 17:54 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 554+ messages in thread
From: Álvaro Herrera @ 2026-04-01 17:54 UTC (permalink / raw)
This allows REPACK to not interfere with other operations that use
replication slots. This eases configurability.
---
doc/src/sgml/config.sgml | 16 ++++
doc/src/sgml/ref/repack.sgml | 6 +-
src/backend/commands/repack.c | 2 +-
src/backend/commands/repack_worker.c | 7 +-
src/backend/replication/logical/launcher.c | 2 +-
src/backend/replication/logical/logical.c | 8 +-
.../replication/logical/logicalfuncs.c | 2 +-
src/backend/replication/logical/slotsync.c | 5 +-
src/backend/replication/slot.c | 86 ++++++++++++-------
src/backend/replication/slotfuncs.c | 19 ++--
src/backend/replication/walsender.c | 9 +-
src/backend/utils/misc/guc_parameters.dat | 8 ++
src/backend/utils/misc/postgresql.conf.sample | 2 +
src/include/replication/logical.h | 3 +-
src/include/replication/slot.h | 5 +-
15 files changed, 117 insertions(+), 63 deletions(-)
diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index d3fea738ca3..a90d163e416 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -4638,6 +4638,22 @@ restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows
</listitem>
</varlistentry>
+ <varlistentry id="guc-max-repack-replication-slots" xreflabel="max_repack_replication_slots">
+ <term><varname>max_repack_replication_slots</varname> (<type>integer</type>)
+ <indexterm>
+ <primary><varname>max_repack_replication_slots</varname> configuration parameter</primary>
+ </indexterm>
+ </term>
+ <listitem>
+ <para>
+ Specifies the maximum number of replication slots for use of
+ the <command>REPACK</command> command. The default is 5.
+ This parameter can only be set at server start.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
<varlistentry id="guc-max-replication-slots" xreflabel="max_replication_slots">
<term><varname>max_replication_slots</varname> (<type>integer</type>)
<indexterm>
diff --git a/doc/src/sgml/ref/repack.sgml b/doc/src/sgml/ref/repack.sgml
index e993dfb3108..c532a39ee07 100644
--- a/doc/src/sgml/ref/repack.sgml
+++ b/doc/src/sgml/ref/repack.sgml
@@ -293,9 +293,9 @@ REPACK [ ( <replaceable class="parameter">option</replaceable> [, ...] ) ] USING
<listitem>
<para>
- The <link linkend="guc-max-replication-slots"><varname>max_replication_slots</varname></link>
- configuration parameter does not allow for creation of an additional
- replication slot.
+ The <link linkend="guc-max-repack-replication-slots"><varname>max_repack_replication_slots</varname></link>
+ configuration parameter does not allow for the creation of an
+ additional replication slot.
</para>
</listitem>
</itemizedlist>
diff --git a/src/backend/commands/repack.c b/src/backend/commands/repack.c
index d1be6c60e88..ec3a2cd441d 100644
--- a/src/backend/commands/repack.c
+++ b/src/backend/commands/repack.c
@@ -3382,7 +3382,7 @@ start_repack_decoding_worker(Oid relid)
ereport(ERROR,
errcode(ERRCODE_CONFIGURATION_LIMIT_EXCEEDED),
errmsg("out of background worker slots"),
- errhint("You might need to increase \"%s\".", "max_worker_processes"));
+ errhint("You might need to increase \"%s\".", "max_repack_replication_slots"));
decoding_worker->seg = seg;
decoding_worker->error_mqh = mqh;
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index c85166ba849..39cbb0252f4 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -223,7 +223,7 @@ repack_setup_logical_decoding(Oid relid)
* Make sure we can use logical decoding.
*/
CheckSlotPermissions();
- CheckLogicalDecodingRequirements();
+ CheckLogicalDecodingRequirements(true);
/*
* A single backend should not execute multiple REPACK commands at a time,
@@ -232,8 +232,8 @@ repack_setup_logical_decoding(Oid relid)
* RS_TEMPORARY so that the slot gets cleaned up on ERROR.
*/
snprintf(NameStr(slotname), NAMEDATALEN, "repack_%d", MyProcPid);
- ReplicationSlotCreate(NameStr(slotname), true, RS_TEMPORARY, false, false,
- false);
+ ReplicationSlotCreate(NameStr(slotname), true, RS_TEMPORARY, false, true,
+ false, false);
EnsureLogicalDecodingEnabled();
@@ -244,6 +244,7 @@ repack_setup_logical_decoding(Oid relid)
ctx = CreateInitDecodingContext(REPL_PLUGIN_NAME,
NIL,
true,
+ true,
InvalidXLogRecPtr,
XL_ROUTINE(.page_read = read_local_xlog_page,
.segment_open = wal_segment_open,
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index 09964198550..d83125afd0d 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1575,7 +1575,7 @@ CreateConflictDetectionSlot(void)
errmsg("creating replication conflict detection slot"));
ReplicationSlotCreate(CONFLICT_DETECTION_SLOT, false, RS_PERSISTENT, false,
- false, false);
+ false, false, false);
init_conflict_slot_xmin();
}
diff --git a/src/backend/replication/logical/logical.c b/src/backend/replication/logical/logical.c
index dc46a372ead..06efcaa60b2 100644
--- a/src/backend/replication/logical/logical.c
+++ b/src/backend/replication/logical/logical.c
@@ -108,9 +108,9 @@ static void LoadOutputPlugin(OutputPluginCallbacks *callbacks, const char *plugi
* decoding.
*/
void
-CheckLogicalDecodingRequirements(void)
+CheckLogicalDecodingRequirements(bool repack)
{
- CheckSlotRequirements();
+ CheckSlotRequirements(repack);
/*
* NB: Adding a new requirement likely means that RestoreSlotFromDisk()
@@ -308,6 +308,7 @@ StartupDecodingContext(List *output_plugin_options,
* output_plugin_options -- contains options passed to the output plugin
* need_full_snapshot -- if true, must obtain a snapshot able to read all
* tables; if false, one that can read only catalogs is acceptable.
+ * for_repack -- if true, we're going to be decoding for REPACK.
* restart_lsn -- if given as invalid, it's this routine's responsibility to
* mark WAL as reserved by setting a convenient restart_lsn for the slot.
* Otherwise, we set for decoding to start from the given LSN without
@@ -328,6 +329,7 @@ LogicalDecodingContext *
CreateInitDecodingContext(const char *plugin,
List *output_plugin_options,
bool need_full_snapshot,
+ bool for_repack,
XLogRecPtr restart_lsn,
XLogReaderRoutine *xl_routine,
LogicalOutputPluginWriterPrepareWrite prepare_write,
@@ -344,7 +346,7 @@ CreateInitDecodingContext(const char *plugin,
* On a standby, this check is also required while creating the slot.
* Check the comments in the function.
*/
- CheckLogicalDecodingRequirements();
+ CheckLogicalDecodingRequirements(for_repack);
/* shorter lines... */
slot = MyReplicationSlot;
diff --git a/src/backend/replication/logical/logicalfuncs.c b/src/backend/replication/logical/logicalfuncs.c
index 9760818941d..512013b0ef0 100644
--- a/src/backend/replication/logical/logicalfuncs.c
+++ b/src/backend/replication/logical/logicalfuncs.c
@@ -115,7 +115,7 @@ pg_logical_slot_get_changes_guts(FunctionCallInfo fcinfo, bool confirm, bool bin
CheckSlotPermissions();
- CheckLogicalDecodingRequirements();
+ CheckLogicalDecodingRequirements(false);
if (PG_ARGISNULL(0))
ereport(ERROR,
diff --git a/src/backend/replication/logical/slotsync.c b/src/backend/replication/logical/slotsync.c
index e75db69e3f6..28c89c5e10d 100644
--- a/src/backend/replication/logical/slotsync.c
+++ b/src/backend/replication/logical/slotsync.c
@@ -425,7 +425,7 @@ get_local_synced_slots(void)
LWLockAcquire(ReplicationSlotControlLock, LW_SHARED);
- for (int i = 0; i < max_replication_slots; i++)
+ for (int i = 0; i < max_replication_slots + max_repack_replication_slots; i++)
{
ReplicationSlot *s = &ReplicationSlotCtl->replication_slots[i];
@@ -814,6 +814,7 @@ synchronize_one_slot(RemoteSlot *remote_slot, Oid remote_dbid,
*/
ReplicationSlotCreate(remote_slot->name, true, RS_TEMPORARY,
remote_slot->two_phase,
+ false,
remote_slot->failover,
true);
@@ -1691,7 +1692,7 @@ update_synced_slots_inactive_since(void)
LWLockAcquire(ReplicationSlotControlLock, LW_SHARED);
- for (int i = 0; i < max_replication_slots; i++)
+ for (int i = 0; i < max_replication_slots + max_repack_replication_slots; i++)
{
ReplicationSlot *s = &ReplicationSlotCtl->replication_slots[i];
diff --git a/src/backend/replication/slot.c b/src/backend/replication/slot.c
index 9533515a63b..47679161b67 100644
--- a/src/backend/replication/slot.c
+++ b/src/backend/replication/slot.c
@@ -151,6 +151,8 @@ ReplicationSlot *MyReplicationSlot = NULL;
/* GUC variables */
int max_replication_slots = 10; /* the maximum number of replication
* slots */
+int max_repack_replication_slots = 5; /* the maximum number of slots
+ * for REPACK */
/*
* Invalidate replication slots that have remained idle longer than this
@@ -188,14 +190,15 @@ static void SaveSlotToPath(ReplicationSlot *slot, const char *dir, int elevel);
Size
ReplicationSlotsShmemSize(void)
{
+ int totalslots = max_replication_slots + max_repack_replication_slots;
Size size = 0;
- if (max_replication_slots == 0)
+ if (totalslots == 0)
return size;
size = offsetof(ReplicationSlotCtlData, replication_slots);
size = add_size(size,
- mul_size(max_replication_slots, sizeof(ReplicationSlot)));
+ mul_size(totalslots, sizeof(ReplicationSlot)));
return size;
}
@@ -208,7 +211,7 @@ ReplicationSlotsShmemInit(void)
{
bool found;
- if (max_replication_slots == 0)
+ if (max_replication_slots + max_repack_replication_slots == 0)
return;
ReplicationSlotCtl = (ReplicationSlotCtlData *)
@@ -222,7 +225,7 @@ ReplicationSlotsShmemInit(void)
/* First time through, so initialize */
MemSet(ReplicationSlotCtl, 0, ReplicationSlotsShmemSize());
- for (i = 0; i < max_replication_slots; i++)
+ for (i = 0; i < max_replication_slots + max_repack_replication_slots; i++)
{
ReplicationSlot *slot = &ReplicationSlotCtl->replication_slots[i];
@@ -372,6 +375,7 @@ IsSlotForConflictCheck(const char *name)
* db_specific: logical decoding is db specific; if the slot is going to
* be used for that pass true, otherwise false.
* two_phase: If enabled, allows decoding of prepared transactions.
+ * repack: If true, use a slot from the pool for REPACK.
* failover: If enabled, allows the slot to be synced to standbys so
* that logical replication can be resumed after failover.
* synced: True if the slot is synchronized from the primary server.
@@ -379,10 +383,11 @@ IsSlotForConflictCheck(const char *name)
void
ReplicationSlotCreate(const char *name, bool db_specific,
ReplicationSlotPersistency persistency,
- bool two_phase, bool failover, bool synced)
+ bool two_phase, bool repack, bool failover, bool synced)
{
ReplicationSlot *slot = NULL;
- int i;
+ int startpoint,
+ endpoint;
Assert(MyReplicationSlot == NULL);
@@ -431,12 +436,16 @@ ReplicationSlotCreate(const char *name, bool db_specific,
LWLockAcquire(ReplicationSlotAllocationLock, LW_EXCLUSIVE);
/*
- * Check for name collision, and identify an allocatable slot. We need to
- * hold ReplicationSlotControlLock in shared mode for this, so that nobody
- * else can change the in_use flags while we're looking at them.
+ * Check for name collision (across the whole array), and identify an
+ * allocatable slot (in the array slice specific to our current use case:
+ * either general, or REPACK only). We need to hold
+ * ReplicationSlotControlLock in shared mode for this, so that nobody else
+ * can change the in_use flags while we're looking at them.
*/
LWLockAcquire(ReplicationSlotControlLock, LW_SHARED);
- for (i = 0; i < max_replication_slots; i++)
+ startpoint = !repack ? 0 : max_replication_slots;
+ endpoint = max_replication_slots + (repack ? max_repack_replication_slots : 0);
+ for (int i = 0; i < max_replication_slots + max_repack_replication_slots; i++)
{
ReplicationSlot *s = &ReplicationSlotCtl->replication_slots[i];
@@ -444,7 +453,9 @@ ReplicationSlotCreate(const char *name, bool db_specific,
ereport(ERROR,
(errcode(ERRCODE_DUPLICATE_OBJECT),
errmsg("replication slot \"%s\" already exists", name)));
- if (!s->in_use && slot == NULL)
+
+ if (i >= startpoint && i < endpoint &&
+ !s->in_use && slot == NULL)
slot = s;
}
LWLockRelease(ReplicationSlotControlLock);
@@ -454,7 +465,8 @@ ReplicationSlotCreate(const char *name, bool db_specific,
ereport(ERROR,
(errcode(ERRCODE_CONFIGURATION_LIMIT_EXCEEDED),
errmsg("all replication slots are in use"),
- errhint("Free one or increase \"max_replication_slots\".")));
+ errhint("Free one or increase \"%s\".",
+ repack ? "max_repack_replication_slots" : "max_replication_slots")));
/*
* Since this slot is not in use, nobody should be looking at any part of
@@ -547,7 +559,7 @@ SearchNamedReplicationSlot(const char *name, bool need_lock)
if (need_lock)
LWLockAcquire(ReplicationSlotControlLock, LW_SHARED);
- for (i = 0; i < max_replication_slots; i++)
+ for (i = 0; i < max_replication_slots + max_repack_replication_slots; i++)
{
ReplicationSlot *s = &ReplicationSlotCtl->replication_slots[i];
@@ -575,7 +587,8 @@ int
ReplicationSlotIndex(ReplicationSlot *slot)
{
Assert(slot >= ReplicationSlotCtl->replication_slots &&
- slot < ReplicationSlotCtl->replication_slots + max_replication_slots);
+ slot < ReplicationSlotCtl->replication_slots +
+ (max_replication_slots + max_repack_replication_slots));
return slot - ReplicationSlotCtl->replication_slots;
}
@@ -869,7 +882,7 @@ ReplicationSlotCleanup(bool synced_only)
restart:
found_valid_logicalslot = false;
LWLockAcquire(ReplicationSlotControlLock, LW_SHARED);
- for (i = 0; i < max_replication_slots; i++)
+ for (i = 0; i < max_replication_slots + max_repack_replication_slots; i++)
{
ReplicationSlot *s = &ReplicationSlotCtl->replication_slots[i];
@@ -1251,7 +1264,7 @@ ReplicationSlotsComputeRequiredXmin(bool already_locked)
if (!already_locked)
LWLockAcquire(ReplicationSlotControlLock, LW_SHARED);
- for (i = 0; i < max_replication_slots; i++)
+ for (i = 0; i < max_replication_slots + max_repack_replication_slots; i++)
{
ReplicationSlot *s = &ReplicationSlotCtl->replication_slots[i];
TransactionId effective_xmin;
@@ -1306,7 +1319,7 @@ ReplicationSlotsComputeRequiredLSN(void)
Assert(ReplicationSlotCtl != NULL);
LWLockAcquire(ReplicationSlotControlLock, LW_SHARED);
- for (i = 0; i < max_replication_slots; i++)
+ for (i = 0; i < max_replication_slots + max_repack_replication_slots; i++)
{
ReplicationSlot *s = &ReplicationSlotCtl->replication_slots[i];
XLogRecPtr restart_lsn;
@@ -1373,12 +1386,12 @@ ReplicationSlotsComputeLogicalRestartLSN(void)
XLogRecPtr result = InvalidXLogRecPtr;
int i;
- if (max_replication_slots <= 0)
+ if (max_replication_slots + max_repack_replication_slots <= 0)
return InvalidXLogRecPtr;
LWLockAcquire(ReplicationSlotControlLock, LW_SHARED);
- for (i = 0; i < max_replication_slots; i++)
+ for (i = 0; i < max_replication_slots + max_repack_replication_slots; i++)
{
ReplicationSlot *s;
XLogRecPtr restart_lsn;
@@ -1453,11 +1466,11 @@ ReplicationSlotsCountDBSlots(Oid dboid, int *nslots, int *nactive)
*nslots = *nactive = 0;
- if (max_replication_slots <= 0)
+ if (max_replication_slots + max_repack_replication_slots <= 0)
return false;
LWLockAcquire(ReplicationSlotControlLock, LW_SHARED);
- for (i = 0; i < max_replication_slots; i++)
+ for (i = 0; i < max_replication_slots + max_repack_replication_slots; i++)
{
ReplicationSlot *s;
@@ -1514,13 +1527,13 @@ ReplicationSlotsDropDBSlots(Oid dboid)
bool found_valid_logicalslot;
bool dropped = false;
- if (max_replication_slots <= 0)
+ if (max_replication_slots + max_repack_replication_slots <= 0)
return;
restart:
found_valid_logicalslot = false;
LWLockAcquire(ReplicationSlotControlLock, LW_SHARED);
- for (i = 0; i < max_replication_slots; i++)
+ for (i = 0; i < max_replication_slots + max_repack_replication_slots; i++)
{
ReplicationSlot *s;
char *slotname;
@@ -1617,11 +1630,11 @@ CheckLogicalSlotExists(void)
{
bool found = false;
- if (max_replication_slots <= 0)
+ if (max_replication_slots + max_repack_replication_slots <= 0)
return false;
LWLockAcquire(ReplicationSlotControlLock, LW_SHARED);
- for (int i = 0; i < max_replication_slots; i++)
+ for (int i = 0; i < max_replication_slots + max_repack_replication_slots; i++)
{
ReplicationSlot *s;
bool invalidated;
@@ -1655,17 +1668,24 @@ CheckLogicalSlotExists(void)
* slots.
*/
void
-CheckSlotRequirements(void)
+CheckSlotRequirements(bool repack)
{
/*
* NB: Adding a new requirement likely means that RestoreSlotFromDisk()
* needs the same check.
*/
- if (max_replication_slots == 0)
+ if (!repack && max_replication_slots == 0)
ereport(ERROR,
- (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
- errmsg("replication slots can only be used if \"max_replication_slots\" > 0")));
+ errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
+ errmsg("replication slots can only be used if \"%s\" > 0",
+ "max_replication_slots"));
+
+ if (repack && max_repack_replication_slots == 0)
+ ereport(ERROR,
+ errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
+ errmsg("REPACK can only be used if \"%s\" > 0",
+ "max_repack_replication_slots"));
if (wal_level < WAL_LEVEL_REPLICA)
ereport(ERROR,
@@ -2216,7 +2236,7 @@ InvalidateObsoleteReplicationSlots(uint32 possible_causes,
Assert(!(possible_causes & RS_INVAL_WAL_REMOVED) || oldestSegno > 0);
Assert(possible_causes != RS_INVAL_NONE);
- if (max_replication_slots == 0)
+ if (max_replication_slots == 0 && max_repack_replication_slots == 0)
return invalidated;
XLogSegNoOffsetToRecPtr(oldestSegno, 0, wal_segment_size, oldestLSN);
@@ -2224,7 +2244,7 @@ InvalidateObsoleteReplicationSlots(uint32 possible_causes,
restart:
found_valid_logicalslot = false;
LWLockAcquire(ReplicationSlotControlLock, LW_SHARED);
- for (int i = 0; i < max_replication_slots; i++)
+ for (int i = 0; i < max_replication_slots + max_repack_replication_slots; i++)
{
ReplicationSlot *s = &ReplicationSlotCtl->replication_slots[i];
bool released_lock = false;
@@ -2329,7 +2349,7 @@ CheckPointReplicationSlots(bool is_shutdown)
*/
LWLockAcquire(ReplicationSlotAllocationLock, LW_SHARED);
- for (i = 0; i < max_replication_slots; i++)
+ for (i = 0; i < max_replication_slots + max_repack_replication_slots; i++)
{
ReplicationSlot *s = &ReplicationSlotCtl->replication_slots[i];
char path[MAXPGPATH];
@@ -2430,7 +2450,7 @@ StartupReplicationSlots(void)
FreeDir(replication_dir);
/* currently no slots exist, we're done. */
- if (max_replication_slots <= 0)
+ if (max_replication_slots + max_repack_replication_slots <= 0)
return;
/* Now that we have recovered all the data, compute replication xmin */
diff --git a/src/backend/replication/slotfuncs.c b/src/backend/replication/slotfuncs.c
index 9f5e4f998fe..16fbd383735 100644
--- a/src/backend/replication/slotfuncs.c
+++ b/src/backend/replication/slotfuncs.c
@@ -53,7 +53,7 @@ create_physical_replication_slot(char *name, bool immediately_reserve,
/* acquire replication slot, this will check for conflicting names */
ReplicationSlotCreate(name, false,
temporary ? RS_TEMPORARY : RS_PERSISTENT, false,
- false, false);
+ false, false, false);
if (immediately_reserve)
{
@@ -90,7 +90,7 @@ pg_create_physical_replication_slot(PG_FUNCTION_ARGS)
CheckSlotPermissions();
- CheckSlotRequirements();
+ CheckSlotRequirements(false);
create_physical_replication_slot(NameStr(*name),
immediately_reserve,
@@ -146,7 +146,7 @@ create_logical_replication_slot(char *name, char *plugin,
*/
ReplicationSlotCreate(name, true,
temporary ? RS_TEMPORARY : RS_EPHEMERAL, two_phase,
- failover, false);
+ false, failover, false);
/*
* Ensure the logical decoding is enabled before initializing the logical
@@ -164,6 +164,7 @@ create_logical_replication_slot(char *name, char *plugin,
*/
ctx = CreateInitDecodingContext(plugin, NIL,
false, /* just catalogs is OK */
+ false, /* not repack */
restart_lsn,
XL_ROUTINE(.page_read = read_local_xlog_page,
.segment_open = wal_segment_open,
@@ -203,7 +204,7 @@ pg_create_logical_replication_slot(PG_FUNCTION_ARGS)
CheckSlotPermissions();
- CheckLogicalDecodingRequirements();
+ CheckLogicalDecodingRequirements(false);
create_logical_replication_slot(NameStr(*name),
NameStr(*plugin),
@@ -240,7 +241,7 @@ pg_drop_replication_slot(PG_FUNCTION_ARGS)
CheckSlotPermissions();
- CheckSlotRequirements();
+ CheckSlotRequirements(false);
ReplicationSlotDrop(NameStr(*name), true);
@@ -270,7 +271,7 @@ pg_get_replication_slots(PG_FUNCTION_ARGS)
currlsn = GetXLogWriteRecPtr();
LWLockAcquire(ReplicationSlotControlLock, LW_SHARED);
- for (slotno = 0; slotno < max_replication_slots; slotno++)
+ for (slotno = 0; slotno < max_replication_slots + max_repack_replication_slots; slotno++)
{
ReplicationSlot *slot = &ReplicationSlotCtl->replication_slots[slotno];
ReplicationSlot slot_contents;
@@ -648,9 +649,9 @@ copy_replication_slot(FunctionCallInfo fcinfo, bool logical_slot)
CheckSlotPermissions();
if (logical_slot)
- CheckLogicalDecodingRequirements();
+ CheckLogicalDecodingRequirements(false);
else
- CheckSlotRequirements();
+ CheckSlotRequirements(false);
LWLockAcquire(ReplicationSlotControlLock, LW_SHARED);
@@ -665,7 +666,7 @@ copy_replication_slot(FunctionCallInfo fcinfo, bool logical_slot)
* managed to create the new slot, we advance the new slot's restart_lsn
* to the source slot's updated restart_lsn the second time we lock it.
*/
- for (int i = 0; i < max_replication_slots; i++)
+ for (int i = 0; i < max_replication_slots + max_repack_replication_slots; i++)
{
ReplicationSlot *s = &ReplicationSlotCtl->replication_slots[i];
diff --git a/src/backend/replication/walsender.c b/src/backend/replication/walsender.c
index 2bb3f34dc6d..9d7d675fa96 100644
--- a/src/backend/replication/walsender.c
+++ b/src/backend/replication/walsender.c
@@ -1220,7 +1220,7 @@ CreateReplicationSlot(CreateReplicationSlotCmd *cmd)
{
ReplicationSlotCreate(cmd->slotname, false,
cmd->temporary ? RS_TEMPORARY : RS_PERSISTENT,
- false, false, false);
+ false, false, false, false);
if (reserve_wal)
{
@@ -1240,7 +1240,7 @@ CreateReplicationSlot(CreateReplicationSlotCmd *cmd)
Assert(cmd->kind == REPLICATION_KIND_LOGICAL);
- CheckLogicalDecodingRequirements();
+ CheckLogicalDecodingRequirements(false);
/*
* Initially create persistent slot as ephemeral - that allows us to
@@ -1251,7 +1251,7 @@ CreateReplicationSlot(CreateReplicationSlotCmd *cmd)
*/
ReplicationSlotCreate(cmd->slotname, true,
cmd->temporary ? RS_TEMPORARY : RS_EPHEMERAL,
- two_phase, failover, false);
+ two_phase, false, failover, false);
/*
* Do options check early so that we can bail before calling the
@@ -1309,6 +1309,7 @@ CreateReplicationSlot(CreateReplicationSlotCmd *cmd)
Assert(IsLogicalDecodingEnabled());
ctx = CreateInitDecodingContext(cmd->plugin, NIL, need_full_snapshot,
+ false,
InvalidXLogRecPtr,
XL_ROUTINE(.page_read = logical_read_xlog_page,
.segment_open = WalSndSegmentOpen,
@@ -1466,7 +1467,7 @@ StartLogicalReplication(StartReplicationCmd *cmd)
QueryCompletion qc;
/* make sure that our requirements are still fulfilled */
- CheckLogicalDecodingRequirements();
+ CheckLogicalDecodingRequirements(false);
Assert(!MyReplicationSlot);
diff --git a/src/backend/utils/misc/guc_parameters.dat b/src/backend/utils/misc/guc_parameters.dat
index a315c4ab8ab..bf82b8f6048 100644
--- a/src/backend/utils/misc/guc_parameters.dat
+++ b/src/backend/utils/misc/guc_parameters.dat
@@ -2071,6 +2071,14 @@
max => 'MAX_BACKENDS',
},
+{ name => 'max_repack_replication_slots', type => 'int', context => 'PGC_POSTMASTER', group => 'REPLICATION_SENDING',
+ short_desc => 'Sets the maximum number of replication slots for use by REPACK.',
+ variable => 'max_repack_replication_slots',
+ boot_val => '5',
+ min => '0',
+ max => 'MAX_BACKENDS',
+},
+
/* see max_wal_senders */
{ name => 'max_replication_slots', type => 'int', context => 'PGC_POSTMASTER', group => 'REPLICATION_SENDING',
short_desc => 'Sets the maximum number of simultaneously defined replication slots.',
diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample
index 6d0337853e0..fb75990609e 100644
--- a/src/backend/utils/misc/postgresql.conf.sample
+++ b/src/backend/utils/misc/postgresql.conf.sample
@@ -348,6 +348,8 @@
# (change requires restart)
#max_replication_slots = 10 # max number of replication slots
# (change requires restart)
+#max_repack_replication_slots = 5 # max number of replication slots for REPACK
+ # (change requires restart)
#wal_keep_size = 0 # in megabytes; 0 disables
#max_slot_wal_keep_size = -1 # in megabytes; -1 disables
#idle_replication_slot_timeout = 0 # in seconds; 0 disables
diff --git a/src/include/replication/logical.h b/src/include/replication/logical.h
index bc9d4ece672..bc075b16741 100644
--- a/src/include/replication/logical.h
+++ b/src/include/replication/logical.h
@@ -115,11 +115,12 @@ typedef struct LogicalDecodingContext
} LogicalDecodingContext;
-extern void CheckLogicalDecodingRequirements(void);
+extern void CheckLogicalDecodingRequirements(bool repack);
extern LogicalDecodingContext *CreateInitDecodingContext(const char *plugin,
List *output_plugin_options,
bool need_full_snapshot,
+ bool for_repack,
XLogRecPtr restart_lsn,
XLogReaderRoutine *xl_routine,
LogicalOutputPluginWriterPrepareWrite prepare_write,
diff --git a/src/include/replication/slot.h b/src/include/replication/slot.h
index 4b4709f6e2c..489af7d8d6c 100644
--- a/src/include/replication/slot.h
+++ b/src/include/replication/slot.h
@@ -324,6 +324,7 @@ extern PGDLLIMPORT ReplicationSlot *MyReplicationSlot;
/* GUCs */
extern PGDLLIMPORT int max_replication_slots;
+extern PGDLLIMPORT int max_repack_replication_slots;
extern PGDLLIMPORT char *synchronized_standby_slots;
extern PGDLLIMPORT int idle_replication_slot_timeout_secs;
@@ -334,7 +335,7 @@ extern void ReplicationSlotsShmemInit(void);
/* management of individual slots */
extern void ReplicationSlotCreate(const char *name, bool db_specific,
ReplicationSlotPersistency persistency,
- bool two_phase, bool failover,
+ bool two_phase, bool repack, bool failover,
bool synced);
extern void ReplicationSlotPersist(void);
extern void ReplicationSlotDrop(const char *name, bool nowait);
@@ -377,7 +378,7 @@ extern void ReplicationSlotDropAtPubNode(WalReceiverConn *wrconn, char *slotname
extern void StartupReplicationSlots(void);
extern void CheckPointReplicationSlots(bool is_shutdown);
-extern void CheckSlotRequirements(void);
+extern void CheckSlotRequirements(bool repack);
extern void CheckSlotPermissions(void);
extern ReplicationSlotInvalidationCause
GetSlotInvalidationCause(const char *cause_name);
--
2.47.3
--cdhh4t7ukb6tnjoq--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
src/bin/psql/describe.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--bukXArRbhiisqidC--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* [PATCH v2] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16 Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)
The server already allows members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..4d5ee11ddd9 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Except for superusers or roles with privileges of the
+ <literal>pg_read_all_stats</literal> role, size information is only
+ available for databases that the current user can connect to.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.53.0
--GvhE+GC2PI361jLV--
^ permalink raw reply [nested|flat] 554+ messages in thread
* Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:26 Christoph Berg <myon@debian.org>
0 siblings, 1 reply; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 11:26 UTC (permalink / raw)
To: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>; +Cc: Zsolt Parragi <zsolt.parragi@percona.com>
psql \l+ didn't consider pg_read_all_stats when determining whether
the user was allowed to see the database size.
Split off from the "Available disk space per tablespace" patch since
it's really an independent fix. Thanks Zsolt for pointing that out.
This might be considered for backpatching.
Christoph
^ permalink raw reply [nested|flat] 554+ messages in thread
* Re: Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 12:34 Fujii Masao <masao.fujii@gmail.com>
parent: Christoph Berg <myon@debian.org>
0 siblings, 1 reply; 554+ messages in thread
From: Fujii Masao @ 2026-07-22 12:34 UTC (permalink / raw)
To: Christoph Berg <myon@debian.org>; +Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>; Zsolt Parragi <zsolt.parragi@percona.com>
On Wed, Jul 22, 2026 at 8:26 PM Christoph Berg <myon@debian.org> wrote:
>
> psql \l+ didn't consider pg_read_all_stats when determining whether
> the user was allowed to see the database size.
+1 to this fix.
> Split off from the "Available disk space per tablespace" patch since
> it's really an independent fix. Thanks Zsolt for pointing that out.
>
> This might be considered for backpatching.
The pg_read_all_stats check should be fine in master, since psql there
no longer supports pre-v10 servers, which don't have that role. But,
if this is backpatched, psql still needs to work with pre-v10 servers,
so we'll probably need a server version check (e.g., pset.sversion >= 100000)
before checking for pg_read_all_stats, at least in the older stable branches.
Also, should the following description of the \l+ meta-command in
the psql docs be updated?
(Size information is only available for databases that the current
user can connect to.)
Regards,
--
Fujii Masao
^ permalink raw reply [nested|flat] 554+ messages in thread
* Re: Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 13:12 Christoph Berg <myon@debian.org>
parent: Fujii Masao <masao.fujii@gmail.com>
0 siblings, 1 reply; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 13:12 UTC (permalink / raw)
To: Fujii Masao <masao.fujii@gmail.com>; +Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>; Zsolt Parragi <zsolt.parragi@percona.com>
Thanks for the review!
Re: Fujii Masao
> The pg_read_all_stats check should be fine in master, since psql there
> no longer supports pre-v10 servers, which don't have that role. But,
> if this is backpatched, psql still needs to work with pre-v10 servers,
> so we'll probably need a server version check (e.g., pset.sversion >= 100000)
> before checking for pg_read_all_stats, at least in the older stable branches.
The SQL-generating code there is already quite complex, and since no
one complained, perhaps just skip the backpatching if it's complicated.
I tried the patch back to version 9.3 and the query still works even
when the role doesn't exist there. (9.2 and earlier failed due to the
protocol version grease.)
> Also, should the following description of the \l+ meta-command in
> the psql docs be updated?
>
> (Size information is only available for databases that the current
> user can connect to.)
Done in v2.
Christoph
^ permalink raw reply [nested|flat] 554+ messages in thread
* Re: Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 14:38 Álvaro Herrera <alvherre@kurilemu.de>
parent: Christoph Berg <myon@debian.org>
0 siblings, 1 reply; 554+ messages in thread
From: Álvaro Herrera @ 2026-07-22 14:38 UTC (permalink / raw)
To: Christoph Berg <myon@debian.org>; +Cc: Fujii Masao <masao.fujii@gmail.com>; PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>; Zsolt Parragi <zsolt.parragi@percona.com>
On 2026-Jul-22, Christoph Berg wrote:
> Thanks for the review!
>
> Re: Fujii Masao
> > The pg_read_all_stats check should be fine in master, since psql there
> > no longer supports pre-v10 servers, which don't have that role. But,
> > if this is backpatched, psql still needs to work with pre-v10 servers,
> > so we'll probably need a server version check (e.g., pset.sversion >= 100000)
> > before checking for pg_read_all_stats, at least in the older stable branches.
>
> The SQL-generating code there is already quite complex, and since no
> one complained, perhaps just skip the backpatching if it's complicated.
I think it's simple enough:
@@ -1069,12 +1069,16 @@ listAllDbs(const char *pattern, bool verbose)
appendPQExpBufferStr(&buf, " ");
printACLColumn(&buf, "d.datacl");
if (verbose && pset.sversion >= 80200)
+ {
appendPQExpBuffer(&buf,
",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ " %s"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\"",
+ pset.sversion >= 100000 ? "OR pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n" : "",
gettext_noop("Size"));
+ }
if (verbose && pset.sversion >= 80000)
appendPQExpBuffer(&buf,
",\n t.spcname as \"%s\"",
--
Álvaro Herrera Breisgau, Deutschland — https://www.EnterpriseDB.com/
^ permalink raw reply [nested|flat] 554+ messages in thread
* Re: Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 14:52 Christoph Berg <myon@debian.org>
parent: Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 1 reply; 554+ messages in thread
From: Christoph Berg @ 2026-07-22 14:52 UTC (permalink / raw)
To: Álvaro Herrera <alvherre@kurilemu.de>; +Cc: Fujii Masao <masao.fujii@gmail.com>; PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>; Zsolt Parragi <zsolt.parragi@percona.com>
Re: Álvaro Herrera
> + pset.sversion >= 100000 ? "OR pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n" : "",
Should I create patch files for 14..19?
Christoph
^ permalink raw reply [nested|flat] 554+ messages in thread
* Re: Allow pg_read_all_stats to see database size in \l+
@ 2026-07-23 09:44 Fujii Masao <masao.fujii@gmail.com>
parent: Christoph Berg <myon@debian.org>
0 siblings, 1 reply; 554+ messages in thread
From: Fujii Masao @ 2026-07-23 09:44 UTC (permalink / raw)
To: Christoph Berg <myon@debian.org>; +Cc: Álvaro Herrera <alvherre@kurilemu.de>; PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>; Zsolt Parragi <zsolt.parragi@percona.com>
On Wed, Jul 22, 2026 at 11:52 PM Christoph Berg <myon@debian.org> wrote:
>
> Re: Álvaro Herrera
> > + pset.sversion >= 100000 ? "OR pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n" : "",
>
> Should I create patch files for 14..19?
I've prepared patches for the older stable branches and attached them.
While doing so, I also updated the documentation changes.
Regards,
--
Fujii Masao
From 2e9ecd200233768eccafa273abbaf8f667922c0b Mon Sep 17 00:00:00 2001
From: Christoph Berg <myon@debian.org>
Date: Thu, 23 Jul 2026 17:39:43 +0900
Subject: [PATCH v3] psql: Allow pg_read_all_stats to see database size in \l+
pg_database_size() allows access to users who have either CONNECT
privilege on the target database or membership in the
pg_read_all_stats role. However, previously, psql's \l+ checked only for
CONNECT, so users with pg_read_all_stats still saw "No Access" for
databases they could not connect to.
Fix this by making \l+ also check
pg_has_role('pg_read_all_stats', 'USAGE'), matching
pg_database_size()'s permission rules.
For back branches, emit the pg_read_all_stats check only when
connected to PostgreSQL 10 or later, since earlier releases do not have
that predefined role.
Backpatch to all supported versions.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 4 ++++
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 7c05afd4719..6be4648d90e 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Size information is available for databases that the current user can
+ connect to, or to superusers and roles with privileges of the
+ <literal>pg_read_all_stats</literal> role.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index af3935b0078..f258a33a808 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -1007,16 +1007,20 @@ listAllDbs(const char *pattern, bool verbose)
appendPQExpBufferStr(&buf, " ");
printACLColumn(&buf, "d.datacl");
if (verbose)
+ {
appendPQExpBuffer(&buf,
",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ " %s"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
",\n t.spcname as \"%s\""
",\n pg_catalog.shobj_description(d.oid, 'pg_database') as \"%s\"",
+ pset.sversion >= 100000 ? "OR pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n" : "",
gettext_noop("Size"),
gettext_noop("Tablespace"),
gettext_noop("Description"));
+ }
appendPQExpBufferStr(&buf,
"\nFROM pg_catalog.pg_database d\n");
if (verbose)
--
2.55.0
From 3abb56b17562e626bc18dc83818905e9dd84d50e Mon Sep 17 00:00:00 2001
From: Christoph Berg <myon@debian.org>
Date: Thu, 23 Jul 2026 17:39:43 +0900
Subject: [PATCH v3] psql: Allow pg_read_all_stats to see database size in \l+
pg_database_size() allows access to users who have either CONNECT
privilege on the target database or membership in the
pg_read_all_stats role. However, previously, psql's \l+ checked only for
CONNECT, so users with pg_read_all_stats still saw "No Access" for
databases they could not connect to.
Fix this by making \l+ also check
pg_has_role('pg_read_all_stats', 'USAGE'), matching
pg_database_size()'s permission rules.
For back branches, emit the pg_read_all_stats check only when
connected to PostgreSQL 10 or later, since earlier releases do not have
that predefined role.
Backpatch to all supported versions.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 4 ++++
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index ca3b3db59c8..49c5dd648e3 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2571,8 +2571,9 @@ SELECT
only databases whose names match the pattern are listed.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Size information is available for databases that the current user can
+ connect to, or to superusers and roles with privileges of the
+ <literal>pg_read_all_stats</literal> role.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index 3823dca7be2..3fccc543bad 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -953,16 +953,20 @@ listAllDbs(const char *pattern, bool verbose)
appendPQExpBufferStr(&buf, " ");
printACLColumn(&buf, "d.datacl");
if (verbose)
+ {
appendPQExpBuffer(&buf,
",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ " %s"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
",\n t.spcname as \"%s\""
",\n pg_catalog.shobj_description(d.oid, 'pg_database') as \"%s\"",
+ pset.sversion >= 100000 ? "OR pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n" : "",
gettext_noop("Size"),
gettext_noop("Tablespace"),
gettext_noop("Description"));
+ }
appendPQExpBufferStr(&buf,
"\nFROM pg_catalog.pg_database d\n");
if (verbose)
--
2.55.0
From 518a15679cb708646fab30e43536f926dbc77233 Mon Sep 17 00:00:00 2001
From: Christoph Berg <myon@debian.org>
Date: Thu, 23 Jul 2026 17:39:43 +0900
Subject: [PATCH v3] psql: Allow pg_read_all_stats to see database size in \l+
pg_database_size() allows access to users who have either CONNECT
privilege on the target database or membership in the
pg_read_all_stats role. However, previously, psql's \l+ checked only for
CONNECT, so users with pg_read_all_stats still saw "No Access" for
databases they could not connect to.
Fix this by making \l+ also check
pg_has_role('pg_read_all_stats', 'USAGE'), matching
pg_database_size()'s permission rules.
For back branches, emit the pg_read_all_stats check only when
connected to PostgreSQL 10 or later, since earlier releases do not have
that predefined role.
Backpatch to all supported versions.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 4 ++++
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 388efae56ef..d4670e10c84 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2531,8 +2531,9 @@ SELECT
only databases whose names match the pattern are listed.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Size information is available for databases that the current user can
+ connect to, or to superusers and roles with privileges of the
+ <literal>pg_read_all_stats</literal> role.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index 8fe39475fa1..b853b0860f3 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -1069,12 +1069,16 @@ listAllDbs(const char *pattern, bool verbose)
appendPQExpBufferStr(&buf, " ");
printACLColumn(&buf, "d.datacl");
if (verbose && pset.sversion >= 80200)
+ {
appendPQExpBuffer(&buf,
",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ " %s"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\"",
+ pset.sversion >= 100000 ? "OR pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n" : "",
gettext_noop("Size"));
+ }
if (verbose && pset.sversion >= 80000)
appendPQExpBuffer(&buf,
",\n t.spcname as \"%s\"",
--
2.55.0
Attachments:
[text/plain] v3-0001-pg16_pg19-psql-Allow-pg_read_all_stats-to-see-database-size.txt (2.7K, ../../CAHGQGwHtjBFkfQmDXCgB2_aVG=HL8nfOu3mWdPqO0DZNpYtgOQ@mail.gmail.com/2-v3-0001-pg16_pg19-psql-Allow-pg_read_all_stats-to-see-database-size.txt)
download | inline diff:
From 2e9ecd200233768eccafa273abbaf8f667922c0b Mon Sep 17 00:00:00 2001
From: Christoph Berg <myon@debian.org>
Date: Thu, 23 Jul 2026 17:39:43 +0900
Subject: [PATCH v3] psql: Allow pg_read_all_stats to see database size in \l+
pg_database_size() allows access to users who have either CONNECT
privilege on the target database or membership in the
pg_read_all_stats role. However, previously, psql's \l+ checked only for
CONNECT, so users with pg_read_all_stats still saw "No Access" for
databases they could not connect to.
Fix this by making \l+ also check
pg_has_role('pg_read_all_stats', 'USAGE'), matching
pg_database_size()'s permission rules.
For back branches, emit the pg_read_all_stats check only when
connected to PostgreSQL 10 or later, since earlier releases do not have
that predefined role.
Backpatch to all supported versions.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 4 ++++
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 7c05afd4719..6be4648d90e 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Size information is available for databases that the current user can
+ connect to, or to superusers and roles with privileges of the
+ <literal>pg_read_all_stats</literal> role.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index af3935b0078..f258a33a808 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -1007,16 +1007,20 @@ listAllDbs(const char *pattern, bool verbose)
appendPQExpBufferStr(&buf, " ");
printACLColumn(&buf, "d.datacl");
if (verbose)
+ {
appendPQExpBuffer(&buf,
",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ " %s"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
",\n t.spcname as \"%s\""
",\n pg_catalog.shobj_description(d.oid, 'pg_database') as \"%s\"",
+ pset.sversion >= 100000 ? "OR pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n" : "",
gettext_noop("Size"),
gettext_noop("Tablespace"),
gettext_noop("Description"));
+ }
appendPQExpBufferStr(&buf,
"\nFROM pg_catalog.pg_database d\n");
if (verbose)
--
2.55.0
[text/plain] v3-0001-pg15-psql-Allow-pg_read_all_stats-to-see-database-size.txt (2.8K, ../../CAHGQGwHtjBFkfQmDXCgB2_aVG=HL8nfOu3mWdPqO0DZNpYtgOQ@mail.gmail.com/3-v3-0001-pg15-psql-Allow-pg_read_all_stats-to-see-database-size.txt)
download | inline diff:
From 3abb56b17562e626bc18dc83818905e9dd84d50e Mon Sep 17 00:00:00 2001
From: Christoph Berg <myon@debian.org>
Date: Thu, 23 Jul 2026 17:39:43 +0900
Subject: [PATCH v3] psql: Allow pg_read_all_stats to see database size in \l+
pg_database_size() allows access to users who have either CONNECT
privilege on the target database or membership in the
pg_read_all_stats role. However, previously, psql's \l+ checked only for
CONNECT, so users with pg_read_all_stats still saw "No Access" for
databases they could not connect to.
Fix this by making \l+ also check
pg_has_role('pg_read_all_stats', 'USAGE'), matching
pg_database_size()'s permission rules.
For back branches, emit the pg_read_all_stats check only when
connected to PostgreSQL 10 or later, since earlier releases do not have
that predefined role.
Backpatch to all supported versions.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 4 ++++
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index ca3b3db59c8..49c5dd648e3 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2571,8 +2571,9 @@ SELECT
only databases whose names match the pattern are listed.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Size information is available for databases that the current user can
+ connect to, or to superusers and roles with privileges of the
+ <literal>pg_read_all_stats</literal> role.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index 3823dca7be2..3fccc543bad 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -953,16 +953,20 @@ listAllDbs(const char *pattern, bool verbose)
appendPQExpBufferStr(&buf, " ");
printACLColumn(&buf, "d.datacl");
if (verbose)
+ {
appendPQExpBuffer(&buf,
",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ " %s"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
",\n t.spcname as \"%s\""
",\n pg_catalog.shobj_description(d.oid, 'pg_database') as \"%s\"",
+ pset.sversion >= 100000 ? "OR pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n" : "",
gettext_noop("Size"),
gettext_noop("Tablespace"),
gettext_noop("Description"));
+ }
appendPQExpBufferStr(&buf,
"\nFROM pg_catalog.pg_database d\n");
if (verbose)
--
2.55.0
[application/octet-stream] v3-0001-pg20-psql-Allow-pg_read_all_stats-to-see-database-size.patch (2.4K, ../../CAHGQGwHtjBFkfQmDXCgB2_aVG=HL8nfOu3mWdPqO0DZNpYtgOQ@mail.gmail.com/4-v3-0001-pg20-psql-Allow-pg_read_all_stats-to-see-database-size.patch)
download | inline diff:
From 6f09f60f87ff45e4bd94284b4ad8837da8cf2f4b Mon Sep 17 00:00:00 2001
From: Christoph Berg <myon@debian.org>
Date: Wed, 22 Jul 2026 13:16:16 +0200
Subject: [PATCH v3] psql: Allow pg_read_all_stats to see database size in \l+
pg_database_size() allows access to users who have either CONNECT
privilege on the target database or membership in the
pg_read_all_stats role. However, previously, psql's \l+ checked only for
CONNECT, so users with pg_read_all_stats still saw "No Access" for
databases they could not connect to.
Fix this by making \l+ also check
pg_has_role('pg_read_all_stats', 'USAGE'), matching
pg_database_size()'s permission rules.
For back branches, emit the pg_read_all_stats check only when
connected to PostgreSQL 10 or later, since earlier releases do not have
that predefined role.
Backpatch to all supported versions.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 56c2692e618..61d1713589b 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2817,8 +2817,9 @@ SELECT
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Size information is available for databases that the current user can
+ connect to, or to superusers and roles with privileges of the
+ <literal>pg_read_all_stats</literal> role.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
printACLColumn(&buf, "d.datacl");
if (verbose)
appendPQExpBuffer(&buf,
- ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+ " pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\""
--
2.55.0
[text/plain] v3-0001-pg14-psql-Allow-pg_read_all_stats-to-see-database-size.txt (2.6K, ../../CAHGQGwHtjBFkfQmDXCgB2_aVG=HL8nfOu3mWdPqO0DZNpYtgOQ@mail.gmail.com/5-v3-0001-pg14-psql-Allow-pg_read_all_stats-to-see-database-size.txt)
download | inline diff:
From 518a15679cb708646fab30e43536f926dbc77233 Mon Sep 17 00:00:00 2001
From: Christoph Berg <myon@debian.org>
Date: Thu, 23 Jul 2026 17:39:43 +0900
Subject: [PATCH v3] psql: Allow pg_read_all_stats to see database size in \l+
pg_database_size() allows access to users who have either CONNECT
privilege on the target database or membership in the
pg_read_all_stats role. However, previously, psql's \l+ checked only for
CONNECT, so users with pg_read_all_stats still saw "No Access" for
databases they could not connect to.
Fix this by making \l+ also check
pg_has_role('pg_read_all_stats', 'USAGE'), matching
pg_database_size()'s permission rules.
For back branches, emit the pg_read_all_stats check only when
connected to PostgreSQL 10 or later, since earlier releases do not have
that predefined role.
Backpatch to all supported versions.
---
doc/src/sgml/ref/psql-ref.sgml | 5 +++--
src/bin/psql/describe.c | 4 ++++
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 388efae56ef..d4670e10c84 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -2531,8 +2531,9 @@ SELECT
only databases whose names match the pattern are listed.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
- (Size information is only available for databases that the current
- user can connect to.)
+ Size information is available for databases that the current user can
+ connect to, or to superusers and roles with privileges of the
+ <literal>pg_read_all_stats</literal> role.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index 8fe39475fa1..b853b0860f3 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -1069,12 +1069,16 @@ listAllDbs(const char *pattern, bool verbose)
appendPQExpBufferStr(&buf, " ");
printACLColumn(&buf, "d.datacl");
if (verbose && pset.sversion >= 80200)
+ {
appendPQExpBuffer(&buf,
",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ " %s"
" THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
" ELSE 'No Access'\n"
" END as \"%s\"",
+ pset.sversion >= 100000 ? "OR pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n" : "",
gettext_noop("Size"));
+ }
if (verbose && pset.sversion >= 80000)
appendPQExpBuffer(&buf,
",\n t.spcname as \"%s\"",
--
2.55.0
^ permalink raw reply [nested|flat] 554+ messages in thread
* Re: Allow pg_read_all_stats to see database size in \l+
@ 2026-07-23 10:44 Christoph Berg <myon@debian.org>
parent: Fujii Masao <masao.fujii@gmail.com>
0 siblings, 1 reply; 554+ messages in thread
From: Christoph Berg @ 2026-07-23 10:44 UTC (permalink / raw)
To: Fujii Masao <masao.fujii@gmail.com>; +Cc: Álvaro Herrera <alvherre@kurilemu.de>; PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>; Zsolt Parragi <zsolt.parragi@percona.com>
Re: Fujii Masao
> I've prepared patches for the older stable branches and attached them.
>
> While doing so, I also updated the documentation changes.
Looks good to me, thanks!
I tested the PG15 patch and it works, including against a 9.6 server.
Christoph
^ permalink raw reply [nested|flat] 554+ messages in thread
* Re: Allow pg_read_all_stats to see database size in \l+
@ 2026-07-25 10:15 Fujii Masao <masao.fujii@gmail.com>
parent: Christoph Berg <myon@debian.org>
0 siblings, 0 replies; 554+ messages in thread
From: Fujii Masao @ 2026-07-25 10:15 UTC (permalink / raw)
To: Christoph Berg <myon@debian.org>; +Cc: Álvaro Herrera <alvherre@kurilemu.de>; PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>; Zsolt Parragi <zsolt.parragi@percona.com>
On Thu, Jul 23, 2026 at 7:44 PM Christoph Berg <myon@debian.org> wrote:
> Looks good to me, thanks!
>
> I tested the PG15 patch and it works, including against a 9.6 server.
Thanks for the review and test! I've pushed the patch.
Regards,
--
Fujii Masao
^ permalink raw reply [nested|flat] 554+ messages in thread
end of thread, other threads:[~2026-07-25 10:15 UTC | newest]
Thread overview: 554+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2026-04-01 17:54 [PATCH v54 5/5] Reserve replication slots specifically for REPACK Álvaro Herrera <alvherre@kurilemu.de>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v2] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:16 [PATCH v1] Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 11:26 Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 12:34 ` Re: Allow pg_read_all_stats to see database size in \l+ Fujii Masao <masao.fujii@gmail.com>
2026-07-22 13:12 ` Re: Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-22 14:38 ` Re: Allow pg_read_all_stats to see database size in \l+ Álvaro Herrera <alvherre@kurilemu.de>
2026-07-22 14:52 ` Re: Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-23 09:44 ` Re: Allow pg_read_all_stats to see database size in \l+ Fujii Masao <masao.fujii@gmail.com>
2026-07-23 10:44 ` Re: Allow pg_read_all_stats to see database size in \l+ Christoph Berg <myon@debian.org>
2026-07-25 10:15 ` Re: Allow pg_read_all_stats to see database size in \l+ Fujii Masao <masao.fujii@gmail.com>
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox