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 +4 -4
- data/lib/pg_conn/schema_methods.rb +1 -1
- data/lib/pg_conn/session_methods.rb +40 -0
- data/lib/pg_conn/version.rb +1 -1
- data/lib/pg_conn.rb +2 -39
- metadata +3 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a643fd02f7ad3296edd58d09adf028634f865d24e1eccad2ad1cdd70bc222eaf
|
4
|
+
data.tar.gz: e07e79bde8c45423493fea5028bf8f920fede7b313efc25ff2883f77e3316540
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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)
|
data/lib/pg_conn/version.rb
CHANGED
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
|
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.
|
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:
|
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.
|
111
|
-
signing_key:
|
108
|
+
rubygems_version: 3.6.9
|
112
109
|
specification_version: 4
|
113
110
|
summary: Gem pg_conn
|
114
111
|
test_files: []
|