upsert 2.2.0 → 2.9.10
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 +5 -5
- data/.ruby-version +1 -0
- data/.standard.yml +1 -0
- data/.travis.yml +54 -31
- data/CHANGELOG +16 -0
- data/Gemfile +12 -1
- data/LICENSE +3 -1
- data/README.md +43 -8
- data/Rakefile +7 -1
- data/lib/upsert.rb +49 -7
- data/lib/upsert/column_definition/mysql.rb +2 -2
- data/lib/upsert/column_definition/postgresql.rb +9 -8
- data/lib/upsert/column_definition/sqlite3.rb +3 -3
- data/lib/upsert/connection/Java_ComMysqlJdbc_JDBC4Connection.rb +5 -3
- data/lib/upsert/connection/Java_OrgPostgresqlJdbc_PgConnection.rb +33 -0
- data/lib/upsert/connection/PG_Connection.rb +5 -0
- data/lib/upsert/connection/jdbc.rb +7 -1
- data/lib/upsert/connection/postgresql.rb +2 -3
- data/lib/upsert/merge_function.rb +3 -2
- data/lib/upsert/merge_function/{Java_OrgPostgresqlJdbc4_Jdbc4Connection.rb → Java_OrgPostgresqlJdbc_PgConnection.rb} +2 -2
- data/lib/upsert/merge_function/PG_Connection.rb +2 -2
- data/lib/upsert/merge_function/postgresql.rb +81 -19
- data/lib/upsert/merge_function/sqlite3.rb +10 -0
- data/lib/upsert/version.rb +1 -1
- data/spec/correctness_spec.rb +20 -5
- data/spec/database_functions_spec.rb +6 -2
- data/spec/hstore_spec.rb +53 -38
- data/spec/logger_spec.rb +1 -1
- data/spec/postgresql_spec.rb +81 -3
- data/spec/reserved_words_spec.rb +18 -14
- data/spec/sequel_spec.rb +16 -7
- data/spec/spec_helper.rb +238 -111
- data/spec/speed_spec.rb +3 -33
- data/spec/threaded_spec.rb +35 -12
- data/spec/type_safety_spec.rb +2 -1
- data/travis/run_docker_db.sh +20 -0
- data/upsert-java.gemspec +13 -0
- data/upsert.gemspec +9 -58
- data/upsert.gemspec.common +107 -0
- metadata +39 -46
- 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
|
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
|
-
|
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
|
-
|
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
|
data/spec/threaded_spec.rb
CHANGED
@@ -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
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
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
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
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
|
data/spec/type_safety_spec.rb
CHANGED
@@ -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
|
data/upsert-java.gemspec
ADDED
@@ -0,0 +1,13 @@
|
|
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
|
+
self.platform = "java"
|
5
|
+
add_development_dependency "jruby-openssl"
|
6
|
+
add_development_dependency "jdbc-postgres"
|
7
|
+
add_development_dependency "jdbc-mysql"
|
8
|
+
add_development_dependency "jdbc-sqlite3"
|
9
|
+
add_development_dependency "activerecord-jdbc-adapter"
|
10
|
+
|
11
|
+
add_development_dependency "pry-nav"
|
12
|
+
end
|
13
|
+
end
|
data/upsert.gemspec
CHANGED
@@ -1,60 +1,11 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
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 'faker'
|
28
|
-
gem.add_development_dependency 'yard'
|
29
|
-
gem.add_development_dependency 'pry'
|
30
|
-
gem.add_development_dependency 'pg-hstore', ">=1.1.3"
|
31
|
-
gem.add_development_dependency 'sequel'
|
32
|
-
gem.add_development_dependency 'rake', '~>10.1.1'
|
33
|
-
|
34
|
-
if RUBY_VERSION >= '1.9'
|
35
|
-
gem.add_development_dependency 'activerecord-import', '0.11.0' # 0.12 and up were failing
|
36
|
-
else
|
37
|
-
gem.add_development_dependency 'orderedhash'
|
38
|
-
end
|
39
|
-
|
40
|
-
if RUBY_PLATFORM == 'java'
|
41
|
-
gem.add_development_dependency 'jruby-openssl'
|
42
|
-
gem.add_development_dependency 'jdbc-postgres'
|
43
|
-
gem.add_development_dependency 'jdbc-mysql'
|
44
|
-
gem.add_development_dependency 'jdbc-sqlite3'
|
45
|
-
gem.add_development_dependency 'activerecord-jdbcsqlite3-adapter'
|
46
|
-
gem.add_development_dependency 'activerecord-jdbcmysql-adapter'
|
47
|
-
gem.add_development_dependency 'activerecord-jdbcpostgresql-adapter'
|
48
|
-
else
|
49
|
-
gem.add_development_dependency 'activerecord-postgresql-adapter'
|
50
|
-
gem.add_development_dependency 'sqlite3'
|
51
|
-
gem.add_development_dependency 'mysql2', '~> 0.3.10'
|
52
|
-
gem.add_development_dependency 'pg', '~> 0.18.0'
|
53
|
-
# github-flavored markdown
|
54
|
-
if RUBY_VERSION >= '1.9'
|
55
|
-
gem.add_development_dependency 'redcarpet'
|
56
|
-
else
|
57
|
-
gem.add_development_dependency 'redcarpet', '~> 2.3.0'
|
58
|
-
end
|
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"
|
59
10
|
end
|
60
11
|
end
|
@@ -0,0 +1,107 @@
|
|
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
|
+
gem.platform = (Gem::Platform::CURRENT.index("java") ? Gem::Platform::CURRENT : "")
|
12
|
+
|
13
|
+
# We no longer use `git ls-files` here because it breaks on some version of jruby...
|
14
|
+
# For some slightly related information:
|
15
|
+
# - https://github.com/jruby/jruby/issues/4515
|
16
|
+
# - https://github.com/jruby/jruby/issues/5249
|
17
|
+
#
|
18
|
+
gem.files = %w[
|
19
|
+
.gitignore
|
20
|
+
.ruby-version
|
21
|
+
.standard.yml
|
22
|
+
.travis.yml
|
23
|
+
.yardopts
|
24
|
+
CHANGELOG
|
25
|
+
Gemfile
|
26
|
+
LICENSE
|
27
|
+
README.md
|
28
|
+
Rakefile
|
29
|
+
lib/upsert.rb
|
30
|
+
lib/upsert/active_record_upsert.rb
|
31
|
+
lib/upsert/binary.rb
|
32
|
+
lib/upsert/column_definition.rb
|
33
|
+
lib/upsert/column_definition/mysql.rb
|
34
|
+
lib/upsert/column_definition/postgresql.rb
|
35
|
+
lib/upsert/column_definition/sqlite3.rb
|
36
|
+
lib/upsert/connection.rb
|
37
|
+
lib/upsert/connection/Java_ComMysqlJdbc_JDBC4Connection.rb
|
38
|
+
lib/upsert/connection/Java_OrgPostgresqlJdbc_PgConnection.rb
|
39
|
+
lib/upsert/connection/Java_OrgSqlite_Conn.rb
|
40
|
+
lib/upsert/connection/Mysql2_Client.rb
|
41
|
+
lib/upsert/connection/PG_Connection.rb
|
42
|
+
lib/upsert/connection/SQLite3_Database.rb
|
43
|
+
lib/upsert/connection/jdbc.rb
|
44
|
+
lib/upsert/connection/postgresql.rb
|
45
|
+
lib/upsert/connection/sqlite3.rb
|
46
|
+
lib/upsert/merge_function.rb
|
47
|
+
lib/upsert/merge_function/Java_ComMysqlJdbc_JDBC4Connection.rb
|
48
|
+
lib/upsert/merge_function/Java_OrgPostgresqlJdbc_PgConnection.rb
|
49
|
+
lib/upsert/merge_function/Java_OrgSqlite_Conn.rb
|
50
|
+
lib/upsert/merge_function/Mysql2_Client.rb
|
51
|
+
lib/upsert/merge_function/PG_Connection.rb
|
52
|
+
lib/upsert/merge_function/SQLite3_Database.rb
|
53
|
+
lib/upsert/merge_function/mysql.rb
|
54
|
+
lib/upsert/merge_function/postgresql.rb
|
55
|
+
lib/upsert/merge_function/sqlite3.rb
|
56
|
+
lib/upsert/row.rb
|
57
|
+
lib/upsert/version.rb
|
58
|
+
spec/active_record_upsert_spec.rb
|
59
|
+
spec/binary_spec.rb
|
60
|
+
spec/correctness_spec.rb
|
61
|
+
spec/database_functions_spec.rb
|
62
|
+
spec/database_spec.rb
|
63
|
+
spec/hstore_spec.rb
|
64
|
+
spec/jruby_spec.rb
|
65
|
+
spec/logger_spec.rb
|
66
|
+
spec/misc/get_postgres_reserved_words.rb
|
67
|
+
spec/misc/mysql_reserved.txt
|
68
|
+
spec/misc/pg_reserved.txt
|
69
|
+
spec/multibyte_spec.rb
|
70
|
+
spec/postgresql_spec.rb
|
71
|
+
spec/precision_spec.rb
|
72
|
+
spec/reserved_words_spec.rb
|
73
|
+
spec/sequel_spec.rb
|
74
|
+
spec/spec_helper.rb
|
75
|
+
spec/speed_spec.rb
|
76
|
+
spec/threaded_spec.rb
|
77
|
+
spec/timezones_spec.rb
|
78
|
+
spec/type_safety_spec.rb
|
79
|
+
travis/install_postgres.sh
|
80
|
+
travis/run_docker_db.sh
|
81
|
+
travis/tune_mysql.sh
|
82
|
+
upsert-java.gemspec
|
83
|
+
upsert.gemspec
|
84
|
+
upsert.gemspec.common
|
85
|
+
]
|
86
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
87
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
88
|
+
gem.name = "upsert"
|
89
|
+
gem.require_paths = ["lib"]
|
90
|
+
gem.version = Upsert::VERSION
|
91
|
+
|
92
|
+
# NOTE: no runtime dependencies!
|
93
|
+
|
94
|
+
gem.add_development_dependency 'rspec-core'
|
95
|
+
gem.add_development_dependency 'rspec-expectations'
|
96
|
+
gem.add_development_dependency 'rspec-mocks'
|
97
|
+
|
98
|
+
gem.add_development_dependency 'activerecord', '~> 5'
|
99
|
+
gem.add_development_dependency 'yard'
|
100
|
+
gem.add_development_dependency 'pry'
|
101
|
+
gem.add_development_dependency 'pg-hstore', ">=1.1.3"
|
102
|
+
gem.add_development_dependency 'sequel'
|
103
|
+
gem.add_development_dependency 'rake', '~> 10'
|
104
|
+
|
105
|
+
gem.add_development_dependency "activerecord-import", "~> 1"
|
106
|
+
gem.add_development_dependency "faker"
|
107
|
+
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.
|
4
|
+
version: 2.9.10
|
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:
|
12
|
+
date: 2019-12-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec-core
|
@@ -59,16 +59,16 @@ dependencies:
|
|
59
59
|
requirements:
|
60
60
|
- - "~>"
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: '
|
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: '
|
69
|
+
version: '5'
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
|
-
name:
|
71
|
+
name: yard
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
74
|
- - ">="
|
@@ -82,7 +82,7 @@ dependencies:
|
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: '0'
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
|
-
name:
|
85
|
+
name: pry
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
88
|
- - ">="
|
@@ -96,21 +96,21 @@ dependencies:
|
|
96
96
|
- !ruby/object:Gem::Version
|
97
97
|
version: '0'
|
98
98
|
- !ruby/object:Gem::Dependency
|
99
|
-
name:
|
99
|
+
name: pg-hstore
|
100
100
|
requirement: !ruby/object:Gem::Requirement
|
101
101
|
requirements:
|
102
102
|
- - ">="
|
103
103
|
- !ruby/object:Gem::Version
|
104
|
-
version:
|
104
|
+
version: 1.1.3
|
105
105
|
type: :development
|
106
106
|
prerelease: false
|
107
107
|
version_requirements: !ruby/object:Gem::Requirement
|
108
108
|
requirements:
|
109
109
|
- - ">="
|
110
110
|
- !ruby/object:Gem::Version
|
111
|
-
version:
|
111
|
+
version: 1.1.3
|
112
112
|
- !ruby/object:Gem::Dependency
|
113
|
-
name:
|
113
|
+
name: sequel
|
114
114
|
requirement: !ruby/object:Gem::Requirement
|
115
115
|
requirements:
|
116
116
|
- - ">="
|
@@ -124,61 +124,47 @@ dependencies:
|
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: '0'
|
126
126
|
- !ruby/object:Gem::Dependency
|
127
|
-
name:
|
128
|
-
requirement: !ruby/object:Gem::Requirement
|
129
|
-
requirements:
|
130
|
-
- - ">="
|
131
|
-
- !ruby/object:Gem::Version
|
132
|
-
version: 1.1.3
|
133
|
-
type: :development
|
134
|
-
prerelease: false
|
135
|
-
version_requirements: !ruby/object:Gem::Requirement
|
136
|
-
requirements:
|
137
|
-
- - ">="
|
138
|
-
- !ruby/object:Gem::Version
|
139
|
-
version: 1.1.3
|
140
|
-
- !ruby/object:Gem::Dependency
|
141
|
-
name: sequel
|
127
|
+
name: rake
|
142
128
|
requirement: !ruby/object:Gem::Requirement
|
143
129
|
requirements:
|
144
|
-
- - "
|
130
|
+
- - "~>"
|
145
131
|
- !ruby/object:Gem::Version
|
146
|
-
version: '
|
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: '
|
139
|
+
version: '10'
|
154
140
|
- !ruby/object:Gem::Dependency
|
155
|
-
name:
|
141
|
+
name: activerecord-import
|
156
142
|
requirement: !ruby/object:Gem::Requirement
|
157
143
|
requirements:
|
158
144
|
- - "~>"
|
159
145
|
- !ruby/object:Gem::Version
|
160
|
-
version:
|
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:
|
153
|
+
version: '1'
|
168
154
|
- !ruby/object:Gem::Dependency
|
169
|
-
name:
|
155
|
+
name: faker
|
170
156
|
requirement: !ruby/object:Gem::Requirement
|
171
157
|
requirements:
|
172
|
-
- -
|
158
|
+
- - ">="
|
173
159
|
- !ruby/object:Gem::Version
|
174
|
-
version: 0
|
160
|
+
version: '0'
|
175
161
|
type: :development
|
176
162
|
prerelease: false
|
177
163
|
version_requirements: !ruby/object:Gem::Requirement
|
178
164
|
requirements:
|
179
|
-
- -
|
165
|
+
- - ">="
|
180
166
|
- !ruby/object:Gem::Version
|
181
|
-
version: 0
|
167
|
+
version: '0'
|
182
168
|
- !ruby/object:Gem::Dependency
|
183
169
|
name: activerecord-postgresql-adapter
|
184
170
|
requirement: !ruby/object:Gem::Requirement
|
@@ -213,30 +199,30 @@ dependencies:
|
|
213
199
|
requirements:
|
214
200
|
- - "~>"
|
215
201
|
- !ruby/object:Gem::Version
|
216
|
-
version: 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.
|
209
|
+
version: '0.5'
|
224
210
|
- !ruby/object:Gem::Dependency
|
225
211
|
name: pg
|
226
212
|
requirement: !ruby/object:Gem::Requirement
|
227
213
|
requirements:
|
228
214
|
- - "~>"
|
229
215
|
- !ruby/object:Gem::Version
|
230
|
-
version:
|
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:
|
223
|
+
version: '1.1'
|
238
224
|
- !ruby/object:Gem::Dependency
|
239
|
-
name:
|
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/
|
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/
|
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.
|
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
|