public inbox for [email protected]
help / color / mirror / Atom feedFrom: Nathan Bossart <[email protected]>
Subject: [PATCH v1 1/1] teach vacuumlo to handle domains over oid
Date: Wed, 13 May 2026 22:05:02 -0500
---
contrib/vacuumlo/vacuumlo.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/contrib/vacuumlo/vacuumlo.c b/contrib/vacuumlo/vacuumlo.c
index 8102569466b..230f6958fc1 100644
--- a/contrib/vacuumlo/vacuumlo.c
+++ b/contrib/vacuumlo/vacuumlo.c
@@ -191,13 +191,25 @@ vacuumlo(const char *database, const struct _param *param)
* delete...
*/
buf[0] = '\0';
+ if (PQserverVersion(conn) >= 140000)
+ strcat(buf, "WITH RECURSIVE cte AS "
+ "(SELECT oid AS oid2, oid, typname, typbasetype FROM pg_type "
+ "UNION ALL "
+ "SELECT t2.oid2, t.oid, t.typname, t.typbasetype FROM pg_type t "
+ "JOIN cte t2 ON t.oid = t2.typbasetype) ");
strcat(buf, "SELECT s.nspname, c.relname, a.attname ");
strcat(buf, "FROM pg_class c, pg_attribute a, pg_namespace s, pg_type t ");
+ if (PQserverVersion(conn) >= 140000)
+ strcat(buf, ", cte ");
strcat(buf, "WHERE a.attnum > 0 AND NOT a.attisdropped ");
strcat(buf, " AND a.attrelid = c.oid ");
strcat(buf, " AND a.atttypid = t.oid ");
strcat(buf, " AND c.relnamespace = s.oid ");
- strcat(buf, " AND t.typname in ('oid', 'lo') ");
+ if (PQserverVersion(conn) >= 140000)
+ strcat(buf, " AND t.oid = cte.oid2 "
+ " AND cte.typname = 'oid' ");
+ else
+ strcat(buf, " AND t.typname in ('oid', 'lo') ");
strcat(buf, " AND c.relkind in (" CppAsString2(RELKIND_RELATION) ", " CppAsString2(RELKIND_MATVIEW) ")");
strcat(buf, " AND s.nspname !~ '^pg_'");
res = PQexec(conn, buf);
--
2.50.1 (Apple Git-155)
--K++Jp4URl2Oj0VAw--
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected]
Subject: Re: [PATCH v1 1/1] teach vacuumlo to handle domains over oid
In-Reply-To: <no-message-id-296581@localhost>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox