upsert 2.2.1 → 2.9.9
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 +9 -0
- data/Gemfile +12 -1
- data/LICENSE +3 -1
- data/README.md +35 -2
- 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 +1 -1
- 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 +12 -0
- data/upsert.gemspec +9 -63
- data/upsert.gemspec.common +106 -0
- metadata +37 -44
- 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,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
|
-
|
|
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 '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.
|
|
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:
|
|
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: '
|
|
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: '
|
|
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
|
|
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
|
|
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:
|
|
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
|
- - ">="
|
|
@@ -180,7 +166,7 @@ dependencies:
|
|
|
180
166
|
- !ruby/object:Gem::Version
|
|
181
167
|
version: '0'
|
|
182
168
|
- !ruby/object:Gem::Dependency
|
|
183
|
-
name:
|
|
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:
|
|
183
|
+
name: sqlite3
|
|
198
184
|
requirement: !ruby/object:Gem::Requirement
|
|
199
185
|
requirements:
|
|
200
|
-
- - "
|
|
186
|
+
- - ">="
|
|
201
187
|
- !ruby/object:Gem::Version
|
|
202
|
-
version: 0
|
|
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
|
|
195
|
+
version: '0'
|
|
210
196
|
- !ruby/object:Gem::Dependency
|
|
211
|
-
name:
|
|
197
|
+
name: mysql2
|
|
212
198
|
requirement: !ruby/object:Gem::Requirement
|
|
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
|
-
name:
|
|
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
|