ruby-mysql 2.9.13 → 2.11.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,5 @@
1
1
  # coding: ascii-8bit
2
- # Copyright (C) 2003-2008 TOMITA Masahiro
2
+ # Copyright (C) 2003 TOMITA Masahiro
3
3
  # mailto:tommy@tmtm.org
4
4
 
5
5
  class Mysql
@@ -33,50 +33,95 @@ class Mysql
33
33
  COM_STMT_RESET = 26
34
34
  COM_SET_OPTION = 27
35
35
  COM_STMT_FETCH = 28
36
+ COM_DAEMON = 29
37
+ COM_BINLOG_DUMP_GTID = 30
38
+ COM_RESET_CONNECTION = 31
39
+ COM_CLONE = 32
36
40
 
37
41
  # Client flag
38
- CLIENT_LONG_PASSWORD = 1 # new more secure passwords
39
- CLIENT_FOUND_ROWS = 1 << 1 # Found instead of affected rows
40
- CLIENT_LONG_FLAG = 1 << 2 # Get all column flags
41
- CLIENT_CONNECT_WITH_DB = 1 << 3 # One can specify db on connect
42
- CLIENT_NO_SCHEMA = 1 << 4 # Don't allow database.table.column
43
- CLIENT_COMPRESS = 1 << 5 # Can use compression protocol
44
- CLIENT_ODBC = 1 << 6 # Odbc client
45
- CLIENT_LOCAL_FILES = 1 << 7 # Can use LOAD DATA LOCAL
46
- CLIENT_IGNORE_SPACE = 1 << 8 # Ignore spaces before '('
47
- CLIENT_PROTOCOL_41 = 1 << 9 # New 4.1 protocol
48
- CLIENT_INTERACTIVE = 1 << 10 # This is an interactive client
49
- CLIENT_SSL = 1 << 11 # Switch to SSL after handshake
50
- CLIENT_IGNORE_SIGPIPE = 1 << 12 # IGNORE sigpipes
51
- CLIENT_TRANSACTIONS = 1 << 13 # Client knows about transactions
52
- CLIENT_RESERVED = 1 << 14 # Old flag for 4.1 protocol
53
- CLIENT_SECURE_CONNECTION = 1 << 15 # New 4.1 authentication
54
- CLIENT_MULTI_STATEMENTS = 1 << 16 # Enable/disable multi-stmt support
55
- CLIENT_MULTI_RESULTS = 1 << 17 # Enable/disable multi-results
42
+ CLIENT_LONG_PASSWORD = 1 # new more secure passwords
43
+ CLIENT_FOUND_ROWS = 1 << 1 # Found instead of affected rows
44
+ CLIENT_LONG_FLAG = 1 << 2 # Get all column flags
45
+ CLIENT_CONNECT_WITH_DB = 1 << 3 # One can specify db on connect
46
+ CLIENT_NO_SCHEMA = 1 << 4 # Don't allow database.table.column
47
+ CLIENT_COMPRESS = 1 << 5 # Can use compression protocol
48
+ CLIENT_ODBC = 1 << 6 # Odbc client
49
+ CLIENT_LOCAL_FILES = 1 << 7 # Can use LOAD DATA LOCAL
50
+ CLIENT_IGNORE_SPACE = 1 << 8 # Ignore spaces before '('
51
+ CLIENT_PROTOCOL_41 = 1 << 9 # New 4.1 protocol
52
+ CLIENT_INTERACTIVE = 1 << 10 # This is an interactive client
53
+ CLIENT_SSL = 1 << 11 # Switch to SSL after handshake
54
+ CLIENT_IGNORE_SIGPIPE = 1 << 12 # IGNORE sigpipes
55
+ CLIENT_TRANSACTIONS = 1 << 13 # Client knows about transactions
56
+ CLIENT_RESERVED = 1 << 14 # Old flag for 4.1 protocol
57
+ CLIENT_SECURE_CONNECTION = 1 << 15 # New 4.1 authentication
58
+ CLIENT_MULTI_STATEMENTS = 1 << 16 # Enable/disable multi-stmt support
59
+ CLIENT_MULTI_RESULTS = 1 << 17 # Enable/disable multi-results
60
+ CLIENT_PS_MULTI_RESULTS = 1 << 18 # Multi-results in PS-protocol
61
+ CLIENT_PLUGIN_AUTH = 1 << 19 # Client supports plugin authentication
62
+ CLIENT_CONNECT_ATTRS = 1 << 20 # Client supports connection attribute
63
+ CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA = 1 << 21 # Enable authentication response packet to be larger than 255 bytes.
64
+ CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS = 1 << 22 # Don't close the connection for a connection with expired password.
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.
66
+ CLIENT_DEPRECATE_EOF = 1 << 24 # Client no longer needs EOF packet
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
56
72
 
57
73
  # Connection Option
58
- OPT_CONNECT_TIMEOUT = 0
59
- OPT_COMPRESS = 1
60
- OPT_NAMED_PIPE = 2
61
- INIT_COMMAND = 3
62
- READ_DEFAULT_FILE = 4
63
- READ_DEFAULT_GROUP = 5
64
- SET_CHARSET_DIR = 6
65
- SET_CHARSET_NAME = 7
66
- OPT_LOCAL_INFILE = 8
67
- OPT_PROTOCOL = 9
68
- SHARED_MEMORY_BASE_NAME = 10
69
- OPT_READ_TIMEOUT = 11
70
- OPT_WRITE_TIMEOUT = 12
71
- OPT_USE_RESULT = 13
72
- OPT_USE_REMOTE_CONNECTION = 14
73
- OPT_USE_EMBEDDED_CONNECTION = 15
74
- OPT_GUESS_CONNECTION = 16
75
- SET_CLIENT_IP = 17
76
- SECURE_AUTH = 18
77
- REPORT_DATA_TRUNCATION = 19
78
- OPT_RECONNECT = 20
79
- OPT_SSL_VERIFY_SERVER_CERT = 21
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
80
125
 
