torque-postgresql 4.0.1 → 4.1.1

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 (218) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +52 -0
  3. data/lib/generators/torque/skill_generator.rb +17 -0
  4. data/lib/generators/torque/templates/trigger.sql.erb +3 -0
  5. data/lib/generators/torque/trigger_generator.rb +13 -0
  6. data/lib/torque/postgresql/adapter/database_statements.rb +98 -7
  7. data/lib/torque/postgresql/adapter/inheritance_statements.rb +297 -0
  8. data/lib/torque/postgresql/adapter/oid/array.rb +13 -0
  9. data/lib/torque/postgresql/adapter/oid/box.rb +1 -1
  10. data/lib/torque/postgresql/adapter/oid/circle.rb +1 -1
  11. data/lib/torque/postgresql/adapter/oid/composite.rb +117 -0
  12. data/lib/torque/postgresql/adapter/oid/enum.rb +1 -1
  13. data/lib/torque/postgresql/adapter/oid/enum_set.rb +2 -2
  14. data/lib/torque/postgresql/adapter/oid/interval.rb +1 -1
  15. data/lib/torque/postgresql/adapter/oid/line.rb +1 -1
  16. data/lib/torque/postgresql/adapter/oid/lquery.rb +70 -0
  17. data/lib/torque/postgresql/adapter/oid/ltree.rb +111 -0
  18. data/lib/torque/postgresql/adapter/oid/segment.rb +1 -1
  19. data/lib/torque/postgresql/adapter/oid/struct.rb +150 -0
  20. data/lib/torque/postgresql/adapter/oid/struct_list.rb +52 -0
  21. data/lib/torque/postgresql/adapter/oid/struct_set.rb +38 -0
  22. data/lib/torque/postgresql/adapter/oid.rb +13 -0
  23. data/lib/torque/postgresql/adapter/quoting.rb +11 -2
  24. data/lib/torque/postgresql/adapter/schema_definitions.rb +51 -0
  25. data/lib/torque/postgresql/adapter/schema_dumper.rb +27 -0
  26. data/lib/torque/postgresql/adapter/schema_statements.rb +207 -0
  27. data/lib/torque/postgresql/adapter.rb +2 -5
  28. data/lib/torque/postgresql/arel/nodes.rb +114 -1
  29. data/lib/torque/postgresql/arel/visitors.rb +65 -8
  30. data/lib/torque/postgresql/associations/join_dependency.rb +55 -0
  31. data/lib/torque/postgresql/associations.rb +3 -0
  32. data/lib/torque/postgresql/attributes/base.rb +97 -0
  33. data/lib/torque/postgresql/attributes/composite.rb +98 -0
  34. data/lib/torque/postgresql/attributes/enum.rb +13 -7
  35. data/lib/torque/postgresql/attributes/lquery.rb +120 -0
  36. data/lib/torque/postgresql/attributes/ltree.rb +121 -0
  37. data/lib/torque/postgresql/attributes/simple_enum.rb +72 -0
  38. data/lib/torque/postgresql/attributes/struct.rb +137 -0
  39. data/lib/torque/postgresql/base.rb +26 -15
  40. data/lib/torque/postgresql/config.rb +100 -15
  41. data/lib/torque/postgresql/geometry_builder.rb +4 -10
  42. data/lib/torque/postgresql/inheritance/expander.rb +66 -0
  43. data/lib/torque/postgresql/inheritance/record.rb +52 -0
  44. data/lib/torque/postgresql/inheritance.rb +141 -68
  45. data/lib/torque/postgresql/migration/command_recorder.rb +76 -0
  46. data/lib/torque/postgresql/predicate_builder/arel_attribute_handler.rb +1 -1
  47. data/lib/torque/postgresql/predicate_builder/array_handler.rb +16 -8
  48. data/lib/torque/postgresql/predicate_builder/composite_handler.rb +122 -0
  49. data/lib/torque/postgresql/predicate_builder/ltree_handler.rb +112 -0
  50. data/lib/torque/postgresql/predicate_builder/struct_handler.rb +88 -0
  51. data/lib/torque/postgresql/predicate_builder.rb +53 -0
  52. data/lib/torque/postgresql/predicate_table.rb +61 -0
  53. data/lib/torque/postgresql/railtie.rb +52 -0
  54. data/lib/torque/postgresql/relation/auxiliary_statement.rb +7 -3
  55. data/lib/torque/postgresql/relation/buckets.rb +2 -1
  56. data/lib/torque/postgresql/relation/cross_join.rb +193 -0
  57. data/lib/torque/postgresql/relation/inheritance.rb +145 -28
  58. data/lib/torque/postgresql/relation/join_series.rb +1 -0
  59. data/lib/torque/postgresql/relation/merger.rb +30 -5
  60. data/lib/torque/postgresql/relation/segments.rb +140 -0
  61. data/lib/torque/postgresql/relation.rb +32 -12
  62. data/lib/torque/postgresql/schema_cache.rb +1 -0
  63. data/lib/torque/postgresql/validations.rb +29 -0
  64. data/lib/torque/postgresql/version.rb +1 -1
  65. data/lib/torque/postgresql/versioned_commands/command_migration.rb +24 -1
  66. data/lib/torque/postgresql/versioned_commands.rb +39 -0
  67. data/lib/torque/postgresql.rb +4 -0
  68. data/sig/generators/torque/function_generator.rbs +9 -0
  69. data/sig/generators/torque/skill_generator.rbs +7 -0
  70. data/sig/generators/torque/trigger_generator.rbs +9 -0
  71. data/sig/generators/torque/type_generator.rbs +9 -0
  72. data/sig/generators/torque/view_generator.rbs +9 -0
  73. data/sig/manifest.yaml +7 -0
  74. data/sig/torque/postgresql/adapter/database_statements.rbs +42 -0
  75. data/sig/torque/postgresql/adapter/inheritance_statements.rbs +36 -0
  76. data/sig/torque/postgresql/adapter/oid/array.rbs +20 -0
  77. data/sig/torque/postgresql/adapter/oid/box.rbs +28 -0
  78. data/sig/torque/postgresql/adapter/oid/circle.rbs +33 -0
  79. data/sig/torque/postgresql/adapter/oid/composite.rbs +35 -0
  80. data/sig/torque/postgresql/adapter/oid/enum.rbs +28 -0
  81. data/sig/torque/postgresql/adapter/oid/enum_set.rbs +19 -0
  82. data/sig/torque/postgresql/adapter/oid/interval.rbs +20 -0
  83. data/sig/torque/postgresql/adapter/oid/line.rbs +33 -0
  84. data/sig/torque/postgresql/adapter/oid/lquery.rbs +21 -0
  85. data/sig/torque/postgresql/adapter/oid/ltree.rbs +32 -0
  86. data/sig/torque/postgresql/adapter/oid/range.rbs +28 -0
  87. data/sig/torque/postgresql/adapter/oid/segment.rbs +38 -0
  88. data/sig/torque/postgresql/adapter/oid/struct.rbs +41 -0
  89. data/sig/torque/postgresql/adapter/oid/struct_list.rbs +20 -0
  90. data/sig/torque/postgresql/adapter/oid/struct_set.rbs +18 -0
  91. data/sig/torque/postgresql/adapter/oid.rbs +9 -0
  92. data/sig/torque/postgresql/adapter/quoting.rbs +20 -0
  93. data/sig/torque/postgresql/adapter/schema_creation.rbs +13 -0
  94. data/sig/torque/postgresql/adapter/schema_definitions.rbs +55 -0
  95. data/sig/torque/postgresql/adapter/schema_dumper.rbs +37 -0
  96. data/sig/torque/postgresql/adapter/schema_overrides.rbs +46 -0
  97. data/sig/torque/postgresql/adapter/schema_statements.rbs +50 -0
  98. data/sig/torque/postgresql/adapter.rbs +24 -0
  99. data/sig/torque/postgresql/arel/infix_operation.rbs +79 -0
  100. data/sig/torque/postgresql/arel/join_source.rbs +19 -0
  101. data/sig/torque/postgresql/arel/nodes.rbs +83 -0
  102. data/sig/torque/postgresql/arel/operations.rbs +28 -0
  103. data/sig/torque/postgresql/arel/select_manager.rbs +15 -0
  104. data/sig/torque/postgresql/arel/visitors.rbs +30 -0
  105. data/sig/torque/postgresql/arel.rbs +6 -0
  106. data/sig/torque/postgresql/associations/association_scope.rbs +28 -0
  107. data/sig/torque/postgresql/associations/belongs_to_many_association.rbs +51 -0
  108. data/sig/torque/postgresql/associations/builder/belongs_to_many.rbs +24 -0
  109. data/sig/torque/postgresql/associations/builder/has_many.rbs +15 -0
  110. data/sig/torque/postgresql/associations/builder.rbs +8 -0
  111. data/sig/torque/postgresql/associations/foreign_association.rbs +16 -0
  112. data/sig/torque/postgresql/associations/join_dependency.rbs +16 -0
  113. data/sig/torque/postgresql/associations/preloader/association.rbs +32 -0
  114. data/sig/torque/postgresql/associations/preloader/loader_query.rbs +20 -0
  115. data/sig/torque/postgresql/associations/preloader.rbs +8 -0
  116. data/sig/torque/postgresql/associations.rbs +17 -0
  117. data/sig/torque/postgresql/attributes/base.rbs +37 -0
  118. data/sig/torque/postgresql/attributes/builder/enum.rbs +38 -0
  119. data/sig/torque/postgresql/attributes/builder/full_text_search.rbs +27 -0
  120. data/sig/torque/postgresql/attributes/builder/period.rbs +106 -0
  121. data/sig/torque/postgresql/attributes/builder.rbs +19 -0
  122. data/sig/torque/postgresql/attributes/composite.rbs +28 -0
  123. data/sig/torque/postgresql/attributes/enum.rbs +69 -0
  124. data/sig/torque/postgresql/attributes/enum_set.rbs +75 -0
  125. data/sig/torque/postgresql/attributes/full_text_search.rbs +13 -0
  126. data/sig/torque/postgresql/attributes/lazy.rbs +17 -0
  127. data/sig/torque/postgresql/attributes/lquery.rbs +48 -0
  128. data/sig/torque/postgresql/attributes/ltree.rbs +46 -0
  129. data/sig/torque/postgresql/attributes/period.rbs +13 -0
  130. data/sig/torque/postgresql/attributes/simple_enum.rbs +39 -0
  131. data/sig/torque/postgresql/attributes/struct.rbs +38 -0
  132. data/sig/torque/postgresql/attributes.rbs +6 -0
  133. data/sig/torque/postgresql/autosave_association.rbs +16 -0
  134. data/sig/torque/postgresql/auxiliary_statement/recursive.rbs +22 -0
  135. data/sig/torque/postgresql/auxiliary_statement/settings.rbs +63 -0
  136. data/sig/torque/postgresql/auxiliary_statement.rbs +57 -0
  137. data/sig/torque/postgresql/base.rbs +41 -0
  138. data/sig/torque/postgresql/collector.rbs +7 -0
  139. data/sig/torque/postgresql/config.rbs +9 -0
  140. data/sig/torque/postgresql/function.rbs +21 -0
  141. data/sig/torque/postgresql/geometry_builder.rbs +20 -0
  142. data/sig/torque/postgresql/i18n.rbs +15 -0
  143. data/sig/torque/postgresql/inheritance/expander.rbs +23 -0
  144. data/sig/torque/postgresql/inheritance/record.rbs +20 -0
  145. data/sig/torque/postgresql/inheritance.rbs +47 -0
  146. data/sig/torque/postgresql/insert_all.rbs +22 -0
  147. data/sig/torque/postgresql/migration/command_recorder.rbs +30 -0
  148. data/sig/torque/postgresql/migration.rbs +6 -0
  149. data/sig/torque/postgresql/predicate_builder/arel_attribute_handler.rbs +15 -0
  150. data/sig/torque/postgresql/predicate_builder/array_handler.rbs +26 -0
  151. data/sig/torque/postgresql/predicate_builder/composite_handler.rbs +26 -0
  152. data/sig/torque/postgresql/predicate_builder/enumerator_lazy_handler.rbs +18 -0
  153. data/sig/torque/postgresql/predicate_builder/ltree_handler.rbs +36 -0
  154. data/sig/torque/postgresql/predicate_builder/regexp_handler.rbs +16 -0
  155. data/sig/torque/postgresql/predicate_builder/struct_handler.rbs +24 -0
  156. data/sig/torque/postgresql/predicate_builder.rbs +23 -0
  157. data/sig/torque/postgresql/predicate_table.rbs +24 -0
  158. data/sig/torque/postgresql/railtie.rbs +10 -0
  159. data/sig/torque/postgresql/reflection/abstract_reflection.rbs +22 -0
  160. data/sig/torque/postgresql/reflection/association_reflection.rbs +18 -0
  161. data/sig/torque/postgresql/reflection/belongs_to_many_reflection.rbs +30 -0
  162. data/sig/torque/postgresql/reflection/has_many_reflection.rbs +14 -0
  163. data/sig/torque/postgresql/reflection/runtime_reflection.rbs +18 -0
  164. data/sig/torque/postgresql/reflection/through_reflection.rbs +14 -0
  165. data/sig/torque/postgresql/reflection.rbs +11 -0
  166. data/sig/torque/postgresql/relation/auxiliary_statement.rbs +29 -0
  167. data/sig/torque/postgresql/relation/buckets.rbs +35 -0
  168. data/sig/torque/postgresql/relation/cross_join.rbs +63 -0
  169. data/sig/torque/postgresql/relation/distinct_on.rbs +16 -0
  170. data/sig/torque/postgresql/relation/inheritance.rbs +48 -0
  171. data/sig/torque/postgresql/relation/join_series.rbs +28 -0
  172. data/sig/torque/postgresql/relation/merger.rbs +23 -0
  173. data/sig/torque/postgresql/relation/segments.rbs +27 -0
  174. data/sig/torque/postgresql/relation.rbs +48 -0
  175. data/sig/torque/postgresql/schema_cache/bound_schema_reflection.rbs +14 -0
  176. data/sig/torque/postgresql/schema_cache/inheritance.rbs +12 -0
  177. data/sig/torque/postgresql/schema_cache/schema_reflection.rbs +14 -0
  178. data/sig/torque/postgresql/schema_cache.rbs +43 -0
  179. data/sig/torque/postgresql/table_name.rbs +20 -0
  180. data/sig/torque/postgresql/validations.rbs +13 -0
  181. data/sig/torque/postgresql/version.rbs +5 -0
  182. data/sig/torque/postgresql/versioned_commands/command_migration.rbs +54 -0
  183. data/sig/torque/postgresql/versioned_commands/generator.rbs +17 -0
  184. data/sig/torque/postgresql/versioned_commands/migration_context.rbs +30 -0
  185. data/sig/torque/postgresql/versioned_commands/migrator.rbs +19 -0
  186. data/sig/torque/postgresql/versioned_commands/schema_table.rbs +23 -0
  187. data/sig/torque/postgresql/versioned_commands.rbs +25 -0
  188. data/sig/torque/postgresql.rbs +26 -0
  189. data/skills/torque-postgresql/SKILL.md +70 -0
  190. data/spec/fixtures/migrations/20250101000008_create_trigger_audit_users_v1.sql +3 -0
  191. data/spec/initialize.rb +29 -2
  192. data/spec/mocks/cache_query.rb +13 -1
  193. data/spec/models/author.rb +1 -1
  194. data/spec/models/comment.rb +2 -0
  195. data/spec/models/place.rb +2 -0
  196. data/spec/models/profile.rb +31 -0
  197. data/spec/rbs_helper.rb +8 -0
  198. data/spec/schema.rb +35 -4
  199. data/spec/spec_helper.rb +1 -0
  200. data/spec/tests/arel_spec.rb +3 -3
  201. data/spec/tests/auxiliary_statement_spec.rb +12 -0
  202. data/spec/tests/buckets_spec.rb +122 -0
  203. data/spec/tests/composite_spec.rb +867 -0
  204. data/spec/tests/cross_join_spec.rb +185 -0
  205. data/spec/tests/distinct_on_spec.rb +5 -0
  206. data/spec/tests/enum_set_spec.rb +4 -0
  207. data/spec/tests/enum_spec.rb +20 -4
  208. data/spec/tests/geometric_builder_spec.rb +16 -5
  209. data/spec/tests/has_many_spec.rb +2 -1
  210. data/spec/tests/interval_spec.rb +6 -0
  211. data/spec/tests/ltree_spec.rb +886 -0
  212. data/spec/tests/predicate_builder_spec.rb +120 -0
  213. data/spec/tests/relation_spec.rb +25 -69
  214. data/spec/tests/segments_spec.rb +264 -0
  215. data/spec/tests/struct_spec.rb +1170 -0
  216. data/spec/tests/table_inheritance_spec.rb +1037 -56
  217. data/spec/tests/versioned_commands_spec.rb +145 -0
  218. metadata +198 -2
