activerecord-tidb-adapter 5.2.0 → 5.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: acd66282a9f0c498709a9258ca7337267c9cbd3770ce8a5d55d38be1607d4466
4
- data.tar.gz: 8a73bc0cb0b685fa49e8247fd9d325e8800a95c6157b12c8eaa089bc85d47277
3
+ metadata.gz: 1ec81c5f43cb98b0fe8fb61484ea7b0050a84cb8c7caac6d25e314d58f5f1be0
4
+ data.tar.gz: 4a99eafd9d2f53885e063cc89af6ecf2afce3506e0f9b118a999e52c5fe93e71
5
5
  SHA512:
6
- metadata.gz: 9a478110b32ee9acaeaa7570a207f5721fa91cce9547f1c83bc89ab52e7b59f8401b3ccde38b4c224e8918d16fc2d1e376dca52a0bac316c77be8011161169a8
7
- data.tar.gz: d9a0cdc919c9e09df981b779aa5b60b63fa927fcb93420d8629c671d96562b3f45c8a6280187813caefb5f3b39dd980d66584fbddc6d35bc7d80c11b7e96722d
6
+ metadata.gz: 66909adaf233af63fb1f7f251cb8f11ba4a484c80e7646c9202c5636a7477575880f85927e01403ce26f8ebaa4a88c5eea6ffa1052a5a34d4e8b12d18f5cbb86
7
+ data.tar.gz: 8ad7289243de4d4f4e1b34d759be041f33c5b02d6b99428e9fc09ad918baa021751d708adc335c126495dce29eae9fca61a63cf7533711c7cd88cb6caf3511a3
@@ -0,0 +1,10 @@
1
+ #!/bin/bash
2
+
3
+ # Place this in /etc/buildkite-agent/hooks/pre-command
4
+ #
5
+ # Needs to be `chown buildkite-agent` and `chmod +x`
6
+
7
+ # RVM uses unbound variables and will fail without this
8
+ set +u
9
+
10
+ source /var/lib/buildkite-agent/.rvm/scripts/rvm
@@ -0,0 +1,7 @@
1
+ env:
2
+ MYSQL_HOST: 127.0.0.1
3
+ MYSQL_USER: root
4
+
5
+ steps:
6
+ - command: "testing.sh"
7
+ label: "Run TiDB ActiveRecord Adapter testing 5-2-stable"
@@ -0,0 +1,16 @@
1
+ #!/bin/bash
2
+ set -eu
3
+ service supervisor start
4
+
5
+ while sleep 60; do
6
+ ps aux |grep tidb |grep -q -v grep
7
+ TIDB_STATUS=$?
8
+ ps aux |grep tikv |grep -q -v grep
9
+ TIKV_STATUS=$?
10
+ # If the greps above find anything, they exit with 0 status
11
+ # If they are not both 0, then something is wrong
12
+ if [ $TIDB_STATUS -ne 0 -o $TIKV_STATUS -ne 0 ]; then
13
+ echo "One of the processes has already exited."
14
+ exit 1
15
+ fi
16
+ done
@@ -0,0 +1,35 @@
1
+ name: activerecord-tidb-adapter ci
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - 5-2-stable
7
+ paths-ignore:
8
+ - 'README*.md'
9
+ - 'docs/**'
10
+ pull_request:
11
+ branches:
12
+ - 5-2-stable
13
+ paths-ignore:
14
+ - 'README*.md'
15
+ - 'docs/**'
16
+
17
+ jobs:
18
+ build:
19
+ if: ${{ !contains(github.event.commits[0].message, '[skip ci]') }}
20
+ runs-on: ubuntu-latest
21
+ services:
22
+ tidb:
23
+ image: hawkingrei/tind:v5.1.0
24
+ options: --entrypoint /entrypoint.sh
25
+ env:
26
+ TIDB_VERSION: v5.1.0
27
+ ports: ["4000:4000"]
28
+ steps:
29
+ - uses: actions/checkout@v2
30
+ - uses: ruby/setup-ruby@v1
31
+ with:
32
+ ruby-version: 2.7
33
+ bundler-cache: true
34
+ - run: sleep 30 && MYSQL_USER=root MYSQL_HOST=127.0.0.1 MYSQL_PORT=4000 tidb=1 ARCONN=tidb bundle exec rake db:tidb:build
35
+ - run: sleep 10 && MYSQL_USER=root MYSQL_HOST=127.0.0.1 MYSQL_PORT=4000 tidb=1 ARCONN=tidb bundle exec rake test:tidb
data/Gemfile.lock CHANGED
@@ -1,6 +1,6 @@
1
1
  GIT
