agora inbox for pgsql-hackers@postgresql.org  
help / color / mirror / Atom feed
[PATCH v18 1/8] Row pattern recognition patch for raw parser.
554+ messages / 4 participants
[nested] [flat]

* [PATCH v18 1/8] Row pattern recognition patch for raw parser.
@ 2024-05-11 07:11  Tatsuo Ishii <ishii@postgresql.org>
  0 siblings, 0 replies; 554+ messages in thread

From: Tatsuo Ishii @ 2024-05-11 07:11 UTC (permalink / raw)

---
 src/backend/parser/gram.y       | 221 ++++++++++++++++++++++++++++++--
 src/include/nodes/parsenodes.h  |  67 ++++++++++
 src/include/parser/kwlist.h     |   8 ++
 src/include/parser/parse_node.h |   1 +
 4 files changed, 285 insertions(+), 12 deletions(-)

diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index e8b619926e..c09a0f7e4f 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -680,6 +680,21 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
 				json_object_constructor_null_clause_opt
 				json_array_constructor_null_clause_opt
 
+%type <target>	row_pattern_measure_item
+				row_pattern_definition
+%type <node>	opt_row_pattern_common_syntax
+				opt_row_pattern_skip_to
+				row_pattern_subset_item
+				row_pattern_term
+%type <list>	opt_row_pattern_measures
+				row_pattern_measure_list
+				row_pattern_definition_list
+				opt_row_pattern_subset_clause
+				row_pattern_subset_list
+				row_pattern_subset_rhs
+				row_pattern
+%type <boolean>	opt_row_pattern_initial_or_seek
+				first_or_last
 
 /*
  * Non-keyword token types.  These are hard-wired into the "flex" lexer.
@@ -723,7 +738,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
 	CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURSOR CYCLE
 
 	DATA_P DATABASE DAY_P DEALLOCATE DEC DECIMAL_P DECLARE DEFAULT DEFAULTS
-	DEFERRABLE DEFERRED DEFINER DELETE_P DELIMITER DELIMITERS DEPENDS DEPTH DESC
+	DEFERRABLE DEFERRED DEFINE DEFINER DELETE_P DELIMITER DELIMITERS DEPENDS DEPTH DESC
 	DETACH DICTIONARY DISABLE_P DISCARD DISTINCT DO DOCUMENT_P DOMAIN_P
 	DOUBLE_P DROP
 
@@ -739,7 +754,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
 	HANDLER HAVING HEADER_P HOLD HOUR_P
 
 	IDENTITY_P IF_P ILIKE IMMEDIATE IMMUTABLE IMPLICIT_P IMPORT_P IN_P INCLUDE
-	INCLUDING INCREMENT INDENT INDEX INDEXES INHERIT INHERITS INITIALLY INLINE_P
+	INCLUDING INCREMENT INDENT INDEX INDEXES INHERIT INHERITS INITIAL INITIALLY INLINE_P
 	INNER_P INOUT INPUT_P INSENSITIVE INSERT INSTEAD INT_P INTEGER
 	INTERSECT INTERVAL INTO INVOKER IS ISNULL ISOLATION
 
@@ -752,7 +767,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
 	LEADING LEAKPROOF LEAST LEFT LEVEL LIKE LIMIT LISTEN LOAD LOCAL
 	LOCALTIME LOCALTIMESTAMP LOCATION LOCK_P LOCKED LOGGED
 
-	MAPPING MATCH MATCHED MATERIALIZED MAXVALUE MERGE MERGE_ACTION METHOD
+	MAPPING MATCH MATCHED MATERIALIZED MAXVALUE MEASURES MERGE MERGE_ACTION METHOD
 	MINUTE_P MINVALUE MODE MONTH_P MOVE
 
 	NAME_P NAMES NATIONAL NATURAL NCHAR NESTED NEW NEXT NFC NFD NFKC NFKD NO
@@ -764,9 +779,8 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
 	ORDER ORDINALITY OTHERS OUT_P OUTER_P
 	OVER OVERLAPS OVERLAY OVERRIDING OWNED OWNER
 
-	PARALLEL PARAMETER PARSER PARTIAL PARTITION PARTITIONS PASSING PASSWORD PATH
-	PERIOD PLACING PLAN PLANS POLICY
-
+	PARALLEL PARAMETER PARSER PARTIAL PARTITION PARTITIONS PASSING PASSWORD PAST
+	PATH PATTERN_P PERIOD PERMUTE PLACING PLAN PLANS POLICY
 	POSITION PRECEDING PRECISION PRESERVE PREPARE PREPARED PRIMARY
 	PRIOR PRIVILEGES PROCEDURAL PROCEDURE PROCEDURES PROGRAM PUBLICATION
 
@@ -777,12 +791,13 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
 	RESET RESTART RESTRICT RETURN RETURNING RETURNS REVOKE RIGHT ROLE ROLLBACK ROLLUP
 	ROUTINE ROUTINES ROW ROWS RULE
 
-	SAVEPOINT SCALAR SCHEMA SCHEMAS SCROLL SEARCH SECOND_P SECURITY SELECT
+	SAVEPOINT SCALAR SCHEMA SCHEMAS SCROLL SEARCH SECOND_P SECURITY SEEK SELECT
 	SEQUENCE SEQUENCES
+
 	SERIALIZABLE SERVER SESSION SESSION_USER SET SETS SETOF SHARE SHOW
 	SIMILAR SIMPLE SKIP SMALLINT SNAPSHOT SOME SPLIT SOURCE SQL_P STABLE STANDALONE_P
 	START STATEMENT STATISTICS STDIN STDOUT STORAGE STORED STRICT_P STRING_P STRIP_P
-	SUBSCRIPTION SUBSTRING SUPPORT SYMMETRIC SYSID SYSTEM_P SYSTEM_USER
+	SUBSCRIPTION SUBSET SUBSTRING SUPPORT SYMMETRIC SYSID SYSTEM_P SYSTEM_USER
 
 	TABLE TABLES TABLESAMPLE TABLESPACE TARGET TEMP TEMPLATE TEMPORARY TEXT_P THEN
 	TIES TIME TIMESTAMP TO TRAILING TRANSACTION TRANSFORM
@@ -891,6 +906,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
 %nonassoc	UNBOUNDED NESTED /* ideally would have same precedence as IDENT */
 %nonassoc	IDENT PARTITION RANGE ROWS GROUPS PRECEDING FOLLOWING CUBE ROLLUP
 			SET KEYS OBJECT_P SCALAR VALUE_P WITH WITHOUT PATH
