Files
greptimedb/tests/cases/standalone/common/system/pg_catalog.sql
JohnsonLee 6694d2a930 fix: change the type of oid in pg_namespace to u32 (#4541)
* fix:  change the type of oid in pg_namespace to u32

* fix: header and correct logic of update oid
2024-08-10 15:06:14 +00:00

114 lines
3.3 KiB
SQL

-- should not able to create pg_catalog
create database pg_catalog;
select * from pg_catalog.pg_type order by oid;
-- \d
SELECT n.nspname as "Schema",
c.relname as "Name",
CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 't' THEN 'TOAST table' WHEN 'f' THEN 'foreign table' WHEN 'p' THEN 'partitioned table' WHEN 'I' THEN 'partitioned index' END as "Type",
pg_catalog.pg_get_userbyid(c.relowner) as "Owner"
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','p','v','m','S','f','')
AND n.nspname <> 'pg_catalog'
AND n.nspname !~ '^pg_toast'
AND n.nspname <> 'information_schema'
AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1,2;
-- \dt
SELECT n.nspname as "Schema",
c.relname as "Name",
CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 't' THEN 'TOAST table' WHEN 'f' THEN 'foreign table' WHEN 'p' THEN 'partitioned table' WHEN 'I' THEN 'partitioned index' END as "Type",
pg_catalog.pg_get_userbyid(c.relowner) as "Owner"
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','p','')
AND n.nspname <> 'pg_catalog'
AND n.nspname !~ '^pg_toast'
AND n.nspname <> 'information_schema'
AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1,2;
-- make sure oid of namespace keep stable
SELECT * FROM pg_namespace ORDER BY oid;
create
database my_db;
use my_db;
create table foo
(
ts TIMESTAMP TIME INDEX
);
-- show tables in `my_db`
select relname
from pg_catalog.pg_class
where relnamespace = (
select oid
from pg_catalog.pg_namespace
where nspname = 'my_db'
);
-- \dt
SELECT n.nspname as "Schema",
c.relname as "Name",
CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 't' THEN 'TOAST table' WHEN 'f' THEN 'foreign table' WHEN 'p' THEN 'partitioned table' WHEN 'I' THEN 'partitioned index' END as "Type",
pg_catalog.pg_get_userbyid(c.relowner) as "Owner"
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','p','')
AND n.nspname <> 'pg_catalog'
AND n.nspname !~ '^pg_toast'
AND n.nspname <> 'information_schema'
AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1,2;
-- show tables in `my_db`, `public`
select relname
from pg_catalog.pg_class
where relnamespace in (
select oid
from pg_catalog.pg_namespace
where nspname = 'my_db' or nspname = 'public'
)
order by relname;
select relname
from pg_catalog.pg_class
where relnamespace in (
select oid
from pg_catalog.pg_namespace
where nspname like 'my%'
);
select relnamespace, relname, relkind
from pg_catalog.pg_class
where relnamespace in (
select oid
from pg_catalog.pg_namespace
where nspname <> 'public'
and nspname <> 'information_schema'
and nspname <> 'pg_catalog'
)
order by relnamespace, relname;
use public;
drop schema my_db;
use pg_catalog;
-- pg_class
desc table pg_class;
desc table pg_namespace;
drop table my_db.foo;
use public;