upsert 2.2.1 → 2.9.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +5 -5
  2. data/.ruby-version +1 -0
  3. data/.standard.yml +1 -0
  4. data/.travis.yml +54 -31
  5. data/CHANGELOG +9 -0
  6. data/Gemfile +12 -1
  7. data/LICENSE +3 -1
  8. data/README.md +35 -2
  9. data/Rakefile +7 -1
  10. data/lib/upsert.rb +49 -7
  11. data/lib/upsert/column_definition/mysql.rb +2 -2
  12. data/lib/upsert/column_definition/postgresql.rb +9 -8
  13. data/lib/upsert/column_definition/sqlite3.rb +3 -3
  14. data/lib/upsert/connection/Java_ComMysqlJdbc_JDBC4Connection.rb +5 -3
  15. data/lib/upsert/connection/Java_OrgPostgresqlJdbc_PgConnection.rb +33 -0
  16. data/lib/upsert/connection/PG_Connection.rb +5 -0
  17. data/lib/upsert/connection/jdbc.rb +7 -1
  18. data/lib/upsert/connection/postgresql.rb +2 -3
  19. data/lib/upsert/merge_function.rb +3 -2
  20. data/lib/upsert/merge_function/{Java_OrgPostgresqlJdbc4_Jdbc4Connection.rb → Java_OrgPostgresqlJdbc_PgConnection.rb} +2 -2
  21. data/lib/upsert/merge_function/PG_Connection.rb +1 -1
  22. data/lib/upsert/merge_function/postgresql.rb +81 -19
  23. data/lib/upsert/merge_function/sqlite3.rb +10 -0
  24. data/lib/upsert/version.rb +1 -1
  25. data/spec/correctness_spec.rb +20 -5
  26. data/spec/database_functions_spec.rb +6 -2
  27. data/spec/hstore_spec.rb +53 -38
  28. data/spec/logger_spec.rb +1 -1
  29. data/spec/postgresql_spec.rb +81 -3
  30. data/spec/reserved_words_spec.rb +18 -14
  31. data/spec/sequel_spec.rb +16 -7
  32. data/spec/spec_helper.rb +238 -111
  33. data/spec/speed_spec.rb +3 -33
  34. data/spec/threaded_spec.rb +35 -12
  35. data/spec/type_safety_spec.rb +2 -1
  36. data/travis/run_docker_db.sh +20 -0
  37. data/upsert-java.gemspec +12 -0
  38. data/upsert.gemspec +9 -63
  39. data/upsert.gemspec.common +106 -0
  40. metadata +37 -44
  41. data/lib/upsert/connection/Java_OrgPostgresqlJdbc4_Jdbc4Connection.rb +0 -20
data/spec/speed_spec.rb CHANGED
@@ -6,7 +6,7 @@ describe Upsert do
6
6
  assert_faster_than 'find + new/set/save', lotsa_records do |records|
7
7
  records.each do |selector, setter|
8
8
  if pet = Pet.where(selector).first
9
- pet.update_attributes setter, :without_protection => true
9
+ pet.update_attributes(setter)
10
10
  else
11
11
  pet = Pet.new
12
12
  selector.each do |k, v|
@@ -24,51 +24,21 @@ describe Upsert do
24
24
  assert_faster_than 'find_or_create + update_attributes', lotsa_records do |records|
25
25
  dynamic_method = nil
26
26
  records.each do |selector, setter|
27
- dynamic_method ||= "find_or_create_by_#{selector.keys.join('_or_')}"
28
- pet = Pet.send(dynamic_method, *selector.values)
29
- pet.update_attributes setter, :without_protection => true
27
+ Pet.find_or_create_by(selector).update_attributes(setter)
30
28
  end
31
29
  end
32
30
  end
33
31
  it "is faster than create + rescue/find/update" do
34
32
  assert_faster_than 'create + rescue/find/update', lotsa_records do |records|
35
- dynamic_method = nil
36
33
  records.each do |selector, setter|