+			MEASURES AFTER INITIAL SEEK PATTERN_P
 %left		Op OPERATOR		/* multi-character ops and user-defined operators */
 %left		'+' '-'
 %left		'*' '/' '%'
@@ -16333,7 +16349,8 @@ over_clause: OVER window_specification
 		;
 
 window_specification: '(' opt_existing_window_name opt_partition_clause
-						opt_sort_clause opt_frame_clause ')'
+						opt_sort_clause opt_row_pattern_measures opt_frame_clause
+						opt_row_pattern_common_syntax ')'
 				{
 					WindowDef  *n = makeNode(WindowDef);
 
@@ -16341,10 +16358,12 @@ window_specification: '(' opt_existing_window_name opt_partition_clause
 					n->refname = $2;
 					n->partitionClause = $3;
 					n->orderClause = $4;
+					n->rowPatternMeasures = $5;
 					/* copy relevant fields of opt_frame_clause */
-					n->frameOptions = $5->frameOptions;
-					n->startOffset = $5->startOffset;
-					n->endOffset = $5->endOffset;
+					n->frameOptions = $6->frameOptions;
+					n->startOffset = $6->startOffset;
+					n->endOffset = $6->endOffset;
+					n->rpCommonSyntax = (RPCommonSyntax *)$7;
 					n->location = @1;
 					$$ = n;
 				}
@@ -16368,6 +16387,31 @@ opt_partition_clause: PARTITION BY expr_list		{ $$ = $3; }
 			| /*EMPTY*/								{ $$ = NIL; }
 		;
 
