swift-db-mysql 0.2.2 → 0.3.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.
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