2
2
  remote: https://github.com/pingcap/rails.git
3
- revision: 7a3fbc5e103be80107fabc9e626cfc32e10e6e1c
3
+ revision: a1adbde17b229e9131d40787ee4342c1180afb36
4
4
  branch: 5-2-stable
5
5
  specs:
6
6
  actioncable (5.2.6)
@@ -67,7 +67,7 @@ GIT
67
67
  PATH
68
68
  remote: .
69
69
  specs:
70
- activerecord-tidb-adapter (5.2.0)
70
+ activerecord-tidb-adapter (5.2.2)
71
71
  activerecord (~> 5.2)
72
72
  mysql2
73
73
 
data/README.md CHANGED
@@ -8,7 +8,7 @@ TiDB adapter for ActiveRecord 5 and 6. This is a lightweight extension of the my
8
8
  Add this line to your application's Gemfile:
9
9
 
10
10
  ```ruby
11
- gem 'activerecord-tidb-adapter'
11
+ gem 'activerecord-tidb-adapter', "~> 5.2.2"
12
12
  ```
13
13
 
14
14
  And then execute:
@@ -0,0 +1,19 @@
1
+ require 'active_record/connection_adapters/abstract/database_statements'
2
+
3
+ ActiveRecord::ConnectionAdapters::DatabaseStatements.class_eval do
4
+ def insert(arel, name = nil, pk = nil, id_value = nil, sequence_name = nil, binds = [])
5
+ sql, binds = to_sql_and_binds(arel, binds)
6
+ value = exec_insert(sql, name, binds, pk, sequence_name)
7
+
8
+ return id_value if id_value.present?
9
+ return last_inserted_id(value) if arel.is_a?(String)
10
+ table_name = arel.ast.relation.table_name
11
+ pk_def = schema_cache.columns_hash(table_name)[pk]
12
+ if pk_def&.default_function && pk_def.default_function =~ /nextval/
13
+ query_value("SELECT #{pk_def.default_function.sub('nextval', 'lastval')}")
14
+ else
15
+ last_inserted_id(value)
16
+ end
17
+ end
18
+ alias create insert
19
+ end
@@ -0,0 +1,28 @@
1
+ require 'pry'
2
+ require 'active_record/connection_adapters/mysql/schema_statements'
3
+
4
+
5
+ ActiveRecord::ConnectionAdapters::MySQL::SchemaStatements.class_eval do
6
+ def new_column_from_field(table_name, field)
7
+ type_metadata = fetch_type_metadata(field[:Type], field[:Extra])
8
+ if type_metadata.type == :datetime && /\ACURRENT_TIMESTAMP(?:\([0-6]?\))?\z/i.match?(field[:Default])
9
+ default, default_function = nil, field[:Default]
10
+ elsif field[:Default].to_s =~ /nextval/i
11
+ default_function = field[:Default]
12
+ default = nil
13
+ else
14
+ default, default_function = field[:Default], nil
15
+ end
16
+
17
+ ActiveRecord::ConnectionAdapters::MySQL::Column.new(
18
+ field[:Field],
19
+ default,
20
+ type_metadata,
21
+ field[:Null] == "YES",
22
+ table_name,
23
+ default_function,
24
+ field[:Collation],
25
+ comment: field[:Comment].presence
26
+ )
27
+ end
28
+ end
@@ -4,6 +4,8 @@ require 'active_record/connection_adapters/mysql2_adapter'
4
4
  require 'active_record/connection_adapters/tidb/setup'
5
5
  require_relative '../../version'
6
6
  require_relative '../sequence'
7
+ require_relative 'tidb/database_statements'
8
+ require_relative 'tidb/schema_statements'
7
9
 