@@ -8,6 +8,7 @@ RSpec.describe 'VersionedCommands' do
8
8
  expect(connection).not_to respond_to(:create_function)
9
9
  expect(connection).not_to respond_to(:create_type)
10
10
  expect(connection).not_to respond_to(:create_view)
11
+ expect(connection).not_to respond_to(:create_trigger)
11
12
  end
12
13
 
13
14
  it 'does not have the methods available in a migration' do
@@ -15,6 +16,7 @@ RSpec.describe 'VersionedCommands' do
15
16
  expect(instance).not_to respond_to(:create_function)
16
17
  expect(instance).not_to respond_to(:create_type)
17
18
  expect(instance).not_to respond_to(:create_view)
19
+ expect(instance).not_to respond_to(:create_trigger)
18
20
  end
19
21
 
20
22
  it 'does have the methods in schema definition' do
@@ -22,6 +24,7 @@ RSpec.describe 'VersionedCommands' do
22
24
  expect(instance).to respond_to(:create_function)
23
25
  expect(instance).to respond_to(:create_type)
24
26
  expect(instance).to respond_to(:create_view)
27
+ expect(instance).to respond_to(:create_trigger)
25
28
  end
26
29
 
27
30
  context 'on context' do
@@ -39,6 +42,7 @@ RSpec.describe 'VersionedCommands' do
39
42
  expect(result[4]).to eq('20250101000005_create_view_all_users_v1.sql')
