outback 0.0.14 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
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