bulk_insert 1.2.1 → 1.3.0
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/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
|