40
43
  expect(result[5]).to eq('20250101000006_create_type_user_id_v1.sql')
41
44
  expect(result[6]).to eq('20250101000007_remove_function_count_users_v2.sql')
45
+ expect(result[7]).to eq('20250101000008_create_trigger_audit_users_v1.sql')
42
46
  end
43
47
 
44
48
  it 'correctly report the status of all migrations' do
@@ -50,6 +54,7 @@ RSpec.describe 'VersionedCommands' do
50
54
  expect(result[4]).to eq(['down', '20250101000005', 'Create View all_users (v1)'])
51
55
  expect(result[5]).to eq(['down', '20250101000006', 'Create Type user_id (v1)'])
52
56
  expect(result[6]).to eq(['down', '20250101000007', 'Remove Function count_users (v2)'])
57
+ expect(result[7]).to eq(['down', '20250101000008', 'Create Trigger audit_users (v1)'])
53
58
  end
54
59
 
55
60
  it 'reports for invalid names' do
@@ -280,6 +285,89 @@ RSpec.describe 'VersionedCommands' do
280
285
  expect { base.validate!(:view, content, 'internal_test') }.not_to raise_error
281
286
  end
282
287
  end
288
+
289
+ context 'on trigger' do
290
+ it 'requires a proper definition' do
291
+ content = <<~SQL
292
+ CREATE OR REPLACE FUNCTION test() RETURNS trigger;
293
+ SQL
294
+
295
+ expect do
296
+ base.validate!(:trigger, content, 'test')
297
+ end.to raise_error(ArgumentError, /Missing or invalid trigger/)
298
+ end
299
+
300
+ it 'prevents multiple trigger definitions' do
301
+ content = <<~SQL
302
+ CREATE OR REPLACE TRIGGER test BEFORE INSERT ON users FOR EACH ROW EXECUTE FUNCTION fn();
303
+ CREATE OR REPLACE TRIGGER other_test BEFORE INSERT ON users FOR EACH ROW EXECUTE FUNCTION fn();
304
+ SQL
305
+
306
+ expect do
307
+ base.validate!(:trigger, content, 'test')
308
+ end.to raise_error(ArgumentError, /More than one trigger/)
309
+ end
310
+
311
+ it 'requires OR REPLACE clause' do
312
+ content = <<~SQL
313
+ CREATE TRIGGER test BEFORE INSERT ON users FOR EACH ROW EXECUTE FUNCTION fn();
314
+ SQL
315
+
316
+ expect do
317
+ base.validate!(:trigger, content, 'test')
318
+ end.to raise_error(ArgumentError, /'OR REPLACE' is required/)
319
+ end
320
+
321
+ it 'requires matching name' do
322
+ content = <<~SQL
323
+ CREATE OR REPLACE TRIGGER other_test BEFORE INSERT ON users FOR EACH ROW EXECUTE FUNCTION fn();
324
+ SQL
325
+
326
+ expect do
327
+ base.validate!(:trigger, content, 'test')
328
+ end.to raise_error(ArgumentError, /must match file name/)
329
+ end
330
+
331
+ it 'works when setup correctly' do
332
+ content = <<~SQL
333
+ CREATE OR REPLACE TRIGGER TEST BEFORE INSERT ON users FOR EACH ROW EXECUTE FUNCTION fn();
334
+ SQL
335
+
336
+ expect { base.validate!(:trigger, content, 'test') }.not_to raise_error
337
+ end
338
+
339
+ it 'supports a bundled function' do
340
+ content = <<~SQL
341
+ CREATE OR REPLACE FUNCTION fn() RETURNS trigger AS $$ BEGIN RETURN NEW; END; $$ LANGUAGE plpgsql;
342
+ CREATE OR REPLACE TRIGGER test BEFORE INSERT ON users FOR EACH ROW EXECUTE FUNCTION fn();
343
+ SQL
344
+
345
+ expect { base.validate!(:trigger, content, 'test') }.not_to raise_error
346
+ end
347
+
348
+ it 'prevents multiple bundled functions' do
349
+ content = <<~SQL
350
+ CREATE OR REPLACE FUNCTION fn() RETURNS trigger;
351
+ CREATE OR REPLACE FUNCTION other_fn() RETURNS trigger;
352
+ CREATE OR REPLACE TRIGGER test BEFORE INSERT ON users FOR EACH ROW EXECUTE FUNCTION fn();
353
+ SQL
354
+
355
+ expect do
356
+ base.validate!(:trigger, content, 'test')
357
+ end.to raise_error(ArgumentError, /one function/)
358
+ end
359
+
360
+ it 'requires OR REPLACE on the bundled function' do
361
+ content = <<~SQL
362
+ CREATE FUNCTION fn() RETURNS trigger;
363
+ CREATE OR REPLACE TRIGGER test BEFORE INSERT ON users FOR EACH ROW EXECUTE FUNCTION fn();
364
+ SQL
365
+
366
+ expect do
367
+ base.validate!(:trigger, content, 'test')
368
+ end.to raise_error(ArgumentError, /'OR REPLACE' is required/)
369
+ end
370
+ end
283
371
  end
