[jOOQ/jOOQ#12420] Deprecate PostgresDSL.oid() and replace its usage by

actual OID columns
This commit is contained in:
Lukas Eder 2021-09-09 17:02:33 +02:00
parent 7c861a5010
commit 6c8bb1c30c
5 changed files with 53 additions and 48 deletions

View File

@ -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<String[]> src = field(name("domains", "src"), String[].class);
Field<String> constraintDef = field("pg_get_constraintdef({0})", VARCHAR, oid(c));
Field<String> 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;
}

View File

@ -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")))

View File

@ -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()))

View File

@ -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

View File

@ -718,10 +718,15 @@ public class PostgresDSL extends DSL {
}
/**
* Get the PostgreSQL-specific <code>[table].oid</code> column from any table.
* Get the PostgreSQL-specific <code>[table].oid</code> column from any
* table.
*
* @deprecated - [#12420] - 3.16.0 - Use actual <code>OID</code> column
* references in jOOQ-meta, instead.
*/
@NotNull
@Support({ POSTGRES })
@Deprecated(forRemoval = true, since = "3.16")
public static Field<Long> oid(Table<?> table) {
return field("{0}.oid", Long.class, table);
}