postgresql_cursor 0.5.0 → 0.5.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
  SHA1:
3
- metadata.gz: 6d9ff2e625bba6a119c092d2a7af6cc4b0ab2fde
4
- data.tar.gz: d44d29ed0238aac7fc0597d6e1ae83763b0e7cdb
3
+ metadata.gz: 01a81f4aa5a5a18d0b26ad2bc2ae9d3b7d02dcb5
4
+ data.tar.gz: f8b3ca7158110a45ba7f28797a4d0c970f11bdb5
5
5
  SHA512:
6
- metadata.gz: 7451b81a33709fd76494f97e883a11d97d30611c7854ae712082a06899a14ce8b9bca28fd14925e06c21a695f1d1df20a1d5044883519f0e34148dbcca5b1313
7
- data.tar.gz: 15350ff60d906758aeb41f104102f89a28d60e713343c62023a907a389c3244db305f0237de2890cc13e9dce17810da67765cc90e56a008ed40ec86f4f51a580
6
+ metadata.gz: 204072400a16ff6934d82d03b95b3bca16ee047bd2676e00fd799de199e6fb5e6e89dc0935cb3b58fc36279e0957ebe63394c0cfac6e5d7051a434aa0d78045d
7
+ data.tar.gz: 1454bea0121abc656677f69150581ee04884717eed3b53bae7097cc555ec23312f5b3469cf74628f21fe16b9df1ab2b07999c678ea7cfa615ee68a8aa35dd749
data/Gemfile.lock CHANGED
@@ -1,20 +1,20 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- postgresql_cursor (0.5.0)
4
+ postgresql_cursor (0.5.1)
5
5
  activerecord (>= 3.2.0)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- activemodel (4.1.1)
11
- activesupport (= 4.1.1)
10
+ activemodel (4.1.5)
11
+ activesupport (= 4.1.5)
12
12
  builder (~> 3.1)
13
- activerecord (4.1.1)
14
- activemodel (= 4.1.1)
15
- activesupport (= 4.1.1)
13
+ activerecord (4.1.5)
14
+ activemodel (= 4.1.5)
15
+ activesupport (= 4.1.5)
16
16
  arel (~> 5.0.0)
17
- activesupport (4.1.1)
17
+ activesupport (4.1.5)
18
18
  i18n (~> 0.6, >= 0.6.9)
19
19
  json (~> 1.7, >= 1.7.7)
20
20
  minitest (~> 5.1)
@@ -22,13 +22,13 @@ GEM
22
22
  tzinfo (~> 1.1)
23
23
  arel (5.0.1.20140414130214)
24
24
  builder (3.2.2)
25
- i18n (0.6.9)
25
+ i18n (0.6.11)
26
26
  json (1.8.1)
27
27
  minitest (5.3.3)
28
28
  pg (0.17.1)
29
29
  rake (10.3.1)
30
30
  thread_safe (0.3.4)
31
- tzinfo (1.2.1)
31
+ tzinfo (1.2.2)
32
32
  thread_safe (~> 0.1)
33
33
 
34
34
  PLATFORMS
data/README.md CHANGED
@@ -43,19 +43,6 @@ Product.each_row_by_sql("select * from products") { |hash| Product.process(hash)
43
43
  Product.each_instance_by_sql("select * from products") { |product| product.process }
44
44
  ```
45
45
 
46
- ###PostgreSQLCursor is an Enumerable
47
-
48
- If you do not pass in a block, the cursor is returned, which mixes in the Enumerable
49
- libary. With that, you can pass it around, or chain in the awesome enumerable things
50
- like `map` and `reduce`. Furthermore, the cursors already act as `lazy`, but you can
51
- also chain in `lazy` when you want to keep the memory footprint small for rest of the process.
52
-
53
- ```ruby
54
- Product.each_row.map {|r| r["id"].to_i } #=> [1, 2, 3, ...]
55
- Product.each_instance.map {|r| r.id }.each {|id| p id } #=> [1, 2, 3, ...]
56
- Product.each_instance.lazy.inject(0) {|sum,r| sum + r.quantity } #=> 499500
57
- ```
58
-
59
46
  All these methods take an options hash to control things more:
60
47
 
61
48
  block_size:n The number of rows to fetch from the database each time (default 1000)
@@ -74,6 +61,18 @@ Notes:
74
61
  * Aliases each_hash and each_hash_by_sql are provided for each_row and each_row_by_sql
75
62
  if you prefer to express what types are being returned.
76
63
 
64
+ ###PostgreSQLCursor is an Enumerable
65
+
66
+ If you do not pass in a block, the cursor is returned, which mixes in the Enumerable
67
+ libary. With that, you can pass it around, or chain in the awesome enumerable things
68
+ like `map` and `reduce`. Furthermore, the cursors already act as `lazy`, but you can
69
+ also chain in `lazy` when you want to keep the memory footprint small for rest of the process.
70
+
71
+ ```ruby
72
+ Product.each_row.map {|r| r["id"].to_i } #=> [1, 2, 3, ...]
73
+ Product.each_instance.map {|r| r.id }.each {|id| p id } #=> [1, 2, 3, ...]
74
+ Product.each_instance.lazy.inject(0) {|sum,r| sum + r.quantity } #=> 499500
75
+ ```
77
76
  ###Hashes vs. Instances
78
77
 
79
78
  The each_row method returns the Hash of strings for speed (as this allows you to process a lot of rows).
@@ -20,7 +20,7 @@ module PostgreSQLCursor
20
20
  # Returns the number of rows yielded to the block
21
21
  def each_row(options={}, &block)
22
22
  options = {:connection => self.connection}.merge(options)
23
- cursor = PostgreSQLCursor::Cursor.new(to_sql, options)
23
+ cursor = PostgreSQLCursor::Cursor.new(to_unprepared_sql, options)
24
24
  return cursor.each_row(&block) if block_given?
25
25
  cursor
26
26
  end
@@ -37,7 +37,7 @@ module PostgreSQLCursor
37
37
  # Returns the number of rows yielded to the block
38
38
  def each_instance(options={}, &block)
39
39
  options = {:connection => self.connection}.merge(options)
40
- cursor = PostgreSQLCursor::Cursor.new(to_sql, options)
40
+ cursor = PostgreSQLCursor::Cursor.new(to_unprepared_sql, options)
41
41
  return cursor.each_instance(self, &block) if block_given?
42
42
  cursor.iterate_type(self)
43
43
  end
@@ -58,6 +58,21 @@ module PostgreSQLCursor
58
58
  end
59
59
  alias :pluck_instance :pluck_instances
60
60
 
61
+ private
62
+
63
+ # Returns sql string like #to_sql, but with bind parameters interpolated.
64
+ # ActiveRecord sets up query as prepared statements with bind variables.
65
+ # Cursors will prepare statements regardless.
66
+ def to_unprepared_sql
67
+ if self.connection.respond_to?(:unprepared_statement)
68
+ self.connection.unprepared_statement do
69
+ to_sql
70
+ end
71
+ else
72
+ to_sql
73
+ end
74
+ end
75
+
61
76
  end
62
77
  end
63
78
  end
@@ -1,3 +1,3 @@
1
1
  module PostgresqlCursor
2
- VERSION = "0.5.0"
2
+ VERSION = "0.5.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: postgresql_cursor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Allen Fair
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-26 00:00:00.000000000 Z
11
+ date: 2014-09-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord