pg_conn 0.37.0 → 0.38.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1edd50ec4e7e4f072a695cd044ab6d930dd14cdf763dd335ee0fbb65865e83c4
4
- data.tar.gz: 3fe0cf2fe952999dceea4b6776155b7252d4e3f4aeeab7089348fc10ec9cfc5e
3
+ metadata.gz: a643fd02f7ad3296edd58d09adf028634f865d24e1eccad2ad1cdd70bc222eaf
4
+ data.tar.gz: e07e79bde8c45423493fea5028bf8f920fede7b313efc25ff2883f77e3316540
5
5
  SHA512:
6
- metadata.gz: a84b206b8c7b19813a3acbc63350289e6b072fc1ef8edb65901c99fe6f76fffe3c9ad9ab54d44105652902a8486e5904071e8f6712e73b7b9752019646a8bb8b
7
- data.tar.gz: 6725ac8c9ef737db41770df819fefa88cb716ff189d714b139079475ee3255a59ec996e9d9c1e138b971b2b4908d6a91f08b9d7bc3731a7e46c32bd684f28000
6
+ metadata.gz: 452b57a9bbf438d9158eb32a1c21a951fe57024232a33c4c4d4c7409d2c44e66649ae393f03620825a25a550650341f6cb6b6e265b726a5113bb2e5e270d65b6
7
+ data.tar.gz: 4bdfd665f9285206af32bfa537157a2aeee37400d271477c2a1fb26387b7f98974072c99540a8dc211822e90f8f5a72b6980ac74539379c483c8e985d0ec6b52
@@ -48,7 +48,7 @@ module PgConn
48
48
 
49
49
  # Empty all tables in the given schema
50
50
  def clean!(schema, exclude: [])
51
- conn.without_triggers {
51
+ conn.session.triggers(false) {
52
52
  self.list_tables(schema, exclude: exclude).each { |table|
53
53
  conn.exec "delete from #{schema}.#{table}"
54
54
  }
@@ -84,6 +84,46 @@ module PgConn
84
84
  end
85
85
  end
86
86
 
87
+ # The following functions enable or disable triggers in per-user sessions
88
+ # instead of globally as "alter table" does
89
+
90
+ # Return true if session triggers are enabled. Triggers are enabled by
91
+ # default by Postgres
92
+ def triggers?() conn.value "select current_setting('session_replication_role') <> 'replica'" end
93
+
94
+ # Enable session triggers
95
+ def enable_triggers()
96
+ conn.execute "set session session_replication_role = DEFAULT"
97
+ end
98
+
99
+ # Disable session triggers
100
+ def disable_triggers()
101
+ conn.execute "set session session_replication_role = replica"
102
+ end
103
+
104
+ # Executes block without triggers
105
+ def without_triggers(&block)
106
+ triggers(false) { yield }
107
+ end
108
+
109
+ # Execute block with session triggers on or off
110
+ def triggers(on_off, &block)
111
+ begin
112
+ active = triggers?
113
+ if on_off && !active
114
+ enable_triggers
115
+ elsif !on_off && active
116
+ disable_triggers
117
+ end
118
+ yield
119
+ ensure
120
+ case active
121
+ when true; enable_triggers if !triggers?
122
+ when false; disable_triggers if triggers?
123
+ end
124
+ end
125
+ end
126
+
87
127
  private
88
128
  # Like #list but returns the PIDs of the users
89
129
  def pids(database, users)
@@ -1,3 +1,3 @@
1
1
  module PgConn
2
- VERSION = "0.37.0"
2
+ VERSION = "0.38.1"
3
3
  end
data/lib/pg_conn.rb CHANGED
@@ -821,7 +821,7 @@ module PgConn
821
821
  raise ArgumentError
822
822
  end
823
823
  elsif data.is_a?(Hash)
824
- method = :value # The pg_conn method when only one record is inserted
824
+ method = upsert ? :value? : :value # The pg_conn method when only one record is inserted
825
825
  fields ||= data.keys
826
826
  tuples = [fields.map { |field| data[field] }]
827
827
  else
@@ -847,7 +847,7 @@ module PgConn
847
847
  )
848
848
  end
849
849
 
850
- # Use upsert. Currently on 'on conflict do nothing' is supported
850
+ # Use upsert. Currently only 'on conflict do nothing' is supported
851
851
  def upsert(*args)
852
852
  insert(*args, upsert: true)
853
853
  end
@@ -1095,43 +1095,6 @@ module PgConn
1095
1095
  end
1096
1096
  end
1097
1097
 
1098
- # Return true if session triggers are enabled. Triggers are enabled by
1099
- # default by Postgres
1100
- def triggers?() self.value "select current_setting('session_replication_role') <> 'replica'" end
1101
-
1102
- # Enable session triggers
1103
- def enable_triggers()
1104
- self.execute "set session session_replication_role = DEFAULT"
1105
- end
1106
-
1107
- # Disable session triggers
1108
- def disable_triggers()
1109
- self.execute "set session session_replication_role = replica"
1110
- end
1111
-
1112
- # Executes block without triggers
1113
- def without_triggers(&block)
1114
- triggers(false) { yield }
1115
- end
1116
-
1117
- # Execute block with session triggers on or off
1118
- def triggers(on_off, &block)
1119
- begin
1120
- active = triggers?
1121
- if on_off && !active
1122
- enable_triggers
1123
- elsif !on_off && active
1124
- disable_triggers
1125
- end
1126
- yield
1127
- ensure
1128
- case active
1129
- when true; enable_triggers if !triggers?
1130
- when false; disable_triggers if triggers?
1131
- end
1132
- end
1133
- end
1134
-
1135
1098
  def dump(*query)
1136
1099
  records = self.records(*query)
1137
1100
 
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg_conn
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.37.0
4
+ version: 0.38.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Claus Rasmussen
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2025-04-27 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: pg
@@ -92,7 +91,6 @@ homepage: http://www.nowhere.com/
92
91
  licenses: []
93
92
  metadata:
94
93
  homepage_uri: http://www.nowhere.com/
95
- post_install_message:
96
94
  rdoc_options: []
97
95
  require_paths:
98
96
  - lib
@@ -107,8 +105,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
105
  - !ruby/object:Gem::Version
108
106
  version: '0'
109
107
  requirements: []
110
- rubygems_version: 3.3.7
111
- signing_key:
108
+ rubygems_version: 3.6.9
112
109
  specification_version: 4
113
110
  summary: Gem pg_conn
114
111
  test_files: []