37
- dynamic_method ||= "find_or_create_by_#{selector.keys.join('_or_')}"
38
34
  begin
39
35
  Pet.create selector.merge(setter), :without_protection => true
40
36
  rescue
41
- pet = Pet.send(dynamic_method, *selector.values)
42
- pet.update_attributes setter, :without_protection => true
37
+ Pet.find_or_create_by(selector).update_attributes(setter)
43
38
  end
44
39
  end
45
40
  end
46
41
  end
47
42
  end
48
-
49
- # FIXME apparently no longer faster?
50
- # if ENV['DB'] == 'mysql' && RUBY_VERSION >= '1.9'
51
- # describe 'compared to activerecord-import' do
52
- # it "is faster than faking upserts with activerecord-import" do
53
- # assert_faster_than 'faking upserts with activerecord-import', lotsa_records do |records|
54
- # columns = nil
55
- # all_values = []
56
- # records.each do |selector, setter|
57
- # columns ||= (selector.keys + setter.keys).uniq
58
- # all_values << columns.map do |k|
59
- # if setter.has_key?(k)
60
- # # prefer the setter so that you can change rows
61
- # setter[k]
62
- # else
63
- # selector[k]
64
- # end
65
- # end
66
- # end
67
- # Pet.import columns, all_values, :timestamps => false, :on_duplicate_key_update => columns
68
- # end
69
- # end
70
- # end
71
- # end
72
-
73
43
  end
74
44
  end
@@ -1,18 +1,21 @@
1
1
  require 'spec_helper'
2
2
  describe Upsert do
3
+ Thread.abort_on_exception = true
3
4
  describe "is thread-safe" do
4
5
  it "is safe to use one-by-one" do
5
6
  upsert = Upsert.new $conn, :pets
6
7
  assert_creates(Pet, [{:name => 'Jerry', :gender => 'neutered'}]) do
7
8
  ts = []
8
9
  10.times do
9
- ts << Thread.new do
10
- sleep 0.2
11
- upsert.row({:name => 'Jerry'}, :gender => 'male')
12
- upsert.row({:name => 'Jerry'}, :gender => 'neutered')
13
- end
14
- ts.each { |t| t.join }
10
+ ts << Thread.new {
11
+ ActiveRecord::Base.connection_pool.with_connection do |conn|
12
+ sleep 0.2
13
+ upsert.row({name: "Jerry"}, gender: "male")
14
+ upsert.row({name: "Jerry"}, gender: "neutered")
15
+ end
16
+ }
15
17
  end
18
+ ts.each { |t| t.join(3) }
16
19
  end
17
20
  end
18
21
  it "is safe to use batch" do
@@ -20,14 +23,34 @@ describe Upsert do
20
23
  Upsert.batch($conn, :pets) do |upsert|
21
24
  ts = []
22
25
  10.times do
23
- ts << Thread.new do
24
- sleep 0.2
25
- upsert.row({:name => 'Jerry'}, :gender => 'male')
26
- upsert.row({:name => 'Jerry'}, :gender => 'neutered')
27
- end
28
- ts.each { |t| t.join }
26
+ ts << Thread.new {
27
+ ActiveRecord::Base.connection_pool.with_connection do |conn|
28
+ sleep 0.2
29
+ upsert.row({name: "Jerry"}, gender: "male")
30
+ upsert.row({name: "Jerry"}, gender: "neutered")
31
+ end
32
+ }
29
33
  end
34
+ ts.each { |t| t.join(3) }
35
+ end
36
+ end
37
+ end
38
+
39
+ it "is safe to use with the entire block instead the thread" do
40
+ assert_creates(Pet, [{name: "Jerry", gender: "neutered"}]) do
41
+ ts = []
42
+ 10.times do
43
+ ts << Thread.new {
44
+ ActiveRecord::Base.connection_pool.with_connection do |conn|
45
+ sleep 0.1
46
+ Upsert.batch(conn, :pets) do |upsert|
47
+ upsert.row({name: "Jerry"}, gender: "male")
48
+ upsert.row({name: "Jerry"}, gender: "neutered")
49
+ end
50
+ end
51
+ }
30
52
  end
