pgjdbc/pgjdbc GitHub issues and pull requests (mirror)
help / color / mirror / Atom feedFrom: vlsi (@vlsi) <[email protected]>
To: pgjdbc/pgjdbc <[email protected]>
Subject: [pgjdbc/pgjdbc] PR #3244: refactor: use oid=?::regtype when fetching pg_type by name instead of joining pg_namespace
Date: Sun, 12 May 2024 13:42:58 +0000
Message-ID: <[email protected]> (raw)
This makes the query simpler, and it aligns the lookup semantics with the one of the database.
There is a couple of places where `TypeInfoCache` still uses `typname = ?`, however, I am not sure regarding their semantics, so making a small change for now.
diff --git a/pgjdbc/src/main/java/org/postgresql/jdbc/TypeInfoCache.java b/pgjdbc/src/main/java/org/postgresql/jdbc/TypeInfoCache.java
index 387648a6e1..24806cc7e6 100644
--- a/pgjdbc/src/main/java/org/postgresql/jdbc/TypeInfoCache.java
+++ b/pgjdbc/src/main/java/org/postgresql/jdbc/TypeInfoCache.java
@@ -409,21 +409,9 @@ private PreparedStatement getOidStatement(String pgTypeName) throws SQLException
if (dotIndex == -1 && !hasQuote && !isArray) {
PreparedStatement getOidStatementSimple = this.getOidStatementSimple;
if (getOidStatementSimple == null) {
- String sql;
- // see comments in @getSQLType()
- // -- go with older way of unnesting array to be compatible with 8.0
- sql = "SELECT pg_type.oid, typname "
- + " FROM pg_catalog.pg_type "
- + " LEFT "
- + " JOIN (select ns.oid as nspoid, ns.nspname, r.r "
- + " from pg_namespace as ns "
- + " join ( select s.r, (current_schemas(false))[s.r] as nspname "
- + " from generate_series(1, array_upper(current_schemas(false), 1)) as s(r) ) as r "
- + " using ( nspname ) "
- + " ) as sp "
- + " ON sp.nspoid = typnamespace "
- + " WHERE typname = ? "
- + " ORDER BY sp.r, pg_type.oid DESC LIMIT 1;";
+ String sql = "SELECT pg_type.oid, typname "
+ + " FROM pg_catalog.pg_type "
+ + " WHERE oid = ?::regtype";
this.getOidStatementSimple = getOidStatementSimple = conn.prepareStatement(sql);
}
// coerce to lower case to handle upper case type names
view thread (5+ messages) latest in thread
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: github://pgjdbc/pgjdbc
Cc: [email protected], [email protected]
Subject: Re: [pgjdbc/pgjdbc] PR #3244: refactor: use oid=?::regtype when fetching pg_type by name instead of joining pg_namespace
In-Reply-To: <<[email protected]>>
* 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