activerecord-tidb-adapter 0.2.0 → 0.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/.gitignore +5 -0
- data/Gemfile +9 -0
- data/Gemfile.lock +129 -9
- data/README.md +43 -2
- data/Rakefile +50 -5
- data/config.toml +1 -0
- data/lib/active_record/connection_adapters/tidb_adapter.rb +2 -6
- data/lib/version.rb +1 -1
- metadata +3 -3
- data/.github/workflows/main.yml +0 -16
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 442a2dcd175987185739a1fad7a8ef8788d0b13b7263018795ac144a4c10ee03
|
|
4
|
+
data.tar.gz: e568154643ebebfc8a9dcfd506b18732d52dea1a19b6500b76e9103965fd2cff
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d01699afa9a6c147317b8b6fd5763bcbf63852bccaa4fe6dd5bac076405bfc02ff98ae177cd1eef39a8aac95493a4e7eac31896260bceb8b78d2c2b3976605c6
|
|
7
|
+
data.tar.gz: 932f70292fde728c25d21bf7180dbad488ca4b5d7630bfe669b70dbf1dee0165f24b311d284ed0ab8edd1b5ab1b688d28d29e7a1748c8a571101950568373a00
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
|
@@ -8,7 +8,16 @@ gemspec
|
|
|
8
8
|
gem 'rake', '~> 13.0'
|
|
9
9
|
|
|
10
10
|
gem 'minitest', '~> 5.0'
|
|
11
|
+
gem 'minitest-excludes', '~> 2.0'
|
|
11
12
|
|
|
12
13
|
gem 'pry'
|
|
13
14
|
|
|
14
15
|
gem 'rubocop', '~> 1.18'
|
|
16
|
+
|
|
17
|
+
gem 'rails', git: 'https://github.com/tidb-incubator/rails.git', branch: '6-1-stable'
|
|
18
|
+
|
|
19
|
+
gem 'byebug', '~> 11.1'
|
|
20
|
+
|
|
21
|
+
gem 'sqlite3', '~> 1.4'
|
|
22
|
+
|
|
23
|
+
gem 'pg', '~> 1.2'
|
data/Gemfile.lock
CHANGED
|
@@ -1,38 +1,141 @@
|
|
|
1
|
-
|
|
2
|
-
remote: .
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
activerecord (~> 6.1)
|
|
6
|
-
mysql2
|
|
7
|
-
|
|
8
|
-
GEM
|
|
9
|
-
remote: https://rubygems.org/
|
|
1
|
+
GIT
|
|
2
|
+
remote: https://github.com/tidb-incubator/rails.git
|
|
3
|
+
revision: e377e0dc16e9841a048ec7eab2666c06155b6a0c
|
|
4
|
+
branch: 6-1-stable
|
|
10
5
|
specs:
|
|
6
|
+
actioncable (6.1.4)
|
|
7
|
+
actionpack (= 6.1.4)
|
|
8
|
+
activesupport (= 6.1.4)
|
|
9
|
+
nio4r (~> 2.0)
|
|
10
|
+
websocket-driver (>= 0.6.1)
|
|
11
|
+
actionmailbox (6.1.4)
|
|
12
|
+
actionpack (= 6.1.4)
|
|
13
|
+
activejob (= 6.1.4)
|
|
14
|
+
activerecord (= 6.1.4)
|
|
15
|
+
activestorage (= 6.1.4)
|
|
16
|
+
activesupport (= 6.1.4)
|
|
17
|
+
mail (>= 2.7.1)
|
|
18
|
+
actionmailer (6.1.4)
|
|
19
|
+
actionpack (= 6.1.4)
|
|
20
|
+
actionview (= 6.1.4)
|
|
21
|
+
activejob (= 6.1.4)
|
|
22
|
+
activesupport (= 6.1.4)
|
|
23
|
+
mail (~> 2.5, >= 2.5.4)
|
|
24
|
+
rails-dom-testing (~> 2.0)
|
|
25
|
+
actionpack (6.1.4)
|
|
26
|
+
actionview (= 6.1.4)
|
|
27
|
+
activesupport (= 6.1.4)
|
|
28
|
+
rack (~> 2.0, >= 2.0.9)
|
|
29
|
+
rack-test (>= 0.6.3)
|
|
30
|
+
rails-dom-testing (~> 2.0)
|
|
31
|
+
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
|
32
|
+
actiontext (6.1.4)
|
|
33
|
+
actionpack (= 6.1.4)
|
|
34
|
+
activerecord (= 6.1.4)
|
|
35
|
+
activestorage (= 6.1.4)
|
|
36
|
+
activesupport (= 6.1.4)
|
|
37
|
+
nokogiri (>= 1.8.5)
|
|
38
|
+
actionview (6.1.4)
|
|
39
|
+
activesupport (= 6.1.4)
|
|
40
|
+
builder (~> 3.1)
|
|
41
|
+
erubi (~> 1.4)
|
|
42
|
+
rails-dom-testing (~> 2.0)
|
|
43
|
+
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
|
44
|
+
activejob (6.1.4)
|
|
45
|
+
activesupport (= 6.1.4)
|
|
46
|
+
globalid (>= 0.3.6)
|
|
11
47
|
activemodel (6.1.4)
|
|
12
48
|
activesupport (= 6.1.4)
|
|
13
49
|
activerecord (6.1.4)
|
|
14
50
|
activemodel (= 6.1.4)
|
|
15
51
|
activesupport (= 6.1.4)
|
|
52
|
+
activestorage (6.1.4)
|
|
53
|
+
actionpack (= 6.1.4)
|
|
54
|
+
activejob (= 6.1.4)
|
|
55
|
+
activerecord (= 6.1.4)
|
|
56
|
+
activesupport (= 6.1.4)
|
|
57
|
+
marcel (~> 1.0.0)
|
|
58
|
+
mini_mime (>= 1.1.0)
|
|
16
59
|
activesupport (6.1.4)
|
|
17
60
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
18
61
|
i18n (>= 1.6, < 2)
|
|
19
62
|
minitest (>= 5.1)
|
|
20
63
|
tzinfo (~> 2.0)
|
|
21
64
|
zeitwerk (~> 2.3)
|
|
65
|
+
rails (6.1.4)
|
|
66
|
+
actioncable (= 6.1.4)
|
|
67
|
+
actionmailbox (= 6.1.4)
|
|
68
|
+
actionmailer (= 6.1.4)
|
|
69
|
+
actionpack (= 6.1.4)
|
|
70
|
+
actiontext (= 6.1.4)
|
|
71
|
+
actionview (= 6.1.4)
|
|
72
|
+
activejob (= 6.1.4)
|
|
73
|
+
activemodel (= 6.1.4)
|
|
74
|
+
activerecord (= 6.1.4)
|
|
75
|
+
activestorage (= 6.1.4)
|
|
76
|
+
activesupport (= 6.1.4)
|
|
77
|
+
bundler (>= 1.15.0)
|
|
78
|
+
railties (= 6.1.4)
|
|
79
|
+
sprockets-rails (>= 2.0.0)
|
|
80
|
+
railties (6.1.4)
|
|
81
|
+
actionpack (= 6.1.4)
|
|
82
|
+
activesupport (= 6.1.4)
|
|
83
|
+
method_source
|
|
84
|
+
rake (>= 0.13)
|
|
85
|
+
thor (~> 1.0)
|
|
86
|
+
|
|
87
|
+
PATH
|
|
88
|
+
remote: .
|
|
89
|
+
specs:
|
|
90
|
+
activerecord-tidb-adapter (0.3.0)
|
|
91
|
+
activerecord (~> 6.1)
|
|
92
|
+
mysql2
|
|
93
|
+
|
|
94
|
+
GEM
|
|
95
|
+
remote: https://rubygems.org/
|
|
96
|
+
specs:
|
|
22
97
|
ast (2.4.2)
|
|
98
|
+
builder (3.2.4)
|
|
99
|
+
byebug (11.1.3)
|
|
23
100
|
coderay (1.1.3)
|
|
24
101
|
concurrent-ruby (1.1.9)
|
|
102
|
+
crass (1.0.6)
|
|
103
|
+
erubi (1.10.0)
|
|
104
|
+
globalid (0.5.2)
|
|
105
|
+
activesupport (>= 5.0)
|
|
25
106
|
i18n (1.8.10)
|
|
26
107
|
concurrent-ruby (~> 1.0)
|
|
108
|
+
loofah (2.11.0)
|
|
109
|
+
crass (~> 1.0.2)
|
|
110
|
+
nokogiri (>= 1.5.9)
|
|
111
|
+
mail (2.7.1)
|
|
112
|
+
mini_mime (>= 0.1.1)
|
|
113
|
+
marcel (1.0.1)
|
|
27
114
|
method_source (1.0.0)
|
|
115
|
+
mini_mime (1.1.0)
|
|
28
116
|
minitest (5.14.4)
|
|
117
|
+
minitest-excludes (2.0.1)
|
|
118
|
+
minitest (~> 5.0)
|
|
29
119
|
mysql2 (0.5.3)
|
|
120
|
+
nio4r (2.5.8)
|
|
121
|
+
nokogiri (1.12.3-x86_64-linux)
|
|
122
|
+
racc (~> 1.4)
|
|
30
123
|
parallel (1.20.1)
|
|
31
124
|
parser (3.0.2.0)
|
|
32
125
|
ast (~> 2.4.1)
|
|
126
|
+
pg (1.2.3)
|
|
33
127
|
pry (0.14.1)
|
|
34
128
|
coderay (~> 1.1)
|
|
35
129
|
method_source (~> 1.0)
|
|
130
|
+
racc (1.5.2)
|
|
131
|
+
rack (2.2.3)
|
|
132
|
+
rack-test (1.1.0)
|
|
133
|
+
rack (>= 1.0, < 3)
|
|
134
|
+
rails-dom-testing (2.0.3)
|
|
135
|
+
activesupport (>= 4.2.0)
|
|
136
|
+
nokogiri (>= 1.6)
|
|
137
|
+
rails-html-sanitizer (1.3.0)
|
|
138
|
+
loofah (~> 2.3)
|
|
36
139
|
rainbow (3.0.0)
|
|
37
140
|
rake (13.0.6)
|
|
38
141
|
regexp_parser (2.1.1)
|
|
@@ -49,9 +152,21 @@ GEM
|
|
|
49
152
|
rubocop-ast (1.8.0)
|
|
50
153
|
parser (>= 3.0.1.1)
|
|
51
154
|
ruby-progressbar (1.11.0)
|
|
155
|
+
sprockets (4.0.2)
|
|
156
|
+
concurrent-ruby (~> 1.0)
|
|
157
|
+
rack (> 1, < 3)
|
|
158
|
+
sprockets-rails (3.2.2)
|
|
159
|
+
actionpack (>= 4.0)
|
|
160
|
+
activesupport (>= 4.0)
|
|
161
|
+
sprockets (>= 3.0.0)
|
|
162
|
+
sqlite3 (1.4.2)
|
|
163
|
+
thor (1.1.0)
|
|
52
164
|
tzinfo (2.0.4)
|
|
53
165
|
concurrent-ruby (~> 1.0)
|
|
54
166
|
unicode-display_width (2.0.0)
|
|
167
|
+
websocket-driver (0.7.5)
|
|
168
|
+
websocket-extensions (>= 0.1.0)
|
|
169
|
+
websocket-extensions (0.1.5)
|
|
55
170
|
zeitwerk (2.4.2)
|
|
56
171
|
|
|
57
172
|
PLATFORMS
|
|
@@ -60,10 +175,15 @@ PLATFORMS
|
|
|
60
175
|
|
|
61
176
|
DEPENDENCIES
|
|
62
177
|
activerecord-tidb-adapter!
|
|
178
|
+
byebug (~> 11.1)
|
|
63
179
|
minitest (~> 5.0)
|
|
180
|
+
minitest-excludes (~> 2.0)
|
|
181
|
+
pg (~> 1.2)
|
|
64
182
|
pry
|
|
183
|
+
rails!
|
|
65
184
|
rake (~> 13.0)
|
|
66
185
|
rubocop (~> 1.18)
|
|
186
|
+
sqlite3 (~> 1.4)
|
|
67
187
|
|
|
68
188
|
BUNDLED WITH
|
|
69
189
|
2.2.25
|
data/README.md
CHANGED
|
@@ -21,7 +21,7 @@ Or install it yourself as:
|
|
|
21
21
|
|
|
22
22
|
## Usage
|
|
23
23
|
|
|
24
|
-
database.yml
|
|
24
|
+
config/database.yml
|
|
25
25
|
|
|
26
26
|
```yml
|
|
27
27
|
default: &default
|
|
@@ -44,16 +44,57 @@ development:
|
|
|
44
44
|
|
|
45
45
|
* demo repo with rails 6.1.4: https://github.com/hooopo/activerecord-tidb-adapter-demo
|
|
46
46
|
|
|
47
|
+
## Setting up local TiDB server
|
|
48
|
+
|
|
49
|
+
Install [tiup](https://github.com/pingcap/tiup)
|
|
50
|
+
|
|
51
|
+
```shell
|
|
52
|
+
$ curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
|
|
53
|
+
```
|
|
54
|
+
Starting TiDB playground
|
|
55
|
+
|
|
56
|
+
```shell
|
|
57
|
+
$ tiup playground nightly
|
|
58
|
+
```
|
|
59
|
+
|
|
47
60
|
## Development
|
|
48
61
|
|
|
49
62
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
|
50
63
|
|
|
51
64
|
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
|
52
65
|
|
|
66
|
+
## Testing
|
|
67
|
+
|
|
68
|
+
install gems
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
bundle install
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
start tidb server
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
tiup playground nightly
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
create database for testing
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
MYSQL_USER=root MYSQL_HOST=127.0.0.1 MYSQL_PORT=4000 tidb=1 ARCONN=tidb bundle exec rake db:tidb:rebuild
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
run tidb adapter tests
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
MYSQL_USER=root MYSQL_HOST=127.0.0.1 MYSQL_PORT=4000 tidb=1 ARCONN=tidb bundle exec rake test:idb
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
|
|
53
94
|
## Contributing
|
|
54
95
|
|
|
55
96
|
Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/activerecord-tidb-adapter.
|
|
56
97
|
|
|
57
98
|
## License
|
|
58
99
|
|
|
59
|
-
Apache 2.0
|
|
100
|
+
Apache 2.0
|
data/Rakefile
CHANGED
|
@@ -2,11 +2,56 @@
|
|
|
2
2
|
|
|
3
3
|
require 'bundler/gem_tasks'
|
|
4
4
|
require 'rake/testtask'
|
|
5
|
+
require 'pry'
|
|
5
6
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
require_relative 'test/support/paths_tidb'
|
|
8
|
+
require_relative 'test/support/rake_helpers'
|
|
9
|
+
require_relative 'test/support/config'
|
|
10
|
+
|
|
11
|
+
task test: ['test:tidb']
|
|
12
|
+
task default: [:test]
|
|
13
|
+
|
|
14
|
+
namespace :test do
|
|
15
|
+
Rake::TestTask.new('tidb') do |t|
|
|
16
|
+
t.libs = ARTest::TiDB.test_load_paths
|
|
17
|
+
t.test_files = test_files
|
|
18
|
+
t.warning = !!ENV['WARNING']
|
|
19
|
+
t.verbose = false
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
task 'tidb:env' do
|
|
23
|
+
ENV['ARCONN'] = 'tidb'
|
|
24
|
+
ENV['tidb'] = '1'
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
task 'test:tidb' => 'test:tidb:env'
|
|
29
|
+
|
|
30
|
+
namespace :db do
|
|
31
|
+
namespace :tidb do
|
|
32
|
+
connection_arguments = lambda do |connection_name|
|
|
33
|
+
config = ARTest.config['connections']['tidb'][connection_name]
|
|
34
|
+
["--user=#{config['username']}", "--password=#{config['password']}", "--port=#{config['port']}",
|
|
35
|
+
("--host=#{config['host']}" if config['host'])].join(' ')
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
desc 'Build the TiDB test databases'
|
|
39
|
+
task :build do
|
|
40
|
+
config = ARTest.config['connections']['tidb']
|
|
41
|
+
`mysql #{connection_arguments['arunit']} -e "create DATABASE #{config['arunit']['database']} DEFAULT CHARACTER SET utf8mb4 COLLATE #{config['arunit']['collation']}"`
|
|
42
|
+
`mysql #{connection_arguments['arunit2']} -e "create DATABASE #{config['arunit2']['database']} DEFAULT CHARACTER SET utf8mb4 COLLATE #{config['arunit2']['collation']}"`
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
desc 'Drop the TiDB test databases'
|
|
46
|
+
task :drop do
|
|
47
|
+
config = ARTest.config['connections']['tidb']
|
|
48
|
+
`mysqladmin #{connection_arguments['arunit']} -f drop #{config['arunit']['database']}`
|
|
49
|
+
`mysqladmin #{connection_arguments['arunit2']} -f drop #{config['arunit2']['database']}`
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
desc 'Rebuild the TiDB test databases'
|
|
53
|
+
task rebuild: %i[drop build]
|
|
54
|
+
end
|
|
10
55
|
end
|
|
11
56
|
|
|
12
|
-
task
|
|
57
|
+
task build_mysql_databases: 'db:mysql:build'
|
data/config.toml
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
new_collations_enabled_on_first_bootstrap = true
|
|
@@ -67,11 +67,7 @@ module ActiveRecord
|
|
|
67
67
|
end
|
|
68
68
|
|
|
69
69
|
def supports_common_table_expressions?
|
|
70
|
-
|
|
71
|
-
true
|
|
72
|
-
else
|
|
73
|
-
false
|
|
74
|
-
end
|
|
70
|
+
tidb_version >= '5.1.0'
|
|
75
71
|
end
|
|
76
72
|
|
|
77
73
|
def transaction_isolation_levels
|
|
@@ -85,7 +81,7 @@ module ActiveRecord
|
|
|
85
81
|
super(connection, logger, conn_params, config)
|
|
86
82
|
|
|
87
83
|
tidb_version_string = query_value('select version()')
|
|
88
|
-
@tidb_version = tidb_version_string[/TiDB-v([0-9
|
|
84
|
+
@tidb_version = tidb_version_string[/TiDB-v([0-9.]+)/, 1]
|
|
89
85
|
end
|
|
90
86
|
|
|
91
87
|
def tidb_version_string
|
data/lib/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: activerecord-tidb-adapter
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Hooopo Wang
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-08-
|
|
11
|
+
date: 2021-08-12 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activerecord
|
|
@@ -45,7 +45,6 @@ executables: []
|
|
|
45
45
|
extensions: []
|
|
46
46
|
extra_rdoc_files: []
|
|
47
47
|
files:
|
|
48
|
-
- ".github/workflows/main.yml"
|
|
49
48
|
- ".gitignore"
|
|
50
49
|
- Gemfile
|
|
51
50
|
- Gemfile.lock
|
|
@@ -55,6 +54,7 @@ files:
|
|
|
55
54
|
- activerecord-tidb-adapter.gemspec
|
|
56
55
|
- bin/console
|
|
57
56
|
- bin/setup
|
|
57
|
+
- config.toml
|
|
58
58
|
- lib/active_record/connection_adapters/tidb/database_tasks.rb
|
|
59
59
|
- lib/active_record/connection_adapters/tidb/setup.rb
|
|
60
60
|
- lib/active_record/connection_adapters/tidb/type.rb
|
data/.github/workflows/main.yml
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
name: Ruby
|
|
2
|
-
|
|
3
|
-
on: [push,pull_request]
|
|
4
|
-
|
|
5
|
-
jobs:
|
|
6
|
-
build:
|
|
7
|
-
runs-on: ubuntu-latest
|
|
8
|
-
steps:
|
|
9
|
-
- uses: actions/checkout@v2
|
|
10
|
-
- name: Set up Ruby
|
|
11
|
-
uses: ruby/setup-ruby@v1
|
|
12
|
-
with:
|
|
13
|
-
ruby-version: 2.7.0
|
|
14
|
-
bundler-cache: true
|
|
15
|
-
- name: Run the default task
|
|
16
|
-
run: bundle exec rake
|