53
+ ts.each { |t| t.join(3) }
31
54
  end
32
55
  end
33
56
  end
@@ -2,10 +2,11 @@ require 'spec_helper'
2
2
  describe Upsert do
3
3
  describe "type safety" do
4
4
  it "does not attempt to typecast values" do
5
+ error_class = RUBY_PLATFORM == 'java' ? org.postgresql.util.PSQLException : PG::InvalidTextRepresentation
5
6
  upsert = Upsert.new $conn, :pets
6
7
  lambda do
7
8
  upsert.row :tag_number => ''
8
- end.should raise_error
9
+ end.should raise_error error_class
9
10
  end
10
11
  end
11
12
  end if ENV['DB'] == 'postgresql'
@@ -0,0 +1,20 @@
1
+ docker network create -d bridge --subnet 172.25.0.0/16 --gateway 172.25.0.1 upsert_test
2
+
3
+ case "$DB" in
4
+ postgresql)
5
+ docker run --tmpfs /var/lib/postgresql/data:rw --rm --name upsert_test_db_server \
6
+ -e POSTGRES_USER=$DB_USER -e POSTGRES_PASSWORD=$DB_PASSWORD -e POSTGRES_DB=$DB_NAME \
7
+ -p 5432:5432 -d \
8
+ $DB_VERSION
9
+ sleep 10
10
+ ;;
11
+ mysql)
12
+ docker run --network upsert_test --ip 172.25.0.2 --tmpfs /var/lib/mysql:rw --rm --name upsert_test_db_server \
13
+ -e MYSQL_ROOT_PASSWORD=root -e MYSQL_USER=$DB_USER -e MYSQL_PASSWORD=$DB_PASSWORD -e MYSQL_DATABASE=$DB_NAME \
14
+ -p 3306:3306 -d \
15
+ $DB_VERSION \
16
+ --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password --default-time-zone=+00:00
17
+ sleep 10
18
+ docker run --network upsert_test --rm $DB_VERSION mysql -h172.25.0.2 -uroot -proot -e "GRANT ALL ON *.* TO '$DB_USER'"
19
+ ;;
20
+ esac
@@ -0,0 +1,12 @@
1
+ Gem::Specification.load(File.expand_path("upsert.gemspec.common", __dir__)).dup.tap do |gem|
2
+ gem.instance_exec do
3
+ self.name = "upsert-java"
4
+ add_development_dependency "jruby-openssl"
5
+ add_development_dependency "jdbc-postgres"
6
+ add_development_dependency "jdbc-mysql"
7
+ add_development_dependency "jdbc-sqlite3"
8
+ add_development_dependency "activerecord-jdbc-adapter"
9
+
10
+ add_development_dependency "pry-nav"
11
+ end
12
+ end
data/upsert.gemspec CHANGED
@@ -1,65 +1,11 @@
1
- # -*- encoding: utf-8 -*-
2
- require File.expand_path('../lib/upsert/version', __FILE__)
3
-
4
- Gem::Specification.new do |gem|
5
- gem.authors = ["Seamus Abshere", "Phil Schalm"]
6
- gem.email = ["seamus@abshere.net"]
7
- t = %{Make it easy to upsert on MySQL, PostgreSQL, and SQLite3. Transparently creates merge functions for MySQL and PostgreSQL; on SQLite3, uses INSERT OR IGNORE.}
8
- gem.description = t
9
- gem.summary = t
10
- gem.homepage = "https://github.com/seamusabshere/upsert"
11
-
12
- gem.files = `git ls-files`.split($\)
13
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
14
- gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
15
- gem.name = "upsert"
16
- gem.require_paths = ["lib"]
17
- gem.version = Upsert::VERSION
18
-
19
- # NOTE: no runtime dependencies!
20
-
21
- gem.add_development_dependency 'rspec-core'
22
- gem.add_development_dependency 'rspec-expectations'
23
- gem.add_development_dependency 'rspec-mocks'
24
-
25
- gem.add_development_dependency 'activerecord', '~>3'
26
- gem.add_development_dependency 'active_record_inline_schema'
27
- gem.add_development_dependency 'yard'
28
- gem.add_development_dependency 'pry'
29
- gem.add_development_dependency 'pg-hstore', ">=1.1.3"
30
- gem.add_development_dependency 'sequel'
31
- gem.add_development_dependency 'rake', '~>10.1.1'
32
-
33
- if RUBY_VERSION >= '1.9'
34
- gem.add_development_dependency 'activerecord-import', '0.11.0' # 0.12 and up were failing
35
- else
36
- gem.add_development_dependency 'orderedhash'
37
- end
38
-
39
- if RUBY_PLATFORM == 'java'
40
- gem.add_development_dependency 'jruby-openssl'
41
- gem.add_development_dependency 'jdbc-postgres'
42
- gem.add_development_dependency 'jdbc-mysql'
43
- gem.add_development_dependency 'jdbc-sqlite3'
44
- gem.add_development_dependency 'activerecord-jdbcsqlite3-adapter'
45
- gem.add_development_dependency 'activerecord-jdbcmysql-adapter'
46
- gem.add_development_dependency 'activerecord-jdbcpostgresql-adapter'
47
- else
48
- gem.add_development_dependency 'activerecord-postgresql-adapter'
49
- gem.add_development_dependency 'sqlite3'
50
- gem.add_development_dependency 'mysql2', '~> 0.3.10'
51
- gem.add_development_dependency 'pg', '~> 0.18.0'
52
- # github-flavored markdown
53
- if RUBY_VERSION >= '1.9'
54
- gem.add_development_dependency 'redcarpet'
55
- else
56
- gem.add_development_dependency 'redcarpet', '~> 2.3.0'
57
- end
58
- end
59
-
60
- if RUBY_VERSION <= '1.9.3'
61
- gem.add_development_dependency 'faker', '1.6.3'
62
- else
63
- gem.add_development_dependency 'faker'
1
+ Gem::Specification.load(File.expand_path("upsert.gemspec.common", __dir__)).dup.tap do |gem|
2
+ gem.instance_exec do
3
+ self.name = "upsert"
4
+ add_development_dependency "activerecord-postgresql-adapter"
5
+ add_development_dependency "sqlite3"
6
+ add_development_dependency "mysql2", "~> 0.5"
7
+ add_development_dependency "pg", "~> 1.1"
8
+
9
+ add_development_dependency "pry-byebug"
64
10
  end
