outback 0.0.14 → 1.0.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.
Files changed (45) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG +6 -0
  3. data/LICENSE +21 -0
  4. data/README.md +29 -3
  5. data/lib/outback.rb +16 -11
  6. data/lib/outback/archive.rb +6 -17
  7. data/lib/outback/backup.rb +24 -19
  8. data/lib/outback/cli.rb +6 -2
  9. data/lib/outback/configuration.rb +15 -10
  10. data/lib/outback/directory_source.rb +8 -7
  11. data/lib/outback/directory_target.rb +18 -11
  12. data/lib/outback/encryption_processor.rb +34 -0
  13. data/lib/outback/errors.rb +7 -0
  14. data/lib/outback/logging.rb +7 -0
  15. data/lib/outback/mysql_source.rb +9 -9
  16. data/lib/outback/processor.rb +17 -0
  17. data/lib/outback/s3_target.rb +18 -9
  18. data/lib/outback/sftp_target.rb +70 -0
  19. data/lib/outback/source.rb +9 -2
  20. data/lib/outback/source_archive.rb +17 -0
  21. data/lib/outback/support/attr_setter.rb +1 -1
  22. data/lib/outback/support/configurable.rb +5 -3
  23. data/lib/outback/target.rb +51 -14
  24. data/lib/outback/target_archive.rb +30 -0
  25. data/lib/outback/version.rb +3 -0
  26. data/lib/vendor/enumerable_ext.rb +9 -0
  27. data/lib/{outback/vendor → vendor}/metaclass.rb +1 -1
  28. data/lib/{outback/vendor → vendor}/methodphitamine.rb +1 -1
  29. data/lib/vendor/mysql.rb +1093 -0
  30. data/lib/vendor/mysql/charset.rb +325 -0
  31. data/lib/vendor/mysql/constants.rb +165 -0
  32. data/lib/vendor/mysql/error.rb +989 -0
  33. data/lib/vendor/mysql/packet.rb +78 -0
  34. data/lib/vendor/mysql/protocol.rb +770 -0
  35. data/lib/vendor/numeric_ext.rb +49 -0
  36. data/lib/vendor/string_ext.rb +19 -0
  37. metadata +53 -39
  38. data/MIT-LICENSE +0 -20
  39. data/VERSION +0 -1
  40. data/lib/outback/configuration_error.rb +0 -4
  41. data/lib/outback/directory_archive.rb +0 -8
  42. data/lib/outback/local_archive.rb +0 -6
  43. data/lib/outback/s3_archive.rb +0 -18
  44. data/lib/outback/temp_archive.rb +0 -5
  45. data/lib/outback/vendor/mysql.rb +0 -1214