284
372
 
285
373
  context 'on running' do
@@ -363,6 +451,34 @@ RSpec.describe 'VersionedCommands' do
363
451
  expect(connection).to receive(:execute).with('DROP VIEW test;')
364
452
  command.migrate(:down)
365
453
  end
454
+
455
+ it 'properly drops triggers' do
456
+ command.type = 'trigger'
457
+
458
+ sql.replace(<<~SQL)
459
+ CREATE OR REPLACE TRIGGER test
460
+ BEFORE INSERT ON users
461
+ FOR EACH ROW EXECUTE FUNCTION fn();
462
+ SQL
463
+
464
+ expect(connection).to receive(:execute).with('DROP TRIGGER test ON users;')
465
+ command.migrate(:down)
466
+ end
467
+
468
+ it 'properly drops triggers with bundled functions' do
469
+ command.type = 'trigger'
470
+
471
+ sql.replace(<<~SQL)
472
+ CREATE OR REPLACE FUNCTION fn() RETURNS trigger AS $$ BEGIN RETURN NEW; END; $$ LANGUAGE plpgsql;
473
+ CREATE OR REPLACE TRIGGER test
474
+ BEFORE INSERT ON internal.users
475
+ FOR EACH ROW EXECUTE FUNCTION fn();
476
+ SQL
477
+
478
+ expect(connection).to receive(:execute).with('DROP TRIGGER test ON internal.users;')
479
+ expect(connection).to receive(:execute).with('DROP FUNCTION fn();')
480
+ command.migrate(:down)
481
+ end
366
482
  end
