activerecord-aurora-serverless-adapter 1.0.0 → 5.2.2
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/Gemfile +3 -1
- data/Gemfile.lock +55 -63
- data/activerecord-aurora-serverless-adapter.gemspec +5 -2
- data/lib/active_record/connection_adapters/aurora_serverless/client.rb +25 -0
- data/lib/active_record/connection_adapters/aurora_serverless/mysql2.rb +13 -14
- data/lib/active_record/connection_adapters/aurora_serverless/mysql2/client.rb +4 -0
- data/lib/active_record/connection_adapters/aurora_serverless/version.rb +1 -1
- data/test/aasa_helper.rb +163 -0
- data/test/aurora-serverless/bin/aurora-serverless.ts +17 -0
- data/test/aurora-serverless/cdk.context.json +3 -0
- data/test/aurora-serverless/cdk.json +3 -0
- data/test/aurora-serverless/lib/aurora-serverless-stack.ts +194 -0
- data/test/aurora-serverless/package-lock.json +6485 -0
- data/test/aurora-serverless/package.json +21 -0
- data/test/aurora-serverless/tsconfig.json +23 -0
- data/test/bin/_deploy-aurora +8 -0
- data/test/bin/_wakeup +17 -0
- data/test/bin/deploy-aurora +8 -0
- data/test/bin/wakeup +8 -0
- data/test/cases/aasa/mysql_client_test.rb +59 -0
- data/test/cases/aasa/mysql_result_test.rb +63 -0
- data/test/cases/aasa/mysql_types_test.rb +135 -0
- data/test/cases/coerced_tests.rb +151 -0
- data/test/config.yml +20 -0
- data/test/support/aasa_coerceable.rb +53 -0
- data/test/support/aasa_env.rb +11 -0
- data/test/support/aasa_fixtures.rb +9 -0
- data/test/support/aasa_minitest.rb +39 -0
- data/test/support/aasa_mysqlpatch.rb +8 -0
- data/test/support/aasa_paths.rb +47 -0
- data/test/support/aasa_rake.rb +102 -0
- metadata +43 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 60b59ea21f9e813832a9b157fd65ae5d9d686afb0f04c51700cd5664eeb2edcd
|
4
|
+
data.tar.gz: 6555d62f42ccb9c421382353f5fa14990c456a2d3555437b03965a3ed0d3d97d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4271e26bc9ad5f0a8de508b30914cd39d7d870e45c5985a6857ec1881fcc2c6ff6b23a38d1c611c9beba607a658cabd4723b8d45140afd365121a0d992f9b762
|
7
|
+
data.tar.gz: 4cc64d2e19eff3da7f7fdc5d939f90a40c952cfdaf72fd6168b3fd7280fec7aa409038707c6c691da3522a29c49dc313f0949e5f01b6fb21b43d3fe491bb9e2a
|
data/Gemfile
CHANGED
@@ -2,7 +2,7 @@ source "https://rubygems.org"
|
|
2
2
|
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
3
3
|
gemspec
|
4
4
|
|
5
|
-
ENV['RAILS_VERSION'] = '
|
5
|
+
ENV['RAILS_VERSION'] = '5.2.4.1'
|
6
6
|
|
7
7
|
# This allows us to bundle to Rails via Git to get the ActiveRecord test files
|
8
8
|
# which comes down to a git tag. We can also use the `RAILS_VERSION` env variable
|
@@ -28,3 +28,5 @@ version = ENV['RAILS_VERSION'] || begin
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
gem 'rails', github: "rails/rails", tag: "v#{version}"
|
31
|
+
gem 'mocha', '1.9.0', require: false
|
32
|
+
gem 'bcrypt'
|
data/Gemfile.lock
CHANGED
@@ -1,91 +1,76 @@
|
|
1
1
|
GIT
|
2
2
|
remote: https://github.com/rails/rails
|
3
|
-
revision:
|
4
|
-
tag:
|
3
|
+
revision: 56f45bedd617a76e8e3596c84c872a37c8be9795
|
4
|
+
tag: v5.2.4.1
|
5
5
|
specs:
|
6
|
-
actioncable (
|
7
|
-
actionpack (=
|
6
|
+
actioncable (5.2.4.1)
|
7
|
+
actionpack (= 5.2.4.1)
|
8
8
|
nio4r (~> 2.0)
|
9
9
|
websocket-driver (>= 0.6.1)
|
10
|
-
|
11
|
-
actionpack (=
|
12
|
-
|
13
|
-
|
14
|
-
activestorage (= 6.0.2.1)
|
15
|
-
activesupport (= 6.0.2.1)
|
16
|
-
mail (>= 2.7.1)
|
17
|
-
actionmailer (6.0.2.1)
|
18
|
-
actionpack (= 6.0.2.1)
|
19
|
-
actionview (= 6.0.2.1)
|
20
|
-
activejob (= 6.0.2.1)
|
10
|
+
actionmailer (5.2.4.1)
|
11
|
+
actionpack (= 5.2.4.1)
|
12
|
+
actionview (= 5.2.4.1)
|
13
|
+
activejob (= 5.2.4.1)
|
21
14
|
mail (~> 2.5, >= 2.5.4)
|
22
15
|
rails-dom-testing (~> 2.0)
|
23
|
-
actionpack (
|
24
|
-
actionview (=
|
25
|
-
activesupport (=
|
16
|
+
actionpack (5.2.4.1)
|
17
|
+
actionview (= 5.2.4.1)
|
18
|
+
activesupport (= 5.2.4.1)
|
26
19
|
rack (~> 2.0, >= 2.0.8)
|
27
20
|
rack-test (>= 0.6.3)
|
28
21
|
rails-dom-testing (~> 2.0)
|
29
|
-
rails-html-sanitizer (~> 1.0, >= 1.2
|
30
|
-
|
31
|
-
|
32
|
-
activerecord (= 6.0.2.1)
|
33
|
-
activestorage (= 6.0.2.1)
|
34
|
-
activesupport (= 6.0.2.1)
|
35
|
-
nokogiri (>= 1.8.5)
|
36
|
-
actionview (6.0.2.1)
|
37
|
-
activesupport (= 6.0.2.1)
|
22
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
23
|
+
actionview (5.2.4.1)
|
24
|
+
activesupport (= 5.2.4.1)
|
38
25
|
builder (~> 3.1)
|
39
26
|
erubi (~> 1.4)
|
40
27
|
rails-dom-testing (~> 2.0)
|
41
|
-
rails-html-sanitizer (~> 1.
|
42
|
-
activejob (
|
43
|
-
activesupport (=
|
28
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
29
|
+
activejob (5.2.4.1)
|
30
|
+
activesupport (= 5.2.4.1)
|
44
31
|
globalid (>= 0.3.6)
|
45
|
-
activemodel (
|
46
|
-
activesupport (=
|
47
|
-
activerecord (
|
48
|
-
activemodel (=
|
49
|
-
activesupport (=
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
activerecord (=
|
32
|
+
activemodel (5.2.4.1)
|
33
|
+
activesupport (= 5.2.4.1)
|
34
|
+
activerecord (5.2.4.1)
|
35
|
+
activemodel (= 5.2.4.1)
|
36
|
+
activesupport (= 5.2.4.1)
|
37
|
+
arel (>= 9.0)
|
38
|
+
activestorage (5.2.4.1)
|
39
|
+
actionpack (= 5.2.4.1)
|
40
|
+
activerecord (= 5.2.4.1)
|
54
41
|
marcel (~> 0.3.1)
|
55
|
-
activesupport (
|
42
|
+
activesupport (5.2.4.1)
|
56
43
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
57
44
|
i18n (>= 0.7, < 2)
|
58
45
|
minitest (~> 5.1)
|
59
46
|
tzinfo (~> 1.1)
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
activerecord (= 6.0.2.1)
|
71
|
-
activestorage (= 6.0.2.1)
|
72
|
-
activesupport (= 6.0.2.1)
|
47
|
+
rails (5.2.4.1)
|
48
|
+
actioncable (= 5.2.4.1)
|
49
|
+
actionmailer (= 5.2.4.1)
|
50
|
+
actionpack (= 5.2.4.1)
|
51
|
+
actionview (= 5.2.4.1)
|
52
|
+
activejob (= 5.2.4.1)
|
53
|
+
activemodel (= 5.2.4.1)
|
54
|
+
activerecord (= 5.2.4.1)
|
55
|
+
activestorage (= 5.2.4.1)
|
56
|
+
activesupport (= 5.2.4.1)
|
73
57
|
bundler (>= 1.3.0)
|
74
|
-
railties (=
|
58
|
+
railties (= 5.2.4.1)
|
75
59
|
sprockets-rails (>= 2.0.0)
|
76
|
-
railties (
|
77
|
-
actionpack (=
|
78
|
-
activesupport (=
|
60
|
+
railties (5.2.4.1)
|
61
|
+
actionpack (= 5.2.4.1)
|
62
|
+
activesupport (= 5.2.4.1)
|
79
63
|
method_source
|
80
64
|
rake (>= 0.8.7)
|
81
|
-
thor (>= 0.
|
65
|
+
thor (>= 0.19.0, < 2.0)
|
82
66
|
|
83
67
|
PATH
|
84
68
|
remote: .
|
85
69
|
specs:
|
86
|
-
activerecord-aurora-serverless-adapter (
|
87
|
-
activerecord (
|
70
|
+
activerecord-aurora-serverless-adapter (5.2.2)
|
71
|
+
activerecord (~> 5.2.0)
|
88
72
|
aws-sdk-rdsdataservice
|
73
|
+
retriable
|
89
74
|
|
90
75
|
GEM
|
91
76
|
remote: https://rubygems.org/
|
@@ -95,9 +80,10 @@ GEM
|
|
95
80
|
bundler
|
96
81
|
rake
|
97
82
|
thor (>= 0.14.0)
|
83
|
+
arel (9.0.0)
|
98
84
|
aws-eventstream (1.0.3)
|
99
|
-
aws-partitions (1.
|
100
|
-
aws-sdk-core (3.
|
85
|
+
aws-partitions (1.265.0)
|
86
|
+
aws-sdk-core (3.89.1)
|
101
87
|
aws-eventstream (~> 1.0, >= 1.0.2)
|
102
88
|
aws-partitions (~> 1, >= 1.239.0)
|
103
89
|
aws-sigv4 (~> 1.1)
|
@@ -107,6 +93,7 @@ GEM
|
|
107
93
|
aws-sigv4 (~> 1.1)
|
108
94
|
aws-sigv4 (1.1.0)
|
109
95
|
aws-eventstream (~> 1.0, >= 1.0.2)
|
96
|
+
bcrypt (3.1.13)
|
110
97
|
builder (3.2.4)
|
111
98
|
coderay (1.1.2)
|
112
99
|
concurrent-ruby (1.1.5)
|
@@ -125,6 +112,7 @@ GEM
|
|
125
112
|
mini_mime (>= 0.1.1)
|
126
113
|
marcel (0.3.3)
|
127
114
|
mimemagic (~> 0.3.2)
|
115
|
+
metaclass (0.0.4)
|
128
116
|
method_source (0.9.2)
|
129
117
|
mimemagic (0.3.3)
|
130
118
|
mini_mime (1.0.2)
|
@@ -137,6 +125,8 @@ GEM
|
|
137
125
|
ruby-progressbar
|
138
126
|
minitest-retry (0.1.9)
|
139
127
|
minitest (>= 5.0)
|
128
|
+
mocha (1.9.0)
|
129
|
+
metaclass (~> 0.0.1)
|
140
130
|
nio4r (2.5.2)
|
141
131
|
nokogiri (1.10.7)
|
142
132
|
mini_portile2 (~> 2.4.0)
|
@@ -152,6 +142,7 @@ GEM
|
|
152
142
|
rails-html-sanitizer (1.3.0)
|
153
143
|
loofah (~> 2.3)
|
154
144
|
rake (13.0.1)
|
145
|
+
retriable (3.1.2)
|
155
146
|
ruby-progressbar (1.10.1)
|
156
147
|
sprockets (4.0.0)
|
157
148
|
concurrent-ruby (~> 1.0)
|
@@ -168,7 +159,6 @@ GEM
|
|
168
159
|
websocket-driver (0.7.1)
|
169
160
|
websocket-extensions (>= 0.1.0)
|
170
161
|
websocket-extensions (0.1.4)
|
171
|
-
zeitwerk (2.2.2)
|
172
162
|
|
173
163
|
PLATFORMS
|
174
164
|
ruby
|
@@ -176,10 +166,12 @@ PLATFORMS
|
|
176
166
|
DEPENDENCIES
|
177
167
|
activerecord-aurora-serverless-adapter!
|
178
168
|
appraisal
|
169
|
+
bcrypt
|
179
170
|
dotenv
|
180
171
|
minitest
|
181
172
|
minitest-reporters
|
182
173
|
minitest-retry
|
174
|
+
mocha (= 1.9.0)
|
183
175
|
pry
|
184
176
|
rails!
|
185
177
|
rake
|
@@ -12,13 +12,16 @@ Gem::Specification.new do |spec|
|
|
12
12
|
spec.homepage = 'https://github.com/customink/activerecord-aurora-serverless-adapter'
|
13
13
|
spec.license = 'MIT'
|
14
14
|
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
15
|
-
`git ls-files -z`.split("\x0").reject
|
15
|
+
`git ls-files -z`.split("\x0").reject do |f|
|
16
|
+
f.match(%r{^(test|spec|features|docker)/i})
|
17
|
+
end
|
16
18
|
end
|
17
19
|
spec.bindir = 'exe'
|
18
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
19
21
|
spec.require_paths = ['lib']
|
20
|
-
spec.add_runtime_dependency 'activerecord', '
|
22
|
+
spec.add_runtime_dependency 'activerecord', '~> 5.2.0'
|
21
23
|
spec.add_runtime_dependency 'aws-sdk-rdsdataservice'
|
24
|
+
spec.add_runtime_dependency 'retriable'
|
22
25
|
spec.add_development_dependency 'appraisal'
|
23
26
|
spec.add_development_dependency 'dotenv'
|
24
27
|
spec.add_development_dependency 'minitest'
|
@@ -23,6 +23,14 @@ module ActiveRecord
|
|
23
23
|
"#<#{self.class} database: #{database.inspect}, raw_client: #{raw_client.inspect}>"
|
24
24
|
end
|
25
25
|
|
26
|
+
def execute_statement_retry(sql)
|
27
|
+
if @connected
|
28
|
+
execute_statement(sql)
|
29
|
+
else
|
30
|
+
auto_paused_retry { execute_statement(sql) }
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
26
34
|
def execute_statement(sql)
|
27
35
|
id = @transactions.first
|
28
36
|
debug_transactions "EXECUTE: #{sql}", id
|
@@ -34,6 +42,7 @@ module ActiveRecord
|
|
34
42
|
include_result_metadata: true,
|
35
43
|
transaction_id: id
|
36
44
|
}).tap do |r|
|
45
|
+
@connected = true
|
37
46
|
@affected_rows = affected_rows_result(r)
|
38
47
|
@last_id = last_id_result(r)
|
39
48
|
end
|
@@ -100,6 +109,22 @@ module ActiveRecord
|
|
100
109
|
field.long_value || field.string_value || field.double_value
|
101
110
|
end
|
102
111
|
|
112
|
+
def auto_paused_retry
|
113
|
+
error_klass = Aws::RDSDataService::Errors::BadRequestException
|
114
|
+
error_msg = /last packet sent successfully to the server was/
|
115
|
+
retry_msg = 'Aurora auto paused, retrying...'
|
116
|
+
on_retry = Proc.new { sleep(1) ; ::Rails.logger.info(retry_msg) }
|
117
|
+
Retriable.retriable({
|
118
|
+
on: { error_klass => error_msg },
|
119
|
+
on_retry: on_retry,
|
120
|
+
tries: auto_paused_retry_count
|
121
|
+
}) { yield }
|
122
|
+
end
|
123
|
+
|
124
|
+
def auto_paused_retry_count
|
125
|
+
10
|
126
|
+
end
|
127
|
+
|
103
128
|
def debug_transactions(name, id = 'NOID')
|
104
129
|
return unless @debug_transactions
|
105
130
|
ActiveRecord::Base.logger.debug " \e[36m#{name} #{id} #{object_id}\e[0m"
|
@@ -33,33 +33,32 @@ module ActiveRecord
|
|
33
33
|
|
34
34
|
# Abstract Mysql Adapter
|
35
35
|
|
36
|
-
def translate_exception(exception, message
|
37
|
-
|
38
|
-
case msg
|
36
|
+
def translate_exception(exception, message)
|
37
|
+
case message
|
39
38
|
when /Duplicate entry/
|
40
|
-
RecordNotUnique.new(
|
39
|
+
RecordNotUnique.new(message)
|
41
40
|
when /foreign key constraint fails/
|
42
|
-
InvalidForeignKey.new(
|
41
|
+
InvalidForeignKey.new(message)
|
43
42
|
when /Cannot add foreign key constraint/,
|
44
43
|
/referenced column .* in foreign key constraint .* are incompatible/
|
45
|
-
mismatched_foreign_key(
|
44
|
+
mismatched_foreign_key(message)
|
46
45
|
when /Data too long for column/
|
47
|
-
ValueTooLong.new(
|
46
|
+
ValueTooLong.new(message)
|
48
47
|
when /Out of range value for column/
|
49
|
-
RangeError.new(
|
48
|
+
RangeError.new(message)
|
50
49
|
when /Column .* cannot be null/,
|
51
50
|
/Field .* doesn't have a default value/
|
52
|
-
NotNullViolation.new(
|
51
|
+
NotNullViolation.new(message)
|
53
52
|
when /Deadlock found when trying to get lock/
|
54
|
-
Deadlocked.new(
|
53
|
+
Deadlocked.new(message)
|
55
54
|
when /Lock wait timeout exceeded/
|
56
|
-
LockWaitTimeout.new(
|
55
|
+
LockWaitTimeout.new(message)
|
57
56
|
when /max_statement_time exceeded/, /Sort aborted/
|
58
|
-
StatementTimeout.new(
|
57
|
+
StatementTimeout.new(message)
|
59
58
|
when /Query execution was interrupted/
|
60
|
-
QueryCanceled.new(
|
59
|
+
QueryCanceled.new(message)
|
61
60
|
else
|
62
|
-
ActiveRecord::StatementInvalid.new(
|
61
|
+
ActiveRecord::StatementInvalid.new(message)
|
63
62
|
end
|
64
63
|
end
|
65
64
|
|
data/test/aasa_helper.rb
ADDED
@@ -0,0 +1,163 @@
|
|
1
|
+
ENV['AASA_ENV'] = 'test'
|
2
|
+
require 'bundler/setup'
|
3
|
+
Bundler.require :default, :development
|
4
|
+
Dotenv.load('.env')
|
5
|
+
require 'minitest/spec'
|
6
|
+
require 'minitest/autorun'
|
7
|
+
require 'minitest/retry'
|
8
|
+
require 'minitest/reporters'
|
9
|
+
require_relative 'support/aasa_mysqlpatch'
|
10
|
+
require 'cases/helper' unless ENV['TEST_FILES'] || ENV['ONLY_AASA']
|
11
|
+
require_relative 'support/aasa_coerceable'
|
12
|
+
require_relative 'support/aasa_env'
|
13
|
+
require_relative 'support/aasa_fixtures'
|
14
|
+
require_relative 'support/aasa_minitest'
|
15
|
+
Rails.backtrace_cleaner.remove_silencers! if ENV['REMOVE_SILENCERS']
|
16
|
+
|
17
|
+
module ActiveRecord
|
18
|
+
module ConnectionAdapters
|
19
|
+
module AuroraServerless
|
20
|
+
class TestCase < Minitest::Spec
|
21
|
+
|
22
|
+
before { setup_table }
|
23
|
+
after { drop_table }
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def client
|
28
|
+
@client ||= AuroraServerless::Client.new(
|
29
|
+
'activerecord_unittest',
|
30
|
+
ENV['AASA_RESOURCE_ARN'],
|
31
|
+
ENV['AASA_SECRET_ARN']
|
32
|
+
)
|
33
|
+
end
|
34
|
+
|
35
|
+
def execute(sql)
|
36
|
+
r = client.execute_statement(sql)
|
37
|
+
# TODO: [PG] Make this a conditional result wrapper.
|
38
|
+
AuroraServerless::Mysql2::Result.new(r)
|
39
|
+
end
|
40
|
+
|
41
|
+
def setup_table
|
42
|
+
# TODO: [PG] Make this a conditional for constant SQL.
|
43
|
+
execute MYSQL_CREATE_TABLE_SQL
|
44
|
+
execute MYSQL_INSERT_SQL
|
45
|
+
end
|
46
|
+
|
47
|
+
def drop_table
|
48
|
+
execute 'DROP TABLE IF EXISTS aurora_test'
|
49
|
+
end
|
50
|
+
|
51
|
+
MYSQL_CREATE_TABLE_SQL = %[
|
52
|
+
CREATE TABLE IF NOT EXISTS aurora_test (
|
53
|
+
id int NOT NULL AUTO_INCREMENT,
|
54
|
+
PRIMARY KEY (id),
|
55
|
+
null_test VARCHAR(10),
|
56
|
+
bit_test BIT,
|
57
|
+
tiny_int_test TINYINT,
|
58
|
+
small_int_test SMALLINT,
|
59
|
+
medium_int_test MEDIUMINT,
|
60
|
+
int_test INT,
|
61
|
+
big_int_test BIGINT,
|
62
|
+
float_test FLOAT(10,3),
|
63
|
+
float_zero_test FLOAT(10,3),
|
64
|
+
double_test DOUBLE(10,3),
|
65
|
+
decimal_test DECIMAL(10,3),
|
66
|
+
decimal_zero_test DECIMAL(10,3),
|
67
|
+
date_test DATE,
|
68
|
+
date_time_test DATETIME,
|
69
|
+
timestamp_test TIMESTAMP,
|
70
|
+
time_test TIME,
|
71
|
+
year_test YEAR(4),
|
72
|
+
char_test CHAR(10),
|
73
|
+
varchar_test VARCHAR(10),
|
74
|
+
binary_test BINARY(10),
|
75
|
+
varbinary_test VARBINARY(10),
|
76
|
+
tiny_blob_test TINYBLOB,
|
77
|
+
tiny_text_test TINYTEXT,
|
78
|
+
blob_test BLOB,
|
79
|
+
text_test TEXT,
|
80
|
+
medium_blob_test MEDIUMBLOB,
|
81
|
+
medium_text_test MEDIUMTEXT,
|
82
|
+
long_blob_test LONGBLOB,
|
83
|
+
long_text_test LONGTEXT,
|
84
|
+
enum_test ENUM('val1', 'val2'),
|
85
|
+
set_test SET('val1', 'val2')
|
86
|
+
) DEFAULT CHARSET=utf8
|
87
|
+
]
|
88
|
+
|
89
|
+
MYSQL_INSERT_SQL = %[
|
90
|
+
INSERT INTO aurora_test (
|
91
|
+
null_test,
|
92
|
+
bit_test,
|
93
|
+
tiny_int_test,
|
94
|
+
small_int_test,
|
95
|
+
medium_int_test,
|
96
|
+
int_test,
|
97
|
+
big_int_test,
|
98
|
+
float_test,
|
99
|
+
float_zero_test,
|
100
|
+
double_test,
|
101
|
+
decimal_test,
|
102
|
+
decimal_zero_test,
|
103
|
+
date_test,
|
104
|
+
date_time_test,
|
105
|
+
timestamp_test,
|
106
|
+
time_test,
|
107
|
+
year_test,
|
108
|
+
char_test,
|
109
|
+
varchar_test,
|
110
|
+
binary_test,
|
111
|
+
varbinary_test,
|
112
|
+
tiny_blob_test,
|
113
|
+
tiny_text_test,
|
114
|
+
blob_test,
|
115
|
+
text_test,
|
116
|
+
medium_blob_test,
|
117
|
+
medium_text_test,
|
118
|
+
long_blob_test,
|
119
|
+
long_text_test,
|
120
|
+
enum_test,
|
121
|
+
set_test
|
122
|
+
)
|
123
|
+
VALUES (
|
124
|
+
NULL,
|
125
|
+
1,
|
126
|
+
5,
|
127
|
+
32766,
|
128
|
+
8388606,
|
129
|
+
2147483646,
|
130
|
+
9223372036854775806,
|
131
|
+
156.68449197860963,
|
132
|
+
0.0,
|
133
|
+
606682.8877005348,
|
134
|
+
676254.5454545454,
|
135
|
+
0,
|
136
|
+
'2010-4-4',
|
137
|
+
'2010-4-4 11:44:00',
|
138
|
+
'2010-4-4 11:44:00',
|
139
|
+
'11:44:00',
|
140
|
+
2019,
|
141
|
+
'abcdefg',
|
142
|
+
'abcdefg',
|
143
|
+
'abcdefg',
|
144
|
+
'abcdefg',
|
145
|
+
'abcdefg',
|
146
|
+
'abcdefg',
|
147
|
+
'abcdefg',
|
148
|
+
'abcdefg',
|
149
|
+
'abcdefg',
|
150
|
+
'abcdefg',
|
151
|
+
'abcdefg',
|
152
|
+
'abcdefg',
|
153
|
+
'val1',
|
154
|
+
'val1,val2'
|
155
|
+
)
|
156
|
+
]
|
157
|
+
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
require "mocha/setup"
|