ruby-mysql 2.9.14 → 3.0.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 +5 -5
- data/CHANGELOG.md +50 -0
- data/README.md +28 -0
- data/lib/mysql/authenticator/caching_sha2_password.rb +62 -0
- data/lib/mysql/authenticator/mysql_native_password.rb +37 -0
- data/lib/mysql/authenticator/sha256_password.rb +40 -0
- data/lib/mysql/authenticator.rb +84 -0
- data/lib/mysql/charset.rb +379 -328
- data/lib/mysql/constants.rb +91 -44
- data/lib/mysql/error.rb +13 -7
- data/lib/mysql/protocol.rb +243 -210
- data/lib/mysql.rb +183 -338
- data/test/test_mysql.rb +264 -550
- metadata +18 -12
- data/README.rdoc +0 -68
data/lib/mysql/constants.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# coding: ascii-8bit
|
2
|
-
# Copyright (C) 2003
|
2
|
+
# Copyright (C) 2003 TOMITA Masahiro
|
3
3
|
# mailto:tommy@tmtm.org
|
4
4
|
|
5
5
|
class Mysql
|
@@ -36,6 +36,7 @@ class Mysql
|
|
36
36
|
COM_DAEMON = 29
|
37
37
|
COM_BINLOG_DUMP_GTID = 30
|
38
38
|
COM_RESET_CONNECTION = 31
|
39
|
+
COM_CLONE = 32
|
39
40
|
|
40
41
|
# Client flag
|
41
42
|
CLIENT_LONG_PASSWORD = 1 # new more secure passwords
|
@@ -63,32 +64,64 @@ class Mysql
|
|
63
64
|
CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS = 1 << 22 # Don't close the connection for a connection with expired password.
|
64
65
|
CLIENT_SESSION_TRACK = 1 << 23 # Capable of handling server state change information. Its a hint to the server to include the state change information in Ok packet.
|
65
66
|
CLIENT_DEPRECATE_EOF = 1 << 24 # Client no longer needs EOF packet
|
66
|
-
|
67
|
-
|
67
|
+
CLIENT_OPTIONAL_RESULTSET_METADATA = 1 << 25 # The client can handle optional metadata information in the resultset.
|
68
|
+
CLIENT_ZSTD_COMPRESSION_ALGORITHM = 1 << 26 # Compression protocol extended to support zstd compression method
|
69
|
+
CLIENT_CAPABILITY_EXTENSION = 1 << 29 # This flag will be reserved to extend the 32bit capabilities structure to 64bits.
|
70
|
+
CLIENT_SSL_VERIFY_SERVER_CERT = 1 << 30 # Verify server certificate.
|
71
|
+
CLIENT_REMEMBER_OPTIONS = 1 << 31 # Don't reset the options after an unsuccessful connect
|
68
72
|
|
69
73
|
# Connection Option
|
70
|
-
OPT_CONNECT_TIMEOUT
|
71
|
-
OPT_COMPRESS
|
72
|
-
OPT_NAMED_PIPE
|
73
|
-
INIT_COMMAND
|
74
|
-
READ_DEFAULT_FILE
|
75
|
-
READ_DEFAULT_GROUP
|
76
|
-
SET_CHARSET_DIR
|
77
|
-
SET_CHARSET_NAME
|
78
|
-
OPT_LOCAL_INFILE
|
79
|
-
OPT_PROTOCOL
|
80
|
-
SHARED_MEMORY_BASE_NAME
|
81
|
-
OPT_READ_TIMEOUT
|
82
|
-
OPT_WRITE_TIMEOUT
|
83
|
-
OPT_USE_RESULT
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
74
|
+
OPT_CONNECT_TIMEOUT = 0
|
75
|
+
OPT_COMPRESS = 1
|
76
|
+
OPT_NAMED_PIPE = 2
|
77
|
+
INIT_COMMAND = 3
|
78
|
+
READ_DEFAULT_FILE = 4
|
79
|
+
READ_DEFAULT_GROUP = 5
|
80
|
+
SET_CHARSET_DIR = 6
|
81
|
+
SET_CHARSET_NAME = 7
|
82
|
+
OPT_LOCAL_INFILE = 8
|
83
|
+
OPT_PROTOCOL = 9
|
84
|
+
SHARED_MEMORY_BASE_NAME = 10
|
85
|
+
OPT_READ_TIMEOUT = 11
|
86
|
+
OPT_WRITE_TIMEOUT = 12
|
87
|
+
OPT_USE_RESULT = 13
|
88
|
+
REPORT_DATA_TRUNCATION = 14
|
89
|
+
OPT_RECONNECT = 15
|
90
|
+
PLUGIN_DIR = 16
|
91
|
+
DEFAULT_AUTH = 17
|
92
|
+
OPT_BIND = 18
|
93
|
+
OPT_SSL_KEY = 19
|
94
|
+
OPT_SSL_CERT = 20
|
95
|
+
OPT_SSL_CA = 21
|
96
|
+
OPT_SSL_CAPATH = 22
|
97
|
+
OPT_SSL_CIPHER = 23
|
98
|
+
OPT_SSL_CRL = 24
|
99
|
+
OPT_SSL_CRLPATH = 25
|
100
|
+
OPT_CONNECT_ATTR_RESET = 26
|
101
|
+
OPT_CONNECT_ATTR_ADD = 27
|
102
|
+
OPT_CONNECT_ATTR_DELETE = 28
|
103
|
+
SERVER_PUBLIC_KEY = 29
|
104
|
+
ENABLE_CLEARTEXT_PLUGIN = 30
|
105
|
+
OPT_CAN_HANDLE_EXPIRED_PASSWORDS = 31
|
106
|
+
OPT_MAX_ALLOWED_PACKET = 32
|
107
|
+
OPT_NET_BUFFER_LENGTH = 33
|
108
|
+
OPT_TLS_VERSION = 34
|
109
|
+
OPT_SSL_MODE = 35
|
110
|
+
OPT_GET_SERVER_PUBLIC_KEY = 36
|
111
|
+
OPT_RETRY_COUNT = 37
|
112
|
+
OPT_OPTIONAL_RESULTSET_METADATA = 38
|
113
|
+
OPT_SSL_FIPS_MODE = 39
|
114
|
+
OPT_TLS_CIPHERSUITES = 40
|
115
|
+
OPT_COMPRESSION_ALGORITHMS = 41
|
116
|
+
OPT_ZSTD_COMPRESSION_LEVEL = 42
|
117
|
+
OPT_LOAD_DATA_LOCAL_DIR = 43
|
118
|
+
|
119
|
+
# SSL Mode
|
120
|
+
SSL_MODE_DISABLED = 1
|
121
|
+
SSL_MODE_PREFERRED = 2
|
122
|
+
SSL_MODE_REQUIRED = 3
|
123
|
+
SSL_MODE_VERIFY_CA = 4
|
124
|
+
SSL_MODE_VERIFY_IDENTITY = 5
|
92
125
|
|
93
126
|
# Server Option
|
94
127
|
OPTION_MULTI_STATEMENTS_ON = 0
|
@@ -133,6 +166,7 @@ class Mysql
|
|
133
166
|
REFRESH_USER_RESOURCES = 1 << 19
|
134
167
|
REFRESH_FOR_EXPORT = 1 << 20
|
135
168
|
REFRESH_OPTIMIZER_COSTS = 1 << 21
|
169
|
+
REFRESH_PERSIST = 1 << 22
|
136
170
|
|
137
171
|
class Field
|
138
172
|
# Field type
|
@@ -156,6 +190,9 @@ class Mysql
|
|
156
190
|
TYPE_TIMESTAMP2 = 17
|
157
191
|
TYPE_DATETIME2 = 18
|
158
192
|
TYPE_TIME2 = 19
|
193
|
+
TYPE_TYPED_ARRAY = 20
|
194
|
+
TYPE_INVALID = 243
|
195
|
+
TYPE_BOOL = 244
|
159
196
|
TYPE_JSON = 245
|
160
197
|
TYPE_NEWDECIMAL = 246
|
161
198
|
TYPE_ENUM = 247
|
@@ -171,25 +208,35 @@ class Mysql
|
|
171
208
|
TYPE_INTERVAL = TYPE_ENUM
|
172
209
|
|
173
210
|
# Flag
|
174
|
-
NOT_NULL_FLAG
|
175
|
-
PRI_KEY_FLAG
|
176
|
-
UNIQUE_KEY_FLAG
|
177
|
-
MULTIPLE_KEY_FLAG
|
178
|
-
BLOB_FLAG
|
179
|
-
UNSIGNED_FLAG
|
180
|
-
ZEROFILL_FLAG
|
181
|
-
BINARY_FLAG
|
182
|
-
ENUM_FLAG
|
183
|
-
AUTO_INCREMENT_FLAG
|
184
|
-
TIMESTAMP_FLAG
|
185
|
-
SET_FLAG
|
186
|
-
NO_DEFAULT_VALUE_FLAG
|
187
|
-
ON_UPDATE_NOW_FLAG
|
188
|
-
NUM_FLAG
|
189
|
-
PART_KEY_FLAG
|
190
|
-
GROUP_FLAG
|
191
|
-
UNIQUE_FLAG
|
192
|
-
BINCMP_FLAG
|
211
|
+
NOT_NULL_FLAG = 1
|
212
|
+
PRI_KEY_FLAG = 2
|
213
|
+
UNIQUE_KEY_FLAG = 4
|
214
|
+
MULTIPLE_KEY_FLAG = 8
|
215
|
+
BLOB_FLAG = 16
|
216
|
+
UNSIGNED_FLAG = 32
|
217
|
+
ZEROFILL_FLAG = 64
|
218
|
+
BINARY_FLAG = 128
|
219
|
+
ENUM_FLAG = 256
|
220
|
+
AUTO_INCREMENT_FLAG = 512
|
221
|
+
TIMESTAMP_FLAG = 1024
|
222
|
+
SET_FLAG = 2048
|
223
|
+
NO_DEFAULT_VALUE_FLAG = 4096
|
224
|
+
ON_UPDATE_NOW_FLAG = 8192
|
225
|
+
NUM_FLAG = 32768
|
226
|
+
PART_KEY_FLAG = 16384
|
227
|
+
GROUP_FLAG = 32768
|
228
|
+
UNIQUE_FLAG = 65536
|
229
|
+
BINCMP_FLAG = 131072
|
230
|
+
GET_FIXED_FIELDS_FLAG = 1 << 18
|
231
|
+
FIELD_IN_PART_FUNC_FLAG = 1 << 19
|
232
|
+
FIELD_IN_ADD_INDEX = 1 << 20
|
233
|
+
FIELD_IS_RENAMED = 1 << 21
|
234
|
+
FIELD_FLAGS_STORAGE_MEDIA_MASK = 3 << 22
|
235
|
+
FIELD_FLAGS_COLUMN_FORMAT_MASK = 3 << 24
|
236
|
+
FIELD_IS_DROPPED = 1 << 26
|
237
|
+
EXPLICIT_NULL_FLAG = 1 << 27
|
238
|
+
FIELD_IS_MARKED = 1 << 28
|
239
|
+
NOT_SECONDARY_FLAG = 1 << 29
|
193
240
|
end
|
194
241
|
|
195
242
|
class Stmt
|
data/lib/mysql/error.rb
CHANGED
@@ -20,17 +20,14 @@ class Mysql
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
-
attr_reader :sqlstate, :error
|
23
|
+
attr_reader :sqlstate, :error, :errno
|
24
24
|
|
25
|
-
def initialize(message, sqlstate='HY000')
|
25
|
+
def initialize(message, sqlstate='HY000', errno=nil)
|
26
26
|
@sqlstate = sqlstate
|
27
27
|
@error = message
|
28
|
+
@errno = errno || self.class::ERRNO
|
28
29
|
super message
|
29
30
|
end
|
30
|
-
|
31
|
-
def errno
|
32
|
-
self.class::ERRNO
|
33
|
-
end
|
34
31
|
end
|
35
32
|
|
36
33
|
# server side error
|
@@ -977,7 +974,16 @@ class Mysql
|
|
977
974
|
CR_AUTH_PLUGIN_CANNOT_LOAD = 2059
|
978
975
|
CR_DUPLICATE_CONNECTION_ATTR = 2060
|
979
976
|
CR_AUTH_PLUGIN_ERR = 2061
|
980
|
-
|
977
|
+
CR_INSECURE_API_ERR = 2062
|
978
|
+
CR_FILE_NAME_TOO_LONG = 2063
|
979
|
+
CR_SSL_FIPS_MODE_ERR = 2064
|
980
|
+
CR_DEPRECATED_COMPRESSION_NOT_SUPPORTED = 2065
|
981
|
+
CR_COMPRESSION_WRONGLY_CONFIGURED = 2066
|
982
|
+
CR_KERBEROS_USER_NOT_FOUND = 2067
|
983
|
+
CR_LOAD_DATA_LOCAL_INFILE_REJECTED = 2068
|
984
|
+
CR_LOAD_DATA_LOCAL_INFILE_REALPATH_FAIL = 2069
|
985
|
+
CR_DNS_SRV_LOOKUP_FAILED = 2070
|
986
|
+
CR_ERROR_LAST = 2070
|
981
987
|
end
|
982
988
|
|
983
989
|
ClientError.define_error_class(/\ACR_/)
|