8
10
  ActiveRecord::ConnectionAdapters::Tidb.initial_setup
9
11
 
@@ -119,44 +121,6 @@ module ActiveRecord
119
121
  rescue ActiveRecord::NoDatabaseError
120
122
  false
121
123
  end
122
-
123
- def insert(arel, name = nil, pk = nil, id_value = nil, sequence_name = nil, binds = [])
124
- sql, binds = to_sql_and_binds(arel, binds)
125
- value = exec_insert(sql, name, binds, pk, sequence_name)
126
- return id_value if id_value.present?
127
-
128
- table_name = arel.ast.relation.table_name
129
- pk_def = schema_cache.columns_hash(table_name)[pk]
130
- if pk_def&.default_function && pk_def.default_function =~ /nextval/
131
- query_value("SELECT #{pk_def.default_function.sub('nextval', 'lastval')}")
132
- else
133
- last_inserted_id(value)
134
- end
135
- end
136
- alias create insert
137
-
138
- def new_column_from_field(table_name, field)
139
- type_metadata = fetch_type_metadata(field[:Type], field[:Extra])
140
- if type_metadata.type == :datetime && /\ACURRENT_TIMESTAMP(?:\([0-6]?\))?\z/i.match?(field[:Default])
141
- default, default_function = nil, field[:Default]
142
- elsif default.to_s =~ /nextval/i
143
- default_function = default
144
- default = nil
145
- else
146
- default, default_function = field[:Default], nil
147
- end
148
-
149
- MySQL::Column.new(
150
- field[:Field],
151
- default,
152
- type_metadata,
153
- field[:Null] == "YES",
154
- table_name,
155
- default_function,
156
- field[:Collation],
157
- comment: field[:Comment].presence
158
- )
159
- end
160
124
  end
161
125
  end
162
126
  end
data/lib/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActiveRecord
4
- TIDB_ADAPTER_VERSION = '5.2.0'
4
+ TIDB_ADAPTER_VERSION = '5.2.2'
5
5
  end
data/testing.sh ADDED
@@ -0,0 +1,14 @@
1
+ #!/bin/bash
2
+
3
+ set -eo pipefail
4
+
5
+ bundle config set --local path '/tmp/buildkite-cache'
6
+
7
+ echo "Setup gem mirror"
8
+ bundle config mirror.https://rubygems.org https://gems.ruby-china.com
9
+
10
+ echo "Bundle install"
11
+ bundle install
12
+
13
+ echo "Setup database for testing"
14
+ tidb=1 ARCONN=tidb bundle exec rake db:tidb:rebuild && tidb=1 ARCONN=tidb bundle exec rake test:tidb
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: 5.2.0
4
+ version: 5.2.2
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-19 00:00:00.000000000 Z
11
+ date: 2021-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -45,6 +45,10 @@ executables: []
45
45
  extensions: []
46
46
  extra_rdoc_files: []
47
47
  files:
48
+ - ".buildkite/hooks/pre-command"
49
+ - ".buildkite/pipeline.yml"
50
+ - ".github/entrypoint.sh"
51
+ - ".github/workflows/ci.yml"
48
52
  - ".gitignore"
49
53
  - Gemfile
50
54
  - Gemfile.lock
@@ -55,7 +59,9 @@ files:
55
59
  - bin/console
56
60
  - bin/setup
57
61
  - config.toml
62
+ - lib/active_record/connection_adapters/tidb/database_statements.rb
58
63
  - lib/active_record/connection_adapters/tidb/database_tasks.rb
64
+ - lib/active_record/connection_adapters/tidb/schema_statements.rb
59
65
  - lib/active_record/connection_adapters/tidb/setup.rb
60
66
  - lib/active_record/connection_adapters/tidb/type.rb
61
67
  - lib/active_record/connection_adapters/tidb_adapter.rb
@@ -66,6 +72,7 @@ files:
66
72
  - lib/active_record/sequence/schema_dumper.rb
67
73
  - lib/activerecord-tidb-adapter.rb
68
74
  - lib/version.rb
75
+ - testing.sh
69
76
  homepage: https://github.com/pingcap/activerecord-tidb-adapter
70
77
  licenses:
71
78
  - Apache-2.0