exwiw 0.4.7 → 0.4.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/lib/exwiw/adapter/postgresql_adapter.rb +23 -0
- data/lib/exwiw/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 72b680a3d71a0511019bfc4a7ceff70854f4345597949c3256622f46a1121bfb
|
|
4
|
+
data.tar.gz: 1f4b1504f08be2d321f4aaf3c20f297b42fda0ec0646bb0442a29ea3bf79f6a2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0b03406b8239eae881f84f44788763d781c159a037683e1bce78b9dec857fb831cab296cff352768d5bbe1566ca4f207f064d9552f2c8aa8dd358fb447d47800
|
|
7
|
+
data.tar.gz: 87c8e6bc6d959e20813001ee4b6be684e323e8674f3d3e500e2ef7f6b9e0381e4cb4a8129e38bab24b447d7f688a7622f0a80c601a673d20b1331b719db82703
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [0.4.8] - 2026-06-11
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- PostgreSQL: schema dump now includes `CREATE EXTENSION IF NOT EXISTS` statements for user-installed extensions (e.g. `btree_gist`, `pgcrypto`, `uuid-ossp`). Extensions are emitted before any `CREATE TYPE` or `CREATE TABLE` definitions so the dump can be restored on a clean database without manually pre-installing extensions. Non-public schema extensions include a `SCHEMA` clause. ([#92](https://github.com/heyinc/exwiw/pull/92))
|
|
10
|
+
|
|
5
11
|
## [0.4.7] - 2026-06-10
|
|
6
12
|
|
|
7
13
|
### Fixed
|
|
@@ -52,6 +52,7 @@ module Exwiw
|
|
|
52
52
|
raise "pg_dump failed (exit #{status.exitstatus}): #{stderr}"
|
|
53
53
|
end
|
|
54
54
|
|
|
55
|
+
# Enums are prepended first, then extensions — so extensions end up at the top of the output.
|
|
55
56
|
enum_types = query_enum_types(table_names)
|
|
56
57
|
unless enum_types.empty?
|
|
57
58
|
enum_ddl = DdlPostprocessor.create_type_enum_statements(enum_types)
|
|
@@ -59,6 +60,17 @@ module Exwiw
|
|
|
59
60
|
stdout = enum_ddl + stdout
|
|
60
61
|
end
|
|
61
62
|
|
|
63
|
+
extensions = query_extensions
|
|
64
|
+
unless extensions.empty?
|
|
65
|
+
ext_ddl = extensions.map do |extname, schema|
|
|
66
|
+
stmt = "CREATE EXTENSION IF NOT EXISTS #{connection.quote_ident(extname)}"
|
|
67
|
+
stmt += " SCHEMA #{connection.quote_ident(schema)}" unless schema == "public"
|
|
68
|
+
"#{stmt};"
|
|
69
|
+
end.join("\n") + "\n\n"
|
|
70
|
+
@logger.debug(" Found #{extensions.size} extension(s) to prepend.")
|
|
71
|
+
stdout = ext_ddl + stdout
|
|
72
|
+
end
|
|
73
|
+
|
|
62
74
|
idempotent = stdout
|
|
63
75
|
idempotent = DdlPostprocessor.add_if_not_exists_to_create_schema(idempotent)
|
|
64
76
|
idempotent = DdlPostprocessor.add_if_not_exists_to_create_sequence(idempotent)
|
|
@@ -368,6 +380,17 @@ module Exwiw
|
|
|
368
380
|
end
|
|
369
381
|
end
|
|
370
382
|
|
|
383
|
+
private def query_extensions
|
|
384
|
+
sql = <<~SQL
|
|
385
|
+
SELECT e.extname, n.nspname
|
|
386
|
+
FROM pg_extension e
|
|
387
|
+
JOIN pg_namespace n ON n.oid = e.extnamespace
|
|
388
|
+
WHERE e.extname != 'plpgsql'
|
|
389
|
+
ORDER BY e.extname
|
|
390
|
+
SQL
|
|
391
|
+
connection.exec(sql).map { |row| [row["extname"], row["nspname"]] }
|
|
392
|
+
end
|
|
393
|
+
|
|
371
394
|
private def query_enum_types(table_names)
|
|
372
395
|
return [] if table_names.empty?
|
|
373
396
|
|
data/lib/exwiw/version.rb
CHANGED