65
11
  end
@@ -0,0 +1,106 @@
1
+ require File.expand_path("../lib/upsert/version", __FILE__)
2
+
3
+ Gem::Specification.new do |gem|
4
+ gem.authors = ["Seamus Abshere", "Phil Schalm"]
5
+ gem.email = ["seamus@abshere.net", "pnomolos@gmail.com"]
6
+ t = %{Make it easy to upsert on MySQL, PostgreSQL, and SQLite3. Transparently creates merge functions for MySQL and PostgreSQL; on SQLite3, uses INSERT OR IGNORE.}
7
+ gem.description = t
8
+ gem.summary = t
9
+ gem.homepage = "https://github.com/seamusabshere/upsert"
10
+ gem.license = "MIT"
11
+
12
+ # We no longer use `git ls-files` here because it breaks on some version of jruby...
13
+ # For some slightly related information:
14
+ # - https://github.com/jruby/jruby/issues/4515
15
+ # - https://github.com/jruby/jruby/issues/5249
16
+ #
17
+ gem.files = %w[
18
+ .gitignore
19
+ .ruby-version
20
+ .standard.yml
21
+ .travis.yml
22
+ .yardopts
23
+ CHANGELOG
24
+ Gemfile
25
+ LICENSE
26
+ README.md
27
+ Rakefile
28
+ lib/upsert.rb
29
+ lib/upsert/active_record_upsert.rb
30
+ lib/upsert/binary.rb
31
+ lib/upsert/column_definition.rb
32
+ lib/upsert/column_definition/mysql.rb
33
+ lib/upsert/column_definition/postgresql.rb
34
+ lib/upsert/column_definition/sqlite3.rb
35
+ lib/upsert/connection.rb
36
+ lib/upsert/connection/Java_ComMysqlJdbc_JDBC4Connection.rb
37
+ lib/upsert/connection/Java_OrgPostgresqlJdbc_PgConnection.rb
38
+ lib/upsert/connection/Java_OrgSqlite_Conn.rb
39
+ lib/upsert/connection/Mysql2_Client.rb
40
+ lib/upsert/connection/PG_Connection.rb
41
+ lib/upsert/connection/SQLite3_Database.rb
42
+ lib/upsert/connection/jdbc.rb
43
+ lib/upsert/connection/postgresql.rb
44
+ lib/upsert/connection/sqlite3.rb
45
+ lib/upsert/merge_function.rb
46
+ lib/upsert/merge_function/Java_ComMysqlJdbc_JDBC4Connection.rb
47
+ lib/upsert/merge_function/Java_OrgPostgresqlJdbc_PgConnection.rb
48
+ lib/upsert/merge_function/Java_OrgSqlite_Conn.rb
49
+ lib/upsert/merge_function/Mysql2_Client.rb
50
+ lib/upsert/merge_function/PG_Connection.rb
51
+ lib/upsert/merge_function/SQLite3_Database.rb
52
+ lib/upsert/merge_function/mysql.rb
53
+ lib/upsert/merge_function/postgresql.rb
54
+ lib/upsert/merge_function/sqlite3.rb
55
+ lib/upsert/row.rb
56
+ lib/upsert/version.rb
57
+ spec/active_record_upsert_spec.rb
58
+ spec/binary_spec.rb
59
+ spec/correctness_spec.rb
60
+ spec/database_functions_spec.rb
61
+ spec/database_spec.rb
62
+ spec/hstore_spec.rb
63
+ spec/jruby_spec.rb
64
+ spec/logger_spec.rb
65
+ spec/misc/get_postgres_reserved_words.rb
66
+ spec/misc/mysql_reserved.txt
67
+ spec/misc/pg_reserved.txt
68
+ spec/multibyte_spec.rb
69
+ spec/postgresql_spec.rb
70
+ spec/precision_spec.rb
71
+ spec/reserved_words_spec.rb
72
+ spec/sequel_spec.rb
73
+ spec/spec_helper.rb
74
+ spec/speed_spec.rb
75
+ spec/threaded_spec.rb
76
+ spec/timezones_spec.rb
77
+ spec/type_safety_spec.rb
78
+ travis/install_postgres.sh
79
+ travis/run_docker_db.sh
80
+ travis/tune_mysql.sh
81
+ upsert-java.gemspec
82
+ upsert.gemspec
83
+ upsert.gemspec.common
84
+ ]
85
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
86
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
87
+ gem.name = "upsert"
88
+ gem.require_paths = ["lib"]
89
+ gem.version = Upsert::VERSION
90
+
91
+ # NOTE: no runtime dependencies!
92
+
93
+ gem.add_development_dependency 'rspec-core'
94
+ gem.add_development_dependency 'rspec-expectations'
95
+ gem.add_development_dependency 'rspec-mocks'
96
+
97
+ gem.add_development_dependency 'activerecord', '~> 5'
98
+ gem.add_development_dependency 'yard'
99
+ gem.add_development_dependency 'pry'
100
+ gem.add_development_dependency 'pg-hstore', ">=1.1.3"
101
+ gem.add_development_dependency 'sequel'
102
+ gem.add_development_dependency 'rake', '~> 10'
103
+
104
+ gem.add_development_dependency "activerecord-import", "~> 1"
105
+ gem.add_development_dependency "faker"
106
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: upsert
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.1
4
+ version: 2.9.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Seamus Abshere
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-04-20 00:00:00.000000000 Z
12
+ date: 2019-11-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec-core
@@ -59,28 +59,14 @@ dependencies:
59
59
  requirements:
