pg_triggers 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5595adfac3ae67d7262d42108d3c0eb0c22f0fe2
4
- data.tar.gz: ba76d00baf5284c9e1b87d49caae8cfd8b16e5d0
3
+ metadata.gz: 0704c4d2367210950157af18d6a2c692d17bf29b
4
+ data.tar.gz: 7f206a2a7168e50eed29bf5cad05223c969614d0
5
5
  SHA512:
6
- metadata.gz: fd7455f77c46996d2950859a56896d3a94afcef07cbab6756c554c1c543efb9a2d7ae6a2677e95c284ebef9752be038e4e16c1131afbee8459759b448e9d3615
7
- data.tar.gz: b599f05a7f96e8954abe0c2a72e4860cb116c7d2c3b8ae725f37e0bbdd1f2cd03f7ef3ffba944c765fafa1c15f99cfdc2d91a23541a2f7c26e95cdd81a5819dd
6
+ metadata.gz: 47cd88a1cb97608e5a19dbb165bf5ce5df649d61d788bd9e54e103213e4e54cce95b5bb36cbd6adc298ee5c296036bcdd11b19889650f68fdabeab928ff9f24c
7
+ data.tar.gz: b4fd38c0b2c8230cfeec1b95bdf908354b0ae2916c2e43624652e93655e22dc3dfd2afb9356c812fcfea7b5b0aa9f4784688f68c5e5299bb70916f0130d1dd1d
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ### 0.3.1 (2015-01-20)
2
+
3
+ * Fix bug with sum_cache that occurred when a value in a summed column is updated.
4
+
1
5
  ### 0.3.0 (2014-11-07)
2
6
 
3
7
  * Add sum_cache trigger.
@@ -1,3 +1,3 @@
1
1
  module PgTriggers
2
- VERSION = '0.3.0'
2
+ VERSION = '0.3.1'
3
3
  end
data/lib/pg_triggers.rb CHANGED
@@ -78,13 +78,15 @@ module PgTriggers
78
78
  END IF;
79
79
  RETURN NEW;
80
80
  ELSIF (TG_OP = 'UPDATE') THEN
81
- IF (#{changed}) OR ((#{condition['OLD']}) <> (#{condition['NEW']})) OR (OLD.#{summed_column} <> NEW.#{summed_column}) THEN
81
+ IF (#{changed}) OR ((#{condition['OLD']}) <> (#{condition['NEW']})) THEN
82
82
  IF (#{condition['OLD']}) THEN
83
83
  UPDATE #{main_table} SET #{sum_column} = #{sum_column} - (OLD.#{summed_column} * #{multiplier}) WHERE #{where['OLD']};
84
84
  END IF;
85
85
  IF (#{condition['NEW']}) THEN
86
86
  UPDATE #{main_table} SET #{sum_column} = #{sum_column} + (NEW.#{summed_column} * #{multiplier}) WHERE #{where['NEW']};
87
87
  END IF;
88
+ ELSIF (OLD.#{summed_column} <> NEW.#{summed_column}) THEN
89
+ UPDATE #{main_table} SET #{sum_column} = #{sum_column} + ((NEW.#{summed_column} - OLD.#{summed_column}) * #{multiplier}) WHERE #{where['NEW']};
88
90
  END IF;
89
91
  RETURN NEW;
90
92
  ELSIF (TG_OP = 'DELETE') THEN
@@ -36,11 +36,14 @@ describe PgTriggers, 'sum_cache' do
36
36
  DB[:summed_table].where(id: 2).update(:summed_count => 4).should == 1
37
37
  DB[:summer_table].where(id: 1).get(:summer_sum).should == 7
38
38
 
39
+ DB[:summed_table].where(id: 2).update(:summed_count => 6).should == 1
40
+ DB[:summer_table].where(id: 1).get(:summer_sum).should == 9
41
+
39
42
  DB[:summed_table].where(id: 1).delete.should == 1
40
- DB[:summer_table].where(id: 1).get(:summer_sum).should == 4
43
+ DB[:summer_table].where(id: 1).get(:summer_sum).should == 6
41
44
 
42
45
  DB[:summed_table].insert(id: 3, summer_id: 1, summed_count: 5)
43
- DB[:summer_table].where(id: 1).get(:summer_sum).should == 9
46
+ DB[:summer_table].where(id: 1).get(:summer_sum).should == 11
44
47
  end
45
48
 
46
49
  it "should work when the tables are related by multiple columns" do
@@ -256,10 +259,13 @@ describe PgTriggers, 'sum_cache' do
256
259
  DB[:summed_table].where(id: 2).update(:summed_count => 4).should == 1
257
260
  DB[:summer_table].where(id: 1).get(:summer_sum).should == 28
258
261
 
262
+ DB[:summed_table].where(id: 2).update(:summed_count => 6).should == 1
263
+ DB[:summer_table].where(id: 1).get(:summer_sum).should == 36
264
+
259
265
  DB[:summed_table].where(id: 1).delete.should == 1
260
- DB[:summer_table].where(id: 1).get(:summer_sum).should == 16
266
+ DB[:summer_table].where(id: 1).get(:summer_sum).should == 24
261
267
 
262
268
  DB[:summed_table].insert(id: 3, summer_id: 1, summed_count: 5)
263
- DB[:summer_table].where(id: 1).get(:summer_sum).should == 36
269
+ DB[:summer_table].where(id: 1).get(:summer_sum).should == 44
264
270
  end
265
271
  end
metadata CHANGED
@@ -1,97 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg_triggers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Hanks
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-07 00:00:00.000000000 Z
11
+ date: 2015-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.6'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.6'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: sequel
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: pg
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: pry
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  description: Handy helpers to create PostgreSQL Triggers
@@ -101,7 +101,7 @@ executables: []
101
101
  extensions: []
102
102
  extra_rdoc_files: []
103
103
  files:
104
- - .gitignore
104
+ - ".gitignore"
105
105
  - CHANGELOG.md
106
106
  - Gemfile
107
107
  - LICENSE.txt
@@ -125,17 +125,17 @@ require_paths:
125
125
  - lib
126
126
  required_ruby_version: !ruby/object:Gem::Requirement
127
127
  requirements:
128
- - - '>='
128
+ - - ">="
129
129
  - !ruby/object:Gem::Version
130
130
  version: '0'
131
131
  required_rubygems_version: !ruby/object:Gem::Requirement
132
132
  requirements:
133
- - - '>='
133
+ - - ">="
134
134
  - !ruby/object:Gem::Version
135
135
  version: '0'
136
136
  requirements: []
137
137
  rubyforge_project:
138
- rubygems_version: 2.2.2
138
+ rubygems_version: 2.4.5
139
139
  signing_key:
140
140
  specification_version: 4
141
141
  summary: Helpers for Postgres Triggers