@@ -0,0 +1,325 @@
1
+ # coding: ascii-8bit
2
+ # Copyright (C) 2008-2012 TOMITA Masahiro
3
+ # mailto:tommy@tmtm.org
4
+
5
+ #
6
+ class Mysql
7
+ # @!attribute [r] number
8
+ # @private
9
+ # @!attribute [r] name
10
+ # @return [String] charset name
11
+ # @!attribute [r] csname
12
+ # @return [String] collation name
13
+ class Charset
14
+ # @private
15
+ # @param [Integer] number
16
+ # @param [String] name
17
+ # @param [String] csname
18
+ def initialize(number, name, csname)
19
+ @number, @name, @csname = number, name, csname
20
+ @unsafe = false
21
+ end
22
+
23
+ attr_reader :number, :name, :csname
24
+
25
+ # @private
26
+ attr_accessor :unsafe
27
+
28
+ # [[charset_number, charset_name, collation_name, default], ...]
29
+ # @private
30
+ CHARSETS = [
31
+ [ 1, "big5", "big5_chinese_ci", true ],
32
+ [ 2, "latin2", "latin2_czech_cs", false],
33
+ [ 3, "dec8", "dec8_swedish_ci", true ],
34
+ [ 4, "cp850", "cp850_general_ci", true ],
35
+ [ 5, "latin1", "latin1_german1_ci", false],
36
+ [ 6, "hp8", "hp8_english_ci", true ],
37
+ [ 7, "koi8r", "koi8r_general_ci", true ],
38
+ [ 8, "latin1", "latin1_swedish_ci", true ],
39
+ [ 9, "latin2", "latin2_general_ci", true ],
40
+ [ 10, "swe7", "swe7_swedish_ci", true ],
41
+ [ 11, "ascii", "ascii_general_ci", true ],
42
+ [ 12, "ujis", "ujis_japanese_ci", true ],
43
+ [ 13, "sjis", "sjis_japanese_ci", true ],
44
+ [ 14, "cp1251", "cp1251_bulgarian_ci", false],
45
+ [ 15, "latin1", "latin1_danish_ci", false],
46
+ [ 16, "hebrew", "hebrew_general_ci", true ],
47
+ [ 17, "filename", "filename", true ],
48
+ [ 18, "tis620", "tis620_thai_ci", true ],
49
+ [ 19, "euckr", "euckr_korean_ci", true ],
50
+ [ 20, "latin7", "latin7_estonian_cs", false],
51
+ [ 21, "latin2", "latin2_hungarian_ci", false],
52
+ [ 22, "koi8u", "koi8u_general_ci", true ],
53
+ [ 23, "cp1251", "cp1251_ukrainian_ci", false],
54
+ [ 24, "gb2312", "gb2312_chinese_ci", true ],
55
+ [ 25, "greek", "greek_general_ci", true ],
56
+ [ 26, "cp1250", "cp1250_general_ci", true ],
57
+ [ 27, "latin2", "latin2_croatian_ci", false],
58
+ [ 28, "gbk", "gbk_chinese_ci", true ],
59
+ [ 29, "cp1257", "cp1257_lithuanian_ci", false],
60
+ [ 30, "latin5", "latin5_turkish_ci", true ],
61
+ [ 31, "latin1", "latin1_german2_ci", false],
62
+ [ 32, "armscii8", "armscii8_general_ci", true ],
63
+ [ 33, "utf8", "utf8_general_ci", true ],
64
+ [ 34, "cp1250", "cp1250_czech_cs", false],
65
+ [ 35, "ucs2", "ucs2_general_ci", true ],
66
+ [ 36, "cp866", "cp866_general_ci", true ],
67
+ [ 37, "keybcs2", "keybcs2_general_ci", true ],
68
+ [ 38, "macce", "macce_general_ci", true ],
69
+ [ 39, "macroman", "macroman_general_ci", true ],
70
+ [ 40, "cp852", "cp852_general_ci", true ],
71
+ [ 41, "latin7", "latin7_general_ci", true ],
72
+ [ 42, "latin7", "latin7_general_cs", false],
73
+ [ 43, "macce", "macce_bin", false],
74
+ [ 44, "cp1250", "cp1250_croatian_ci", false],
75
+ [ 45, "utf8mb4", "utf8mb4_general_ci", true ],
76
+ [ 46, "utf8mb4", "utf8mb4_bin", false],
77
+ [ 47, "latin1", "latin1_bin", false],
78
+ [ 48, "latin1", "latin1_general_ci", false],
79
+ [ 49, "latin1", "latin1_general_cs", false],
80
+ [ 50, "cp1251", "cp1251_bin", false],
81
+ [ 51, "cp1251", "cp1251_general_ci", true ],
82
+ [ 52, "cp1251", "cp1251_general_cs", false],
83
+ [ 53, "macroman", "macroman_bin", false],
84
+ [ 57, "cp1256", "cp1256_general_ci", true ],
85
+ [ 58, "cp1257", "cp1257_bin", false],
86
+ [ 59, "cp1257", "cp1257_general_ci", true ],
87
+ [ 63, "binary", "binary", true ],
88
+ [ 64, "armscii8", "armscii8_bin", false],
89
+ [ 65, "ascii", "ascii_bin", false],
90
+ [ 66, "cp1250", "cp1250_bin", false],
91
+ [ 67, "cp1256", "cp1256_bin", false],
92
+ [ 68, "cp866", "cp866_bin", false],
93
+ [ 69, "dec8", "dec8_bin", false],
94
+ [ 70, "greek", "greek_bin", false],
95
+ [ 71, "hebrew", "hebrew_bin", false],
96
+ [ 72, "hp8", "hp8_bin", false],
97
+ [ 73, "keybcs2", "keybcs2_bin", false],
98
+ [ 74, "koi8r", "koi8r_bin", false],
99
+ [ 75, "koi8u", "koi8u_bin", false],
100
+ [ 77, "latin2", "latin2_bin", false],
101
+ [ 78, "latin5", "latin5_bin", false],
102
+ [ 79, "latin7", "latin7_bin", false],
103
+ [ 80, "cp850", "cp850_bin", false],
104
+ [ 81, "cp852", "cp852_bin", false],
105
+ [ 82, "swe7", "swe7_bin", false],
106
+ [ 83, "utf8", "utf8_bin", false],
107
+ [ 84, "big5", "big5_bin", false],
108
+ [ 85, "euckr", "euckr_bin", false],
109
+ [ 86, "gb2312", "gb2312_bin", false],
110
+ [ 87, "gbk", "gbk_bin", false],
111
+ [ 88, "sjis", "sjis_bin", false],
112
+ [ 89, "tis620", "tis620_bin", false],
113
+ [ 90, "ucs2", "ucs2_bin", false],
114
+ [ 91, "ujis", "ujis_bin", false],
115
+ [ 92, "geostd8", "geostd8_general_ci", true ],
116
+ [ 93, "geostd8", "geostd8_bin", false],
117
+ [ 94, "latin1", "latin1_spanish_ci", false],
118
+ [ 95, "cp932", "cp932_japanese_ci", true ],
119
+ [ 96, "cp932", "cp932_bin", false],
120
+ [ 97, "eucjpms", "eucjpms_japanese_ci", true ],
121
+ [ 98, "eucjpms", "eucjpms_bin", false],
122
+ [ 99, "cp1250", "cp1250_polish_ci", false],
123
+ [128, "ucs2", "ucs2_unicode_ci", false],
124
+ [129, "ucs2", "ucs2_icelandic_ci", false],
125
+ [130, "ucs2", "ucs2_latvian_ci", false],
126
+ [131, "ucs2", "ucs2_romanian_ci", false],
127
+ [132, "ucs2", "ucs2_slovenian_ci", false],
128
+ [133, "ucs2", "ucs2_polish_ci", false],
129
+ [134, "ucs2", "ucs2_estonian_ci", false],
130
+ [135, "ucs2", "ucs2_spanish_ci", false],
131
+ [136, "ucs2", "ucs2_swedish_ci", false],
132
+ [137, "ucs2", "ucs2_turkish_ci", false],
133
+ [138, "ucs2", "ucs2_czech_ci", false],
134
+ [139, "ucs2", "ucs2_danish_ci", false],
135
+ [140, "ucs2", "ucs2_lithuanian_ci", false],
136
+ [141, "ucs2", "ucs2_slovak_ci", false],
137
+ [142, "ucs2", "ucs2_spanish2_ci", false],
138
+ [143, "ucs2", "ucs2_roman_ci", false],
139
+ [144, "ucs2", "ucs2_persian_ci", false],
140
+ [145, "ucs2", "ucs2_esperanto_ci", false],
141
+ [146, "ucs2", "ucs2_hungarian_ci", false],
142
+ [192, "utf8", "utf8_unicode_ci", false],
143
+ [193, "utf8", "utf8_icelandic_ci", false],
144
+ [194, "utf8", "utf8_latvian_ci", false],
145
+ [195, "utf8", "utf8_romanian_ci", false],
146
+ [196, "utf8", "utf8_slovenian_ci", false],
147
+ [197, "utf8", "utf8_polish_ci", false],
148
+ [198, "utf8", "utf8_estonian_ci", false],
149
+ [199, "utf8", "utf8_spanish_ci", false],
150
+ [200, "utf8", "utf8_swedish_ci", false],
151
+ [201, "utf8", "utf8_turkish_ci", false],
152
+ [202, "utf8", "utf8_czech_ci", false],
153
+ [203, "utf8", "utf8_danish_ci", false],
154
+ [204, "utf8", "utf8_lithuanian_ci", false],
155
+ [205, "utf8", "utf8_slovak_ci", false],
156
+ [206, "utf8", "utf8_spanish2_ci", false],
157
+ [207, "utf8", "utf8_roman_ci", false],
158
+ [208, "utf8", "utf8_persian_ci", false],
159
+ [209, "utf8", "utf8_esperanto_ci", false],
160
+ [210, "utf8", "utf8_hungarian_ci", false],
161
+ [211, "utf8", "utf8_sinhala_ci", false],
162
+ [224, "utf8mb4", "utf8mb4_unicode_ci", false],
163
+ [225, "utf8mb4", "utf8mb4_icelandic_ci", false],
164
+ [226, "utf8mb4", "utf8mb4_latvian_ci", false],
165
+ [227, "utf8mb4", "utf8mb4_romanian_ci", false],
166
+ [228, "utf8mb4", "utf8mb4_slovenian_ci", false],
167
+ [229, "utf8mb4", "utf8mb4_polish_ci", false],
168
+ [230, "utf8mb4", "utf8mb4_estonian_ci", false],
169
+ [231, "utf8mb4", "utf8mb4_spanish_ci", false],
170
+ [232, "utf8mb4", "utf8mb4_swedish_ci", false],
171
+ [233, "utf8mb4", "utf8mb4_turkish_ci", false],
172
+ [234, "utf8mb4", "utf8mb4_czech_ci", false],
173
+ [235, "utf8mb4", "utf8mb4_danish_ci", false],
174
+ [236, "utf8mb4", "utf8mb4_lithuanian_ci", false],
175
+ [237, "utf8mb4", "utf8mb4_slovak_ci", false],
176
+ [238, "utf8mb4", "utf8mb4_spanish2_ci", false],
177
+ [239, "utf8mb4", "utf8mb4_roman_ci", false],
178
+ [240, "utf8mb4", "utf8mb4_persian_ci", false],
179
+ [241, "utf8mb4", "utf8mb4_esperanto_ci", false],
180
+ [242, "utf8mb4", "utf8mb4_hungarian_ci", false],
181
+ [243, "utf8mb4", "utf8mb4_sinhala_ci", false],
182
+ [254, "utf8", "utf8_general_cs", false],
183
+ ]
184
+
185
+ # @private
186
+ UNSAFE_CHARSET = [
187
+ "big5", "sjis", "filename", "gbk", "ucs2", "cp932",
188
+ ]
189
+
190
+ # @private
191
+ NUMBER_TO_CHARSET = {}
192
+ # @private
193
+ COLLATION_TO_CHARSET = {}
194
+ # @private
195
+ CHARSET_DEFAULT = {}
196
+ CHARSETS.each do |number, csname, clname, default|
197
+ cs = Charset.new number, csname, clname
198
+ cs.unsafe = true if UNSAFE_CHARSET.include? csname
199
+ NUMBER_TO_CHARSET[number] = cs
200
+ COLLATION_TO_CHARSET[clname] = cs
201
+ CHARSET_DEFAULT[csname] = cs if default
202
+ end
203
+
204
+ # @private
205
+ BINARY_CHARSET_NUMBER = CHARSET_DEFAULT['binary'].number
206
+
207
+ # @private
208
+ # @param [Integer] n
209
+ # @return [Mysql::Charset]
210
+ def self.by_number(n)
211
+ raise ClientError, "unknown charset number: #{n}" unless NUMBER_TO_CHARSET.key? n
212
+ NUMBER_TO_CHARSET[n]
213
+ end
214
+
215
+ # @private
216
+ # @param [String] str
217
+ # @return [Mysql::Charset]
218
+ def self.by_name(str)
219
+ ret = COLLATION_TO_CHARSET[str] || CHARSET_DEFAULT[str]
220
+ raise ClientError, "unknown charset: #{str}" unless ret
221
+ ret
222
+ end
223
+
224
+ if defined? Encoding
225
+
226
+ # @private
227
+ # MySQL Charset -> Ruby's Encodeing
228
+ CHARSET_ENCODING = {
229
+ "armscii8" => nil,
230
+ "ascii" => Encoding::US_ASCII,
231
+ "big5" => Encoding::Big5,
232
+ "binary" => Encoding::ASCII_8BIT,
233
+ "cp1250" => Encoding::Windows_1250,
234
+ "cp1251" => Encoding::Windows_1251,
235
+ "cp1256" => Encoding::Windows_1256,
236
+ "cp1257" => Encoding::Windows_1257,
237
+ "cp850" => Encoding::CP850,
238
+ "cp852" => Encoding::CP852,
239
+ "cp866" => Encoding::IBM866,
240
+ "cp932" => Encoding::Windows_31J,
241
+ "dec8" => nil,
242
+ "eucjpms" => Encoding::EucJP_ms,
243
+ "euckr" => Encoding::EUC_KR,
244
+ "gb2312" => Encoding::EUC_CN,
245
+ "gbk" => Encoding::GBK,
246
+ "geostd8" => nil,
247
+ "greek" => Encoding::ISO_8859_7,
248
+ "hebrew" => Encoding::ISO_8859_8,
249
+ "hp8" => nil,
250
+ "keybcs2" => nil,
251
+ "koi8r" => Encoding::KOI8_R,
252
+ "koi8u" => Encoding::KOI8_U,
253
+ "latin1" => Encoding::ISO_8859_1,
254
+ "latin2" => Encoding::ISO_8859_2,
255
+ "latin5" => Encoding::ISO_8859_9,
256
+ "latin7" => Encoding::ISO_8859_13,
257
+ "macce" => Encoding::MacCentEuro,
258
+ "macroman" => Encoding::MacRoman,
259
+ "sjis" => Encoding::SHIFT_JIS,
260
+ "swe7" => nil,
261
+ "tis620" => Encoding::TIS_620,
262
+ "ucs2" => Encoding::UTF_16BE,
263
+ "ujis" => Encoding::EucJP_ms,
264
+ "utf8" => Encoding::UTF_8,
265
+ "utf8mb4" => Encoding::UTF_8,
266
+ }
267
+
268
+ # @private
269
+ # @param [String] value
270
+ # @return [String]
271
+ def self.to_binary(value)
272
+ value.force_encoding Encoding::ASCII_8BIT
273
+ end
274
+
275
+ # @private
276
+ # convert raw to encoding and convert to Encoding.default_internal
277
+ # @param [String] raw
278
+ # @param [Encoding] encoding
279
+ # @return [String] result
280
+ def self.convert_encoding(raw, encoding)
281
+ raw.force_encoding(encoding).encode
282
+ end
283
+
284
+ # @private
285
+ # retrun corresponding Ruby encoding
286
+ # @return [Encoding] encoding
287
+ def encoding
288
+ enc = CHARSET_ENCODING[@name.downcase]
289
+ raise Mysql::ClientError, "unsupported charset: #{@name}" unless enc
290
+ enc
291
+ end
292
+
293
+ # @private
294
+ # convert encoding to corrensponding to MySQL charset
295
+ # @param [String] value
296
+ # @return [String]
297
+ def convert(value)
298
+ if value.is_a? String and value.encoding != Encoding::ASCII_8BIT
299
+ value = value.encode encoding
300
+ end
301
+ value
302
+ end
303
+
304
+ else
305
+ # for Ruby 1.8
306
+
307
+ def self.to_binary(value)
308
+ value
309
+ end
310
+
311
+ def self.convert_encoding(raw, encoding)
312
+ raw
313
+ end
314
+
315
+ def encoding
316
+ nil
317
+ end
318
+
319
+ def convert(value)
320
+ value
321
+ end
322
+
323
+ end
324
+ end
325
+ end
@@ -0,0 +1,165 @@
1
+ # coding: ascii-8bit
2
+ # Copyright (C) 2003-2008 TOMITA Masahiro
3
+ # mailto:tommy@tmtm.org
4
+
5
+ class Mysql
6
+ # Command
7
+ COM_SLEEP = 0
8
+ COM_QUIT = 1
9
+ COM_INIT_DB = 2
10
+ COM_QUERY = 3
11
+ COM_FIELD_LIST = 4
12
+ COM_CREATE_DB = 5
13
+ COM_DROP_DB = 6
14
+ COM_REFRESH = 7
15
+ COM_SHUTDOWN = 8
16
+ COM_STATISTICS = 9
17
+ COM_PROCESS_INFO = 10
18
+ COM_CONNECT = 11
19
+ COM_PROCESS_KILL = 12
20
+ COM_DEBUG = 13
21
+ COM_PING = 14
22
+ COM_TIME = 15
23
+ COM_DELAYED_INSERT = 16
24
+ COM_CHANGE_USER = 17
25
+ COM_BINLOG_DUMP = 18
26
+ COM_TABLE_DUMP = 19
27
+ COM_CONNECT_OUT = 20
28
+ COM_REGISTER_SLAVE = 21
29
+ COM_STMT_PREPARE = 22
30
+ COM_STMT_EXECUTE = 23
31
+ COM_STMT_SEND_LONG_DATA = 24
32
+ COM_STMT_CLOSE = 25
33
+ COM_STMT_RESET = 26
34
+ COM_SET_OPTION = 27
35
+ COM_STMT_FETCH = 28
36
+
37
+ # 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
56
+
57
+ # 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
80
+
81
+ # Server Option
82
+ OPTION_MULTI_STATEMENTS_ON = 0
83
+ OPTION_MULTI_STATEMENTS_OFF = 1
84
+
85
+ # Server Status
86
+ SERVER_STATUS_IN_TRANS = 1
87
+ SERVER_STATUS_AUTOCOMMIT = 1 << 1
88
+ SERVER_MORE_RESULTS_EXISTS = 1 << 3
89
+ SERVER_QUERY_NO_GOOD_INDEX_USED = 1 << 4
90
+ SERVER_QUERY_NO_INDEX_USED = 1 << 5
91
+ SERVER_STATUS_CURSOR_EXISTS = 1 << 6
92
+ SERVER_STATUS_LAST_ROW_SENT = 1 << 7
93
+ SERVER_STATUS_DB_DROPPED = 1 << 8
94
+ SERVER_STATUS_NO_BACKSLASH_ESCAPES = 1 << 9
95
+
96
+ # 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
107
+
108
+ class Field
109
+ # Field type
110
+ TYPE_DECIMAL = 0
111
+ TYPE_TINY = 1
112
+ TYPE_SHORT = 2
113
+ TYPE_LONG = 3
114
+ TYPE_FLOAT = 4
115
+ TYPE_DOUBLE = 5
116
+ TYPE_NULL = 6
117
+ TYPE_TIMESTAMP = 7
118
+ TYPE_LONGLONG = 8
119
+ TYPE_INT24 = 9
120
+ TYPE_DATE = 10
121
+ TYPE_TIME = 11
122
+ TYPE_DATETIME = 12
123
+ TYPE_YEAR = 13
124
+ TYPE_NEWDATE = 14
125
+ TYPE_VARCHAR = 15
126
+ TYPE_BIT = 16
127
+ TYPE_NEWDECIMAL = 246
128
+ TYPE_ENUM = 247
129
+ TYPE_SET = 248
130
+ TYPE_TINY_BLOB = 249
131
+ TYPE_MEDIUM_BLOB = 250
132
+ TYPE_LONG_BLOB = 251
133
+ TYPE_BLOB = 252
134
+ TYPE_VAR_STRING = 253
135
+ TYPE_STRING = 254
136
+ TYPE_GEOMETRY = 255
137
+ TYPE_CHAR = TYPE_TINY
138
+ TYPE_INTERVAL = TYPE_ENUM
139
+
140
+ # 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
158
+ end
159
+
160
+ class Stmt
161
+ # Cursor type
162
+ CURSOR_TYPE_NO_CURSOR = 0
163
+ CURSOR_TYPE_READ_ONLY = 1
164
+ end
165
+ end