60
60
  - - "~>"
61
61
  - !ruby/object:Gem::Version
62
- version: '3'
62
+ version: '5'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: '3'
70
- - !ruby/object:Gem::Dependency
71
- name: active_record_inline_schema
72
- requirement: !ruby/object:Gem::Requirement
73
- requirements:
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- version: '0'
77
- type: :development
78
- prerelease: false
79
- version_requirements: !ruby/object:Gem::Requirement
80
- requirements:
81
- - - ">="
82
- - !ruby/object:Gem::Version
83
- version: '0'
69
+ version: '5'
84
70
  - !ruby/object:Gem::Dependency
85
71
  name: yard
86
72
  requirement: !ruby/object:Gem::Requirement
@@ -143,30 +129,30 @@ dependencies:
143
129
  requirements:
144
130
  - - "~>"
145
131
  - !ruby/object:Gem::Version
146
- version: 10.1.1
132
+ version: '10'
147
133
  type: :development
148
134
  prerelease: false
149
135
  version_requirements: !ruby/object:Gem::Requirement
150
136
  requirements:
151
137
  - - "~>"
152
138
  - !ruby/object:Gem::Version
153
- version: 10.1.1
139
+ version: '10'
154
140
  - !ruby/object:Gem::Dependency
155
141
  name: activerecord-import