+/*
+ * ROW PATTERN_P MEASURES
+ */
+opt_row_pattern_measures: MEASURES row_pattern_measure_list	{ $$ = $2; }
+			| /*EMPTY*/								{ $$ = NIL; }
+		;
+
+row_pattern_measure_list:
+			row_pattern_measure_item
+					{ $$ = list_make1($1); }
+			| row_pattern_measure_list ',' row_pattern_measure_item
+					{ $$ = lappend($1, $3); }
+		;
+
+row_pattern_measure_item:
+			a_expr AS ColLabel
+				{
+					$$ = makeNode(ResTarget);
+					$$->name = $3;
+					$$->indirection = NIL;
+					$$->val = (Node *) $1;
+					$$->location = @1;
+				}
+		;
+
 /*
  * For frame clauses, we return a WindowDef, but only some fields are used:
  * frameOptions, startOffset, and endOffset.
@@ -16527,6 +16571,143 @@ opt_window_exclusion_clause:
 			| /*EMPTY*/				{ $$ = 0; }
 		;
 
+opt_row_pattern_common_syntax:
+opt_row_pattern_skip_to opt_row_pattern_initial_or_seek
+				PATTERN_P '(' row_pattern ')'
+				opt_row_pattern_subset_clause
+				DEFINE row_pattern_definition_list
+			{
+				RPCommonSyntax *n = makeNode(RPCommonSyntax);
+				n->rpSkipTo = ((RPCommonSyntax *)$1)->rpSkipTo;
+				n->rpSkipVariable = ((RPCommonSyntax *)$1)->rpSkipVariable;
+				n->initial = $2;
+				n->rpPatterns = $5;
+				n->rpSubsetClause = $7;
+				n->rpDefs = $9;
+				$$ = (Node *) n;
+			}
+			| /*EMPTY*/		{ $$ = NULL; }
+	;
+
+opt_row_pattern_skip_to:
+			AFTER MATCH SKIP TO NEXT ROW
+				{
+					RPCommonSyntax *n = makeNode(RPCommonSyntax);
+					n->rpSkipTo = ST_NEXT_ROW;
+					n->rpSkipVariable = NULL;
+					$$ = (Node *) n;
+			}
+			| AFTER MATCH SKIP PAST LAST_P ROW
+				{
+					RPCommonSyntax *n = makeNode(RPCommonSyntax);
+					n->rpSkipTo = ST_PAST_LAST_ROW;
+					n->rpSkipVariable = NULL;
+					$$ = (Node *) n;
+				}
+			| AFTER MATCH SKIP TO first_or_last ColId
+				{
+					RPCommonSyntax *n = makeNode(RPCommonSyntax);
+					n->rpSkipTo = $5? ST_FIRST_VARIABLE : ST_LAST_VARIABLE;
+					n->rpSkipVariable = $6;
+					$$ = (Node *) n;
+				}
+/*
+			| AFTER MATCH SKIP TO LAST_P ColId		%prec LAST_P
+				{
+					RPCommonSyntax *n = makeNode(RPCommonSyntax);
+					n->rpSkipTo = ST_LAST_VARIABLE;
+					n->rpSkipVariable = $6;
+					$$ = n;
+				}
+			| AFTER MATCH SKIP TO ColId
+				{
+					RPCommonSyntax *n = makeNode(RPCommonSyntax);
+					n->rpSkipTo = ST_VARIABLE;
+					n->rpSkipVariable = $5;
+					$$ = n;
+				}
+*/
+			| /*EMPTY*/
+				{
+					RPCommonSyntax *n = makeNode(RPCommonSyntax);
+					/* temporary set default to ST_NEXT_ROW */
+					n->rpSkipTo = ST_PAST_LAST_ROW;
+					n->rpSkipVariable = NULL;
+					$$ = (Node *) n;
+				}
+	;
+
+first_or_last:
+			FIRST_P		{ $$ = true; }
+			| LAST_P	{ $$ = false; }
+	;
+
+opt_row_pattern_initial_or_seek:
+			INITIAL			{ $$ = true; }
+			| SEEK
+				{
+					ereport(ERROR,
+							(errcode(ERRCODE_SYNTAX_ERROR),
+							 errmsg("SEEK is not supported"),
+							 errhint("Use INITIAL."),
+							 parser_errposition(@1)));
+				}
+			| /*EMPTY*/		{ $$ = true; }
+		;
+
+row_pattern:
+			row_pattern_term							{ $$ = list_make1($1); }
+			| row_pattern row_pattern_term				{ $$ = lappend($1, $2); }
+		;
+
+row_pattern_term:
+			ColId	{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "", (Node *)makeString($1), NULL, @1); }
+			| ColId '*'	{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", (Node *)makeString($1), NULL, @1); }
+			| ColId '+'	{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", (Node *)makeString($1), NULL, @1); }
+			| ColId '?'	{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "?", (Node *)makeString($1), NULL, @1); }
+		;
+
+opt_row_pattern_subset_clause:
+			SUBSET row_pattern_subset_list	{ $$ = $2; }
+			| /*EMPTY*/												{ $$ = NIL; }
+		;
+
+row_pattern_subset_list:
+			row_pattern_subset_item									{ $$ = list_make1($1); }
+			| row_pattern_subset_list ',' row_pattern_subset_item	{ $$ = lappend($1, $3); }
+			| /*EMPTY*/												{ $$ = NIL; }
+		;
+
+row_pattern_subset_item: ColId '=' '(' row_pattern_subset_rhs ')'
+			{
+				RPSubsetItem *n = makeNode(RPSubsetItem);
+				n->name = $1;
+				n->rhsVariable = $4;
+				$$ = (Node *) n;
+			}
+		;
+
+row_pattern_subset_rhs:
+			ColId								{ $$ = list_make1(makeStringConst($1, @1)); }
+			| row_pattern_subset_rhs ',' ColId	{ $$ = lappend($1, makeStringConst($3, @1)); }
+			| /*EMPTY*/							{ $$ = NIL; }
+		;
+
+row_pattern_definition_list:
+			row_pattern_definition										{ $$ = list_make1($1); }
+			| row_pattern_definition_list ',' row_pattern_definition	{ $$ = lappend($1, $3); }
+		;
+
+row_pattern_definition:
+			ColId AS a_expr
+				{
+					$$ = makeNode(ResTarget);
+					$$->name = $1;
+					$$->indirection = NIL;
+					$$->val = (Node *) $3;
+					$$->location = @1;
+				}
+		;
 
 /*
  * Supporting nonterminals for expressions.
@@ -17737,6 +17918,7 @@ unreserved_keyword:
 			| INDEXES
 			| INHERIT
 			| INHERITS
+			| INITIAL
 			| INLINE_P
 			| INPUT_P
 			| INSENSITIVE
@@ -17765,6 +17947,7 @@ unreserved_keyword:
 			| MATCHED
 			| MATERIALIZED
 			| MAXVALUE
+			| MEASURES
 			| MERGE
 			| METHOD
 			| MINUTE_P
@@ -17810,8 +17993,11 @@ unreserved_keyword:
 			| PARTITIONS
 			| PASSING
 			| PASSWORD
+			| PAST
 			| PATH
+			| PATTERN_P
 			| PERIOD
+			| PERMUTE
 			| PLAN
 			| PLANS
 			| POLICY
@@ -17864,6 +18050,7 @@ unreserved_keyword:
 			| SEARCH
 			| SECOND_P
 			| SECURITY
+			| SEEK
 			| SEQUENCE
 			| SEQUENCES
 			| SERIALIZABLE
@@ -17892,6 +18079,7 @@ unreserved_keyword:
 			| STRING_P
 			| STRIP_P
 			| SUBSCRIPTION
+			| SUBSET
 			| SUPPORT
 			| SYSID
 			| SYSTEM_P
@@ -18086,6 +18274,7 @@ reserved_keyword:
 			| CURRENT_USER
 			| DEFAULT
 			| DEFERRABLE
+			| DEFINE
 			| DESC
 			| DISTINCT
 			| DO
@@ -18249,6 +18438,7 @@ bare_label_keyword:
 			| DEFAULTS
 			| DEFERRABLE
 			| DEFERRED
+			| DEFINE
 			| DEFINER
 			| DELETE_P
 			| DELIMITER
@@ -18326,6 +18516,7 @@ bare_label_keyword:
 			| INDEXES
 			| INHERIT
 			| INHERITS
+			| INITIAL
 			| INITIALLY
 			| INLINE_P
 			| INNER_P
@@ -18380,6 +18571,7 @@ bare_label_keyword:
 			| MATCHED
 			| MATERIALIZED
 			| MAXVALUE
+			| MEASURES
 			| MERGE
 			| MERGE_ACTION
 			| METHOD
@@ -18437,8 +18629,11 @@ bare_label_keyword:
 			| PARTITIONS
 			| PASSING
 			| PASSWORD
+			| PAST
 			| PATH
+			| PATTERN_P
 			| PERIOD
+			| PERMUTE
 			| PLACING
 			| PLAN
 			| PLANS
@@ -18497,6 +18692,7 @@ bare_label_keyword:
 			| SCROLL
 			| SEARCH
 			| SECURITY
+			| SEEK
 			| SELECT
 			| SEQUENCE
 			| SEQUENCES
@@ -18531,6 +18727,7 @@ bare_label_keyword:
 			| STRING_P
 			| STRIP_P
 			| SUBSCRIPTION
+			| SUBSET
 			| SUBSTRING
 			| SUPPORT
 			| SYMMETRIC
diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h
index 3ca06fc3af..9e65e9132c 100644
--- a/src/include/nodes/parsenodes.h
+++ b/src/include/nodes/parsenodes.h
@@ -550,6 +550,48 @@ typedef struct SortBy
 	ParseLoc	location;		/* operator location, or -1 if none/unknown */
 } SortBy;
 
