bulk_insert 1.2.1 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/bulk_insert/version.rb +2 -2
- data/lib/bulk_insert/worker.rb +9 -0
- data/test/bulk_insert/worker_test.rb +30 -0
- data/test/dummy/log/test.log +143 -0
- 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: da3b8a0be5e2ad8c7dcf5bbf878cc31383d1e63e
|
4
|
+
data.tar.gz: 0c8f3ce86746632b0cdf34fec6c9c8021574aa8b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b6c9b2dce1635af1c59f34dffd49c1d276d68478222ab0ca8f1941ac2333e7196f2bc7e1ce9425b9c5ed4f1b43828ea8d3c3f51cda45498a7b744d15cfbfc26e
|
7
|
+
data.tar.gz: ef556ebbf06358c534f3f0292ff5a4d2f53102a2c5faf1f22362964c8361f224ed932d54a27d24df397766de7f68c66eec6bbfa1014de505623b9199111e554f
|
data/lib/bulk_insert/version.rb
CHANGED
data/lib/bulk_insert/worker.rb
CHANGED
@@ -2,6 +2,7 @@ module BulkInsert
|
|
2
2
|
class Worker
|
3
3
|
attr_reader :connection
|
4
4
|
attr_accessor :set_size
|
5
|
+
attr_accessor :after_save_callback
|
5
6
|
|
6
7
|
def initialize(connection, table_name, column_names, set_size=500)
|
7
8
|
@connection = connection
|
@@ -14,6 +15,8 @@ module BulkInsert
|
|
14
15
|
@table_name = connection.quote_table_name(table_name)
|
15
16
|
@column_names = column_names.map { |name| connection.quote_column_name(name) }.join(",")
|
16
17
|
|
18
|
+
@after_save_callback = nil
|
19
|
+
|
17
20
|
@set = []
|
18
21
|
end
|
19
22
|
|
@@ -53,6 +56,10 @@ module BulkInsert
|
|
53
56
|
self
|
54
57
|
end
|
55
58
|
|
59
|
+
def after_save(&block)
|
60
|
+
@after_save_callback = block
|
61
|
+
end
|
62
|
+
|
56
63
|
def save!
|
57
64
|
if pending?
|
58
65
|
sql = "INSERT INTO #{@table_name} (#{@column_names}) VALUES "
|
@@ -77,6 +84,8 @@ module BulkInsert
|
|
77
84
|
sql << rows.join(",")
|
78
85
|
@connection.execute(sql)
|
79
86
|
|
87
|
+
@after_save_callback.() if @after_save_callback
|
88
|
+
|
80
89
|
@set.clear
|
81
90
|
end
|
82
91
|
|
@@ -120,5 +120,35 @@ class BulkInsertWorkerTest < ActiveSupport::TestCase
|
|
120
120
|
assert_equal 25, hello.age
|
121
121
|
assert_equal true, hello.happy?
|
122
122
|
end
|
123
|
+
|
124
|
+
test "save! calls the after_save handler" do
|
125
|
+
x = 41
|
126
|
+
|
127
|
+
@insert.after_save do
|
128
|
+
x += 1
|
129
|
+
end
|
130
|
+
|
131
|
+
@insert.add ["Yo", 15, false, @now, @now]
|
132
|
+
@insert.add ["Hello", 25, true, @now, @now]
|
133
|
+
@insert.save!
|
134
|
+
|
135
|
+
assert_equal 42, x
|
136
|
+
end
|
137
|
+
|
138
|
+
test "after_save stores a block as a proc" do
|
139
|
+
@insert.after_save do
|
140
|
+
"hello"
|
141
|
+
end
|
142
|
+
|
143
|
+
assert_equal "hello", @insert.after_save_callback.()
|
144
|
+
end
|
145
|
+
|
146
|
+
test "after_save_callback can be set as a proc" do
|
147
|
+
@insert.after_save_callback = -> do
|
148
|
+
"hello"
|
149
|
+
end
|
150
|
+
|
151
|
+
assert_equal "hello", @insert.after_save_callback.()
|
152
|
+
end
|
123
153
|
end
|
124
154
|
|
data/test/dummy/log/test.log
CHANGED
@@ -2965,3 +2965,146 @@ BulkInsertWorkerTest: test_add_should_allow_values_given_as_Hash
|
|
2965
2965
|
[1m[35m (0.2ms)[0m INSERT INTO "testings" ("greeting","age","happy","created_at","updated_at","color") VALUES ('Yo',20,'f','2016-08-11 04:58:10.687048','2016-08-11 04:58:10.687048','chartreuse')
|
2966
2966
|
[1m[36mTesting Load (0.1ms)[0m [1mSELECT "testings".* FROM "testings" ORDER BY "testings"."id" ASC LIMIT 1[0m
|
2967
2967
|
[1m[35m (0.2ms)[0m rollback transaction
|
2968
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.3ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
2969
|
+
[1m[35m (0.1ms)[0m begin transaction
|
2970
|
+
---------------------------------------------------------------------
|
2971
|
+
BulkInsertTest: test_bulk_insert_with_block_should_save_automatically
|
2972
|
+
---------------------------------------------------------------------
|
2973
|
+
[1m[36m (0.3ms)[0m [1mSELECT COUNT(*) FROM "testings"[0m
|
2974
|
+
[1m[35m (0.0ms)[0m SAVEPOINT active_record_1
|
2975
|
+
[1m[36m (0.6ms)[0m [1mINSERT INTO "testings" ("greeting","age","happy","created_at","updated_at","color") VALUES ('Hello',NULL,NULL,'2016-11-01 17:59:20.883249','2016-11-01 17:59:20.883249','chartreuse')[0m
|
2976
|
+
[1m[35m (0.0ms)[0m RELEASE SAVEPOINT active_record_1
|
2977
|
+
[1m[36m (0.1ms)[0m [1mSELECT COUNT(*) FROM "testings"[0m
|
2978
|
+
[1m[35m (0.3ms)[0m rollback transaction
|
2979
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
2980
|
+
---------------------------------------------------------------
|
2981
|
+
BulkInsertTest: test_bulk_insert_with_block_should_yield_worker
|
2982
|
+
---------------------------------------------------------------
|
2983
|
+
[1m[35m (0.0ms)[0m SAVEPOINT active_record_1
|
2984
|
+
[1m[36m (0.0ms)[0m [1mRELEASE SAVEPOINT active_record_1[0m
|
2985
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
2986
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
2987
|
+
------------------------------------------------------------------------------
|
2988
|
+
BulkInsertTest: test_default_bulk_columns_should_return_all_columns_without_id
|
2989
|
+
------------------------------------------------------------------------------
|
2990
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
2991
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
2992
|
+
-------------------------------------------------------------------
|
2993
|
+
BulkInsertTest: test_bulk_insert_without_block_should_return_worker
|
2994
|
+
-------------------------------------------------------------------
|
2995
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
2996
|
+
[1m[36m (0.1ms)[0m [1mbegin transaction[0m
|
2997
|
+
-----------------------------------------------------------------------------
|
2998
|
+
BulkInsertTest: test_bulk_insert_with_array_should_save_the_array_immediately
|
2999
|
+
-----------------------------------------------------------------------------
|
3000
|
+
[1m[35m (0.0ms)[0m SELECT COUNT(*) FROM "testings"
|
3001
|
+
[1m[36m (0.0ms)[0m [1mSAVEPOINT active_record_1[0m
|
3002
|
+
[1m[35m (0.2ms)[0m INSERT INTO "testings" ("greeting","age","happy","created_at","updated_at","color") VALUES ('Hello',15,'t','green','2016-11-01 17:59:20.890598','chartreuse'),('Hey',20,'f','2016-11-01 17:59:20.890598','2016-11-01 17:59:20.890598','chartreuse')
|
3003
|
+
[1m[36m (0.0ms)[0m [1mRELEASE SAVEPOINT active_record_1[0m
|
3004
|
+
[1m[35m (0.0ms)[0m SELECT COUNT(*) FROM "testings"
|
3005
|
+
[1m[36m (0.3ms)[0m [1mrollback transaction[0m
|
3006
|
+
[1m[35m (0.0ms)[0m begin transaction
|
3007
|
+
----------------------------------------------------------------
|
3008
|
+
BulkInsertWorkerTest: test_explicit_nil_should_override_defaults
|
3009
|
+
----------------------------------------------------------------
|
3010
|
+
[1m[36m (0.2ms)[0m [1mINSERT INTO "testings" ("greeting","age","happy","created_at","updated_at","color") VALUES ('Hello',20,'f','2016-11-01 17:59:20.892761','2016-11-01 17:59:20.892761',NULL)[0m
|
3011
|
+
[1m[35mTesting Load (0.1ms)[0m SELECT "testings".* FROM "testings" ORDER BY "testings"."id" ASC LIMIT 1
|
3012
|
+
[1m[36m (0.3ms)[0m [1mrollback transaction[0m
|
3013
|
+
[1m[35m (0.0ms)[0m begin transaction
|
3014
|
+
-------------------------------------------------------------------------------
|
3015
|
+
BulkInsertWorkerTest: test_add_should_default_timestamp_columns_to_current_time
|
3016
|
+
-------------------------------------------------------------------------------
|
3017
|
+
[1m[36m (0.2ms)[0m [1mINSERT INTO "testings" ("greeting","age","happy","created_at","updated_at","color") VALUES ('Hello',15,'t','2016-11-01 17:59:20.898576','2016-11-01 17:59:20.898576','chartreuse')[0m
|
3018
|
+
[1m[35mTesting Load (0.1ms)[0m SELECT "testings".* FROM "testings" ORDER BY "testings"."id" ASC LIMIT 1
|
3019
|
+
[1m[36m (0.3ms)[0m [1mrollback transaction[0m
|
3020
|
+
[1m[35m (0.0ms)[0m begin transaction
|
3021
|
+
----------------------------------------------------------------------------------
|
3022
|
+
BulkInsertWorkerTest: test_add_should_save_automatically_when_overflowing_set_size
|
3023
|
+
----------------------------------------------------------------------------------
|
3024
|
+
[1m[36m (0.2ms)[0m [1mINSERT INTO "testings" ("greeting","age","happy","created_at","updated_at","color") VALUES ('Hello',15,'t','2016-11-01 17:59:20.900257','2016-11-01 17:59:20.900257','chartreuse')[0m
|
3025
|
+
[1m[35m (0.1ms)[0m SELECT COUNT(*) FROM "testings"
|
3026
|
+
[1m[36mTesting Load (0.1ms)[0m [1mSELECT "testings".* FROM "testings" ORDER BY "testings"."id" ASC LIMIT 1[0m
|
3027
|
+
[1m[35m (0.3ms)[0m rollback transaction
|
3028
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
3029
|
+
--------------------------------------------------------
|
3030
|
+
BulkInsertWorkerTest: test_save!_inserts_pending_records
|
3031
|
+
--------------------------------------------------------
|
3032
|
+
[1m[35m (0.2ms)[0m INSERT INTO "testings" ("greeting","age","happy","created_at","updated_at","color") VALUES ('Yo',15,'f','2016-11-01 17:59:20.902554','2016-11-01 17:59:20.902554','chartreuse'),('Hello',25,'t','2016-11-01 17:59:20.902554','2016-11-01 17:59:20.902554','chartreuse')
|
3033
|
+
[1m[36mTesting Load (0.1ms)[0m [1mSELECT "testings".* FROM "testings" WHERE "testings"."greeting" = ? LIMIT 1[0m [["greeting", "Yo"]]
|
3034
|
+
[1m[35mTesting Load (0.0ms)[0m SELECT "testings".* FROM "testings" WHERE "testings"."greeting" = ? LIMIT 1 [["greeting", "Hello"]]
|
3035
|
+
[1m[36m (0.3ms)[0m [1mrollback transaction[0m
|
3036
|
+
[1m[35m (0.0ms)[0m begin transaction
|
3037
|
+
--------------------------------------------------------------
|
3038
|
+
BulkInsertWorkerTest: test_after_save_stores_a_block_as_a_proc
|
3039
|
+
--------------------------------------------------------------
|
3040
|
+
[1m[36m (0.0ms)[0m [1mrollback transaction[0m
|
3041
|
+
[1m[35m (0.1ms)[0m begin transaction
|
3042
|
+
-------------------------------------------------------------------
|
3043
|
+
BulkInsertWorkerTest: test_after_save_callback_can_be_set_as_a_proc
|
3044
|
+
-------------------------------------------------------------------
|
3045
|
+
[1m[36m (0.0ms)[0m [1mrollback transaction[0m
|
3046
|
+
[1m[35m (0.1ms)[0m begin transaction
|
3047
|
+
---------------------------------------------------------
|
3048
|
+
BulkInsertWorkerTest: test_save!_makes_insert_not_pending
|
3049
|
+
---------------------------------------------------------
|
3050
|
+
[1m[36m (0.2ms)[0m [1mINSERT INTO "testings" ("greeting","age","happy","created_at","updated_at","color") VALUES ('Hello',15,'t','2016-11-01 17:59:20.909065','2016-11-01 17:59:20.909065','chartreuse')[0m
|
3051
|
+
[1m[35m (0.3ms)[0m rollback transaction
|
3052
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
3053
|
+
--------------------------------------------------------------------
|
3054
|
+
BulkInsertWorkerTest: test_adding_row_to_insert_makes_insert_pending
|
3055
|
+
--------------------------------------------------------------------
|
3056
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
3057
|
+
[1m[36m (0.1ms)[0m [1mbegin transaction[0m
|
3058
|
+
----------------------------------------------------------------
|
3059
|
+
BulkInsertWorkerTest: test_add_should_allow_values_given_as_Hash
|
3060
|
+
----------------------------------------------------------------
|
3061
|
+
[1m[35m (0.2ms)[0m INSERT INTO "testings" ("greeting","age","happy","created_at","updated_at","color") VALUES ('Yo',20,'f','2016-11-01 17:59:20.910787','2016-11-01 17:59:20.910787','chartreuse')
|
3062
|
+
[1m[36mTesting Load (0.1ms)[0m [1mSELECT "testings".* FROM "testings" ORDER BY "testings"."id" ASC LIMIT 1[0m
|
3063
|
+
[1m[35m (0.3ms)[0m rollback transaction
|
3064
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
3065
|
+
------------------------------------------------------
|
3066
|
+
BulkInsertWorkerTest: test_empty_insert_is_not_pending
|
3067
|
+
------------------------------------------------------
|
3068
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
3069
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
3070
|
+
----------------------------------------------------------------------------------------------
|
3071
|
+
BulkInsertWorkerTest: test_default_timestamp_columns_should_be_equivalent_for_the_entire_batch
|
3072
|
+
----------------------------------------------------------------------------------------------
|
3073
|
+
[1m[35m (0.2ms)[0m INSERT INTO "testings" ("greeting","age","happy","created_at","updated_at","color") VALUES ('Hello',15,'t','2016-11-01 17:59:20.912730','2016-11-01 17:59:20.912730','chartreuse'),('Howdy',20,'f','2016-11-01 17:59:20.912730','2016-11-01 17:59:20.912730','chartreuse')
|
3074
|
+
[1m[36mTesting Load (0.1ms)[0m [1mSELECT "testings".* FROM "testings"[0m
|
3075
|
+
[1m[35m (0.3ms)[0m rollback transaction
|
3076
|
+
[1m[36m (0.1ms)[0m [1mbegin transaction[0m
|
3077
|
+
---------------------------------------------------------------------
|
3078
|
+
BulkInsertWorkerTest: test_add_all_should_append_all_items_to_the_set
|
3079
|
+
---------------------------------------------------------------------
|
3080
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
3081
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
3082
|
+
-------------------------------------------
|
3083
|
+
BulkInsertWorkerTest: test_default_set_size
|
3084
|
+
-------------------------------------------
|
3085
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
3086
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
3087
|
+
----------------------------------------------------------------------------
|
3088
|
+
BulkInsertWorkerTest: test_pending_count_should_describe_size_of_pending_set
|
3089
|
+
----------------------------------------------------------------------------
|
3090
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
3091
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
3092
|
+
-------------------------------------------------------------
|
3093
|
+
BulkInsertWorkerTest: test_save!_calls_the_after_save_handler
|
3094
|
+
-------------------------------------------------------------
|
3095
|
+
[1m[35m (0.2ms)[0m INSERT INTO "testings" ("greeting","age","happy","created_at","updated_at","color") VALUES ('Yo',15,'f','2016-11-01 17:59:20.915894','2016-11-01 17:59:20.915894','chartreuse'),('Hello',25,'t','2016-11-01 17:59:20.915894','2016-11-01 17:59:20.915894','chartreuse')
|
3096
|
+
[1m[36m (0.2ms)[0m [1mrollback transaction[0m
|
3097
|
+
[1m[35m (0.0ms)[0m begin transaction
|
3098
|
+
-------------------------------------------------------------------
|
3099
|
+
BulkInsertWorkerTest: test_save!_when_not_pending_should_do_nothing
|
3100
|
+
-------------------------------------------------------------------
|
3101
|
+
[1m[36m (0.0ms)[0m [1mSELECT COUNT(*) FROM "testings"[0m
|
3102
|
+
[1m[35m (0.0ms)[0m SELECT COUNT(*) FROM "testings"
|
3103
|
+
[1m[36m (0.0ms)[0m [1mrollback transaction[0m
|
3104
|
+
[1m[35m (0.0ms)[0m begin transaction
|
3105
|
+
------------------------------------------------------------------------------
|
3106
|
+
BulkInsertWorkerTest: test_add_should_use_database_default_values_when_present
|
3107
|
+
------------------------------------------------------------------------------
|
3108
|
+
[1m[36m (0.1ms)[0m [1mINSERT INTO "testings" ("greeting","age","happy","created_at","updated_at","color") VALUES ('Hello',20,'f','2016-11-01 17:59:20.918117','2016-11-01 17:59:20.918117','chartreuse')[0m
|
3109
|
+
[1m[35mTesting Load (0.1ms)[0m SELECT "testings".* FROM "testings" ORDER BY "testings"."id" ASC LIMIT 1
|
3110
|
+
[1m[36m (0.2ms)[0m [1mrollback transaction[0m
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bulk_insert
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jamis Buck
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-11-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|