156
142
  requirement: !ruby/object:Gem::Requirement
157
143
  requirements:
158
- - - '='
144
+ - - "~>"
159
145
  - !ruby/object:Gem::Version
160
- version: 0.11.0
146
+ version: '1'
161
147
  type: :development
162
148
  prerelease: false
163
149
  version_requirements: !ruby/object:Gem::Requirement
164
150
  requirements:
165
- - - '='
151
+ - - "~>"
166
152
  - !ruby/object:Gem::Version
167
- version: 0.11.0
153
+ version: '1'
168
154
  - !ruby/object:Gem::Dependency
169
- name: activerecord-postgresql-adapter
155
+ name: faker
170
156
  requirement: !ruby/object:Gem::Requirement
171
157
  requirements:
172
158
  - - ">="
@@ -180,7 +166,7 @@ dependencies:
180
166
  - !ruby/object:Gem::Version
181
167
  version: '0'
182
168
  - !ruby/object:Gem::Dependency
183
- name: sqlite3
169
+ name: activerecord-postgresql-adapter
184
170
  requirement: !ruby/object:Gem::Requirement
185
171
  requirements:
186
172
  - - ">="
@@ -194,49 +180,49 @@ dependencies:
194
180
  - !ruby/object:Gem::Version
195
181
  version: '0'
196
182
  - !ruby/object:Gem::Dependency
197
- name: mysql2
183
+ name: sqlite3
198
184
  requirement: !ruby/object:Gem::Requirement
199
185
  requirements:
200
- - - "~>"
186
+ - - ">="
201
187
  - !ruby/object:Gem::Version
202
- version: 0.3.10
188
+ version: '0'
203
189
  type: :development
204
190
  prerelease: false
205
191
  version_requirements: !ruby/object:Gem::Requirement
206
192
  requirements:
207
- - - "~>"
193
+ - - ">="
208
194
  - !ruby/object:Gem::Version
209
- version: 0.3.10
195
+ version: '0'
210
196
  - !ruby/object:Gem::Dependency
211
- name: pg
197
+ name: mysql2
212
198
  requirement: !ruby/object:Gem::Requirement
213
199
  requirements:
214
200
  - - "~>"
215
201
  - !ruby/object:Gem::Version
216
- version: 0.18.0
202
+ version: '0.5'
217
203
  type: :development
218
204
  prerelease: false
219
205
  version_requirements: !ruby/object:Gem::Requirement
220
206
  requirements:
221
207
  - - "~>"
222
208
  - !ruby/object:Gem::Version
223
- version: 0.18.0
209
+ version: '0.5'
224
210
  - !ruby/object:Gem::Dependency
