LANGUAGE 'sql' STABLE STRICT _PARALLEL;
-- Availability: 2.0.0
--- Deprecation in 2.2.0
+-- Undeprecated 2.5.2 needed by UpdateGeometrySRID
CREATE OR REPLACE FUNCTION postgis_constraint_dims(geomschema text, geomtable text, geomcolumn text) RETURNS integer AS
$$
SELECT replace(split_part(s.consrc, ' = ', 2), ')', '')::integer
- FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
+
+ FROM pg_class c, pg_namespace n, pg_attribute a
+ , (SELECT connamespace, conrelid, conkey, pg_get_constraintdef(oid) As consrc
+ FROM pg_constraint) AS s
WHERE n.nspname = $1
AND c.relname = $2
AND a.attname = $3
-- support function to pull out geometry type from constraint check
-- will return pretty name instead of ugly name
-- Availability: 2.0.0
--- Deprecation in 2.2.0
+-- Undeprecated
+-- Changed: 2.5.2 replace use of pg_constraint.consrc with pg_get_constraintdef, consrc removed pg12
CREATE OR REPLACE FUNCTION postgis_constraint_type(geomschema text, geomtable text, geomcolumn text) RETURNS varchar AS
$$
SELECT replace(split_part(s.consrc, '''', 2), ')', '')::varchar
- FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
+
+ FROM pg_class c, pg_namespace n, pg_attribute a
+ , (SELECT connamespace, conrelid, conkey, pg_get_constraintdef(oid) As consrc
+ FROM pg_constraint) AS s
WHERE n.nspname = $1
AND c.relname = $2
AND a.attname = $3
-- Changed: 2.1.8 significant performance improvement for constraint based columns
-- Changed: 2.2.0 get rid of schema, table, column cast to improve performance
-- Changed: 2.4.0 List also Parent partitioned tables
+-- Changed: 2.5.2 replace use of pg_constraint.consrc with pg_get_constraintdef, consrc removed pg12
CREATE OR REPLACE VIEW geometry_columns AS
SELECT current_database()::character varying(256) AS f_table_catalog,
n.nspname AS f_table_schema,
LEFT JOIN ( SELECT s.connamespace,
s.conrelid,
s.conkey, replace(split_part(s.consrc, ''''::text, 2), ')'::text, ''::text) As type
- FROM pg_constraint AS s
+ FROM (SELECT connamespace, conrelid, conkey, pg_get_constraintdef(oid) As consrc
+ FROM pg_constraint) AS s
WHERE s.consrc ~~* '%geometrytype(% = %'::text
) st ON st.connamespace = n.oid AND st.conrelid = c.oid AND (a.attnum = ANY (st.conkey))
LEFT JOIN ( SELECT s.connamespace,
s.conrelid,
s.conkey, replace(split_part(s.consrc, ' = '::text, 2), ')'::text, ''::text)::integer As ndims
- FROM pg_constraint AS s
+ FROM (SELECT connamespace, conrelid, conkey, pg_get_constraintdef(oid) As consrc
+ FROM pg_constraint) AS s
WHERE s.consrc ~~* '%ndims(% = %'::text
) sn ON sn.connamespace = n.oid AND sn.conrelid = c.oid AND (a.attnum = ANY (sn.conkey))
LEFT JOIN ( SELECT s.connamespace,
s.conrelid,
s.conkey, replace(replace(split_part(s.consrc, ' = '::text, 2), ')'::text, ''::text), '('::text, ''::text)::integer As srid
- FROM pg_constraint AS s
+ FROM (SELECT connamespace, conrelid, conkey, pg_get_constraintdef(oid) As consrc
+ FROM pg_constraint) AS s
WHERE s.consrc ~~* '%srid(% = %'::text
) sr ON sr.connamespace = n.oid AND sr.conrelid = c.oid AND (a.attnum = ANY (sr.conkey))
split_part(s.consrc, ' = ', 2),
'[\(\)]', '', 'g'
)::integer
- FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
+ FROM pg_class c, pg_namespace n, pg_attribute a
+ , (SELECT connamespace, conrelid, conkey, pg_get_constraintdef(oid) As consrc
+ FROM pg_constraint) AS s
WHERE n.nspname = $1
AND c.relname = $2
AND a.attname = $3
),
'[ ''''\(\)]', '', 'g'
)::text AS val
- FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
+ FROM pg_class c, pg_namespace n, pg_attribute a
+ , (SELECT connamespace, conrelid, conkey, pg_get_constraintdef(oid) As consrc
+ FROM pg_constraint) AS s
WHERE n.nspname = $1
AND c.relname = $2
AND a.attname = $3
'[\(\)]', '', 'g'
)::integer
END
- FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
+ FROM pg_class c, pg_namespace n, pg_attribute a
+ , (SELECT connamespace, conrelid, conkey, pg_get_constraintdef(oid) As consrc
+ FROM pg_constraint) AS s
WHERE n.nspname = $1
AND c.relname = $2
AND a.attname = $3
RETURNS geometry AS $$
SELECT
trim(both '''' from split_part(trim(split_part(s.consrc, ' @ ', 2)), '::', 1))::geometry
- FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
+ FROM pg_class c, pg_namespace n, pg_attribute a
+ , (SELECT connamespace, conrelid, conkey, pg_get_constraintdef(oid) As consrc
+ FROM pg_constraint) AS s
WHERE n.nspname = $1
AND c.relname = $2
AND a.attname = $3
RETURNS boolean AS $$
SELECT
TRUE
- FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
+ FROM pg_class c, pg_namespace n, pg_attribute a
+ , (SELECT connamespace, conrelid, conkey, pg_get_constraintdef(oid) As consrc
+ FROM pg_constraint) AS s
WHERE n.nspname = $1
AND c.relname = $2
AND a.attname = $3
sql := 'ALTER TABLE ' || fqtn ||
' ADD CONSTRAINT ' || quote_ident(cn) ||
- ' CHECK (st_samealignment(' || quote_ident($3) || ', ''' || attr || '''::raster))';
+ ' CHECK (@extschema@.st_samealignment(' || quote_ident($3) || ', ''' || attr || '''::raster))';
RETURN @extschema@._add_raster_constraint(cn, sql);
END;
$$ LANGUAGE 'plpgsql' VOLATILE STRICT
RETURNS boolean AS $$
SELECT
TRUE
- FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s, pg_index idx, pg_operator op
+ FROM pg_class c, pg_namespace n, pg_attribute a
+ , (SELECT connamespace, conrelid, conindid, conkey, contype, conexclop, pg_get_constraintdef(oid) As consrc
+ FROM pg_constraint) AS s
+ , pg_index idx, pg_operator op
WHERE n.nspname = $1
AND c.relname = $2
AND a.attname = $3
BEGIN
SELECT
s.conname INTO cn
- FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s, pg_index idx, pg_operator op
+ FROM pg_class c, pg_namespace n, pg_attribute a
+ , (SELECT connamespace, conname, conrelid, conkey, conindid, contype, conexclop, pg_get_constraintdef(oid) As consrc
+ FROM pg_constraint) AS s
+ , pg_index idx, pg_operator op
WHERE n.nspname = $1
AND c.relname = $2
AND a.attname = $3
RETURNS boolean AS $$
SELECT
TRUE
- FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
+ FROM pg_class c, pg_namespace n, pg_attribute a
+ , (SELECT connamespace, conrelid, conkey, pg_get_constraintdef(oid) As consrc
+ FROM pg_constraint) AS s
WHERE n.nspname = $1
AND c.relname = $2
AND a.attname = $3
split_part(s.consrc, ' = ', 2),
'[\(\)]', '', 'g'
)::integer
- FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
+ FROM pg_class c, pg_namespace n, pg_attribute a
+ , (SELECT connamespace, conrelid, conkey, pg_get_constraintdef(oid) As consrc
+ FROM pg_constraint) AS s
WHERE n.nspname = $1
AND c.relname = $2
AND a.attname = $3
'::', 1
)
)::text[]
- FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
+ FROM pg_class c, pg_namespace n, pg_attribute a
+ , (SELECT connamespace, conrelid, conkey, pg_get_constraintdef(oid) As consrc
+ FROM pg_constraint) AS s
WHERE n.nspname = $1
AND c.relname = $2
AND a.attname = $3
'::', 1
)
)::double precision[]
- FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
+ FROM pg_class c, pg_namespace n, pg_attribute a
+ , (SELECT connamespace, conrelid, conkey, pg_get_constraintdef(oid) As consrc
+ FROM pg_constraint) AS s
WHERE n.nspname = $1
AND c.relname = $2
AND a.attname = $3
'::', 1
)
)::boolean[]
- FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
+ FROM pg_class c, pg_namespace n, pg_attribute a
+ , (SELECT connamespace, conrelid, conkey, pg_get_constraintdef(oid) As consrc
+ FROM pg_constraint) AS s
WHERE n.nspname = $1
AND c.relname = $2
AND a.attname = $3
split_part(split_part(s.consrc, '''::name', 2), '''', 2)::name,
split_part(split_part(s.consrc, '''::name', 3), '''', 2)::name,
trim(both from split_part(s.consrc, ',', 2))::integer
- FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
+ FROM pg_class c, pg_namespace n, pg_attribute a
+ , (SELECT connamespace, conrelid, conkey, pg_get_constraintdef(oid) As consrc
+ FROM pg_constraint) AS s
WHERE n.nspname = $1
AND c.relname = $2
AND a.attname = $3
pg_attribute a,
pg_type t,
pg_namespace n,
- pg_constraint s
+ (SELECT connamespace, conrelid, conkey, pg_get_constraintdef(oid) As consrc
+ FROM pg_constraint) AS s
WHERE t.typname = 'raster'::name
AND a.attisdropped = false
AND a.atttypid = t.oid