lhm-shopify 3.3.5
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 +7 -0
- data/.github/workflows/test.yml +34 -0
- data/.gitignore +17 -0
- data/.rubocop.yml +183 -0
- data/.travis.yml +21 -0
- data/CHANGELOG.md +216 -0
- data/Gemfile +5 -0
- data/LICENSE +27 -0
- data/README.md +284 -0
- data/Rakefile +22 -0
- data/bin/.gitkeep +0 -0
- data/dbdeployer/config.json +32 -0
- data/dbdeployer/install.sh +64 -0
- data/dev.yml +20 -0
- data/gemfiles/ar-2.3_mysql.gemfile +6 -0
- data/gemfiles/ar-3.2_mysql.gemfile +5 -0
- data/gemfiles/ar-3.2_mysql2.gemfile +5 -0
- data/gemfiles/ar-4.0_mysql2.gemfile +5 -0
- data/gemfiles/ar-4.1_mysql2.gemfile +5 -0
- data/gemfiles/ar-4.2_mysql2.gemfile +5 -0
- data/gemfiles/ar-5.0_mysql2.gemfile +5 -0
- data/lhm.gemspec +34 -0
- data/lib/lhm.rb +131 -0
- data/lib/lhm/atomic_switcher.rb +52 -0
- data/lib/lhm/chunk_finder.rb +32 -0
- data/lib/lhm/chunk_insert.rb +51 -0
- data/lib/lhm/chunker.rb +87 -0
- data/lib/lhm/cleanup/current.rb +74 -0
- data/lib/lhm/command.rb +48 -0
- data/lib/lhm/entangler.rb +117 -0
- data/lib/lhm/intersection.rb +51 -0
- data/lib/lhm/invoker.rb +98 -0
- data/lib/lhm/locked_switcher.rb +74 -0
- data/lib/lhm/migration.rb +43 -0
- data/lib/lhm/migrator.rb +237 -0
- data/lib/lhm/printer.rb +59 -0
- data/lib/lhm/railtie.rb +9 -0
- data/lib/lhm/sql_helper.rb +77 -0
- data/lib/lhm/sql_retry.rb +61 -0
- data/lib/lhm/table.rb +121 -0
- data/lib/lhm/table_name.rb +23 -0
- data/lib/lhm/test_support.rb +35 -0
- data/lib/lhm/throttler.rb +36 -0
- data/lib/lhm/throttler/slave_lag.rb +145 -0
- data/lib/lhm/throttler/threads_running.rb +53 -0
- data/lib/lhm/throttler/time.rb +29 -0
- data/lib/lhm/timestamp.rb +11 -0
- data/lib/lhm/version.rb +6 -0
- data/shipit.rubygems.yml +0 -0
- data/spec/.lhm.example +4 -0
- data/spec/README.md +58 -0
- data/spec/fixtures/bigint_table.ddl +4 -0
- data/spec/fixtures/composite_primary_key.ddl +7 -0
- data/spec/fixtures/custom_primary_key.ddl +6 -0
- data/spec/fixtures/destination.ddl +6 -0
- data/spec/fixtures/lines.ddl +7 -0
- data/spec/fixtures/origin.ddl +6 -0
- data/spec/fixtures/permissions.ddl +5 -0
- data/spec/fixtures/small_table.ddl +4 -0
- data/spec/fixtures/tracks.ddl +5 -0
- data/spec/fixtures/users.ddl +14 -0
- data/spec/fixtures/wo_id_int_column.ddl +6 -0
- data/spec/integration/atomic_switcher_spec.rb +93 -0
- data/spec/integration/chunk_insert_spec.rb +29 -0
- data/spec/integration/chunker_spec.rb +185 -0
- data/spec/integration/cleanup_spec.rb +136 -0
- data/spec/integration/entangler_spec.rb +66 -0
- data/spec/integration/integration_helper.rb +237 -0
- data/spec/integration/invoker_spec.rb +33 -0
- data/spec/integration/lhm_spec.rb +585 -0
- data/spec/integration/lock_wait_timeout_spec.rb +30 -0
- data/spec/integration/locked_switcher_spec.rb +50 -0
- data/spec/integration/sql_retry/lock_wait_spec.rb +125 -0
- data/spec/integration/sql_retry/lock_wait_timeout_test_helper.rb +101 -0
- data/spec/integration/table_spec.rb +91 -0
- data/spec/test_helper.rb +32 -0
- data/spec/unit/atomic_switcher_spec.rb +31 -0
- data/spec/unit/chunk_finder_spec.rb +73 -0
- data/spec/unit/chunk_insert_spec.rb +44 -0
- data/spec/unit/chunker_spec.rb +166 -0
- data/spec/unit/entangler_spec.rb +124 -0
- data/spec/unit/intersection_spec.rb +51 -0
- data/spec/unit/lhm_spec.rb +29 -0
- data/spec/unit/locked_switcher_spec.rb +51 -0
- data/spec/unit/migrator_spec.rb +146 -0
- data/spec/unit/printer_spec.rb +97 -0
- data/spec/unit/sql_helper_spec.rb +32 -0
- data/spec/unit/table_name_spec.rb +39 -0
- data/spec/unit/table_spec.rb +47 -0
- data/spec/unit/throttler/slave_lag_spec.rb +317 -0
- data/spec/unit/throttler/threads_running_spec.rb +64 -0
- data/spec/unit/throttler_spec.rb +124 -0
- data/spec/unit/unit_helper.rb +13 -0
- metadata +239 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 0c187c9f0e9bd183d5eb227f83ba9cce6a57ee5b03e4732312470a737f2d8a13
|
4
|
+
data.tar.gz: 54797e75f27f2f174ffd0eb07cd6d1fad57a9d16542e5baa0a56cb1130fcd88a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 9f11850e292435adb700695686887945d729ec8ec3b2d4b658fd1d6dd297f198e17711b26f2f1533cca0a58cdcb5f45a87bdbb1741f0cd988b57dfb47bd90d5b
|
7
|
+
data.tar.gz: ba2e873e51070ac3658644f90c7f54a1680707e8aa48db2d844fdcbfd2de83a5a96abbc0521eae9e55894d5e93ee399f9327df4c56f6b95945e381894e93ff6a
|
@@ -0,0 +1,34 @@
|
|
1
|
+
name: Tests
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: [ master ]
|
6
|
+
pull_request:
|
7
|
+
branches: [ master ]
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
test:
|
11
|
+
name: Run tests
|
12
|
+
runs-on: ubuntu-latest
|
13
|
+
steps:
|
14
|
+
- uses: actions/checkout@v2
|
15
|
+
- name: Set up Ruby
|
16
|
+
uses: ruby/setup-ruby@v1
|
17
|
+
with:
|
18
|
+
ruby-version: 2.5.1
|
19
|
+
bundler-cache: true
|
20
|
+
- name: Cache MySQL
|
21
|
+
uses: actions/cache@v2
|
22
|
+
with:
|
23
|
+
path: dbdeployer/binaries
|
24
|
+
key: ${{ runner.os }}-dbdeployer-${{ hashFiles('**/dbdeployer/install.sh') }}
|
25
|
+
- name: Install Ruby packages
|
26
|
+
run: bundle install
|
27
|
+
- name: Install Ubuntu packages
|
28
|
+
run: sudo apt-get install numactl libaio-dev
|
29
|
+
- name: Setup MySQL
|
30
|
+
run: ./dbdeployer/install.sh
|
31
|
+
- name: Run integration tests
|
32
|
+
run: bundle exec rake integration
|
33
|
+
- name: Run unit tests
|
34
|
+
run: bundle exec rake unit
|
data/.gitignore
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
*.gem
|
2
|
+
.bundle
|
3
|
+
gemfiles/*.lock
|
4
|
+
pkg/*
|
5
|
+
.rvmrc
|
6
|
+
.ruby-version
|
7
|
+
.ruby-gemset
|
8
|
+
bin/rake
|
9
|
+
spec/integration/database.yml
|
10
|
+
gemfiles/vendor
|
11
|
+
omg.ponies
|
12
|
+
*~
|
13
|
+
coverage
|
14
|
+
bin/dbdeployer
|
15
|
+
/dbdeployer/sandboxes
|
16
|
+
/dbdeployer/binaries
|
17
|
+
Gemfile.lock
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,183 @@
|
|
1
|
+
# This configuration was generated by `rubocop --auto-gen-config`
|
2
|
+
# on 2015-01-12 14:49:41 +0100 using RuboCop version 0.26.1.
|
3
|
+
# The point is for the user to remove these configuration records
|
4
|
+
# one by one as the offenses are removed from the code base.
|
5
|
+
# Note that changes in the inspected code, or installation of new
|
6
|
+
# versions of RuboCop, may require this file to be generated again.
|
7
|
+
|
8
|
+
AllCops:
|
9
|
+
Exclude:
|
10
|
+
- 'gemfiles/**/*'
|
11
|
+
|
12
|
+
# Offense count: 1
|
13
|
+
# Configuration parameters: CountComments.
|
14
|
+
Metrics/ClassLength:
|
15
|
+
Max: 131
|
16
|
+
|
17
|
+
# Offense count: 3
|
18
|
+
Metrics/CyclomaticComplexity:
|
19
|
+
Max: 19
|
20
|
+
|
21
|
+
# Offense count: 77
|
22
|
+
# Configuration parameters: AllowURI, URISchemes.
|
23
|
+
Metrics/LineLength:
|
24
|
+
Max: 197
|
25
|
+
|
26
|
+
# Offense count: 11
|
27
|
+
# Configuration parameters: CountComments.
|
28
|
+
Metrics/MethodLength:
|
29
|
+
Max: 27
|
30
|
+
|
31
|
+
# Offense count: 3
|
32
|
+
Metrics/PerceivedComplexity:
|
33
|
+
Max: 15
|
34
|
+
|
35
|
+
# Offense count: 5
|
36
|
+
# Cop supports --auto-correct.
|
37
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
38
|
+
Style/AndOr:
|
39
|
+
Enabled: false
|
40
|
+
|
41
|
+
# Offense count: 13
|
42
|
+
# Cop supports --auto-correct.
|
43
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
44
|
+
Style/BarePercentLiterals:
|
45
|
+
Enabled: false
|
46
|
+
|
47
|
+
# Offense count: 11
|
48
|
+
# Cop supports --auto-correct.
|
49
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
50
|
+
Style/BracesAroundHashParameters:
|
51
|
+
Enabled: false
|
52
|
+
|
53
|
+
# Offense count: 5
|
54
|
+
Style/ClassVars:
|
55
|
+
Enabled: false
|
56
|
+
|
57
|
+
# Offense count: 3
|
58
|
+
# Cop supports --auto-correct.
|
59
|
+
# Configuration parameters: PreferredMethods.
|
60
|
+
Style/CollectionMethods:
|
61
|
+
Enabled: false
|
62
|
+
|
63
|
+
# Offense count: 24
|
64
|
+
Style/Documentation:
|
65
|
+
Enabled: false
|
66
|
+
|
67
|
+
# Offense count: 28
|
68
|
+
# Cop supports --auto-correct.
|
69
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
70
|
+
Style/DotPosition:
|
71
|
+
Enabled: false
|
72
|
+
|
73
|
+
# Offense count: 4
|
74
|
+
Style/DoubleNegation:
|
75
|
+
Enabled: false
|
76
|
+
|
77
|
+
# Offense count: 1
|
78
|
+
Style/EachWithObject:
|
79
|
+
Enabled: false
|
80
|
+
|
81
|
+
# Offense count: 1
|
82
|
+
# Configuration parameters: Exclude.
|
83
|
+
Style/FileName:
|
84
|
+
Enabled: false
|
85
|
+
|
86
|
+
# Offense count: 11
|
87
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
88
|
+
Style/FormatString:
|
89
|
+
Enabled: false
|
90
|
+
|
91
|
+
# Offense count: 10
|
92
|
+
# Configuration parameters: AllowedVariables.
|
93
|
+
Style/GlobalVars:
|
94
|
+
Enabled: false
|
95
|
+
|
96
|
+
# Offense count: 9
|
97
|
+
# Configuration parameters: MinBodyLength.
|
98
|
+
Style/GuardClause:
|
99
|
+
Enabled: false
|
100
|
+
|
101
|
+
# Offense count: 88
|
102
|
+
# Cop supports --auto-correct.
|
103
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
104
|
+
Style/HashSyntax:
|
105
|
+
Enabled: false
|
106
|
+
|
107
|
+
# Offense count: 3
|
108
|
+
# Configuration parameters: MaxLineLength.
|
109
|
+
Style/IfUnlessModifier:
|
110
|
+
Enabled: false
|
111
|
+
|
112
|
+
# Offense count: 14
|
113
|
+
# Cop supports --auto-correct.
|
114
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
115
|
+
Style/IndentHash:
|
116
|
+
Enabled: false
|
117
|
+
|
118
|
+
# Offense count: 2
|
119
|
+
Style/ModuleFunction:
|
120
|
+
Enabled: false
|
121
|
+
|
122
|
+
# Offense count: 2
|
123
|
+
Style/MultilineBlockChain:
|
124
|
+
Enabled: false
|
125
|
+
|
126
|
+
# Offense count: 4
|
127
|
+
# Cop supports --auto-correct.
|
128
|
+
Style/NumericLiterals:
|
129
|
+
MinDigits: 8
|
130
|
+
|
131
|
+
# Offense count: 14
|
132
|
+
# Cop supports --auto-correct.
|
133
|
+
# Configuration parameters: PreferredDelimiters.
|
134
|
+
Style/PercentLiteralDelimiters:
|
135
|
+
Enabled: false
|
136
|
+
|
137
|
+
# Offense count: 3
|
138
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
139
|
+
Style/RaiseArgs:
|
140
|
+
Enabled: false
|
141
|
+
|
142
|
+
# Offense count: 1
|
143
|
+
Style/RescueModifier:
|
144
|
+
Enabled: false
|
145
|
+
|
146
|
+
# Offense count: 1
|
147
|
+
Style/SelfAssignment:
|
148
|
+
Enabled: false
|
149
|
+
|
150
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
151
|
+
Style/SignalException:
|
152
|
+
EnforcedStyle: only_raise
|
153
|
+
Enabled: true
|
154
|
+
|
155
|
+
# Cop supports --auto-correct.
|
156
|
+
# Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces, SupportedStyles.
|
157
|
+
Style/SpaceInsideHashLiteralBraces:
|
158
|
+
SupportedStyles: space
|
159
|
+
|
160
|
+
# Offense count: 2
|
161
|
+
# Cop supports --auto-correct.
|
162
|
+
Style/SpecialGlobalVars:
|
163
|
+
Enabled: false
|
164
|
+
|
165
|
+
# Offense count: 5
|
166
|
+
# Cop supports --auto-correct.
|
167
|
+
# Configuration parameters: ExactNameMatch, AllowPredicates, AllowDSLWriters, Whitelist.
|
168
|
+
Style/TrivialAccessors:
|
169
|
+
Enabled: false
|
170
|
+
|
171
|
+
# Offense count: 15
|
172
|
+
# Cop supports --auto-correct.
|
173
|
+
Style/UnneededPercentQ:
|
174
|
+
Enabled: false
|
175
|
+
|
176
|
+
# Offense count: 3
|
177
|
+
# Cop supports --auto-correct.
|
178
|
+
Style/WordArray:
|
179
|
+
MinSize: 2
|
180
|
+
|
181
|
+
# Offense count: 7
|
182
|
+
Metrics/AbcSize:
|
183
|
+
Max: 31
|
data/.travis.yml
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
language: ruby
|
2
|
+
before_script:
|
3
|
+
- "mysql -e 'create database lhm;'"
|
4
|
+
rvm:
|
5
|
+
- 2.0.0
|
6
|
+
- 2.1
|
7
|
+
- 2.2
|
8
|
+
sudo: false
|
9
|
+
gemfile:
|
10
|
+
- gemfiles/ar-2.3_mysql.gemfile
|
11
|
+
- gemfiles/ar-3.2_mysql.gemfile
|
12
|
+
- gemfiles/ar-3.2_mysql2.gemfile
|
13
|
+
- gemfiles/ar-4.0_mysql2.gemfile
|
14
|
+
- gemfiles/ar-4.1_mysql2.gemfile
|
15
|
+
- gemfiles/ar-4.2_mysql2.gemfile
|
16
|
+
matrix:
|
17
|
+
exclude:
|
18
|
+
- rvm: 2.2
|
19
|
+
gemfile: gemfiles/ar-3.2_mysql.gemfile
|
20
|
+
- rvm: 2.2
|
21
|
+
gemfile: gemfiles/ar-2.3_mysql.gemfile
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,216 @@
|
|
1
|
+
# 3.3.5 (Jul 5, 2021)
|
2
|
+
|
3
|
+
* Add comment and collate copying to rename_column
|
4
|
+
* Publish to rubygems
|
5
|
+
|
6
|
+
# 3.3.4 (Feb 9, 2021)
|
7
|
+
|
8
|
+
* Run migrations inline in local/CI environment
|
9
|
+
|
10
|
+
# 3.3.3 (Nov 20, 2020)
|
11
|
+
|
12
|
+
* Add test for tables with composite primary keys.
|
13
|
+
* Add test for migrating to a composite primary key.
|
14
|
+
* Tests updated to work on MacOS Catalina
|
15
|
+
* LHM will now print exceptions to @printer if @printer responds to :exception
|
16
|
+
* New ThreadsRunning throttler uses MySQL Performance Schema to decide whether to throttle
|
17
|
+
|
18
|
+
# 3.3.2 (not fully released)
|
19
|
+
|
20
|
+
* Catch _even_ more MySQL errors by default with SqlRetry.
|
21
|
+
|
22
|
+
# 3.3.1 (Nov 8, 2019)
|
23
|
+
|
24
|
+
* Ensure that :retriable configuration is correctly passed to all SqlRetry
|
25
|
+
instances.
|
26
|
+
* Retry `Chunker#upper_id` and `options[:verifier]` on MySQL failure.
|
27
|
+
* Catch more MySQL errors by default with SqlRetry.
|
28
|
+
|
29
|
+
# 3.3.0 (Oct 21, 2019)
|
30
|
+
|
31
|
+
* Add a :verifier key to the options hash, with a default implementation which aborts the LHM if the triggers are removed.
|
32
|
+
|
33
|
+
# 3.2.5 (Jun 24, 2019)
|
34
|
+
|
35
|
+
* Tighten dependency on retriable gem and remove workarounds for old version
|
36
|
+
|
37
|
+
# 3.2.4 (Oct 16, 2018)
|
38
|
+
|
39
|
+
* Retry `Cleanup::Current` just like we retry all the other DDLs.
|
40
|
+
|
41
|
+
# 3.2.3 (Oct 16, 2018)
|
42
|
+
|
43
|
+
* Add ActiveRecord::QueryTimedout exception class to be retried on "Timeout waiting for a response from the last query" message.
|
44
|
+
|
45
|
+
# 3.2.2 (Oct 11, 2018)
|
46
|
+
|
47
|
+
* Try to take a higher lock_wait_timeout value than others (https://github.com/Shopify/lhm/pull/60)
|
48
|
+
|
49
|
+
# 3.2.1 (Oct 11, 2018)
|
50
|
+
|
51
|
+
* Retry on `MySQL::Error::Timeout` (https://github.com/Shopify/lhm/pull/57)
|
52
|
+
* Retry 20 times by default (https://github.com/Shopify/lhm/pull/58)
|
53
|
+
|
54
|
+
# 3.2.0 (Sep 4, 2018)
|
55
|
+
|
56
|
+
* Fix Slave lag throttler database config (https://github.com/Shopify/lhm/pull/55)
|
57
|
+
* Loosen dependency on retriable gem (https://github.com/Shopify/lhm/pull/54)
|
58
|
+
* Overhaul retries for deadlocks, wait timeouts on Chunker, Entangler, and AtomicSwitcher (https://github.com/Shopify/lhm/pull/51)
|
59
|
+
|
60
|
+
# 3.1.1
|
61
|
+
|
62
|
+
* Cleanup tables between tests (https://github.com/Shopify/lhm/pull/48)
|
63
|
+
* Ensure all table names are less than 64 characters (https://github.com/Shopify/lhm/pull/49)
|
64
|
+
|
65
|
+
# 3.1.0
|
66
|
+
|
67
|
+
* Unify Entangler and AtomicSwitcher retry interface (https://github.com/Shopify/lhm/pull/39)
|
68
|
+
* Remove scripts replaced by dbdeployer (https://github.com/Shopify/lhm/pull/40)
|
69
|
+
* Rename lhmn_ tables to lhma_ to avoid IBP stalls (https://github.com/Shopify/lhm/pull/41)
|
70
|
+
|
71
|
+
# 3.0.0
|
72
|
+
|
73
|
+
* Drop support for throttle and stride options. Use `throttler`, instead:
|
74
|
+
```
|
75
|
+
Lhm.change_table :users, throttler: [:time_throttler, {stride: x}] do
|
76
|
+
end
|
77
|
+
```
|
78
|
+
* #118 - Truncate long trigger names. (@sj26)
|
79
|
+
* #114 - Update chunker requirements (@bjk-soundcloud)
|
80
|
+
* #98 - Add slave lag throttler. (@camilo, @jasonhl)
|
81
|
+
* #92 - Fix check for table requirement before starting a lhm.(@hannestyden)
|
82
|
+
* #93 - Makes the atomic switcher retry on metadata locks (@camilo)
|
83
|
+
* #63 - Sets the LHM's session lock wait timeout variables (@camilo)
|
84
|
+
* #75 - Remove DataMapper and ActiveRecord 2.x support (@camilo)
|
85
|
+
|
86
|
+
# 2.2.0 (Jan 16, 2015)
|
87
|
+
|
88
|
+
* #84 - Require index names to be strings or symbols (Thibaut)
|
89
|
+
* #39 - Adding the ability to rename columns (erikogan)
|
90
|
+
* #67 - Allow for optional time filter on .cleanup (joelr)
|
91
|
+
|
92
|
+
# 2.1.0 (July 31, 2014)
|
93
|
+
|
94
|
+
* #48 - Add percentage output for migrations (@arthurnn)
|
95
|
+
* #60 - Quote table names (@spickermann)
|
96
|
+
* #59 - Escape table name in select_limit and select_start methods (@stevehodgkiss)
|
97
|
+
* #57 - Ensure chunking 'where' clause handled separately (@rentalcustard)
|
98
|
+
* #54 - Chunker handle stride changes (@rentalcustard)
|
99
|
+
* #52 - Implement ability to control timeout and stride from Throttler (@edmundsalvacion)
|
100
|
+
* #51 - Ensure Lhm.cleanup removes temporary triggers (@edmundsalvacion)
|
101
|
+
* #46 - Allow custom throttler (@arthurnn)
|
102
|
+
|
103
|
+
# 2.0.0 (July 10, 2013)
|
104
|
+
|
105
|
+
* #44 - Conditional migrations (@durran)
|
106
|
+
|
107
|
+
# 1.3.0 (May 28, 2013)
|
108
|
+
|
109
|
+
* Add Lhm.cleanup method for removing copy tables, thanks @bogdan
|
110
|
+
* Limit copy table names to 64 characters, thanks @charliesome
|
111
|
+
|
112
|
+
# 1.2.0 (February 22, 2013)
|
113
|
+
|
114
|
+
* Added DataMapper support, no API changes for current users. Refer to the
|
115
|
+
README for information.
|
116
|
+
* Documentation updates. Thanks @tiegz and @vinbarnes.
|
117
|
+
|
118
|
+
# 1.1.0 (April 29, 2012)
|
119
|
+
|
120
|
+
* Add option to specify custom index name
|
121
|
+
* Add mysql2 compatibility
|
122
|
+
* Add AtomicSwitcher
|
123
|
+
|
124
|
+
# 1.0.3 (February 23, 2012)
|
125
|
+
|
126
|
+
* Improve change_column
|
127
|
+
|
128
|
+
# 1.0.2 (February 17, 2012)
|
129
|
+
|
130
|
+
* closes https://github.com/soundcloud/large-hadron-migrator/issues/11
|
131
|
+
this critical bug could cause data loss. table parser was replaced with
|
132
|
+
an implementation that reads directly from information_schema.
|
133
|
+
|
134
|
+
# 1.0.1 (February 09, 2012)
|
135
|
+
|
136
|
+
* released to rubygems
|
137
|
+
|
138
|
+
# 1.0.0 (February 09, 2012)
|
139
|
+
|
140
|
+
* added change_column
|
141
|
+
* final 1.0 release
|
142
|
+
|
143
|
+
# 1.0.0.rc8 (February 09, 2012)
|
144
|
+
|
145
|
+
* removed spec binaries from gem bins
|
146
|
+
|
147
|
+
# 1.0.0.rc7 (January 31, 2012)
|
148
|
+
|
149
|
+
* added SqlHelper.annotation into the middle of trigger statements. this
|
150
|
+
is for the benefit of the killer script which should not kill trigger
|
151
|
+
statements.
|
152
|
+
|
153
|
+
# 1.0.0.rc6 (January 30, 2012)
|
154
|
+
|
155
|
+
* added --confirm to kill script; fixes to kill script
|
156
|
+
|
157
|
+
# 1.0.0.rc5 (January 30, 2012)
|
158
|
+
|
159
|
+
* moved scripts into bin, renamed, added to gem binaries
|
160
|
+
|
161
|
+
# 1.0.0.rc4 (January 29, 2012)
|
162
|
+
|
163
|
+
* added '-- lhm' to the end of statements for more visibility
|
164
|
+
|
165
|
+
# 1.0.0.rc3 (January 19, 2012)
|
166
|
+
|
167
|
+
* Speedup migrations for tables with large minimum id
|
168
|
+
* Add a bit yard documentation
|
169
|
+
* Fix issues with index creation on reserved column names
|
170
|
+
* Improve error handling
|
171
|
+
* Add tests for replication
|
172
|
+
* Rename public API method from `hadron_change_table` to `change_table`
|
173
|
+
* Add tests for ActiveRecord 2.3 and 3.1 compatibility
|
174
|
+
|
175
|
+
# 1.0.0.rc2 (January 18, 2012)
|
176
|
+
|
177
|
+
* Speedup migrations for tables with large ids
|
178
|
+
* Fix conversion of milliseconds to seconds
|
179
|
+
* Fix handling of sql errors
|
180
|
+
* Add helper to create unique index
|
181
|
+
* Allow index creation on prefix of column
|
182
|
+
* Quote column names on index creation
|
183
|
+
* Remove ambiguous method signature
|
184
|
+
* Documentation fix
|
185
|
+
* 1.8.7 compatibility
|
186
|
+
|
187
|
+
# 1.0.0.rc1 (January 15, 2012)
|
188
|
+
|
189
|
+
* rewrite.
|
190
|
+
|
191
|
+
# 0.2.1 (November 26, 2011)
|
192
|
+
|
193
|
+
* Include changelog in gem
|
194
|
+
|
195
|
+
# 0.2.0 (November 26, 2011)
|
196
|
+
|
197
|
+
* Add Ruby 1.8 compatibility
|
198
|
+
* Setup travis continuous integration
|
199
|
+
* Fix record lose issue
|
200
|
+
* Fix and speed up specs
|
201
|
+
|
202
|
+
# 0.1.4
|
203
|
+
|
204
|
+
* Merged [Pullrequest #9](https://github.com/soundcloud/large-hadron-migrator/pull/9)
|
205
|
+
|
206
|
+
# 0.1.3
|
207
|
+
|
208
|
+
* code cleanup
|
209
|
+
* Merged [Pullrequest #8](https://github.com/soundcloud/large-hadron-migrator/pull/8)
|
210
|
+
* Merged [Pullrequest #7](https://github.com/soundcloud/large-hadron-migrator/pull/7)
|
211
|
+
* Merged [Pullrequest #4](https://github.com/soundcloud/large-hadron-migrator/pull/4)
|
212
|
+
* Merged [Pullrequest #1](https://github.com/soundcloud/large-hadron-migrator/pull/1)
|
213
|
+
|
214
|
+
# 0.1.2
|
215
|
+
|
216
|
+
* Initial Release
|