activerecord-trilogy-adapter 2.1.0 → 2.2.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/lib/active_record/connection_adapters/trilogy_adapter.rb +17 -30
- data/lib/trilogy_adapter/connection.rb +5 -1
- data/lib/trilogy_adapter/lost_connection_exception_translator.rb +4 -2
- data/lib/trilogy_adapter/version.rb +1 -1
- metadata +4 -5
- data/lib/trilogy_adapter/rails/dbconsole.rb +0 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a64e0395be9ae813e0aec59643758f1a2cc813099c290d95b5c6fbbf8c03746e
|
4
|
+
data.tar.gz: 7a1e5be7180c1f84475a40b7a48fe3b717eca0b3c4550ec2e687351049dcfa4e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b4e7aa7c78d2773783d578708d8267633f006db9f89eba45d58fb172e5fcb8a0bc8b0b4b70542c6cc4900ad0fd217706765db035601b0b862df1bbbf3d79c02e
|
7
|
+
data.tar.gz: f508049eb78a987e12c2e18480516b2ffced87c41a8517aaa95a3e24585b2bbb6ae181e1dd4abf8f6889155bf76e351f5912bb74c5deeeff63fce970b303b835
|
@@ -30,13 +30,6 @@ module ActiveRecord
|
|
30
30
|
MySQL::ExplainPrettyPrinter.new.pp(result, elapsed)
|
31
31
|
end
|
32
32
|
|
33
|
-
def execute(sql, name = nil, async: false)
|
34
|
-
sql = transform_query(sql)
|
35
|
-
check_if_write_query(sql)
|
36
|
-
|
37
|
-
raw_execute(sql, name, async: async)
|
38
|
-
end
|
39
|
-
|
40
33
|
def exec_query(sql, name = "SQL", binds = [], prepare: false, async: false)
|
41
34
|
result = execute(sql, name, async: async)
|
42
35
|
ActiveRecord::Result.new(result.fields, result.to_a)
|
@@ -63,8 +56,6 @@ module ActiveRecord
|
|
63
56
|
|
64
57
|
ER_BAD_DB_ERROR = 1049
|
65
58
|
ER_ACCESS_DENIED_ERROR = 1045
|
66
|
-
ER_CONN_HOST_ERROR = 2003
|
67
|
-
ER_UNKNOWN_HOST_ERROR = 2005
|
68
59
|
|
69
60
|
ADAPTER_NAME = "Trilogy"
|
70
61
|
|
@@ -82,7 +73,7 @@ module ActiveRecord
|
|
82
73
|
def new_client(config)
|
83
74
|
config[:ssl_mode] = parse_ssl_mode(config[:ssl_mode]) if config[:ssl_mode]
|
84
75
|
::Trilogy.new(config)
|
85
|
-
rescue Trilogy::
|
76
|
+
rescue Trilogy::ConnectionError, Trilogy::ProtocolError => error
|
86
77
|
raise translate_connect_error(config, error)
|
87
78
|
end
|
88
79
|
|
@@ -102,10 +93,12 @@ module ActiveRecord
|
|
102
93
|
ActiveRecord::NoDatabaseError.db_error(config[:database])
|
103
94
|
when ER_ACCESS_DENIED_ERROR
|
104
95
|
ActiveRecord::DatabaseConnectionError.username_error(config[:username])
|
105
|
-
when ER_CONN_HOST_ERROR, ER_UNKNOWN_HOST_ERROR
|
106
|
-
ActiveRecord::DatabaseConnectionError.hostname_error(config[:host])
|
107
96
|
else
|
108
|
-
|
97
|
+
if error.message.match?(/TRILOGY_DNS_ERROR/)
|
98
|
+
ActiveRecord::DatabaseConnectionError.hostname_error(config[:host])
|
99
|
+
else
|
100
|
+
ActiveRecord::ConnectionNotEstablished.new(error.message)
|
101
|
+
end
|
109
102
|
end
|
110
103
|
end
|
111
104
|
end
|
@@ -149,6 +142,7 @@ module ActiveRecord
|
|
149
142
|
alias reset! reconnect!
|
150
143
|
|
151
144
|
def disconnect!
|
145
|
+
super
|
152
146
|
unless connection.nil?
|
153
147
|
connection.close
|
154
148
|
self.connection = nil
|
@@ -159,23 +153,6 @@ module ActiveRecord
|
|
159
153
|
self.connection = nil
|
160
154
|
end
|
161
155
|
|
162
|
-
def raw_execute(sql, name, async: false, allow_retry: false, uses_transaction: true)
|
163
|
-
mark_transaction_written_if_write(sql)
|
164
|
-
|
165
|
-
log(sql, name, async: async) do
|
166
|
-
with_raw_connection(allow_retry: allow_retry, uses_transaction: uses_transaction) do |conn|
|
167
|
-
# Sync any changes since connection last established.
|
168
|
-
if default_timezone == :local
|
169
|
-
conn.query_flags |= ::Trilogy::QUERY_FLAGS_LOCAL_TIMEZONE
|
170
|
-
else
|
171
|
-
conn.query_flags &= ~::Trilogy::QUERY_FLAGS_LOCAL_TIMEZONE
|
172
|
-
end
|
173
|
-
|
174
|
-
conn.query(sql)
|
175
|
-
end
|
176
|
-
end
|
177
|
-
end
|
178
|
-
|
179
156
|
def each_hash(result)
|
180
157
|
return to_enum(:each_hash, result) unless block_given?
|
181
158
|
|
@@ -212,9 +189,19 @@ module ActiveRecord
|
|
212
189
|
|
213
190
|
def reconnect
|
214
191
|
connection&.close
|
192
|
+
self.connection = nil
|
215
193
|
connect
|
216
194
|
end
|
217
195
|
|
196
|
+
def sync_timezone_changes(conn)
|
197
|
+
# Sync any changes since connection last established.
|
198
|
+
if default_timezone == :local
|
199
|
+
conn.query_flags |= ::Trilogy::QUERY_FLAGS_LOCAL_TIMEZONE
|
200
|
+
else
|
201
|
+
conn.query_flags &= ~::Trilogy::QUERY_FLAGS_LOCAL_TIMEZONE
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
218
205
|
def full_version
|
219
206
|
schema_cache.database_version.full_version_string
|
220
207
|
end
|
@@ -14,6 +14,10 @@ module TrilogyAdapter
|
|
14
14
|
# host: "localhost",
|
15
15
|
# database: "demo_development"
|
16
16
|
module Connection
|
17
|
+
def trilogy_adapter_class
|
18
|
+
ActiveRecord::ConnectionAdapters::TrilogyAdapter
|
19
|
+
end
|
20
|
+
|
17
21
|
def trilogy_connection(config)
|
18
22
|
configuration = config.dup
|
19
23
|
|
@@ -31,7 +35,7 @@ module TrilogyAdapter
|
|
31
35
|
0
|
32
36
|
]
|
33
37
|
|
34
|
-
|
38
|
+
trilogy_adapter_class.new nil, logger, options, configuration
|
35
39
|
end
|
36
40
|
end
|
37
41
|
end
|
@@ -37,8 +37,10 @@ module TrilogyAdapter
|
|
37
37
|
Errors::BrokenPipe.new(message)
|
38
38
|
when SocketError, IOError
|
39
39
|
Errors::SocketError.new(message)
|
40
|
-
when
|
41
|
-
|
40
|
+
when Trilogy::ConnectionError
|
41
|
+
if message.match?(/Connection reset by peer/)
|
42
|
+
Errors::ConnectionResetByPeer.new(message)
|
43
|
+
end
|
42
44
|
end
|
43
45
|
end
|
44
46
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-trilogy-adapter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GitHub Engineering
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-03-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: trilogy
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.
|
19
|
+
version: 2.3.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.
|
26
|
+
version: 2.3.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activerecord
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -111,7 +111,6 @@ files:
|
|
111
111
|
- lib/trilogy_adapter/connection.rb
|
112
112
|
- lib/trilogy_adapter/errors.rb
|
113
113
|
- lib/trilogy_adapter/lost_connection_exception_translator.rb
|
114
|
-
- lib/trilogy_adapter/rails/dbconsole.rb
|
115
114
|
- lib/trilogy_adapter/railtie.rb
|
116
115
|
- lib/trilogy_adapter/version.rb
|
117
116
|
homepage: https://github.com/github/activerecord-trilogy-adapter
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module TrilogyAdapter
|
4
|
-
module Rails
|
5
|
-
module DBConsole
|
6
|
-
class AdapterAdapter < SimpleDelegator
|
7
|
-
def adapter
|
8
|
-
"mysql"
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
def db_config
|
13
|
-
if super.adapter == "trilogy"
|
14
|
-
AdapterAdapter.new(super)
|
15
|
-
else
|
16
|
-
super
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|