1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
-- has_composite( schema, type )
CREATE OR REPLACE FUNCTION has_composite ( NAME, NAME )
RETURNS TEXT AS $$
SELECT has_composite(
$1, $2,
'Composite type ' || quote_ident($1) || '.' || quote_ident($2) || ' should exist'
);
$$ LANGUAGE SQL;
-- hasnt_composite( schema, type )
CREATE OR REPLACE FUNCTION hasnt_composite ( NAME, NAME )
RETURNS TEXT AS $$
SELECT hasnt_composite(
$1, $2,
'Composite type ' || quote_ident($1) || '.' || quote_ident($2) || ' should not exist'
);
$$ LANGUAGE SQL;
-- index_is_partial( schema, table, index, description )
CREATE OR REPLACE FUNCTION index_is_partial ( NAME, NAME, NAME, text )
RETURNS TEXT AS $$
DECLARE
res boolean;
BEGIN
SELECT x.indpred IS NOT NULL
FROM pg_catalog.pg_index x
JOIN pg_catalog.pg_class ct ON ct.oid = x.indrelid
JOIN pg_catalog.pg_class ci ON ci.oid = x.indexrelid
JOIN pg_catalog.pg_namespace n ON n.oid = ct.relnamespace
WHERE ct.relname = $2
AND ci.relname = $3
AND n.nspname = $1
INTO res;
RETURN ok( COALESCE(res, false), $4 );
END;
$$ LANGUAGE plpgsql;
-- index_is_partial( schema, table, index )
CREATE OR REPLACE FUNCTION index_is_partial ( NAME, NAME, NAME )
RETURNS TEXT AS $$
SELECT index_is_partial(
$1, $2, $3,
'Index ' || quote_ident($3) || ' should be partial'
);
$$ LANGUAGE sql;
-- index_is_partial( table, index )
CREATE OR REPLACE FUNCTION index_is_partial ( NAME, NAME )
RETURNS TEXT AS $$
DECLARE
res boolean;
BEGIN
SELECT x.indpred IS NOT NULL
FROM pg_catalog.pg_index x
JOIN pg_catalog.pg_class ct ON ct.oid = x.indrelid
JOIN pg_catalog.pg_class ci ON ci.oid = x.indexrelid
WHERE ct.relname = $1
AND ci.relname = $2
AND pg_catalog.pg_table_is_visible(ct.oid)
INTO res;
RETURN ok(
COALESCE(res, false),
'Index ' || quote_ident($2) || ' should be partial'
);
END;
$$ LANGUAGE plpgsql;
-- index_is_partial( index )
CREATE OR REPLACE FUNCTION index_is_partial ( NAME )
RETURNS TEXT AS $$
DECLARE
res boolean;
BEGIN
SELECT x.indpred IS NOT NULL
FROM pg_catalog.pg_index x
JOIN pg_catalog.pg_class ci ON ci.oid = x.indexrelid
JOIN pg_catalog.pg_class ct ON ct.oid = x.indrelid
WHERE ci.relname = $1
AND pg_catalog.pg_table_is_visible(ct.oid)
INTO res;
RETURN ok(
COALESCE(res, false),
'Index ' || quote_ident($1) || ' should be partial'
);
END;
$$ LANGUAGE plpgsql;
|