fast_inserter 0.1.3 → 0.1.4
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/CHANGELOG.md +6 -0
- data/lib/fast_inserter/fast_inserter_base.rb +7 -3
- data/lib/fast_inserter/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c9a5654ca484c5f0b47bfa91c6f5e1bb52549933
|
4
|
+
data.tar.gz: 9d239e735b0333d3662dc663e5fb5dfb83a6bee3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c89ce208dc7b8bcfb95b4bdb8e632b8712cc47bb7348f0f88d67ec83ccf986b69d565b8f66fc880f629ae12f909b13d89beeae960c431e3ab77f1a4f67486c5
|
7
|
+
data.tar.gz: a65992d6071b696bbc25b523002fcb5a32d84d4b0733f07f4a91c52cc4eef96f49947225bdf0431c1443d2a738eb36375dec7b29d2981cb9ee1b95eeea550e40
|
data/CHANGELOG.md
CHANGED
@@ -94,20 +94,24 @@ module FastInserter
|
|
94
94
|
|
95
95
|
# Queries for the existing values for a given group of values
|
96
96
|
def existing_values(group_of_values)
|
97
|
-
|
98
|
-
sql = "SELECT #{@variable_column} FROM #{@table_name} WHERE #{existing_values_static_columns} AND #{@variable_column} IN (#{values_to_check})"
|
97
|
+
sql = "SELECT #{@variable_column} FROM #{@table_name} WHERE #{existing_values_static_columns}"
|
99
98
|
|
100
99
|
# NOTE: There are more elegant ways to get this field out of the resultset, but each database adaptor returns a different type
|
101
100
|
# of result from 'execute(sql)'. Potential classes for 'result' is Array (sqlite), Mysql2::Result (mysql2), PG::Result (pg). Each
|
102
101
|
# result can be enumerated into a list of arrays (mysql) or list of hashes (sqlite, pg)
|
103
102
|
results = ActiveRecord::Base.connection.execute(sql)
|
104
|
-
results.to_a.map do |result|
|
103
|
+
existing_values = results.to_a.map do |result|
|
105
104
|
if result.is_a?(Hash)
|
106
105
|
result[@variable_column].to_s
|
107
106
|
elsif result.is_a?(Array)
|
108
107
|
result[0].to_s
|
109
108
|
end
|
110
109
|
end
|
110
|
+
|
111
|
+
# Rather than a giant IN query in the sql statement (which can be bad for database performance),
|
112
|
+
# do the filtering of relevant values here in a ruby select.
|
113
|
+
group_of_values_strings = group_of_values.map(&:to_s)
|
114
|
+
existing_values & group_of_values_strings
|
111
115
|
end
|
112
116
|
|
113
117
|
def existing_values_static_columns
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fast_inserter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Scott Ringwelski
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: exe
|
13
13
|
cert_chain: []
|
14
|
-
date: 2016-
|
14
|
+
date: 2016-09-19 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: activerecord
|