367
483
 
368
484
  context 'on migrator' do
@@ -449,6 +565,8 @@ RSpec.describe 'VersionedCommands' do
449
565
  end
450
566
 
451
567
  before do
568
+ connection.instance_variable_set(:@schemas_whitelist, nil)
569
+
452
570
  allow(commands_table).to receive(:new).and_return(schema_table)
453
571
  allow(schema_table).to receive(:versions_of).and_return([])
454
572
  allow(schema_table).to receive(:table_name).and_return('versioned_commands_tbl')
@@ -459,6 +577,7 @@ RSpec.describe 'VersionedCommands' do
459
577
  expect(dump_result).not_to include('# These are types managed by versioned commands')
460
578
  expect(dump_result).not_to include('# These are functions managed by versioned commands')
461
579
  expect(dump_result).not_to include('# These are views managed by versioned commands')
580
+ expect(dump_result).not_to include('# These are triggers managed by versioned commands')
462
581
  end
463
582
 
464
583
  it 'includes all types' do
@@ -509,5 +628,31 @@ RSpec.describe 'VersionedCommands' do
509
628
  expect(dump_result).to include('create_view "internal_other", version: 2')
510
629
  expect(dump_result).not_to include('create_view "removed", version: 1')
511
630
  end
631
+
632
+ it 'includes all triggers' do
633
+ body = 'RETURNS trigger AS $$ BEGIN RETURN NEW; END; $$ LANGUAGE plpgsql'
634
+ connection.execute('CREATE TABLE trigger_users (id integer);')
635
+ connection.execute('CREATE TABLE internal.trigger_users (id integer);')
636
+ connection.execute("CREATE FUNCTION trigger_fn() #{body};")
637
+ connection.execute(<<~SQL)
638
+ CREATE TRIGGER test BEFORE INSERT ON trigger_users
639
+ FOR EACH ROW EXECUTE FUNCTION trigger_fn();
640
+ SQL
641
+ connection.execute(<<~SQL)
642
+ CREATE TRIGGER other BEFORE INSERT ON internal.trigger_users
643
+ FOR EACH ROW EXECUTE FUNCTION trigger_fn();
644
+ SQL
645
+
646
+ allow(schema_table).to receive(:versions_of).with('trigger').and_return([
647
+ ['test', 1],
648
+ ['internal_other', 2],
649
+ ['remove', 1],
650
+ ])
651
+
652
+ expect(dump_result).to include('# These are triggers managed by versioned commands')
653
+ expect(dump_result).to include('create_trigger "test", version: 1')
654
+ expect(dump_result).to include('create_trigger "internal_other", version: 2')
655
+ expect(dump_result).not_to include('create_trigger "removed", version: 1')
656
+ end
512
657
  end
513
658
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: torque-postgresql
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.1
4
+ version: 4.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carlos Silva
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-12-19 00:00:00.000000000 Z
10
+ date: 2026-11-10 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: rails
@@ -37,6 +37,20 @@ dependencies:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
39
  version: '1.2'
40
+ - !ruby/object:Gem::Dependency
41
+ name: ostruct
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0.6'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0.6'
40
54
  - !ruby/object:Gem::Dependency
41
55
  name: rake
42
56
  requirement: !ruby/object:Gem::Requirement
@@ -93,6 +107,20 @@ dependencies:
93
107
  - - "~>"
94
108
  - !ruby/object:Gem::Version
95
109
  version: '3.5'
110
+ - !ruby/object:Gem::Dependency
111
+ name: rbs
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '3.8'
117
+ type: :development
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '3.8'
96
124
  - !ruby/object:Gem::Dependency
97
125
  name: factory_bot
98
126
  requirement: !ruby/object:Gem::Requirement
@@ -133,25 +161,35 @@ files:
133
161
  - README.rdoc
134
162
  - Rakefile
135
163
  - lib/generators/torque/function_generator.rb
164
+ - lib/generators/torque/skill_generator.rb
136
165
  - lib/generators/torque/templates/function.sql.erb
166
+ - lib/generators/torque/templates/trigger.sql.erb
137
167
  - lib/generators/torque/templates/type.sql.erb
138
168
  - lib/generators/torque/templates/view.sql.erb
169
+ - lib/generators/torque/trigger_generator.rb
139
170
  - lib/generators/torque/type_generator.rb
140
171
  - lib/generators/torque/view_generator.rb
141
172
  - lib/torque-postgresql.rb
142
173
  - lib/torque/postgresql.rb
143
174
  - lib/torque/postgresql/adapter.rb
144
175
  - lib/torque/postgresql/adapter/database_statements.rb
176
+ - lib/torque/postgresql/adapter/inheritance_statements.rb
145
177
  - lib/torque/postgresql/adapter/oid.rb
146
178
  - lib/torque/postgresql/adapter/oid/array.rb
147
179
  - lib/torque/postgresql/adapter/oid/box.rb
148
180
  - lib/torque/postgresql/adapter/oid/circle.rb
181
+ - lib/torque/postgresql/adapter/oid/composite.rb
149
182
  - lib/torque/postgresql/adapter/oid/enum.rb
150
183
  - lib/torque/postgresql/adapter/oid/enum_set.rb
151
184
  - lib/torque/postgresql/adapter/oid/interval.rb
152
185
  - lib/torque/postgresql/adapter/oid/line.rb
186
+ - lib/torque/postgresql/adapter/oid/lquery.rb
187
+ - lib/torque/postgresql/adapter/oid/ltree.rb
153
188
  - lib/torque/postgresql/adapter/oid/range.rb
154
189
  - lib/torque/postgresql/adapter/oid/segment.rb
190
+ - lib/torque/postgresql/adapter/oid/struct.rb
191
+ - lib/torque/postgresql/adapter/oid/struct_list.rb
192
+ - lib/torque/postgresql/adapter/oid/struct_set.rb
155
193
  - lib/torque/postgresql/adapter/quoting.rb
156
194
  - lib/torque/postgresql/adapter/schema_creation.rb
157
195
  - lib/torque/postgresql/adapter/schema_definitions.rb
@@ -172,19 +210,26 @@ files:
172
210
  - lib/torque/postgresql/associations/builder/belongs_to_many.rb
173
211
  - lib/torque/postgresql/associations/builder/has_many.rb
174
212
  - lib/torque/postgresql/associations/foreign_association.rb
213
+ - lib/torque/postgresql/associations/join_dependency.rb
175
214
  - lib/torque/postgresql/associations/preloader.rb
176
215
  - lib/torque/postgresql/associations/preloader/association.rb
177
216
  - lib/torque/postgresql/associations/preloader/loader_query.rb
178
217
  - lib/torque/postgresql/attributes.rb
218
+ - lib/torque/postgresql/attributes/base.rb
179
219
  - lib/torque/postgresql/attributes/builder.rb
180
220
  - lib/torque/postgresql/attributes/builder/enum.rb
181
221
  - lib/torque/postgresql/attributes/builder/full_text_search.rb
182
222
  - lib/torque/postgresql/attributes/builder/period.rb
223
+ - lib/torque/postgresql/attributes/composite.rb
183
224
  - lib/torque/postgresql/attributes/enum.rb
184
225
  - lib/torque/postgresql/attributes/enum_set.rb
185
226
  - lib/torque/postgresql/attributes/full_text_search.rb
186
227
  - lib/torque/postgresql/attributes/lazy.rb
228
+ - lib/torque/postgresql/attributes/lquery.rb
229
+ - lib/torque/postgresql/attributes/ltree.rb
187
230
  - lib/torque/postgresql/attributes/period.rb
231
+ - lib/torque/postgresql/attributes/simple_enum.rb
232
+ - lib/torque/postgresql/attributes/struct.rb
188
233
  - lib/torque/postgresql/autosave_association.rb
189
234
  - lib/torque/postgresql/auxiliary_statement.rb
190
235
  - lib/torque/postgresql/auxiliary_statement/recursive.rb
@@ -196,14 +241,20 @@ files:
196
241
  - lib/torque/postgresql/geometry_builder.rb
197
242
  - lib/torque/postgresql/i18n.rb
198
243
  - lib/torque/postgresql/inheritance.rb
244
+ - lib/torque/postgresql/inheritance/expander.rb
245
+ - lib/torque/postgresql/inheritance/record.rb
199
246
  - lib/torque/postgresql/insert_all.rb
200
247
  - lib/torque/postgresql/migration.rb
201
248
  - lib/torque/postgresql/migration/command_recorder.rb
202
249
  - lib/torque/postgresql/predicate_builder.rb
203
250
  - lib/torque/postgresql/predicate_builder/arel_attribute_handler.rb
204
251
  - lib/torque/postgresql/predicate_builder/array_handler.rb
252
+ - lib/torque/postgresql/predicate_builder/composite_handler.rb
205
253
  - lib/torque/postgresql/predicate_builder/enumerator_lazy_handler.rb
254
+ - lib/torque/postgresql/predicate_builder/ltree_handler.rb
206
255
  - lib/torque/postgresql/predicate_builder/regexp_handler.rb
256
+ - lib/torque/postgresql/predicate_builder/struct_handler.rb
257
+ - lib/torque/postgresql/predicate_table.rb
207
258
  - lib/torque/postgresql/railtie.rb
208
259
  - lib/torque/postgresql/reflection.rb
209
260
  - lib/torque/postgresql/reflection/abstract_reflection.rb
@@ -215,15 +266,18 @@ files:
215
266
  - lib/torque/postgresql/relation.rb
216
267
  - lib/torque/postgresql/relation/auxiliary_statement.rb
217
268
  - lib/torque/postgresql/relation/buckets.rb
269
+ - lib/torque/postgresql/relation/cross_join.rb
218
270
  - lib/torque/postgresql/relation/distinct_on.rb
219
271
  - lib/torque/postgresql/relation/inheritance.rb
220
272
  - lib/torque/postgresql/relation/join_series.rb
221
273
  - lib/torque/postgresql/relation/merger.rb
274
+ - lib/torque/postgresql/relation/segments.rb
222
275
  - lib/torque/postgresql/schema_cache.rb
223
276
  - lib/torque/postgresql/schema_cache/bound_schema_reflection.rb
224
277
  - lib/torque/postgresql/schema_cache/inheritance.rb
225
278
  - lib/torque/postgresql/schema_cache/schema_reflection.rb
226
279
  - lib/torque/postgresql/table_name.rb
280
+ - lib/torque/postgresql/validations.rb
227
281
  - lib/torque/postgresql/version.rb
228
282
  - lib/torque/postgresql/versioned_commands.rb
229
283
  - lib/torque/postgresql/versioned_commands/command_migration.rb
@@ -231,6 +285,128 @@ files:
231
285
  - lib/torque/postgresql/versioned_commands/migration_context.rb
232
286
  - lib/torque/postgresql/versioned_commands/migrator.rb
233
287
  - lib/torque/postgresql/versioned_commands/schema_table.rb
