activerecord-aurora-serverless-adapter 1.0.0 → 5.2.2
Sign up to get free protection for your applications and to get access to all the features.
- 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"
|