From 6c8bb1c30ca1b270bc08cf8f6e91b2d6fbae693c Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Thu, 9 Sep 2021 17:02:33 +0200 Subject: [PATCH] [jOOQ/jOOQ#12420] Deprecate PostgresDSL.oid() and replace its usage by actual OID columns --- .../jooq/meta/postgres/PostgresDatabase.java | 60 +++++++++---------- .../PostgresMaterializedViewDefinition.java | 20 +++---- .../postgres/PostgresTableDefinition.java | 6 +- .../postgres/PostgresTableValuedFunction.java | 8 +-- .../org/jooq/util/postgres/PostgresDSL.java | 7 ++- 5 files changed, 53 insertions(+), 48 deletions(-) diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresDatabase.java b/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresDatabase.java index 0646840e23..18e9e83967 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresDatabase.java @@ -223,7 +223,7 @@ public class PostgresDatabase extends AbstractDatabase implements ResultQueryDat field("{0}::int[]", Integer[].class, i.INDOPTION).as("asc_or_desc") ) .from(i) - .join(trel).on(oid(trel).eq(i.INDRELID)) + .join(trel).on(trel.OID.eq(i.INDRELID)) .where(trel.pgNamespace().NSPNAME.in(getInputSchemata())) .and(getIncludeSystemIndexes() ? noCondition() @@ -492,9 +492,9 @@ public class PostgresDatabase extends AbstractDatabase implements ResultQueryDat .on(TABLES.TABLE_SCHEMA.eq(PG_NAMESPACE.NSPNAME)) .join(PG_CLASS) .on(PG_CLASS.RELNAME.eq(TABLES.TABLE_NAME)) - .and(PG_CLASS.RELNAMESPACE.eq(oid(PG_NAMESPACE))) + .and(PG_CLASS.RELNAMESPACE.eq(PG_NAMESPACE.OID)) .leftJoin(PG_DESCRIPTION) - .on(PG_DESCRIPTION.OBJOID.eq(oid(PG_CLASS))) + .on(PG_DESCRIPTION.OBJOID.eq(PG_CLASS.OID)) .and(PG_DESCRIPTION.OBJSUBID.eq(0)) .leftJoin(VIEWS) .on(TABLES.TABLE_SCHEMA.eq(VIEWS.TABLE_SCHEMA)) @@ -510,7 +510,7 @@ public class PostgresDatabase extends AbstractDatabase implements ResultQueryDat PG_CLASS.RELNAME) .from(PG_CLASS) .join(PG_NAMESPACE) - .on(PG_CLASS.RELNAMESPACE.eq(oid(PG_NAMESPACE))) + .on(PG_CLASS.RELNAMESPACE.eq(PG_NAMESPACE.OID)) .where(PG_CLASS.RELKIND.eq(inline("m")))) : noCondition() ) @@ -529,9 +529,9 @@ public class PostgresDatabase extends AbstractDatabase implements ResultQueryDat inline("")) .from(PG_CLASS) .join(PG_NAMESPACE) - .on(PG_CLASS.RELNAMESPACE.eq(oid(PG_NAMESPACE))) + .on(PG_CLASS.RELNAMESPACE.eq(PG_NAMESPACE.OID)) .leftOuterJoin(PG_DESCRIPTION) - .on(PG_DESCRIPTION.OBJOID.eq(oid(PG_CLASS))) + .on(PG_DESCRIPTION.OBJOID.eq(PG_CLASS.OID)) .and(PG_DESCRIPTION.OBJSUBID.eq(0)) .where(PG_NAMESPACE.NSPNAME.in(getInputSchemata())) .and(PG_CLASS.RELKIND.eq(inline("m")))) @@ -549,8 +549,8 @@ public class PostgresDatabase extends AbstractDatabase implements ResultQueryDat inline("")) .from(ROUTINES) .join(PG_NAMESPACE).on(ROUTINES.SPECIFIC_SCHEMA.eq(PG_NAMESPACE.NSPNAME)) - .join(PG_PROC).on(PG_PROC.PRONAMESPACE.eq(oid(PG_NAMESPACE))) - .and(PG_PROC.PRONAME.concat("_").concat(oid(PG_PROC)).eq(ROUTINES.SPECIFIC_NAME)) + .join(PG_PROC).on(PG_PROC.PRONAMESPACE.eq(PG_NAMESPACE.OID)) + .and(PG_PROC.PRONAME.concat("_").concat(PG_PROC.OID).eq(ROUTINES.SPECIFIC_NAME)) .where(ROUTINES.ROUTINE_SCHEMA.in(getInputSchemata())) .and(PG_PROC.PRORETSET) @@ -601,10 +601,10 @@ public class PostgresDatabase extends AbstractDatabase implements ResultQueryDat max(i.INHSEQNO).over().partitionBy(i.INHRELID).as("m") ) .from(ct) - .join(cn).on(ct.RELNAMESPACE.eq(oid(cn))) - .join(i).on(i.INHRELID.eq(oid(ct))) - .join(pt).on(i.INHPARENT.eq(oid(pt))) - .join(pn).on(pt.RELNAMESPACE.eq(oid(pn))) + .join(cn).on(ct.RELNAMESPACE.eq(cn.OID)) + .join(i).on(i.INHRELID.eq(ct.OID)) + .join(pt).on(i.INHPARENT.eq(pt.OID)) + .join(pn).on(pt.RELNAMESPACE.eq(pn.OID)) .where(cn.NSPNAME.in(getInputSchemata())) .and(pn.NSPNAME.in(getInputSchemata())) .fetch()) { @@ -769,7 +769,7 @@ public class PostgresDatabase extends AbstractDatabase implements ResultQueryDat PG_TYPE.TYPNAME) .from(PG_TYPE) .where(PG_TYPE.pgNamespace().NSPNAME.in(getInputSchemata())) - .and(oid(PG_TYPE).in(select(PG_ENUM.ENUMTYPID).from(PG_ENUM))) + .and(PG_TYPE.OID.in(select(PG_ENUM.ENUMTYPID).from(PG_ENUM))) .orderBy( PG_TYPE.pgNamespace().NSPNAME, PG_TYPE.TYPNAME) @@ -804,7 +804,7 @@ public class PostgresDatabase extends AbstractDatabase implements ResultQueryDat PgType b = PG_TYPE.as("b"); Field src = field(name("domains", "src"), String[].class); - Field constraintDef = field("pg_get_constraintdef({0})", VARCHAR, oid(c)); + Field constraintDef = field("pg_get_constraintdef({0})", VARCHAR, c.OID); for (Record record : create() .withRecursive("domains", @@ -815,22 +815,22 @@ public class PostgresDatabase extends AbstractDatabase implements ResultQueryDat ) .as( select( - oid(d), - oid(d), + d.OID, + d.OID, d.TYPBASETYPE, - when(oid(c).isNotNull(), array(constraintDef)) + when(c.OID.isNotNull(), array(constraintDef)) ) .from(d) .join(n) - .on(oid(n).eq(d.TYPNAMESPACE)) + .on(n.OID.eq(d.TYPNAMESPACE)) .leftJoin(c) - .on(oid(d).eq(c.CONTYPID)) + .on(d.OID.eq(c.CONTYPID)) .where(d.TYPTYPE.eq("d")) .and(n.NSPNAME.in(getInputSchemata())) .unionAll( select( field(name("domains", "domain_id"), Long.class), - oid(d), + d.OID, d.TYPBASETYPE, decode() .when(c.CONBIN.isNull(), src) @@ -838,9 +838,9 @@ public class PostgresDatabase extends AbstractDatabase implements ResultQueryDat ) .from(name("domains")) .join(d) - .on(field(name("domains", d.TYPBASETYPE.getName())).eq(oid(d))) + .on(field(name("domains", d.TYPBASETYPE.getName())).eq(d.OID)) .leftJoin(c) - .on(oid(d).eq(c.CONTYPID)) + .on(d.OID.eq(c.CONTYPID)) )) .select( n.NSPNAME, @@ -857,11 +857,11 @@ public class PostgresDatabase extends AbstractDatabase implements ResultQueryDat .from(d) .join(name("domains")) .on(field(name("domains", "typbasetype")).eq(0)) - .and(field(name("domains", "domain_id")).eq(oid(d))) + .and(field(name("domains", "domain_id")).eq(d.OID)) .join(b) - .on(field(name("domains", "base_id")).eq(oid(b))) + .on(field(name("domains", "base_id")).eq(b.OID)) .join(n) - .on(oid(n).eq(d.TYPNAMESPACE)) + .on(n.OID.eq(d.TYPNAMESPACE)) .where(d.TYPTYPE.eq("d")) .and(n.NSPNAME.in(getInputSchemata())) .orderBy(n.NSPNAME, d.TYPNAME)) { @@ -980,7 +980,7 @@ public class PostgresDatabase extends AbstractDatabase implements ResultQueryDat rowNumber().over(partitionBy(r1.ROUTINE_SCHEMA, r1.ROUTINE_NAME).orderBy( // [#9754] To stabilise overload calculation, we use the type signature - // replace(field("pg_get_function_arguments({0})", VARCHAR, oid(PG_PROC)), inline('"'), inline("")), + // replace(field("pg_get_function_arguments({0})", VARCHAR, PG_PROC.OID), inline('"'), inline("")), r1.SPECIFIC_NAME )) ).as("overload"), @@ -990,10 +990,10 @@ public class PostgresDatabase extends AbstractDatabase implements ResultQueryDat // [#3375] Exclude table-valued functions as they're already generated as tables .join(PG_NAMESPACE).on(PG_NAMESPACE.NSPNAME.eq(r1.SPECIFIC_SCHEMA)) - .join(PG_PROC).on(PG_PROC.PRONAMESPACE.eq(oid(PG_NAMESPACE))) + .join(PG_PROC).on(PG_PROC.PRONAMESPACE.eq(PG_NAMESPACE.OID)) .and(is12() - ? condition("nameconcatoid({0}, {1}) = {2}", PG_PROC.PRONAME, oid(PG_PROC), r1.SPECIFIC_NAME) - : PG_PROC.PRONAME.concat("_").concat(oid(PG_PROC)).eq(r1.SPECIFIC_NAME)) + ? condition("nameconcatoid({0}, {1}) = {2}", PG_PROC.PRONAME, PG_PROC.OID, r1.SPECIFIC_NAME) + : PG_PROC.PRONAME.concat("_").concat(PG_PROC.OID).eq(r1.SPECIFIC_NAME)) .where(r1.ROUTINE_SCHEMA.in(getInputSchemata())) .and(tableValuedFunctions() ? condition(not(PG_PROC.PRORETSET)) @@ -1073,7 +1073,7 @@ public class PostgresDatabase extends AbstractDatabase implements ResultQueryDat // [#11325] nameconcatoid was added in PostgreSQL 12 only if (is12 == null) - is12 = configuredDialectIsNotFamilyAndSupports(asList(POSTGRES), () -> exists(table(select(field("nameconcatoid({0}, {1})", PG_PROC.PRONAME, oid(PG_PROC))).from(PG_PROC)))); + is12 = configuredDialectIsNotFamilyAndSupports(asList(POSTGRES), () -> exists(table(select(field("nameconcatoid({0}, {1})", PG_PROC.PRONAME, PG_PROC.OID)).from(PG_PROC)))); return is12; } diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresMaterializedViewDefinition.java b/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresMaterializedViewDefinition.java index 056c80ae8e..240e160617 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresMaterializedViewDefinition.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresMaterializedViewDefinition.java @@ -135,27 +135,27 @@ public class PostgresMaterializedViewDefinition extends AbstractTableDefinition .and(a.ATTNUM.eq(ad.ADNUM)) .join(c .join(nc) - .on(c.RELNAMESPACE.eq(oid(nc)))) - .on(a.ATTRELID.eq(oid(c))) + .on(c.RELNAMESPACE.eq(nc.OID))) + .on(a.ATTRELID.eq(c.OID)) .join(t .join(nt) - .on(t.TYPNAMESPACE.eq(oid(nt)))) - .on(a.ATTTYPID.eq(oid(t)))) + .on(t.TYPNAMESPACE.eq(nt.OID))) + .on(a.ATTTYPID.eq(t.OID))) .leftJoin(bt .join(nbt) - .on(bt.TYPNAMESPACE.eq(oid(nbt)))) - .on(t.TYPTYPE.eq(inline("d")).and(t.TYPBASETYPE.eq(oid(bt)))) + .on(bt.TYPNAMESPACE.eq(nbt.OID))) + .on(t.TYPTYPE.eq(inline("d")).and(t.TYPBASETYPE.eq(bt.OID))) .leftJoin(co .join(nco) - .on(co.COLLNAMESPACE.eq(oid(nco)))) - .on(a.ATTCOLLATION.eq(oid(co)).and( + .on(co.COLLNAMESPACE.eq(nco.OID))) + .on(a.ATTCOLLATION.eq(co.OID).and( nco.NSPNAME.ne(inline("pg_catalog")).or(co.COLLNAME.ne(inline("default"))) )) .leftJoin(PG_DESCRIPTION) - .on(PG_DESCRIPTION.OBJOID.eq(oid(c))) + .on(PG_DESCRIPTION.OBJOID.eq(c.OID)) .and(PG_DESCRIPTION.OBJSUBID.eq(a.ATTNUM.coerce(PG_DESCRIPTION.OBJSUBID))) .where( - not(condition("pg_is_other_temp_schema({0})", oid(nc))) + not(condition("pg_is_other_temp_schema({0})", nc.OID)) .and(a.ATTNUM.gt(inline((short) 0))) .and(not(a.ATTISDROPPED)) .and(c.RELKIND.eq(inline("m"))) diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresTableDefinition.java b/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresTableDefinition.java index 6afaeaebe1..9fd3c41fad 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresTableDefinition.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresTableDefinition.java @@ -133,12 +133,12 @@ public class PostgresTableDefinition extends AbstractTableDefinition { .on(COLUMNS.TABLE_SCHEMA.eq(PG_NAMESPACE.NSPNAME)) .join(PG_CLASS) .on(PG_CLASS.RELNAME.eq(COLUMNS.TABLE_NAME)) - .and(PG_CLASS.RELNAMESPACE.eq(oid(PG_NAMESPACE))) + .and(PG_CLASS.RELNAMESPACE.eq(PG_NAMESPACE.OID)) .join(PG_ATTRIBUTE) - .on(PG_ATTRIBUTE.ATTRELID.eq(oid(PG_CLASS))) + .on(PG_ATTRIBUTE.ATTRELID.eq(PG_CLASS.OID)) .and(PG_ATTRIBUTE.ATTNAME.eq(COLUMNS.COLUMN_NAME)) .leftJoin(PG_DESCRIPTION) - .on(PG_DESCRIPTION.OBJOID.eq(oid(PG_CLASS))) + .on(PG_DESCRIPTION.OBJOID.eq(PG_CLASS.OID)) .and(PG_DESCRIPTION.OBJSUBID.eq(COLUMNS.ORDINAL_POSITION)) .where(COLUMNS.TABLE_SCHEMA.equal(getSchema().getName())) .and(COLUMNS.TABLE_NAME.equal(getName())) diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresTableValuedFunction.java b/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresTableValuedFunction.java index 9645b98cf9..37db374de9 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresTableValuedFunction.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresTableValuedFunction.java @@ -128,7 +128,7 @@ public class PostgresTableValuedFunction extends AbstractTableDefinition { .join(p).on(row(r.SPECIFIC_CATALOG, r.SPECIFIC_SCHEMA, r.SPECIFIC_NAME) .eq(p.SPECIFIC_CATALOG, p.SPECIFIC_SCHEMA, p.SPECIFIC_NAME)) .join(pg_n).on(r.SPECIFIC_SCHEMA.eq(pg_n.NSPNAME)) - .join(pg_p).on(pg_p.PRONAMESPACE.eq(oid(pg_n))) + .join(pg_p).on(pg_p.PRONAMESPACE.eq(pg_n.OID)) .and(pg_p.PRONAME.eq(r.ROUTINE_NAME)) .where(r.SPECIFIC_NAME.eq(specificName)) .and(p.PARAMETER_MODE.ne("IN")) @@ -151,7 +151,7 @@ public class PostgresTableValuedFunction extends AbstractTableDefinition { coalesce(c.COLUMN_DEFAULT , inline((String) null) ).as(c.COLUMN_DEFAULT), coalesce(c.UDT_SCHEMA , inline((String) null) ).as(c.UDT_SCHEMA), coalesce(c.UDT_NAME , r.UDT_NAME , - field(select(pg_t.TYPNAME).from(pg_t).where(oid(pg_t).eq(pg_p.PRORETTYPE))) + field(select(pg_t.TYPNAME).from(pg_t).where(pg_t.OID.eq(pg_p.PRORETTYPE))) ).as(c.UDT_NAME) ) .from(r) @@ -163,8 +163,8 @@ public class PostgresTableValuedFunction extends AbstractTableDefinition { .on(row(r.TYPE_UDT_CATALOG, r.TYPE_UDT_SCHEMA, r.TYPE_UDT_NAME) .eq(c.TABLE_CATALOG, c.TABLE_SCHEMA, c.TABLE_NAME)) .join(pg_n).on(r.SPECIFIC_SCHEMA.eq(pg_n.NSPNAME)) - .join(pg_p).on(pg_p.PRONAMESPACE.eq(oid(pg_n))) - .and(pg_p.PRONAME.concat("_").concat(oid(pg_p)).eq(r.SPECIFIC_NAME)) + .join(pg_p).on(pg_p.PRONAMESPACE.eq(pg_n.OID)) + .and(pg_p.PRONAME.concat("_").concat(pg_p.OID).eq(r.SPECIFIC_NAME)) .where(r.SPECIFIC_NAME.eq(specificName)) // [#4269] Exclude TABLE [ some type ] routines from the first UNION ALL subselect diff --git a/jOOQ/src/main/java/org/jooq/util/postgres/PostgresDSL.java b/jOOQ/src/main/java/org/jooq/util/postgres/PostgresDSL.java index 463852cb40..5148d6f9fa 100644 --- a/jOOQ/src/main/java/org/jooq/util/postgres/PostgresDSL.java +++ b/jOOQ/src/main/java/org/jooq/util/postgres/PostgresDSL.java @@ -718,10 +718,15 @@ public class PostgresDSL extends DSL { } /** - * Get the PostgreSQL-specific [table].oid column from any table. + * Get the PostgreSQL-specific [table].oid column from any + * table. + * + * @deprecated - [#12420] - 3.16.0 - Use actual OID column + * references in jOOQ-meta, instead. */ @NotNull @Support({ POSTGRES }) + @Deprecated(forRemoval = true, since = "3.16") public static Field oid(Table table) { return field("{0}.oid", Long.class, table); }