225
- name: redcarpet
211
+ name: pg
226
212
  requirement: !ruby/object:Gem::Requirement
227
213
  requirements:
228
- - - ">="
214
+ - - "~>"
229
215
  - !ruby/object:Gem::Version
230
- version: '0'
216
+ version: '1.1'
231
217
  type: :development
232
218
  prerelease: false
233
219
  version_requirements: !ruby/object:Gem::Requirement
234
220
  requirements:
235
- - - ">="
221
+ - - "~>"
236
222
  - !ruby/object:Gem::Version
237
- version: '0'
223
+ version: '1.1'
238
224
  - !ruby/object:Gem::Dependency
239
- name: faker
225
+ name: pry-byebug
240
226
  requirement: !ruby/object:Gem::Requirement
241
227
  requirements:
242
228
  - - ">="
@@ -253,11 +239,14 @@ description: Make it easy to upsert on MySQL, PostgreSQL, and SQLite3. Transpare
253
239
  creates merge functions for MySQL and PostgreSQL; on SQLite3, uses INSERT OR IGNORE.
254
240
  email:
255
241
  - seamus@abshere.net
242
+ - pnomolos@gmail.com
256
243
  executables: []
257
244
  extensions: []
258
245
  extra_rdoc_files: []
259
246
  files:
260
247
  - ".gitignore"
248
+ - ".ruby-version"
249
+ - ".standard.yml"
261
250
  - ".travis.yml"
262
251
  - ".yardopts"
263
252
  - CHANGELOG
@@ -274,7 +263,7 @@ files:
274
263
  - lib/upsert/column_definition/sqlite3.rb
275
264
  - lib/upsert/connection.rb
276
265
  - lib/upsert/connection/Java_ComMysqlJdbc_JDBC4Connection.rb
277
- - lib/upsert/connection/Java_OrgPostgresqlJdbc4_Jdbc4Connection.rb
266
+ - lib/upsert/connection/Java_OrgPostgresqlJdbc_PgConnection.rb
278
267
  - lib/upsert/connection/Java_OrgSqlite_Conn.rb
279
268
  - lib/upsert/connection/Mysql2_Client.rb
280
269
  - lib/upsert/connection/PG_Connection.rb
@@ -284,7 +273,7 @@ files:
284
273
  - lib/upsert/connection/sqlite3.rb
285
274
  - lib/upsert/merge_function.rb
286
275
  - lib/upsert/merge_function/Java_ComMysqlJdbc_JDBC4Connection.rb
287
- - lib/upsert/merge_function/Java_OrgPostgresqlJdbc4_Jdbc4Connection.rb
276
+ - lib/upsert/merge_function/Java_OrgPostgresqlJdbc_PgConnection.rb
288
277
  - lib/upsert/merge_function/Java_OrgSqlite_Conn.rb
289
278
  - lib/upsert/merge_function/Mysql2_Client.rb
290
279
  - lib/upsert/merge_function/PG_Connection.rb
@@ -316,10 +305,14 @@ files:
316
305
  - spec/timezones_spec.rb
317
306
  - spec/type_safety_spec.rb
318
307
  - travis/install_postgres.sh
308
+ - travis/run_docker_db.sh
319
309
  - travis/tune_mysql.sh
310
+ - upsert-java.gemspec
320
311
  - upsert.gemspec
312
+ - upsert.gemspec.common
321
313
  homepage: https://github.com/seamusabshere/upsert
322
- licenses: []
314
+ licenses:
315
+ - MIT
323
316
  metadata: {}
324
317
  post_install_message:
325
318
  rdoc_options: []
@@ -337,7 +330,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
337
330
  version: '0'
338
331
  requirements: []
339
332
  rubyforge_project:
340
- rubygems_version: 2.6.8
333
+ rubygems_version: 2.7.6.2
341
334
  signing_key:
342
335
  specification_version: 4
343
336
  summary: Make it easy to upsert on MySQL, PostgreSQL, and SQLite3. Transparently creates