+/*
+ * AFTER MATCH row pattern skip to types in row pattern common syntax
+ */
+typedef enum RPSkipTo
+{
+	ST_NONE,					/* AFTER MATCH omitted */
+	ST_NEXT_ROW,				/* SKIP TO NEXT ROW */
+	ST_PAST_LAST_ROW,			/* SKIP TO PAST LAST ROW */
+	ST_FIRST_VARIABLE,			/* SKIP TO FIRST variable name */
+	ST_LAST_VARIABLE,			/* SKIP TO LAST variable name */
+	ST_VARIABLE					/* SKIP TO variable name */
+}			RPSkipTo;
+
+/*
+ * Row Pattern SUBSET clause item
+ */
+typedef struct RPSubsetItem
+{
+	NodeTag		type;
+	char	   *name;			/* Row Pattern SUBSET clause variable name */
+	List	   *rhsVariable;	/* Row Pattern SUBSET rhs variables (list of
+								 * char *string) */
+}			RPSubsetItem;
+
+/*
+ * RowPatternCommonSyntax - raw representation of row pattern common syntax
+ *
+ */
+typedef struct RPCommonSyntax
+{
+	NodeTag		type;
+	RPSkipTo	rpSkipTo;		/* Row Pattern AFTER MATCH SKIP type */
+	char	   *rpSkipVariable; /* Row Pattern Skip To variable name, if any */
+	bool		initial;		/* true if <row pattern initial or seek> is
+								 * initial */
+	List	   *rpPatterns;		/* PATTERN variables (list of A_Expr) */
+	List	   *rpSubsetClause; /* row pattern subset clause (list of
+								 * RPSubsetItem), if any */
+	List	   *rpDefs;			/* row pattern definitions clause (list of
+								 * ResTarget) */
+}			RPCommonSyntax;
+
 /*
  * WindowDef - raw representation of WINDOW and OVER clauses
  *
@@ -565,6 +607,9 @@ typedef struct WindowDef
 	char	   *refname;		/* referenced window name, if any */
 	List	   *partitionClause;	/* PARTITION BY expression list */
 	List	   *orderClause;	/* ORDER BY (list of SortBy) */
+	List	   *rowPatternMeasures; /* row pattern measures (list of
+									 * ResTarget) */
+	RPCommonSyntax *rpCommonSyntax; /* row pattern common syntax */
 	int			frameOptions;	/* frame_clause options, see below */
 	Node	   *startOffset;	/* expression for starting bound, if any */
 	Node	   *endOffset;		/* expression for ending bound, if any */
@@ -1533,6 +1578,11 @@ typedef struct GroupingSet
  * the orderClause might or might not be copied (see copiedOrder); the framing
  * options are never copied, per spec.
  *
+ * "defineClause" is Row Pattern Recognition DEFINE clause (list of
+ * TargetEntry). TargetEntry.resname represents row pattern definition
+ * variable name. "patternVariable" and "patternRegexp" represents PATTERN
+ * clause.
+ *
  * The information relevant for the query jumbling is the partition clause
  * type and its bounds.
  */
@@ -1562,6 +1612,23 @@ typedef struct WindowClause
 	Index		winref;			/* ID referenced by window functions */
 	/* did we copy orderClause from refname? */
 	bool		copiedOrder pg_node_attr(query_jumble_ignore);
+	/* Row Pattern AFTER MACH SKIP clause */
+	RPSkipTo	rpSkipTo;		/* Row Pattern Skip To type */
+	char	   *rpSkipVariable; /* Row Pattern Skip To variable */
+	bool		initial;		/* true if <row pattern initial or seek> is
+								 * initial */
+	/* Row Pattern DEFINE clause (list of TargetEntry) */
+	List	   *defineClause;
+	/* Row Pattern DEFINE variable initial names (list of String) */
+	List	   *defineInitial;
+	/* Row Pattern PATTERN variable name (list of String) */
+	List	   *patternVariable;
+
+	/*
+	 * Row Pattern PATTERN regular expression quantifier ('+' or ''. list of
+	 * String)
+	 */
+	List	   *patternRegexp;
 } WindowClause;
 
 /*
diff --git a/src/include/parser/kwlist.h b/src/include/parser/kwlist.h
index f9a4afd472..df49492629 100644
--- a/src/include/parser/kwlist.h
+++ b/src/include/parser/kwlist.h
@@ -129,6 +129,7 @@ PG_KEYWORD("default", DEFAULT, RESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("defaults", DEFAULTS, UNRESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("deferrable", DEFERRABLE, RESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("deferred", DEFERRED, UNRESERVED_KEYWORD, BARE_LABEL)
+PG_KEYWORD("define", DEFINE, RESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("definer", DEFINER, UNRESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("delete", DELETE_P, UNRESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("delimiter", DELIMITER, UNRESERVED_KEYWORD, BARE_LABEL)
@@ -215,6 +216,7 @@ PG_KEYWORD("index", INDEX, UNRESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("indexes", INDEXES, UNRESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("inherit", INHERIT, UNRESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("inherits", INHERITS, UNRESERVED_KEYWORD, BARE_LABEL)
+PG_KEYWORD("initial", INITIAL, UNRESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("initially", INITIALLY, RESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("inline", INLINE_P, UNRESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("inner", INNER_P, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL)
@@ -273,6 +275,7 @@ PG_KEYWORD("match", MATCH, UNRESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("matched", MATCHED, UNRESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("materialized", MATERIALIZED, UNRESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("maxvalue", MAXVALUE, UNRESERVED_KEYWORD, BARE_LABEL)
+PG_KEYWORD("measures", MEASURES, UNRESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("merge", MERGE, UNRESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("merge_action", MERGE_ACTION, COL_NAME_KEYWORD, BARE_LABEL)
 PG_KEYWORD("method", METHOD, UNRESERVED_KEYWORD, BARE_LABEL)
@@ -338,8 +341,11 @@ PG_KEYWORD("partition", PARTITION, UNRESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("partitions", PARTITIONS, UNRESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("passing", PASSING, UNRESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("password", PASSWORD, UNRESERVED_KEYWORD, BARE_LABEL)
+PG_KEYWORD("past", PAST, UNRESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("path", PATH, UNRESERVED_KEYWORD, BARE_LABEL)
+PG_KEYWORD("pattern", PATTERN_P, UNRESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("period", PERIOD, UNRESERVED_KEYWORD, BARE_LABEL)
+PG_KEYWORD("permute", PERMUTE, UNRESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("placing", PLACING, RESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("plan", PLAN, UNRESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("plans", PLANS, UNRESERVED_KEYWORD, BARE_LABEL)
@@ -401,6 +407,7 @@ PG_KEYWORD("scroll", SCROLL, UNRESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("search", SEARCH, UNRESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("second", SECOND_P, UNRESERVED_KEYWORD, AS_LABEL)
 PG_KEYWORD("security", SECURITY, UNRESERVED_KEYWORD, BARE_LABEL)
+PG_KEYWORD("seek", SEEK, UNRESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("select", SELECT, RESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("sequence", SEQUENCE, UNRESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("sequences", SEQUENCES, UNRESERVED_KEYWORD, BARE_LABEL)
@@ -435,6 +442,7 @@ PG_KEYWORD("strict", STRICT_P, UNRESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("string", STRING_P, UNRESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("strip", STRIP_P, UNRESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("subscription", SUBSCRIPTION, UNRESERVED_KEYWORD, BARE_LABEL)
+PG_KEYWORD("subset", SUBSET, UNRESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("substring", SUBSTRING, COL_NAME_KEYWORD, BARE_LABEL)
 PG_KEYWORD("support", SUPPORT, UNRESERVED_KEYWORD, BARE_LABEL)
 PG_KEYWORD("symmetric", SYMMETRIC, RESERVED_KEYWORD, BARE_LABEL)
diff --git a/src/include/parser/parse_node.h b/src/include/parser/parse_node.h
index 5b781d87a9..66935afff8 100644
--- a/src/include/parser/parse_node.h
+++ b/src/include/parser/parse_node.h
@@ -51,6 +51,7 @@ typedef enum ParseExprKind
 	EXPR_KIND_WINDOW_FRAME_RANGE,	/* window frame clause with RANGE */
 	EXPR_KIND_WINDOW_FRAME_ROWS,	/* window frame clause with ROWS */
 	EXPR_KIND_WINDOW_FRAME_GROUPS,	/* window frame clause with GROUPS */
+	EXPR_KIND_RPR_DEFINE,		/* DEFINE */
 	EXPR_KIND_SELECT_TARGET,	/* SELECT target list item */
 	EXPR_KIND_INSERT_TARGET,	/* INSERT target list item */
 	EXPR_KIND_UPDATE_SOURCE,	/* UPDATE assignment source item */
-- 
2.25.1


----Next_Part(Sat_May_11_16_23_07_2024_789)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="v18-0002-Row-pattern-recognition-patch-parse-analysis.patch"



^ permalink  raw  reply  [nested|flat] 554+ messages in thread

* [PATCH v1] Allow pg_read_all_stats to see database size in \l+
@ 2026-07-22 11:16  Christoph Berg <myon@debian.org>
  0 siblings, 0 replies; 554+ messages in thread

From: Christoph Berg @ 2026-07-22 11:16 UTC (permalink / raw)

The server already allowed members of pg_read_all_stats to see the size
of all databases, but psql's \l+ was too restrictive.
---
 src/bin/psql/describe.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index a2f09c26369..ad9c8affb4f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -986,7 +986,8 @@ listAllDbs(const char *pattern, bool verbose)
 	printACLColumn(&buf, "d.datacl");
 	if (verbose)
 		appendPQExpBuffer(&buf,
-						  ",\n  CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+						  ",\n  CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') OR\n"
+						  "               pg_catalog.pg_has_role('pg_read_all_stats', 'USAGE')\n"
 						  "       THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(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 --
2024-05-11 07:11 [PATCH v18 1/8] Row pattern recognition patch for raw parser. Tatsuo Ishii <ishii@postgresql.org>
2026-07-22 11:16 [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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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: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