81
126
  # Server Option
82
127
  OPTION_MULTI_STATEMENTS_ON = 0
@@ -92,18 +137,36 @@ class Mysql
92
137
  SERVER_STATUS_LAST_ROW_SENT = 1 << 7
93
138
  SERVER_STATUS_DB_DROPPED = 1 << 8
94
139
  SERVER_STATUS_NO_BACKSLASH_ESCAPES = 1 << 9
140
+ SERVER_STATUS_METADATA_CHANGED = 1 << 10
141
+ SERVER_QUERY_WAS_SLOW = 1 << 11
142
+ SERVER_PS_OUT_PARAMS = 1 << 12
143
+ SERVER_STATUS_IN_TRANS_READONLY = 1 << 13
144
+ SERVER_SESSION_STATE_CHANGED = 1 << 14
95
145
 
96
146
  # Refresh parameter
97
- REFRESH_GRANT = 1
98
- REFRESH_LOG = 1 << 1
99
- REFRESH_TABLES = 1 << 2
100
- REFRESH_HOSTS = 1 << 3
101
- REFRESH_STATUS = 1 << 4
102
- REFRESH_THREADS = 1 << 5
103
- REFRESH_SLAVE = 1 << 6
104
- REFRESH_MASTER = 1 << 7
105
- REFRESH_READ_LOCK = 1 << 14
106
- REFRESH_FAST = 1 << 15
147
+ REFRESH_GRANT = 1
148
+ REFRESH_LOG = 1 << 1
149
+ REFRESH_TABLES = 1 << 2
150
+ REFRESH_HOSTS = 1 << 3
151
+ REFRESH_STATUS = 1 << 4
152
+ REFRESH_THREADS = 1 << 5
153
+ REFRESH_SLAVE = 1 << 6
154
+ REFRESH_MASTER = 1 << 7
155
+ REFRESH_ERROR_LOG = 1 << 8
156
+ REFRESH_ENGINE_LOG = 1 << 9
157
+ REFRESH_BINARY_LOG = 1 << 10
158
+ REFRESH_RELAY_LOG = 1 << 11
159
+ REFRESH_GENERAL_LOG = 1 << 12
160
+ REFRESH_SLOW_LOG = 1 << 13
161
+ REFRESH_READ_LOCK = 1 << 14
162
+ REFRESH_FAST = 1 << 15
163
+ REFRESH_QUERY_CACHE = 1 << 16
164
+ REFRESH_QUERY_CACHE_FREE = 1 << 17
165
+ REFRESH_DES_KEY_FILE = 1 << 18
166
+ REFRESH_USER_RESOURCES = 1 << 19
167
+ REFRESH_FOR_EXPORT = 1 << 20
168
+ REFRESH_OPTIMIZER_COSTS = 1 << 21
169
+ REFRESH_PERSIST = 1 << 22
107
170
 
108
171
  class Field
109
172
  # Field type
@@ -124,6 +187,13 @@ class Mysql
124
187
  TYPE_NEWDATE = 14
125
188
  TYPE_VARCHAR = 15
126
189
  TYPE_BIT = 16
190
+ TYPE_TIMESTAMP2 = 17
191
+ TYPE_DATETIME2 = 18
192
+ TYPE_TIME2 = 19
193
+ TYPE_TYPED_ARRAY = 20
194
+ TYPE_INVALID = 243
195
+ TYPE_BOOL = 244
196
+ TYPE_JSON = 245
127
197
  TYPE_NEWDECIMAL = 246
128
198
  TYPE_ENUM = 247
129
199
  TYPE_SET = 248
@@ -138,28 +208,42 @@ class Mysql
138
208
  TYPE_INTERVAL = TYPE_ENUM
139
209
 
140
210
  # Flag
141
- NOT_NULL_FLAG = 1
142
- PRI_KEY_FLAG = 2
143
- UNIQUE_KEY_FLAG = 4
144
- MULTIPLE_KEY_FLAG = 8
145
- BLOB_FLAG = 16
146
- UNSIGNED_FLAG = 32
147
- ZEROFILL_FLAG = 64
148
- BINARY_FLAG = 128
149
- ENUM_FLAG = 256
150
- AUTO_INCREMENT_FLAG = 512
151
- TIMESTAMP_FLAG = 1024
152
- SET_FLAG = 2048
153
- NUM_FLAG = 32768
154
- PART_KEY_FLAG = 16384
155
- GROUP_FLAG = 32768
156
- UNIQUE_FLAG = 65536
157
- BINCMP_FLAG = 131072
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
158
240
  end
159
241
 
160
242
  class Stmt
161
243
  # Cursor type
162
- CURSOR_TYPE_NO_CURSOR = 0
163
- CURSOR_TYPE_READ_ONLY = 1
244
+ CURSOR_TYPE_NO_CURSOR = 0
245
+ CURSOR_TYPE_READ_ONLY = 1
246
+ CURSOR_TYPE_FOR_UPDATE = 2
247
+ CURSOR_TYPE_SCROLLABLE = 4
164
248
  end
165
249
  end
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
- CR_ERROR_LAST = 2061
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_/)