288
+ - sig/generators/torque/function_generator.rbs
289
+ - sig/generators/torque/skill_generator.rbs
290
+ - sig/generators/torque/trigger_generator.rbs
291
+ - sig/generators/torque/type_generator.rbs
292
+ - sig/generators/torque/view_generator.rbs
293
+ - sig/manifest.yaml
294
+ - sig/torque/postgresql.rbs
295
+ - sig/torque/postgresql/adapter.rbs
296
+ - sig/torque/postgresql/adapter/database_statements.rbs
297
+ - sig/torque/postgresql/adapter/inheritance_statements.rbs
298
+ - sig/torque/postgresql/adapter/oid.rbs
299
+ - sig/torque/postgresql/adapter/oid/array.rbs
300
+ - sig/torque/postgresql/adapter/oid/box.rbs
301
+ - sig/torque/postgresql/adapter/oid/circle.rbs
302
+ - sig/torque/postgresql/adapter/oid/composite.rbs
303
+ - sig/torque/postgresql/adapter/oid/enum.rbs
304
+ - sig/torque/postgresql/adapter/oid/enum_set.rbs
305
+ - sig/torque/postgresql/adapter/oid/interval.rbs
306
+ - sig/torque/postgresql/adapter/oid/line.rbs
307
+ - sig/torque/postgresql/adapter/oid/lquery.rbs
308
+ - sig/torque/postgresql/adapter/oid/ltree.rbs
309
+ - sig/torque/postgresql/adapter/oid/range.rbs
310
+ - sig/torque/postgresql/adapter/oid/segment.rbs
311
+ - sig/torque/postgresql/adapter/oid/struct.rbs
312
+ - sig/torque/postgresql/adapter/oid/struct_list.rbs
313
+ - sig/torque/postgresql/adapter/oid/struct_set.rbs
314
+ - sig/torque/postgresql/adapter/quoting.rbs
315
+ - sig/torque/postgresql/adapter/schema_creation.rbs
316
+ - sig/torque/postgresql/adapter/schema_definitions.rbs
317
+ - sig/torque/postgresql/adapter/schema_dumper.rbs
318
+ - sig/torque/postgresql/adapter/schema_overrides.rbs
319
+ - sig/torque/postgresql/adapter/schema_statements.rbs
320
+ - sig/torque/postgresql/arel.rbs
321
+ - sig/torque/postgresql/arel/infix_operation.rbs
322
+ - sig/torque/postgresql/arel/join_source.rbs
323
+ - sig/torque/postgresql/arel/nodes.rbs
324
+ - sig/torque/postgresql/arel/operations.rbs
325
+ - sig/torque/postgresql/arel/select_manager.rbs
326
+ - sig/torque/postgresql/arel/visitors.rbs
327
+ - sig/torque/postgresql/associations.rbs
328
+ - sig/torque/postgresql/associations/association_scope.rbs
329
+ - sig/torque/postgresql/associations/belongs_to_many_association.rbs
330
+ - sig/torque/postgresql/associations/builder.rbs
331
+ - sig/torque/postgresql/associations/builder/belongs_to_many.rbs
332
+ - sig/torque/postgresql/associations/builder/has_many.rbs
333
+ - sig/torque/postgresql/associations/foreign_association.rbs
334
+ - sig/torque/postgresql/associations/join_dependency.rbs
335
+ - sig/torque/postgresql/associations/preloader.rbs
336
+ - sig/torque/postgresql/associations/preloader/association.rbs
337
+ - sig/torque/postgresql/associations/preloader/loader_query.rbs
338
+ - sig/torque/postgresql/attributes.rbs
339
+ - sig/torque/postgresql/attributes/base.rbs
340
+ - sig/torque/postgresql/attributes/builder.rbs
341
+ - sig/torque/postgresql/attributes/builder/enum.rbs
342
+ - sig/torque/postgresql/attributes/builder/full_text_search.rbs
343
+ - sig/torque/postgresql/attributes/builder/period.rbs
344
+ - sig/torque/postgresql/attributes/composite.rbs
345
+ - sig/torque/postgresql/attributes/enum.rbs
346
+ - sig/torque/postgresql/attributes/enum_set.rbs
347
+ - sig/torque/postgresql/attributes/full_text_search.rbs
348
+ - sig/torque/postgresql/attributes/lazy.rbs
349
+ - sig/torque/postgresql/attributes/lquery.rbs
350
+ - sig/torque/postgresql/attributes/ltree.rbs
351
+ - sig/torque/postgresql/attributes/period.rbs
352
+ - sig/torque/postgresql/attributes/simple_enum.rbs
353
+ - sig/torque/postgresql/attributes/struct.rbs
354
+ - sig/torque/postgresql/autosave_association.rbs
355
+ - sig/torque/postgresql/auxiliary_statement.rbs
356
+ - sig/torque/postgresql/auxiliary_statement/recursive.rbs
357
+ - sig/torque/postgresql/auxiliary_statement/settings.rbs
358
+ - sig/torque/postgresql/base.rbs
359
+ - sig/torque/postgresql/collector.rbs
360
+ - sig/torque/postgresql/config.rbs
361
+ - sig/torque/postgresql/function.rbs
362
+ - sig/torque/postgresql/geometry_builder.rbs
363
+ - sig/torque/postgresql/i18n.rbs
364
+ - sig/torque/postgresql/inheritance.rbs
365
+ - sig/torque/postgresql/inheritance/expander.rbs
366
+ - sig/torque/postgresql/inheritance/record.rbs
367
+ - sig/torque/postgresql/insert_all.rbs
368
+ - sig/torque/postgresql/migration.rbs
369
+ - sig/torque/postgresql/migration/command_recorder.rbs
370
+ - sig/torque/postgresql/predicate_builder.rbs
371
+ - sig/torque/postgresql/predicate_builder/arel_attribute_handler.rbs
372
+ - sig/torque/postgresql/predicate_builder/array_handler.rbs
373
+ - sig/torque/postgresql/predicate_builder/composite_handler.rbs
374
+ - sig/torque/postgresql/predicate_builder/enumerator_lazy_handler.rbs
375
+ - sig/torque/postgresql/predicate_builder/ltree_handler.rbs
376
+ - sig/torque/postgresql/predicate_builder/regexp_handler.rbs
377
+ - sig/torque/postgresql/predicate_builder/struct_handler.rbs
378
+ - sig/torque/postgresql/predicate_table.rbs
379
+ - sig/torque/postgresql/railtie.rbs
380
+ - sig/torque/postgresql/reflection.rbs
381
+ - sig/torque/postgresql/reflection/abstract_reflection.rbs
382
+ - sig/torque/postgresql/reflection/association_reflection.rbs
383
+ - sig/torque/postgresql/reflection/belongs_to_many_reflection.rbs
384
+ - sig/torque/postgresql/reflection/has_many_reflection.rbs
385
+ - sig/torque/postgresql/reflection/runtime_reflection.rbs
386
+ - sig/torque/postgresql/reflection/through_reflection.rbs
387
+ - sig/torque/postgresql/relation.rbs
388
+ - sig/torque/postgresql/relation/auxiliary_statement.rbs
389
+ - sig/torque/postgresql/relation/buckets.rbs
390
+ - sig/torque/postgresql/relation/cross_join.rbs
391
+ - sig/torque/postgresql/relation/distinct_on.rbs
392
+ - sig/torque/postgresql/relation/inheritance.rbs
393
+ - sig/torque/postgresql/relation/join_series.rbs
394
+ - sig/torque/postgresql/relation/merger.rbs
395
+ - sig/torque/postgresql/relation/segments.rbs
396
+ - sig/torque/postgresql/schema_cache.rbs
397
+ - sig/torque/postgresql/schema_cache/bound_schema_reflection.rbs
398
+ - sig/torque/postgresql/schema_cache/inheritance.rbs
399
+ - sig/torque/postgresql/schema_cache/schema_reflection.rbs
400
+ - sig/torque/postgresql/table_name.rbs
401
+ - sig/torque/postgresql/validations.rbs
402
+ - sig/torque/postgresql/version.rbs
403
+ - sig/torque/postgresql/versioned_commands.rbs
404
+ - sig/torque/postgresql/versioned_commands/command_migration.rbs
405
+ - sig/torque/postgresql/versioned_commands/generator.rbs
406
+ - sig/torque/postgresql/versioned_commands/migration_context.rbs
407
+ - sig/torque/postgresql/versioned_commands/migrator.rbs
408
+ - sig/torque/postgresql/versioned_commands/schema_table.rbs
409
+ - skills/torque-postgresql/SKILL.md
234
410
  - spec/en.yml
