Skip to content

Commit

Permalink
Optimize
Browse files Browse the repository at this point in the history
  • Loading branch information
evgeniy-r committed May 29, 2022
1 parent 182f3f6 commit 48655c3
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 28 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
([@evgeniy-r](https://github.com/evgeniy-r))

### ⚙️ Changed
- Speed up loading of metadata [#170](https://github.com/datanymizer/datanymizer/pull/170)
([@evgeniy-r](https://github.com/evgeniy-r))
- Remove the dependency from `crono` ([security issue](https://github.com/chronotope/chrono/pull/578))
[#152](https://github.com/datanymizer/datanymizer/pull/152) ([@evgeniy-r](https://github.com/evgeniy-r)).
Remove the `raw_date` and `raw_datetime` transformers (duplication with the `datetime` transformer).
Expand Down
56 changes: 28 additions & 28 deletions datanymizer_dumper/src/postgres/schema_inspector.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,41 +6,41 @@ use anyhow::Result;
use postgres::types::Type;

const PG_CATALOG_SCHEMA_QUERY: &str = "SELECT tablename, schemaname
FROM pg_catalog.pg_tables
WHERE schemaname != 'pg_catalog' AND schemaname != 'information_schema'";
FROM pg_catalog.pg_tables
WHERE schemaname != 'pg_catalog' AND schemaname != 'information_schema'";

const TABLE_FK_QUERY: &str = "SELECT tc.table_schema,
tc.constraint_name,
tc.table_name,
kcu.column_name,
ccu.table_schema AS foreign_table_schema,
ccu.table_name AS foreign_table_name,
ccu.column_name AS foreign_column_name
FROM information_schema.table_constraints AS tc
JOIN information_schema.key_column_usage AS kcu
ON tc.constraint_name = kcu.constraint_name AND tc.table_schema = kcu.table_schema
JOIN information_schema.constraint_column_usage AS ccu
ON ccu.constraint_name = tc.constraint_name AND ccu.table_schema = tc.table_schema
WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.table_schema = $1 AND tc.table_name = $2";
tc.constraint_name,
tc.table_name,
kcu.column_name,
ccu.table_schema AS foreign_table_schema,
ccu.table_name AS foreign_table_name,
ccu.column_name AS foreign_column_name
FROM information_schema.table_constraints AS tc
JOIN information_schema.key_column_usage AS kcu
ON tc.constraint_name = kcu.constraint_name AND tc.table_schema = kcu.table_schema
JOIN information_schema.constraint_column_usage AS ccu
ON ccu.constraint_name = tc.constraint_name AND ccu.table_schema = tc.table_schema
WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.table_schema = $1 AND tc.table_name = $2";

const TABLE_COLUMNS_QUERY: &str = "SELECT cc.column_name, cc.ordinal_position, cc.data_type, pt.oid
FROM information_schema.columns as cc
JOIN pg_catalog.pg_namespace as pn
ON cc.udt_schema = pn.nspname
JOIN pg_catalog.pg_type as pt
ON cc.udt_name = pt.typname AND pn.oid = pt.typnamespace
WHERE cc.table_schema = $1 and cc.table_name = $2
ORDER BY cc.ordinal_position ASC";
FROM information_schema.columns as cc
JOIN pg_catalog.pg_namespace as pn
ON cc.udt_schema = pn.nspname
JOIN pg_catalog.pg_type as pt
ON cc.udt_name = pt.typname AND pn.oid = pt.typnamespace
WHERE cc.table_schema = $1 and cc.table_name = $2
ORDER BY cc.ordinal_position ASC";

const TABLE_SIZE_QUERY: &str =
"SELECT
(pg_catalog.pg_class.reltuples / COALESCE(NULLIF(pg_catalog.pg_class.relpages, 0), 1))::bigint * (
pg_relation_size(pg_catalog.pg_class.oid)::bigint /
current_setting('block_size')::bigint
)::bigint AS len
FROM pg_catalog.pg_class
INNER JOIN pg_catalog.pg_namespace ON pg_catalog.pg_class.relnamespace = pg_catalog.pg_namespace.oid
WHERE pg_catalog.pg_namespace.nspname = $1 AND pg_catalog.pg_class.relname = $2";
(pg_catalog.pg_class.reltuples / COALESCE(NULLIF(pg_catalog.pg_class.relpages, 0), 1))::bigint * (
pg_relation_size(pg_catalog.pg_class.oid)::bigint /
current_setting('block_size')::bigint
)::bigint AS len
FROM pg_catalog.pg_class
INNER JOIN pg_catalog.pg_namespace ON pg_catalog.pg_class.relnamespace = pg_catalog.pg_namespace.oid
WHERE pg_catalog.pg_namespace.nspname = $1 AND pg_catalog.pg_class.relname = $2";

const SEQUENCE_QUERY: &str = "SELECT pg_catalog.pg_get_serial_sequence($1, $2)";

Expand Down

0 comments on commit 48655c3

Please sign in to comment.