pg-workload 0.4.0__tar.gz → 0.4.2__tar.gz

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.
Files changed (100) hide show
  1. {pg_workload-0.4.0/src/pg_workload.egg-info → pg_workload-0.4.2}/PKG-INFO +3 -3
  2. {pg_workload-0.4.0 → pg_workload-0.4.2}/pyproject.toml +3 -3
  3. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/__init__.py +1 -1
  4. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/partition_aging/generator.py +20 -17
  5. {pg_workload-0.4.0 → pg_workload-0.4.2/src/pg_workload.egg-info}/PKG-INFO +3 -3
  6. {pg_workload-0.4.0 → pg_workload-0.4.2}/tests/test_workload.py +5 -0
  7. {pg_workload-0.4.0 → pg_workload-0.4.2}/LICENSE +0 -0
  8. {pg_workload-0.4.0 → pg_workload-0.4.2}/MANIFEST.in +0 -0
  9. {pg_workload-0.4.0 → pg_workload-0.4.2}/README.md +0 -0
  10. {pg_workload-0.4.0 → pg_workload-0.4.2}/THIRD_PARTY_NOTICES.md +0 -0
  11. {pg_workload-0.4.0 → pg_workload-0.4.2}/setup.cfg +0 -0
  12. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/__main__.py +0 -0
  13. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/assets.py +0 -0
  14. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/bloat_vacuum/README.md +0 -0
  15. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/bloat_vacuum/generator.py +0 -0
  16. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/bloat_vacuum/profile.yml +0 -0
  17. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/bloat_vacuum/sql/01_churn.sql +0 -0
  18. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/bloat_vacuum/sql/accounts-schema.sql +0 -0
  19. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/emulate_errors/README.md +0 -0
  20. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/emulate_errors/profile.yml +0 -0
  21. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/emulate_errors/sql/01_workload.sql +0 -0
  22. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/emulate_errors/sql/schema.sql +0 -0
  23. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/imdb/README.md +0 -0
  24. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/imdb/generator.py +0 -0
  25. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/imdb/profile.yml +0 -0
  26. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/imdb/sql/01_company_catalog.sql +0 -0
  27. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/imdb/sql/02_people_by_keyword.sql +0 -0
  28. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/imdb/sql/03_keyword_trends.sql +0 -0
  29. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/imdb/sql/04_genre_cast.sql +0 -0
  30. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/imdb/sql/05_join_stress.sql +0 -0
  31. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/imdb/sql/indexes.sql +0 -0
  32. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/imdb/sql/schema.sql +0 -0
  33. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/jsonb_docs/README.md +0 -0
  34. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/jsonb_docs/generator.py +0 -0
  35. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/jsonb_docs/profile.yml +0 -0
  36. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/jsonb_docs/sql/01_write.sql +0 -0
  37. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/jsonb_docs/sql/02_read.sql +0 -0
  38. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/jsonb_docs/sql/docs-schema.sql +0 -0
  39. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/many_objects/README.md +0 -0
  40. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/many_objects/profile.yml +0 -0
  41. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/many_objects/sql/01_workload.sql +0 -0
  42. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/many_objects/sql/prepare_schema_01.sql +0 -0
  43. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/many_objects/sql/prepare_schema_02.sql +0 -0
  44. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/pagila/README.md +0 -0
  45. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/pagila/generator.py +0 -0
  46. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/pagila/profile.yml +0 -0
  47. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/pagila/sql/01_select.sql +0 -0
  48. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/pagila/sql/02_insert.sql +0 -0
  49. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/pagila/sql/03_update.sql +0 -0
  50. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/pagila/sql/04_delete.sql +0 -0
  51. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/pagila/sql/pagila-schema.sql +0 -0
  52. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/partition_aging/README.md +0 -0
  53. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/partition_aging/profile.yml +0 -0
  54. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/partition_aging/sql/01_ingest.sql +0 -0
  55. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/partition_aging/sql/02_read_recent.sql +0 -0
  56. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/partition_aging/sql/03_read_history.sql +0 -0
  57. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/partition_aging/sql/events-schema.sql +0 -0
  58. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/pss_overflow/README.md +0 -0
  59. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/pss_overflow/generator.py +0 -0
  60. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/pss_overflow/profile.yml +0 -0
  61. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/pss_overflow/sql/01_workload.sql +0 -0
  62. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/pss_overflow/sql/pss_overflow-schema.sql +0 -0
  63. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/queue_skip_locked/README.md +0 -0
  64. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/queue_skip_locked/generator.py +0 -0
  65. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/queue_skip_locked/profile.yml +0 -0
  66. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/queue_skip_locked/sql/01_enqueue.sql +0 -0
  67. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/queue_skip_locked/sql/02_dequeue.sql +0 -0
  68. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/queue_skip_locked/sql/03_settle.sql +0 -0
  69. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/queue_skip_locked/sql/queue-schema.sql +0 -0
  70. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/simple_stock/README.md +0 -0
  71. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/simple_stock/generator.py +0 -0
  72. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/simple_stock/profile.yml +0 -0
  73. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/simple_stock/sql/01_workload.sql +0 -0
  74. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/simple_stock/sql/indexes.sql +0 -0
  75. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/simple_stock/sql/stock-schema.sql +0 -0
  76. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/simple_stock_spec_symbols/README.md +0 -0
  77. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/simple_stock_spec_symbols/generator.py +0 -0
  78. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/simple_stock_spec_symbols/profile.yml +0 -0
  79. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/simple_stock_spec_symbols/sql/01_workload.sql +0 -0
  80. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/simple_stock_spec_symbols/sql/indexes.sql +0 -0
  81. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/profiles/simple_stock_spec_symbols/sql/stock-schema.sql +0 -0
  82. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/bundled/schema/pg_workload-v1.schema.json +0 -0
  83. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/cli.py +0 -0
  84. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/common.py +0 -0
  85. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/config.py +0 -0
  86. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/control.py +0 -0
  87. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/logging.py +0 -0
  88. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/orchestration.py +0 -0
  89. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/pg_client.py +0 -0
  90. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/profiles.py +0 -0
  91. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/resources.py +0 -0
  92. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/runner.py +0 -0
  93. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/scheduler.py +0 -0
  94. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload/state.py +0 -0
  95. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload.egg-info/SOURCES.txt +0 -0
  96. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload.egg-info/dependency_links.txt +0 -0
  97. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload.egg-info/entry_points.txt +0 -0
  98. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload.egg-info/requires.txt +0 -0
  99. {pg_workload-0.4.0 → pg_workload-0.4.2}/src/pg_workload.egg-info/top_level.txt +0 -0
  100. {pg_workload-0.4.0 → pg_workload-0.4.2}/tests/test_docker_postgres18.py +0 -0
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pg-workload
3
- Version: 0.4.0
3
+ Version: 0.4.2
4
4
  Summary: PostgreSQL workload emulator for diagnostic and observability testing