235
411
  - spec/factories/authors.rb
236
412
  - spec/factories/comments.rb
@@ -247,6 +423,7 @@ files:
247
423
  - spec/fixtures/migrations/20250101000005_create_view_all_users_v1.sql
248
424
  - spec/fixtures/migrations/20250101000006_create_type_user_id_v1.sql
249
425
  - spec/fixtures/migrations/20250101000007_remove_function_count_users_v2.sql
426
+ - spec/fixtures/migrations/20250101000008_create_trigger_audit_users_v1.sql
250
427
  - spec/initialize.rb
251
428
  - spec/mocks/cache_query.rb
252
429
  - spec/mocks/create_table.rb
@@ -263,7 +440,9 @@ files:
263
440
  - spec/models/guest_comment.rb
264
441
  - spec/models/internal/user.rb
265
442
  - spec/models/item.rb
443
+ - spec/models/place.rb
266
444
  - spec/models/post.rb
445
+ - spec/models/profile.rb
267
446
  - spec/models/question.rb
268
447
  - spec/models/question_select.rb
269
448
  - spec/models/tag.rb
@@ -271,12 +450,16 @@ files:
271
450
  - spec/models/time_keeper.rb
272
451
  - spec/models/user.rb
273
452
  - spec/models/video.rb
453
+ - spec/rbs_helper.rb
274
454
  - spec/schema.rb
275
455
  - spec/spec_helper.rb
276
456
  - spec/tests/arel_spec.rb
277
457
  - spec/tests/auxiliary_statement_spec.rb
278
458
  - spec/tests/belongs_to_many_spec.rb
459
+ - spec/tests/buckets_spec.rb
279
460
  - spec/tests/collector_spec.rb
461
+ - spec/tests/composite_spec.rb
462
+ - spec/tests/cross_join_spec.rb
280
463
  - spec/tests/distinct_on_spec.rb
281
464
  - spec/tests/enum_set_spec.rb
282
465
  - spec/tests/enum_spec.rb
@@ -287,11 +470,14 @@ files:
287
470
  - spec/tests/insert_all_spec.rb
288
471
  - spec/tests/interval_spec.rb
289
472
  - spec/tests/lazy_spec.rb
473
+ - spec/tests/ltree_spec.rb
290
474
  - spec/tests/period_spec.rb
291
475
  - spec/tests/predicate_builder_spec.rb
292
476
  - spec/tests/quoting_spec.rb
293
477
  - spec/tests/relation_spec.rb
294
478
  - spec/tests/schema_spec.rb
479
+ - spec/tests/segments_spec.rb
480
+ - spec/tests/struct_spec.rb
295
481
  - spec/tests/table_inheritance_spec.rb
296
482
  - spec/tests/versioned_commands_spec.rb
297
483
  homepage: https://github.com/crashtech/torque-postgresql
@@ -338,6 +524,7 @@ test_files:
338
524
  - spec/fixtures/migrations/20250101000005_create_view_all_users_v1.sql
339
525
  - spec/fixtures/migrations/20250101000006_create_type_user_id_v1.sql
340
526
  - spec/fixtures/migrations/20250101000007_remove_function_count_users_v2.sql
527
+ - spec/fixtures/migrations/20250101000008_create_trigger_audit_users_v1.sql
341
528
  - spec/initialize.rb
342
529
  - spec/mocks/cache_query.rb
343
530
  - spec/mocks/create_table.rb
@@ -354,7 +541,9 @@ test_files:
354
541
  - spec/models/guest_comment.rb
355
542
  - spec/models/internal/user.rb
356
543
  - spec/models/item.rb
544
+ - spec/models/place.rb
357
545
  - spec/models/post.rb
546
+ - spec/models/profile.rb
358
547
  - spec/models/question.rb
359
548
  - spec/models/question_select.rb
360
549
  - spec/models/tag.rb
@@ -362,12 +551,16 @@ test_files:
362
551
  - spec/models/time_keeper.rb
363
552
  - spec/models/user.rb
364
553
  - spec/models/video.rb
554
+ - spec/rbs_helper.rb
365
555
  - spec/schema.rb
366
556
  - spec/spec_helper.rb
367
557
  - spec/tests/arel_spec.rb
368
558
  - spec/tests/auxiliary_statement_spec.rb
369
559
  - spec/tests/belongs_to_many_spec.rb
560
+ - spec/tests/buckets_spec.rb
370
561
  - spec/tests/collector_spec.rb
562
+ - spec/tests/composite_spec.rb
563
+ - spec/tests/cross_join_spec.rb
371
564
  - spec/tests/distinct_on_spec.rb
372
565
  - spec/tests/enum_set_spec.rb
373
566
  - spec/tests/enum_spec.rb
@@ -378,10 +571,13 @@ test_files:
378
571
  - spec/tests/insert_all_spec.rb
379
572
  - spec/tests/interval_spec.rb
380
573
  - spec/tests/lazy_spec.rb
574
+ - spec/tests/ltree_spec.rb
381
575
  - spec/tests/period_spec.rb
382
576
  - spec/tests/predicate_builder_spec.rb
383
577
  - spec/tests/quoting_spec.rb
384
578
  - spec/tests/relation_spec.rb
385
579
  - spec/tests/schema_spec.rb
580
+ - spec/tests/segments_spec.rb
581
+ - spec/tests/struct_spec.rb
386
582
  - spec/tests/table_inheritance_spec.rb
387
583
  - spec/tests/versioned_commands_spec.rb