swift-db-mysql 0.2.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,11 @@
1
+ == 0.3.0 (2013-02-18)
2
+
3
+ * added encoding option to Adapter#new
4
+
5
+ == 0.2.3 (2013-01-22)
6
+
7
+ * fix named parameter initialization issue in GCC versions older than 4.6
8
+
1
9
  == 0.2.2 (2012-11-23)
2
10
 
3
11
  * 2.x build fixes
data/README.md CHANGED
@@ -10,6 +10,11 @@ MRI adapter for MySQL
10
10
  * Asynchronous support
11
11
  * Nested Transactions
12
12
 
13
+ ## Requirements
14
+
15
+ * mysql client deveopment libraries
16
+ * uuid development libraries
17
+
13
18
  ## API
14
19
 
15
20
  ```
@@ -88,7 +88,7 @@ char *ssl_option(VALUE ssl, char *key) {
88
88
 
89
89
  VALUE db_mysql_adapter_initialize(VALUE self, VALUE options) {
90
90
  char MYSQL_BOOL_TRUE = 1;
91
- VALUE db, user, pass, host, port, ssl;
91
+ VALUE db, user, pass, host, port, ssl, enc;
92
92
  Adapter *a = db_mysql_adapter_handle(self);
93
93
 
94
94
  if (TYPE(options) != T_HASH)
@@ -100,6 +100,7 @@ VALUE db_mysql_adapter_initialize(VALUE self, VALUE options) {
100
100
  host = rb_hash_aref(options, ID2SYM(rb_intern("host")));
101
101
  port = rb_hash_aref(options, ID2SYM(rb_intern("port")));
102
102
  ssl = rb_hash_aref(options, ID2SYM(rb_intern("ssl")));
103
+ enc = rb_hash_aref(options, ID2SYM(rb_intern("encoding")));
103
104
 
104
105
  if (NIL_P(db))
105
106
  rb_raise(eSwiftConnectionError, "Invalid db name");
@@ -109,6 +110,8 @@ VALUE db_mysql_adapter_initialize(VALUE self, VALUE options) {
109
110
  port = rb_str_new2("3306");
110
111
  if (NIL_P(user))
111
112
  user = sUser;
113
+ if (NIL_P(enc))
114
+ enc = rb_str_new2("utf8");
112
115
 
113
116
  a->connection = mysql_init(0);
114
117
  mysql_options(a->connection, MYSQL_OPT_RECONNECT, &MYSQL_BOOL_TRUE);
@@ -132,7 +135,9 @@ VALUE db_mysql_adapter_initialize(VALUE self, VALUE options) {
132
135
  CSTRING(host), CSTRING(user), CSTRING(pass), CSTRING(db), atoi(CSTRING(port)), 0, CLIENT_FOUND_ROWS))
133
136
  rb_raise(eSwiftConnectionError, "%s", mysql_error(a->connection));
134
137
 
135
- mysql_set_character_set(a->connection, "utf8");
138
+ if (mysql_set_character_set(a->connection, CSTRING(enc)) != 0)
139
+ rb_raise(eSwiftConnectionError, "%s", mysql_error(a->connection));
140
+
136
141
  mysql_set_local_infile_handler(
137
142
  a->connection,
138
143
  db_mysql_adapter_infile_init, db_mysql_adapter_infile_read, db_mysql_adapter_infile_end, db_mysql_adapter_infile_error,
@@ -27,12 +27,8 @@ DLL_PRIVATE VALUE rb_uuid_string();
27
27
  DLL_PRIVATE VALUE db_mysql_bind_sql(VALUE, VALUE, VALUE);
28
28
 
29
29
  typedef struct Command {
30
- union {
31
- struct {
32
- MYSQL *connection;
33
- VALUE sql;
34
- };
35
- MYSQL_STMT *statement;
36
- };
37
30
  int status;
31
+ VALUE sql;
32
+ MYSQL *connection;
33
+ MYSQL_STMT *statement;
38
34
  } Command;
@@ -5,6 +5,14 @@ describe 'mysql adapter' do
5
5
  assert db
6
6
  end
7
7
 
8
+ it 'it should allow custom encoding' do
9
+ assert Swift::DB::Mysql.new(db: 'swift_test', encoding: 'utf8mb4')
10
+ end
11
+
12
+ it 'should raise connection error on not so awesome encoding' do
13
+ assert_raises(Swift::ConnectionError) {Swift::DB::Mysql.new(db: 'swift_test', encoding: 'not_awesome')}
14
+ end
15
+
8
16
  it 'should execute sql' do
9
17
  assert db.execute("select * from information_schema.tables limit 1")
10
18
  end
metadata CHANGED
@@ -1,25 +1,24 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: swift-db-mysql
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
5
4
  prerelease:
5
+ version: 0.3.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Bharanee Rathna
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-23 00:00:00.000000000 Z
12
+ date: 2013-02-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: rake
15
+ type: :development
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
21
  version: '0'
22
- type: :development
23
22
  prerelease: false
24
23
  version_requirements: !ruby/object:Gem::Requirement
25
24
  none: false
@@ -27,6 +26,7 @@ dependencies:
27
26
  - - ! '>='
28
27
  - !ruby/object:Gem::Version
29
28
  version: '0'
29
+ name: rake
30
30
  description: Swift adapter for MySQL database
31
31
  email:
32
32
  - deepfryed@gmail.com
@@ -44,11 +44,11 @@ files:
44
44
  - ext/swift/db/mysql/common.c
45
45
  - ext/swift/db/mysql/typecast.h
46
46
  - ext/swift/db/mysql/datetime.h
47
- - ext/swift/db/mysql/gvl.h
48
47
  - ext/swift/db/mysql/result.h
49
- - ext/swift/db/mysql/common.h
50
48
  - ext/swift/db/mysql/statement.h
51
49
  - ext/swift/db/mysql/adapter.h
50
+ - ext/swift/db/mysql/gvl.h
51
+ - ext/swift/db/mysql/common.h
52
52
  - ext/swift/db/mysql/extconf.rb
53
53
  - test/helper.rb
54
54
  - test/test_ssl.rb