5
- Author-email: O2eg <oleg.ispu@yandex.ru>
5
+ Author-email: O2eg <oleg.ispu@gmail.com>
6
6
  License-Expression: MIT
7
- Project-URL: Homepage, https://github.com/O2eg/pg_workload
7
+ Project-URL: Homepage, https://o2eg.com/
8
8
  Project-URL: Repository, https://github.com/O2eg/pg_workload
9
9
  Project-URL: Issues, https://github.com/O2eg/pg_workload/issues
10
10
  Keywords: postgresql,workload,emulation,diagnostics,observability
@@ -4,14 +4,14 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "pg-workload"
7
- version = "0.4.0"
7
+ version = "0.4.2"
8
8
  description = "PostgreSQL workload emulator for diagnostic and observability testing"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
11
11
  license = "MIT"
12
12
  license-files = ["LICENSE", "THIRD_PARTY_NOTICES.md"]
13
13
  authors = [
14
- { name = "O2eg", email = "oleg.ispu@yandex.ru" }
14
+ { name = "O2eg", email = "oleg.ispu@gmail.com" }
15
15
  ]
16
16
  keywords = ["postgresql", "workload", "emulation", "diagnostics", "observability"]
17
17
  dependencies = [
@@ -31,7 +31,7 @@ classifiers = [
31
31
  ]
32
32
 
33
33
  [project.urls]
34
- Homepage = "https://github.com/O2eg/pg_workload"
34
+ Homepage = "https://o2eg.com/"
35
35
  Repository = "https://github.com/O2eg/pg_workload"
36
36
  Issues = "https://github.com/O2eg/pg_workload/issues"
37
37
 
@@ -1,6 +1,6 @@
1
1
  """PostgreSQL workload generation and scheduling tools."""
2
2
 
3
- __version__ = "0.4.0"
3
+ __version__ = "0.4.2"
4
4
 
5
5
  from pg_workload.assets import bundled_profiles_root, initialize_project
6
6
  from pg_workload.cli import build_parser
@@ -4,7 +4,6 @@ import argparse
4
4
  import math
5
5
  import os
6
6
  import subprocess
7
- from datetime import date, timedelta
8
7
 
9
8
  DAYS_BACK = 30
10
9
  DAYS_AHEAD = 2
@@ -23,20 +22,25 @@ def main() -> None:
23
22
 
24
23
  row_count = scaled(200_000, args.scale, 2_000)
25
24
 
26
- today = date.today()
27
- partitions = []
28
- for offset in range(-DAYS_BACK, DAYS_AHEAD + 1):
29
- day = today + timedelta(days=offset)
30
- nxt = day + timedelta(days=1)
31
- partitions.append(
32
- f"CREATE TABLE partition_aging.events_{day:%Y_%m_%d} "
33
- "PARTITION OF partition_aging.events "
34
- f"FOR VALUES FROM ('{day.isoformat()}') TO ('{nxt.isoformat()}');"
35
- )
36
-
37
- sql = (
38
- "\n".join(partitions)
39
- + f"""
25
+ partition_count = DAYS_BACK + DAYS_AHEAD + 1
26
+ sql = f"""
27
+ DO $partition_setup$
28
+ DECLARE
29
+ partition_day date;
30
+ BEGIN
31
+ FOR day_offset IN -{DAYS_BACK}..{DAYS_AHEAD} LOOP
32
+ partition_day := current_date + day_offset;
33
+ EXECUTE format(
34
+ 'CREATE TABLE partition_aging.%I '
35
+ 'PARTITION OF partition_aging.events '
36
+ 'FOR VALUES FROM (%L) TO (%L)',
37
+ 'events_' || to_char(partition_day, 'YYYY_MM_DD'),
38
+ partition_day,
39
+ partition_day + 1
40
+ );
41
+ END LOOP;
42
+ END
43
+ $partition_setup$;
40
44
 
41
45
  SELECT setseed(0.55083122);
42
46
 
@@ -49,7 +53,6 @@ def main() -> None:
49
53
  'event ' || g || ' session=' || floor(power(random(), 2) * 100000)::integer
50
54
  FROM generate_series(1, {row_count}) AS g;
51
55
  """
52
- )
53
56
  subprocess.run(
54
57
  [os.environ.get("PG_WORKLOAD_PSQL", "psql"), "-X", "-q", "-v", "ON_ERROR_STOP=1"],
55
58
  input=sql,
@@ -57,7 +60,7 @@ def main() -> None:
57
60
  check=True,
58
61
  )
59
62
 
60
- print(f"Generated partition_aging: partitions={len(partitions)}, events={row_count}")
63
+ print(f"Generated partition_aging: partitions={partition_count}, events={row_count}")
61
64
 
62
65
 
63
66
  if __name__ == "__main__":
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pg-workload
3
- Version: 0.4.0
3
+ Version: 0.4.2
4
4
  Summary: PostgreSQL workload emulator for diagnostic and observability testing
5
- Author-email: O2eg <oleg.ispu@yandex.ru>
5
+ Author-email: O2eg <oleg.ispu@gmail.com>
6
6
  License-Expression: MIT
7
- Project-URL: Homepage, https://github.com/O2eg/pg_workload
7
+ Project-URL: Homepage, https://o2eg.com/
8
8
  Project-URL: Repository, https://github.com/O2eg/pg_workload
9
9
  Project-URL: Issues, https://github.com/O2eg/pg_workload/issues
10
10
  Keywords: postgresql,workload,emulation,diagnostics,observability
@@ -48,6 +48,11 @@ class WorkloadGeneratorTests(unittest.TestCase):
48
48
  self.assertEqual(errors, [])
49
49
  imdb_generator = Path(tmpdir) / "data" / "imdb" / "generator.py"
50
50
  self.assertIn("g::bigint * 104729", imdb_generator.read_text(encoding="utf-8"))
51
+ partition_generator = (Path(tmpdir) / "data" / "partition_aging" / "generator.py").read_text(
52
+ encoding="utf-8"
53
+ )
54
+ self.assertIn("partition_day := current_date + day_offset", partition_generator)
55
+ self.assertNotIn("date.today()", partition_generator)
51
56
 
52
57
  def test_default_pg_major_is_18(self):
53
58
  parser = self.workload.build_parser()
File without changes
File without changes
File without changes
File without changes