transactd 2.2.0-x64-mswin64-100 → 2.3.0-x64-mswin64-100

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d61a88fb3488ef965c2dbce401eb361cabf971dc
4
- data.tar.gz: ac6b5156ed1fb77da10d3b99e91ca0f268039a04
3
+ metadata.gz: 2596599aadfe558a491cd8bcea56206e28ddb1f2
4
+ data.tar.gz: f3704841763dcfb833e9d6b5913951520372da46
5
5
  SHA512:
6
- metadata.gz: 3bfe7e2aaa513db9bc78fcfb1ddc31d39b1182d9cfcaf6d6acd293f9523663a6e0d5661820c30212fe247e726395c6a3114b2cf44e2a1c00baaaf938a2f4df0c
7
- data.tar.gz: 2c02a2d677f86e06f4498c4e8c7aef63873912032bd61b9c4f0cfc8a15ea93b4090bd1cc7444f21dfd2f558451c7e05666cc4b6c679d81c1266f06bd24a34c94
6
+ metadata.gz: 0ec1375332babdf6c237adf478f71eb6102b6f5e19134b2267b972e02f639af6016068921624d95caa6e55ed466e566555aed36365fa5b6d025ff282007fb93f
7
+ data.tar.gz: 87260cf2b803c11188d0a46e091bbbfb80df039482babb1c0c0a025d82e1da85fb22ceb1c3af0488246938455bf8b7b402d3e7b52eddf79ea02ac35a48edc38b
data/BUILD_UNIX-JA CHANGED
@@ -73,10 +73,10 @@ tar xzf mysql-5.6.20.tar.gz
73
73
  pluginディレクトリに展開します。
74
74
  ```
75
75
  cd ~
76
- wget http://www.bizstation.jp/al/transactd/download/transactd-2.1.0/transactd-source-2.1.0.zip
76
+ wget http://www.bizstation.jp/al/transactd/download/transactd-2.3.0/transactd-source-2.3.0.zip
77
77
  #Mac OS Xでは
78
- #curl -O http://www.bizstation.jp/al/transactd/download/transactd-2.1.0/transactd-source-2.1.0.zip
79
- unzip -q transactd-source-2.1.0.zip -d transactd
78
+ #curl -O http://www.bizstation.jp/al/transactd/download/transactd-2.3.0/transactd-source-2.3.0.zip
79
+ unzip -q transactd-source-2.3.0.zip -d transactd
80
80
  mv transactd ~/mysql-5.6.20/plugin/
81
81
  ```
82
82
 
@@ -121,10 +121,10 @@ make install
121
121
  からソースコードをダウンロードします。
122
122
  ```
123
123
  cd ~
124
- wget http://www.bizstation.jp/al/transactd/download/transactd-2.1.0/transactd-source-2.1.0.zip
124
+ wget http://www.bizstation.jp/al/transactd/download/transactd-2.3.0/transactd-source-2.3.0.zip
125
125
  #Mac OS Xでは
126
- #curl curl -O http://www.bizstation.jp/al/transactd/download/transactd-2.1.0/transactd-source-2.1.0.zip
127
- unzip -q transactd-source-2.1.0.zip -d transactd
126
+ #curl curl -O http://www.bizstation.jp/al/transactd/download/transactd-2.3.0/transactd-source-2.3.0.zip
127
+ unzip -q transactd-source-2.3.0.zip -d transactd
128
128
  ```
129
129
 
130
130
  ### 5-2 CMakeの実行
data/README CHANGED
@@ -1,4 +1,4 @@
1
- Transactd release note
1
+ Transactd readme
2
2
  ===============================================================================
3
3
  Transactd is plugin which adds NoSQL access to MySQL/MariaDB.
4
4
 
@@ -27,7 +27,9 @@ Introduction
27
27
  Transactd consists of the server side plugin and the client side modules.
28
28
  The server side plugin is called "Transactd Plugin" and the client side module
29
29
  is called "Transactd clients".
30
-
30
+ Transactd has been constantly updated. This text has also been updated with the
31
+ latest information in this release. Please refer to the RELEASE_NOTE.md the
32
+ changes in this release.
31
33
 
32
34
 
33
35
  Preparation of Transactd Plugin binary
@@ -45,13 +47,13 @@ mysql>show variables like 'version';
45
47
  ```
46
48
  The names of file to download are formed under following rules:
47
49
 
48
- * Windows - transactd-[platform]-2.1.0_[mysql-version].zip
49
- * Linux - transactd-linux-x86_64-2.1.0_[mysql-version].tar.gz
50
+ * Windows - transactd-[platform]-2.3.0_[mysql-version].zip
51
+ * Linux - transactd-linux-x86_64-2.3.0_[mysql-version].tar.gz
50
52
 
51
53
  [platform] is win32 or win64, [mysql-version] is mysql-5.x.x or mariadb-5.5.x.
52
54
  For example, the URL for Linux-x86_64bit mysql-5.6.14 is as follows:
53
55
 
54
- http://www.bizstation.jp/al/transactd/download/transactd-2.1.0/transactd-linux-x86_64-2.1.0_mysql-5.6.14.tar.gz
56
+ http://www.bizstation.jp/al/transactd/download/transactd-2.3.0/transactd-linux-x86_64-2.3.0_mysql-5.6.14.tar.gz
55
57
 
56
58
  You also can download source code archive and build from it.
57
59
  In this case, the source code of MySQL/MariaDB is also required.
@@ -98,8 +100,8 @@ administrator authority.
98
100
 
99
101
  2. Extract the tar.gz file and move into it.
100
102
  ```
101
- tar zxf transactd-linux-x86_64-2.1.0_mysql-5.6.14.tar.gz
102
- cd transactd-linux-x86_64-2.1.0_mysql-5.6.14
103
+ tar zxf transactd-linux-x86_64-2.3.0_mysql-5.6.14.tar.gz
104
+ cd transactd-linux-x86_64-2.3.0_mysql-5.6.14
103
105
  ```
104
106
 
105
107
  3. Copy libtransactd.so to `[MySQL|MariaDB installed directory]/lib/plugin`.
@@ -130,13 +132,13 @@ The Transactd clients are required to access data through Transactd Plugin.
130
132
  Download the Transactd client binaries for your platform.
131
133
  The names of file to download are formed under following rules:
132
134
 
133
- * Windows - transactd-client-[platform]_with_sdk-2.1.0.zip
134
- * Linux - transactd-client-linux-x86_64_with_sdk-2.1.0.tar.gz
135
+ * Windows - transactd-client-[platform]_with_sdk-2.3.0.zip
136
+ * Linux - transactd-client-linux-x86_64_with_sdk-2.3.0.tar.gz
135
137
 
136
138
  [platform] is win32 or win64.
137
139
  For example, the URL for Linux-x86_64bit is as follows:
138
140
 
139
- http://www.bizstation.jp/al/transactd/download/transactd-client/transactd-client-linux-x86_64_with_sdk-2.1.0.tar.gz
141
+ http://www.bizstation.jp/al/transactd/download/transactd-client/transactd-client-linux-x86_64_with_sdk-2.3.0.tar.gz
140
142
 
141
143
 
142
144
 
@@ -144,11 +146,11 @@ Installing Transactd clients
144
146
  -------------------------------------------------------------------------------
145
147
 
146
148
  ### Installing on Windows
147
- 1. Open transactd-client-[platform]_with_sdk-2.1.0.zip from explorer.
148
- 2. Select the root folder transactd-client-[platform]-with_sdk-2.1.0 and
149
+ 1. Open transactd-client-[platform]_with_sdk-2.3.0.zip from explorer.
150
+ 2. Select the root folder transactd-client-[platform]-with_sdk-2.3.0 and
149
151
  copy to a folder of your choice.
150
- 3. Run the "install.cmd" in the transactd-client-[platform]_with_sdk-2.1.0 folder.
151
- This command adds "transactd-client-[platform]_with_sdk-2.1.0\bin" folder to
152
+ 3. Run the "install.cmd" in the transactd-client-[platform]_with_sdk-2.3.0 folder.
153
+ This command adds "transactd-client-[platform]_with_sdk-2.3.0\bin" folder to
152
154
  the system environment variables "PATH".
153
155
 
154
156
  C++ clients contains the following three files which is placed in bin folder.
@@ -178,8 +180,8 @@ There are binaries which is compiled with following 7 compilers:
178
180
 
179
181
  2. Extract the tar.gz file and move into it.
180
182
  ```
181
- tar zxf transactd-client-linux-x86_64_with_sdk-2.1.0.tar.gz
182
- cd transactd-client-linux-x86_64_with_sdk-2.1.0
183
+ tar zxf transactd-client-linux-x86_64_with_sdk-2.3.0.tar.gz
184
+ cd transactd-client-linux-x86_64_with_sdk-2.3.0
183
185
  ```
184
186
 
185
187
  3. Run the install script.
@@ -249,7 +251,7 @@ Test script executes the tests in following order:
249
251
  ### Executing on Windows
250
252
  1. Move to the client directory.
251
253
  ```
252
- cd transactd-client-[platform]_with_sdk-2.1.0
254
+ cd transactd-client-[platform]_with_sdk-2.3.0
253
255
  ```
254
256
 
255
257
  2. run test:
@@ -277,7 +279,7 @@ Test script executes the tests in following order:
277
279
  ### Executing on Linux
278
280
  1. Move to the client directory.
279
281
  ```
280
- cd transactd-client-linux-x86_64_with_sdk-2.1.0
282
+ cd transactd-client-linux-x86_64_with_sdk-2.3.0
281
283
  ```
282
284
 
283
285
  2. run test:
data/README-JA CHANGED
@@ -1,4 +1,4 @@
1
- Transactd リリースノート
1
+ Transactd Readme
2
2
  ===============================================================================
3
3
  Transactd PluginはMySQL/MariaDBにNoSQLアクセスを追加するプラグインです。
4
4
 
@@ -28,6 +28,8 @@ Transactdはプラグインとして動作するサーバー側モジュール
28
28
  るクライアント側モジュールから構成されます。
29
29
  以降はこれらを区別して、サーバー側をTransactd Plugin、クライアント側をTransactd
30
30
  クライアントと呼びます。
31
+ Transactdは、常に更新されています。このテキストもこのリリースの最新の情報に更新
32
+ されています。今回のリリースでの変更点は RELEASE_NOTE-JA.mdを参照してください。
31
33
 
32
34
 
33
35
 
@@ -45,14 +47,14 @@ show variables like 'version';
45
47
  ```
46
48
  ダウンロードするファイルは
47
49
 
48
- * Windowsの場合 transactd-[platform]-2.1.0_[mysql-version].zip
49
- * Linuxの場合 transactd-linux-x86_64-2.1.0_[mysql-version].tar.gz
50
+ * Windowsの場合 transactd-[platform]-2.3.0_[mysql-version].zip
51
+ * Linuxの場合 transactd-linux-x86_64-2.3.0_[mysql-version].tar.gz
50
52
 
51
53
  といった形式です。
52
54
  [platform]はwin32またはwin64、[mysql-version]はmysql-5.x.xまたはmariadb-5.5.xです。
53
55
  たとえば、Linux-x86_64bit mysql-5.6.14用の完全なURLは以下の通りです。
54
56
 
55
- http://www.bizstation.jp/al/transactd/download/transactd-2.1.0/transactd-linux-x86_64-2.1.0_mysql-5.6.14.tar.gz
57
+ http://www.bizstation.jp/al/transactd/download/transactd-2.3.0/transactd-linux-x86_64-2.3.0_mysql-5.6.14.tar.gz
56
58
 
57
59
  また、ソースをダウンロードしてビルドすることもできます。その場合は、
58
60
  MySQL/MariaDBのソースコードも必要です。ビルド方法はソースコード内の
@@ -97,8 +99,8 @@ MySQL/MariaDBのバイナリに変更を加えることなく、所定の位置
97
99
 
98
100
  2. ダウンロードしたtar.gzを解凍し、解凍したフォルダに移動します。
99
101
  ```
100
- tar zxf transactd-linux-x86_64-2.1.0_mysql-5.6.14.tar.gz
101
- cd transactd-linux-x86_64-2.1.0_mysql-5.6.14
102
+ tar zxf transactd-linux-x86_64-2.3.0_mysql-5.6.14.tar.gz
103
+ cd transactd-linux-x86_64-2.3.0_mysql-5.6.14
102
104
  ```
103
105
 
104
106
  3. [MySQL|MariaDBインストールフォルダ]/lib/pluginに、libtransactd.soをコピー
@@ -129,13 +131,13 @@ Transactd Pluginを介してデータにアクセスするにはTransactdクラ
129
131
  プラットフォームに合ったビルド済Transactdクライアントをダウンロードします。
130
132
  ダウンロードするファイルは
131
133
 
132
- * Windowsの場合 transactd-client-[platform]_with_sdk-2.1.0.zip
133
- * Linuxの場合 transactd-client-linux-x86_64_with_sdk-2.1.0.tar.gz
134
+ * Windowsの場合 transactd-client-[platform]_with_sdk-2.3.0.zip
135
+ * Linuxの場合 transactd-client-linux-x86_64_with_sdk-2.3.0.tar.gz
134
136
 
135
137
  といった形式です。[platform]はwin32またはwin64です。
136
138
  たとえば、LINUXの完全なURLは以下の通りです。
137
139
 
138
- http://www.bizstation.jp/al/transactd/download/transactd-client/transactd-client-linux-x86_64_with_sdk-2.1.0.tar.gz
140
+ http://www.bizstation.jp/al/transactd/download/transactd-client/transactd-client-linux-x86_64_with_sdk-2.3.0.tar.gz
139
141
 
140
142
 
141
143
 
@@ -143,11 +145,11 @@ Transactdクライアントのインストール
143
145
  -------------------------------------------------------------------------------
144
146
 
145
147
  ### Windowsでのインストール
146
- 1. ダウンロードしたtransactd-client-[platform]_with_sdk-2.1.0.zipを開きます。
147
- 2. ルートフォルダーのtransactd-client-[platform]_with_sdk-2.1.0ごと適当なフォルダに
148
+ 1. ダウンロードしたtransactd-client-[platform]_with_sdk-2.3.0.zipを開きます。
149
+ 2. ルートフォルダーのtransactd-client-[platform]_with_sdk-2.3.0ごと適当なフォルダに
148
150
  コピーします。
149
- 3. transactd-client-[platform]_with_sdk-2.1.0直下にあるinstall.cmdを実行します。
150
- これによりtransactd-client-[platform]_with_sdk-2.1.0\binフォルダをシステム環境変数
151
+ 3. transactd-client-[platform]_with_sdk-2.3.0直下にあるinstall.cmdを実行します。
152
+ これによりtransactd-client-[platform]_with_sdk-2.3.0\binフォルダをシステム環境変数
151
153
  PATHに追加します。
152
154
 
153
155
  C++クライアントは binフォルダに配置された以下の3つのDLLからなります。
@@ -176,8 +178,8 @@ C++クライアントは binフォルダに配置された以下の3つのDLL
176
178
 
177
179
  2. ダウンロードしたtar.gzを解凍し、解凍したフォルダに移動します。
178
180
  ```
179
- tar zxf transactd-client-linux-x86_64_with_sdk-2.1.0.tar.gz
180
- cd transactd-client-linux-x86_64_with_sdk-2.1.0
181
+ tar zxf transactd-client-linux-x86_64_with_sdk-2.3.0.tar.gz
182
+ cd transactd-client-linux-x86_64_with_sdk-2.3.0
181
183
  ```
182
184
 
183
185
  3. インストールスクリプトを実行します。
@@ -252,7 +254,7 @@ Transactd Pluginとクライアントのインストールが済んだら、テ
252
254
  ### Windowsでの起動
253
255
  1. クライアントのインストールで解凍したフォルダに移動します
254
256
  ```
255
- cd transactd-client-[platform]_with_sdk-2.1.0
257
+ cd transactd-client-[platform]_with_sdk-2.3.0
256
258
  ```
257
259
 
258
260
  2. テストの起動
@@ -279,7 +281,7 @@ Transactd Pluginとクライアントのインストールが済んだら、テ
279
281
  ### Linuxでの起動
280
282
  1. クライアントのインストールで解凍したフォルダに移動します
281
283
  ```
282
- cd transactd-client-linux-x86_64_with_sdk-2.1.0
284
+ cd transactd-client-linux-x86_64_with_sdk-2.3.0
283
285
  ```
284
286
 
285
287
  2. テストの起動
data/RELEASE_NOTE ADDED
@@ -0,0 +1,144 @@
1
+ Release note
2
+
3
+ ================================================================================
4
+ Version 2.3.0 2015-03-20
5
+ ================================================================================
6
+
7
+ Upgrade Notes
8
+ --------------------------------------------------------------------------------
9
+ * Compatibility between server plugin and clients.
10
+ You have to upgrade both of the server plugin and client libraries.
11
+ The protocol that is used communicating between server and client were changed
12
+ for database::reconnect() method. This version of server plugin and clients
13
+ has no compatibility with the past versions of them.
14
+ If you access to 2.2 or earlier version of server plugin with this version of
15
+ clients, error code SERVER_CLIENT_NOT_COMPATIBLE (3003) will be returned.
16
+
17
+ * Some methods were moved.
18
+ table::usePadChar() and table:: trimPadChar() were moved to fielddef structure.
19
+ The setter methods of them were put together to setPadCharSettings(bool set,
20
+ bool trim). By this change, these values can be saved to the schema.
21
+ This affects to the field types ft_string, ft_wstring, ft_mychar and ft_mywchar.
22
+ Other field types are not affected.
23
+ The default value of table::usePadChar() and trimPadChar() are true. If you did
24
+ not change this value, there is no changes on program behavior.
25
+ If you changed the values, you have to fix program code.
26
+
27
+ For example, the code `tb->setUsePadChar(false);` has to be modified like this:
28
+ ```
29
+ for (int i = 0 ; i < tb->tableDef()->fieldCount ; ++i)
30
+ {
31
+ fielddef* fd = const_cast<fielddef*>(&tb->tableDef()->fieldDefs[i]);
32
+ fd->setPadCharSettings(false/*set*/, true/*trim*/);
33
+ }
34
+ ```
35
+ Note: Changes in this code are volatile, and not saved on schema. Add updating
36
+ schema code if you need.
37
+
38
+ * openTable in transaction.
39
+ The error code STATUS_ALREADY_INTRANSACTION is added. If openTable is called
40
+ in transaction, and binary log is enable, the server returns this error.
41
+ The binary log was supported until now, but there was the problem that if
42
+ openTable is called in transaction the binlog map will not be generated and
43
+ replication does not go well. So that, we modified the server plugin to return
44
+ error if openTable is called in transaction with enable binary log. There is
45
+ no changes if binary log is disabled.
46
+
47
+ New Features
48
+ --------------------------------------------------------------------------------
49
+ * Add bias parameter ROW_LOCK_S to seek and step read operations in
50
+ MULTILOCK_READ_COMMITED transaction.
51
+ By this, you can control lock in more detail with using shared lock.
52
+
53
+ * Add limit option to finish searching to table query with queryBase.
54
+ In the past, the value of limit option meant that max number of records which
55
+ will be got with one operation. The clients automatically called read operation
56
+ many times until the other finish conditions are met. In effect, limit was the
57
+ option that save receive buffer.
58
+ If you set true to queryBase::stopAtLimit(), the limit option behaves as finish
59
+ condition. The default value is false, and it is same as the past behavior.
60
+
61
+ * Add findContinue to enum eFindType for table::find(eFindType type).
62
+ If the last find operation has been finished because of the filter conditions
63
+ maxRecord or rejectCount, it is able to continue searching from next record
64
+ with findContinue.
65
+ To check the cause of finishing the last operation, table::statReasonOfFind()
66
+ and table::lastFindDirection() which return more detail status were added.
67
+
68
+ * Add ActiveTable::readMore(). It is same as above findContinue for ActiveTable.
69
+
70
+ * Add first and last method to recordset grouping functions. These methods
71
+ return first or last record in each group. Strings and numbers are supported.
72
+ These methods are useful when use non-normalized field values to avoid JOIN
73
+ for some reason.
74
+
75
+ * Add case-insensitive comparison operator to filter and query.
76
+ To compare strings without case sensitivity, add "i" after the normal
77
+ comparison operators.
78
+
79
+ * Case-sensitive: =, >, < , >=, <=, <>
80
+ * Case-insensitive: =i, >i, <i, >=i, <=i, <>i
81
+
82
+ When the comparison field is same as the index field which is using, setting
83
+ case sensitivity same as field definition makes performance better. If case
84
+ sensitivities are different between them, optimization with the indexes is
85
+ disable and full scan will be needed.
86
+
87
+ * Add database::reconnect() which is used to reconnect to database. You can
88
+ reconnect to database with this method even if server process has been
89
+ restarted unexpectedly.
90
+ The reconnection contains reopening tables, recovering cursor positions and
91
+ record locks. Transactions which have not been commited yet will not be
92
+ recovered. You have to run it again.
93
+ There is no way to change the reconnect address at present, but tdclc will
94
+ support it in the future.
95
+
96
+ * Add field types ft_wstring, ft_wzstring, ft_myvarbinary and ft_mywvarbinary
97
+ to fielddef::lenByCharnum(). You can specify field length with number of
98
+ characters.
99
+
100
+ * Add connectTimeout and netTimeout to client setting file (transactd.ini or
101
+ transactd.cnf). The default values are following:
102
+
103
+ connectTimeout = 20
104
+ netTimeout = 180
105
+
106
+ connectTimeout means timeout seconds for connection. netTimeout means timeout
107
+ seconds for waiting response from server in a operation.
108
+
109
+ * The implementation of TCP reading and writing methods in tdclc were changed to
110
+ OS native from boost library. It makes performance better and enable timeout
111
+ settings.
112
+
113
+ Other Modifications
114
+ --------------------------------------------------------------------------------
115
+ * Fix a bug that filter works wrong for fixed-length string fields.
116
+
117
+ * Fix a bug that sortFields and sortField are not in PHP and Ruby interface.
118
+
119
+ * Fix a bug that Recordset::UnionRecordset() is not in ActiveX interface.
120
+
121
+ * Fix a bug that the server will crash when set invalid key number to table::find
122
+ operations.
123
+
124
+ * Fix a bug that when the table is locked by LOCK TABLES SQL command, after a
125
+ transaction with writing failed, an unlock row error will occur in retrying.
126
+
127
+ * Fix a access violation that occurs in releasing database object in ActiveX
128
+ interface depending on table releasing order.
129
+
130
+ * Fix a problem that "localhost" alias cannot be used without DNS.
131
+
132
+ * Fix a bug that i64() method always returns 0 on ft_float field.
133
+
134
+ * Fix a bug that field::getFVbin() and table::getFVbin() methods can not read
135
+ values on ft_string and ft_wstring fields.
136
+
137
+ * Fix a bug that the default values of size of shared memory on Windows pipe
138
+ connection are different between server and clients.
139
+
140
+ * Fix a bug that a invalid pointer will be returned when activeTable and query
141
+ reads ft_text or ft_blob fields without "select fields" filter.
142
+
143
+ * The source codes of Transactd plugin supports MySQL 5.7.6.
144
+ (Build-scripts do not support it yet. Have to fix cmake scripts to build.)
data/RELEASE_NOTE-JA ADDED
@@ -0,0 +1,153 @@
1
+ リリースノート
2
+
3
+ ================================================================================
4
+ Version 2.3.0 2015/03/20
5
+ ================================================================================
6
+
7
+ バージョンアップ上の注意点
8
+ --------------------------------------------------------------------------------
9
+ ・サーバー クライアントのバージョン互換性
10
+ バージョンアップはサーバーとクライアントともに行う必要があります。
11
+ database::reconnect()の実装のために、クラインアント サーバー間の通信プロトコ
12
+ ルが変更されました。このため、このバージョンのプラグインとクライアントは過去
13
+ のバージョンと互換性がありません。
14
+ 新しいクライアントでバージョン2.2以前のサーバーにアクセスすると、
15
+ SERVER_CLIENT_NOT_COMPATIBLE (3003) エラーが返ります。
16
+
17
+ ・メソッドの移動
18
+ table::usePadChar()とtable::trimPadChar()関数はfielddef構造体に移動しました。
19
+ また、値の設定は、それぞれ別にあった関数が、
20
+ setPadCharSettings(bool set, bool trim)にまとめられました。これによって、これ
21
+ らの値をスキーマに保存できるようになりました。
22
+ この変更は、フィールド型がft_string ft_wstring ft_mychar ft_mywcharにのみ影響
23
+ があります。それ以外の型には影響ありません。
24
+ table::usePadChar()とtrimPadChar()の返す値はどちらもデフォルトでtrueでしたが
25
+ この設定をコードで変更していなければ動作に変更はありません。
26
+ 変更していた場合は、そのテーブルの上記フィールド型を持つフィールドに対して設定
27
+ を行うようコードの修正が必要です。
28
+
29
+ たとえば、tb->setUsePadChar(false)としていた場合、
30
+ ```
31
+ for (int i = 0 ; i < tb->tableDef()->fieldCount ; ++i)
32
+ {
33
+ fielddef* fd = const_cast<fielddef*>(&tb->tableDef()->fieldDefs[i]);
34
+ fd->setPadCharSettings(false/*set*/, true/*trim*/);
35
+ }
36
+ ```
37
+ とします。
38
+ ただし、このコードは、揮発性でスキーマには保存されていません。必要に応じて保存する
39
+ コードを追加してください。
40
+
41
+ ・トランザクション中のテーブルオープン
42
+ バイナリーログが有効で、トランザクション中にテーブルをオープンすると
43
+ STATUS_ALREADY_INTRANSACTIONエラーを返すようになりました。
44
+ 従来よりバイナリーログはサポートされていましたが、トランザクション中にテーブル
45
+ をオープンすると、そのテーブルに対するbinlogマップが生成されず、正しくレプリケ
46
+ ーションできない問題がありました。そのため、バイナリーログが有効な場合、トラン
47
+ ザクション中のテーブルオープンはエラーになるようにしました。
48
+ バイナリーログが無効な場合は、動作に変更はありません。
49
+
50
+ 新機能
51
+ --------------------------------------------------------------------------------
52
+ ・MULTILOCK_READ_COMMITEDのトランザクション中のseek step系の読み取りオペレーショ
53
+ ンのbiasパラメータにROW_LOCK_Sを指定可能にしました。
54
+ これにより、MULTILOCK_READ_COMMITEDでも、よりロック競合の少ない共有ロックを使用
55
+ した細かなロック制御が可能です。
56
+
57
+ ・queryBaseクラスを使ったテーブルクエリーで、limitで設定した値で検索を終了する設
58
+ 定を可能にしました。
59
+ 従来、limitの値は一回のオペレーションで取得するレコードの最大値を示し、クライア
60
+ ント側でlimit以外の終了条件を満たすまで自動で繰り返し取得オペレーションが行われ
61
+ ていました。事実上limitは受信データバッファを節約するためだけのものでした。
62
+ 新しく加えた、queryBase::stopAtLimit()関数にtrueをセットすることで、マッチした
63
+ レコードがlimitに達するとそこで検索を終了できます。
64
+ デフォルトのfalseの場合の動作は従来と同様です。
65
+
66
+ ・table::find(eFindType type)で使用されるeFindTypeにfindContinueが追加されました。
67
+ 直前のfind系オペレーションが、フィルター条件のmaxRecordまたはrejectCount
68
+ によって終了した場合、findContinueを指定すると、その続きから同じ条件で検索を続
69
+ けることができます。また、直前のfind系オペレーションがそのような条件で終了した
70
+ かどうかを調べるために、より詳しいステータスを示すtable::statReasonOfFind()と
71
+ table::lastFindDirection()メソッドが追加されました。
72
+
73
+ ・ActiveTableにreadMore()メソッドが追加されました。これは上記、findContinueの
74
+ ActiveTable実装です。
75
+
76
+ ・recordsetのグルーピング関数に、firstとlast関数が追加されました。これらは、各グ
77
+ ループの最初または最後のレコードのフィールド値をそのまま返します。
78
+ 値は、数値と文字列の双方をサポートします。
79
+ これを使用すると非正規化されたフィールドの値を用いてidなどに対する説明のフィー
80
+ ルドの値をそのまま利用し、JOINを不要にしたりすることができます。
81
+
82
+ ・フィルターとクエリーの比較演算子に、大文字/小文字を区別しない
83
+ (case-insensitive)比較の指定ができるようになりました。
84
+ 文字列において大文字/小文字の区別なしに比較するには、従来の6種類の演算子
85
+ ( =, >, < , >= ,<= ,<> ) の後ろにi(アイ)を付加します。
86
+ ( =i, >i, <i , >=i ,<=i ,<>i )
87
+
88
+ テーブルのフィルターにおいて、比較対象フィールドが、使用するインデックスのフィ
89
+ ールドの時は、大文字/小文字区別の指定をテーブル作成時のフィールド定義と同じに
90
+ するとパフォーマンスが良くなります。異なるとインデックスによる読み取り範囲の最
91
+ 適化が行えずフルスキャンを行う必要が出てきます。
92
+
93
+ ・ネットワーク接続の再接続コマンド、database::reconnect()が追加されました。不意
94
+ にサーバープロセスが再起動された場合でも、このメソッドによって 再接続が可能に
95
+ なりました。再接続は、開いていたテーブルの再オープン、カーソル位置の復元、レ
96
+ コードロックの復元が行われます。ネットワーク接続の切断時に実行中だったトランザ
97
+ クションは復元されません。再度実行する必要があります。
98
+ 現在のところ、再接続先の変更は行えません。将来的にはtdclcライブラリ内で接続先の
99
+ 変更がサポートされる予定です。
100
+
101
+ ・fielddef::lenByCharnum()メソッドは従来、ft_mychar ft_myvarcharのみのサポートで
102
+ したが、加えてft_wstring ft_wzstring ft_myvarbinary ft_mywvarbinaryもサポート
103
+ されました。これらのフィールド型の場合も文字数で長さを指定できます。
104
+
105
+ ・クライアントの設定ファイル(transactd.iniまたはtransactd.cnf)で、connectTimeout
106
+ とnetTimeoutが追加されました。何も設定しない場合のデフォルト値はそれぞれ以下の
107
+ 通りです。
108
+
109
+ connectTimeout = 20
110
+ netTimeout = 180
111
+
112
+ connectTimeoutは接続時のタイムアウト(秒)です。netTimeoutは、オペレーション実行
113
+ 時に、サーバーから応答が返るまでのタイムアウト(秒)です。
114
+
115
+ ・tdclc内のTCP read writeの実装がboostからOS nativeに変更されました。これによりパ
116
+ フォーマンスとタイムアウトの設定を可能にしました。
117
+
118
+ その他の修正と変更点
119
+ --------------------------------------------------------------------------------
120
+ ・固定長文字列型フィールドのフィルタリングが正しく行われない場合がある不具合を修
121
+ 正しました。
122
+
123
+ ・PHPとRubyインタフェースにsortFields sortFieldクラスが欠落していた不具合を修正
124
+ しました。
125
+
126
+ ・Active XインターフェースにRecordset::UnionRecordset()メソッドが欠落していた不
127
+ 具合を修正しました。
128
+
129
+ ・table::find系オペレーション時に不正なキー番号をセットすると、サーバーがクラッ
130
+ シュする不具合を修正しました。
131
+
132
+ ・テーブルがSQLコマンドLOCK TABLESでロックされた状態で、書き込みトランザクション
133
+ が失敗したあと、再トライ時にunlock rowでエラーが発生する不具合を修正しました。
134
+
135
+ ・ActiveXインターフェースのdatabaseオブジェクトの解放で、テーブルの解放順との順序
136
+ 関係によって、access violationが発生することがある不具合を修正しました。
137
+
138
+ ・DNSが使用できないクライアントにおいて、接続先の指定にlocalhostが使用できない問
139
+ 題を修正しました。
140
+
141
+ ・ft_float型のフィールドでi64()による読み取りが常にゼロを返す不具合を修正しました。
142
+
143
+ ・ft_string型とft_wstring型のフィールドでfield::getFVbin()とtable::getFVbin()に
144
+ よる値の読み取りができない不具合を修正しました。
145
+
146
+ ・Windowsのパイプ接続時の共有メモリサイズのデフォルト値が、サーバーとクライアント
147
+ で異なる不具合を修正しました。
148
+
149
+ ・activeTableクエリーによるft_textとft_blobフィールドの読み取りで、フィールドの
150
+ 絞り込みが無い場合、不正なポインターを返す不具合を修正しました。
151
+
152
+ ・Transactdプラグインのソースコードを MySQL 5.7.6対応にしました。cmakeは現在未対応
153
+ です。ビルドにはcmakeの修正が必要です。
data/bin/2.0/transactd.so CHANGED
Binary file
data/bin/2.1/transactd.so CHANGED
Binary file
Binary file
Binary file
@@ -21,17 +21,24 @@
21
21
  require 'transactd'
22
22
  require 'base64'
23
23
 
24
+ def getEnv(valuename)
25
+ return ENV[valuename] if ENV[valuename] != nil
26
+ return ''
27
+ end
28
+
24
29
  def getHost()
25
- hostname = '127.0.0.1/'
26
- if (ENV['TRANSACTD_RSPEC_HOST'] != nil && ENV['TRANSACTD_RSPEC_HOST'] != '')
27
- hostname = ENV['TRANSACTD_RSPEC_HOST']
28
- end
30
+ hostname = getEnv('TRANSACTD_RSPEC_HOST')
31
+ hostname = '127.0.0.1/' if hostname == ''
29
32
  hostname = hostname + '/' unless (hostname =~ /\/$/)
30
33
  return hostname
31
34
  end
32
35
 
33
36
  HOSTNAME = getHost()
34
- URL = 'tdap://' + HOSTNAME + 'test_blob?dbfile=test.bdf'
37
+ USERNAME = getEnv('TRANSACTD_RSPEC_USER')
38
+ USERPART = USERNAME == '' ? '' : USERNAME + '@'
39
+ PASSWORD = getEnv('TRANSACTD_RSPEC_PASS')
40
+ PASSPART = PASSWORD == '' ? '' : '&pwd=' + PASSWORD
41
+ URL = 'tdap://' + USERPART + HOSTNAME + 'test_blob?dbfile=test.bdf' + PASSPART
35
42
  TABLENAME = 'comments'
36
43
  FDI_ID = 0
37
44
  FDI_USER_ID = 1
@@ -234,9 +241,6 @@ describe Transactd, 'blob' do
234
241
  # 3... but not found because filtered
235
242
  tb.findNext(true)
236
243
  expect(tb.stat()).to eq Transactd::STATUS_EOF
237
- # 2... but changing seek-direction is not allowed
238
- tb.findPrev(true)
239
- expect(tb.stat()).to eq Transactd::STATUS_PROGRAM_ERROR
240
244
  db.close()
241
245
  end
242
246
 
@@ -322,6 +326,20 @@ describe Transactd, 'blob' do
322
326
  db.close()
323
327
  end
324
328
 
329
+ it 'use recordset' do
330
+ image = getTestBinary()
331
+ db = Transactd::Database.new()
332
+ openDatabase(db)
333
+ at = Transactd::ActiveTable.new(db, TABLENAME)
334
+ q = Transactd::Query.new()
335
+ q.where('id', '=', 1)
336
+ rs = at.index(0).keyValue(1).read(q)
337
+ expect(rs.count()).to eq 1
338
+ f = rs[0].getField(FDI_IMAGE);
339
+ expect(f.getBin()).to eq image
340
+ db.close()
341
+ end
342
+
325
343
  it 'drop' do
326
344
  db = Transactd::Database.new()
327
345
  dropDatabase(db)
@@ -23,18 +23,25 @@ require 'transactd'
23
23
  require 'rbconfig'
24
24
  IS_WINDOWS = (RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/)
25
25
 
26
+ def getEnv(valuename)
27
+ return ENV[valuename] if ENV[valuename] != nil
28
+ return ''
29
+ end
30
+
26
31
  def getHost()
27
- hostname = '127.0.0.1/'
28
- if (ENV['TRANSACTD_RSPEC_HOST'] != nil && ENV['TRANSACTD_RSPEC_HOST'] != '')
29
- hostname = ENV['TRANSACTD_RSPEC_HOST']
30
- end
32
+ hostname = getEnv('TRANSACTD_RSPEC_HOST')
33
+ hostname = '127.0.0.1/' if hostname == ''
31
34
  hostname = hostname + '/' unless (hostname =~ /\/$/)
32
35
  return hostname
33
36
  end
34
37
 
35
38
  HOSTNAME = getHost()
36
- URL = 'tdap://' + HOSTNAME + 'test?dbfile=test.bdf'
37
- URL_KANJI = 'tdap://' + HOSTNAME + 'テスト?dbfile=構成.bdf'
39
+ USERNAME = getEnv('TRANSACTD_RSPEC_USER')
40
+ USERPART = USERNAME == '' ? '' : USERNAME + '@'
41
+ PASSWORD = getEnv('TRANSACTD_RSPEC_PASS')
42
+ PASSPART = PASSWORD == '' ? '' : '&pwd=' + PASSWORD
43
+ URL = 'tdap://' + USERPART + HOSTNAME + 'test?dbfile=test.bdf' + PASSPART
44
+ URL_KANJI = 'tdap://' + USERPART + HOSTNAME + 'テスト?dbfile=構成.bdf' + PASSPART
38
45
  FDI_ID = 0
39
46
  FDN_ID = '番号'.encode('UTF-8')
40
47
  FDI_NAME = 1
@@ -21,28 +21,34 @@
21
21
  require 'transactd'
22
22
  require 'thwait'
23
23
 
24
+ def getEnv(valuename)
25
+ return ENV[valuename] if ENV[valuename] != nil
26
+ return ''
27
+ end
28
+
24
29
  def getHost()
25
- hostname = '127.0.0.1/'
26
- if (ENV['TRANSACTD_RSPEC_HOST'] != nil && ENV['TRANSACTD_RSPEC_HOST'] != '')
27
- hostname = ENV['TRANSACTD_RSPEC_HOST']
28
- end
29
- hostname = hostname + '/' unless (hostname =~ /\/$/)
30
+ hostname = getEnv('TRANSACTD_RSPEC_HOST')
31
+ hostname = '127.0.0.1' if hostname == ''
30
32
  return hostname
31
33
  end
32
34
 
33
35
  PROTOCOL = 'tdap'
34
- HOSTNAME = getHost().sub(/\/$/, '')
36
+ HOSTNAME = getHost()
37
+ USERNAME = getEnv('TRANSACTD_RSPEC_USER')
38
+ USERPART = USERNAME == '' ? '' : USERNAME + '@'
39
+ PASSWORD = getEnv('TRANSACTD_RSPEC_PASS')
40
+ PASSPART = PASSWORD == '' ? '' : '&pwd=' + PASSWORD
35
41
  DBNAME = 'querytest'
36
42
  SCHEMANAME = 'test'
37
43
  BDFNAME = '?dbfile=' + SCHEMANAME + '.bdf'
38
- URL = PROTOCOL + '://' + HOSTNAME + '/' + DBNAME + BDFNAME
44
+ URL = PROTOCOL + '://' + USERPART + HOSTNAME + '/' + DBNAME + BDFNAME + PASSPART
39
45
  TABLENAME = 'user'
40
46
 
41
47
  describe Transactd, 'pool' do
42
48
  it 'create ConnectParams' do
43
49
  cp = Transactd::ConnectParams.new(URL)
44
50
  expect(cp.uri()).to eq URL
45
- cp = Transactd::ConnectParams.new(PROTOCOL, HOSTNAME, DBNAME, SCHEMANAME)
51
+ cp = Transactd::ConnectParams.new(PROTOCOL, HOSTNAME, DBNAME, SCHEMANAME, USERNAME, PASSWORD)
46
52
  expect(cp.uri()).to eq URL
47
53
  end
48
54
 
@@ -23,16 +23,24 @@ require 'transactd'
23
23
  require 'rbconfig'
24
24
  IS_WINDOWS = (RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/)
25
25
 
26
+ def getEnv(valuename)
27
+ return ENV[valuename] if ENV[valuename] != nil
28
+ return ''
29
+ end
30
+
26
31
  def getHost()
27
- hostname = 'localhost/'
28
- if (ENV['TRANSACTD_RSPEC_HOST'] != nil && ENV['TRANSACTD_RSPEC_HOST'] != '')
29
- hostname = ENV['TRANSACTD_RSPEC_HOST']
30
- end
32
+ hostname = getEnv('TRANSACTD_RSPEC_HOST')
33
+ hostname = '127.0.0.1/' if hostname == ''
31
34
  hostname = hostname + '/' unless (hostname =~ /\/$/)
32
35
  return hostname
33
36
  end
34
37
 
35
38
  HOSTNAME = getHost()
39
+ USERNAME = getEnv('TRANSACTD_RSPEC_USER')
40
+ USERPART = USERNAME == '' ? '' : USERNAME + '@'
41
+ PASSWORD = getEnv('TRANSACTD_RSPEC_PASS')
42
+ PASSPART = PASSWORD == '' ? '' : '&pwd=' + PASSWORD
43
+ PASSPART2 = PASSWORD == '' ? '' : '?pwd=' + PASSWORD
36
44
  DBNAME = 'test'
37
45
  DBNAME_VAR = 'testvar'
38
46
  DBNAME_SF = 'testString'
@@ -40,10 +48,12 @@ DBNAME_QT = 'querytest'
40
48
  TABLENAME = 'user'
41
49
  PROTOCOL = 'tdap://'
42
50
  BDFNAME = '?dbfile=test.bdf'
43
- URL = PROTOCOL + HOSTNAME + DBNAME + BDFNAME
44
- URL_VAR = PROTOCOL + HOSTNAME + DBNAME_VAR + BDFNAME
45
- URL_SF = PROTOCOL + HOSTNAME + DBNAME_SF + BDFNAME
46
- URL_QT = PROTOCOL + HOSTNAME + DBNAME_QT + BDFNAME
51
+ URL = PROTOCOL + USERPART + HOSTNAME + DBNAME + BDFNAME + PASSPART
52
+ URL_VAR = PROTOCOL + USERPART + HOSTNAME + DBNAME_VAR + BDFNAME + PASSPART
53
+ URL_SF = PROTOCOL + USERPART + HOSTNAME + DBNAME_SF + BDFNAME + PASSPART
54
+ URL_QT = PROTOCOL + USERPART + HOSTNAME + DBNAME_QT + BDFNAME + PASSPART
55
+ URL_HOST = PROTOCOL + USERPART + HOSTNAME + PASSPART2
56
+ URL_DB = PROTOCOL + USERPART + HOSTNAME + DBNAME + PASSPART2
47
57
  FDI_ID = 0
48
58
  FDI_NAME = 1
49
59
  FDI_GROUP = 2
@@ -97,8 +107,18 @@ def testCreateTable(db)
97
107
 
98
108
  fd = dbdef.insertField(1, 1)
99
109
  fd.setName('name')
100
- fd.type = Transactd::Ft_zstring
101
110
  fd.len = 33
111
+
112
+ #test padChar
113
+ fd.type = Transactd::Ft_string
114
+ fd.setPadCharSettings(true, false)
115
+ expect(fd.usePadChar()).to eq true;
116
+ expect(fd.trimPadChar()).to eq false;
117
+ fd.setPadCharSettings(false, true)
118
+ expect(fd.usePadChar()).to eq false;
119
+ expect(fd.trimPadChar()).to eq true;
120
+
121
+ fd.type = Transactd::Ft_zstring
102
122
  dbdef.updateTableDef(1)
103
123
  expect(dbdef.stat()).to eq 0
104
124
 
@@ -183,7 +203,7 @@ end
183
203
 
184
204
  def testVersion()
185
205
  db = Transactd::Database.new()
186
- db.connect(PROTOCOL + HOSTNAME)
206
+ db.connect(URL_HOST)
187
207
  expect(db.stat()).to eq 0
188
208
  vv = Transactd::BtrVersions.new()
189
209
  db.getBtrVersion(vv)
@@ -623,7 +643,7 @@ def testSnapshot()
623
643
  expect(db.stat()).to eq 0
624
644
  expect(tbg).not_to be nil
625
645
  db2 = Transactd::Database.new()
626
- db2.connect(PROTOCOL + HOSTNAME + DBNAME , true)
646
+ db2.connect(URL_DB, true)
627
647
  expect(db2.stat()).to eq 0
628
648
  tb2 = testOpenTable(db2)
629
649
  expect(tb2).not_to be nil
@@ -753,7 +773,7 @@ def testTransactionLockRepeatable()
753
773
  tb = testOpenTable(db)
754
774
  expect(tb).not_to be nil
755
775
  db2 = Transactd::Database.new()
756
- db2.connect(PROTOCOL + HOSTNAME + DBNAME, true)
776
+ db2.connect(URL_DB, true)
757
777
  expect(db2.stat()).to eq 0
758
778
  tb2 = testOpenTable(db2)
759
779
  expect(tb2).not_to be nil
@@ -984,7 +1004,7 @@ def testTransactionLockReadCommited()
984
1004
  tb = testOpenTable(db)
985
1005
  expect(tb).not_to be nil
986
1006
  db2 = Transactd::Database.new()
987
- db2.connect(PROTOCOL + HOSTNAME + DBNAME, true)
1007
+ db2.connect(URL_DB, true)
988
1008
  expect(db2.stat()).to eq 0
989
1009
  tb2 = testOpenTable(db2)
990
1010
  expect(tb2).not_to be nil
@@ -1249,7 +1269,7 @@ def testRecordLock()
1249
1269
  tb = testOpenTable(db)
1250
1270
  expect(tb).not_to be nil
1251
1271
  db2 = Transactd::Database.new()
1252
- db2.connect(PROTOCOL + HOSTNAME + DBNAME, true)
1272
+ db2.connect(URL_DB, true)
1253
1273
  expect(db2.stat()).to eq 0
1254
1274
  tb2 = testOpenTable(db2)
1255
1275
  expect(tb2).not_to be nil
@@ -1385,7 +1405,7 @@ def testConflict()
1385
1405
  db = Transactd::Database.new()
1386
1406
  tb = testOpenTable(db)
1387
1407
  db2 = Transactd::Database.new()
1388
- db2.connect(PROTOCOL + HOSTNAME + DBNAME , true)
1408
+ db2.connect(URL_DB, true)
1389
1409
  expect(db2.stat()).to eq 0
1390
1410
  expect(tb).not_to be nil
1391
1411
  tb2 = testOpenTable(db2)
@@ -1444,7 +1464,7 @@ def testExclusive()
1444
1464
 
1445
1465
  # Can not open database from other connections.
1446
1466
  db2 = Transactd::Database.new()
1447
- db2.connect(PROTOCOL + HOSTNAME + DBNAME, true)
1467
+ db2.connect(URL_DB, true)
1448
1468
  expect(db2.stat()).to eq 0
1449
1469
  db2.open(URL, Transactd::TYPE_SCHEMA_BDF)
1450
1470
  # database open error. Check database::stat()
@@ -1467,7 +1487,7 @@ def testExclusive()
1467
1487
  db2.close()
1468
1488
 
1469
1489
  # Normal open
1470
- db2.connect(PROTOCOL + HOSTNAME + DBNAME, true)
1490
+ db2.connect(URL_DB, true)
1471
1491
  db2.open(URL, Transactd::TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL)
1472
1492
  expect(db2.stat()).to eq 0
1473
1493
  db2.close()
@@ -1629,7 +1649,7 @@ def testMissingUpdate()
1629
1649
  # Get lock(X) same record in parallel.
1630
1650
  w = Thread.new {
1631
1651
  db2 = Transactd::Database.new()
1632
- db2.connect(PROTOCOL + HOSTNAME + DBNAME, true)
1652
+ db2.connect(URL_DB, true)
1633
1653
  expect(db2.stat()).to eq 0
1634
1654
  db2.open(URL, Transactd::TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL)
1635
1655
  expect(db2.stat()).to eq 0
@@ -1643,7 +1663,7 @@ def testMissingUpdate()
1643
1663
  db2.close()
1644
1664
  v2
1645
1665
  }
1646
- sleep(0.05)
1666
+ sleep(0.5)
1647
1667
  v = tb.getFVint(FDI_ID)
1648
1668
  v = v + 1
1649
1669
  tb.setFV(FDI_ID, v)
@@ -1673,7 +1693,7 @@ def testMissingUpdate()
1673
1693
  # Get lock(X) same record in parallel.
1674
1694
  w = Thread.new {
1675
1695
  db2 = Transactd::Database.new()
1676
- db2.connect(PROTOCOL + HOSTNAME + DBNAME, true)
1696
+ db2.connect(URL_DB, true)
1677
1697
  expect(db2.stat()).to eq 0
1678
1698
  db2.open(URL, Transactd::TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL)
1679
1699
  expect(db2.stat()).to eq 0
@@ -1688,7 +1708,7 @@ def testMissingUpdate()
1688
1708
  db2.close()
1689
1709
  v2
1690
1710
  }
1691
- sleep(0.05)
1711
+ sleep(0.5)
1692
1712
  v = tb.getFVint(FDI_ID)
1693
1713
  tb.del()
1694
1714
  v2 = w.join().value
@@ -1787,12 +1807,12 @@ end
1787
1807
 
1788
1808
  def testLogin()
1789
1809
  db = Transactd::Database.new()
1790
- db.connect(PROTOCOL + HOSTNAME)
1810
+ db.connect(URL_HOST)
1791
1811
  expect(db.stat()).to eq 0
1792
1812
  if db.stat() == 0
1793
1813
  # second connection
1794
1814
  db2 = Transactd::Database.new()
1795
- db2.connect(PROTOCOL + HOSTNAME, true)
1815
+ db2.connect(URL_HOST, true)
1796
1816
  expect(db2.stat()).to eq 0
1797
1817
  db2.disconnect()
1798
1818
  db.disconnect()
@@ -1811,7 +1831,7 @@ def testLogin()
1811
1831
  db.close()
1812
1832
  expect(db.stat()).to eq 0
1813
1833
  # true database name
1814
- db.connect(PROTOCOL + HOSTNAME + DBNAME)
1834
+ db.connect(URL_DB)
1815
1835
  expect(db.stat()).to eq 0
1816
1836
  if (db.stat() == 0)
1817
1837
  db.disconnect()
@@ -1821,7 +1841,7 @@ def testLogin()
1821
1841
  testDropDatabase(db)
1822
1842
  db.disconnect()
1823
1843
  expect(db.stat()).to eq 0
1824
- db.connect(PROTOCOL + HOSTNAME + DBNAME)
1844
+ db.connect(URL_DB)
1825
1845
  expect(db.stat()).to eq (Transactd::ERROR_NO_DATABASE)
1826
1846
  db.disconnect()
1827
1847
  expect(db.stat()).to eq 1
@@ -2835,11 +2855,11 @@ def createQTextention(db)
2835
2855
  end
2836
2856
 
2837
2857
  def insertQT(db, maxId)
2838
- db.beginTrn()
2839
2858
  # insert user data
2840
2859
  tb = db.openTable('user', Transactd::TD_OPEN_NORMAL)
2841
2860
  expect(db.stat()).to eq 0
2842
2861
  expect(tb).not_to be nil
2862
+ db.beginTrn()
2843
2863
  tb.clearBuffer()
2844
2864
  for i in 1..maxId
2845
2865
  tb.setFV(0, i)
@@ -2848,11 +2868,13 @@ def insertQT(db, maxId)
2848
2868
  tb.insert()
2849
2869
  expect(tb.stat()).to eq 0
2850
2870
  end
2871
+ db.endTrn()
2851
2872
  tb.close()
2852
2873
  # insert groups data
2853
2874
  tb = db.openTable('groups', Transactd::TD_OPEN_NORMAL)
2854
2875
  expect(db.stat()).to eq 0
2855
2876
  expect(tb).not_to be nil
2877
+ db.beginTrn()
2856
2878
  tb.clearBuffer()
2857
2879
  for i in 1..100
2858
2880
  tb.setFV(0, i)
@@ -2860,11 +2882,13 @@ def insertQT(db, maxId)
2860
2882
  tb.insert()
2861
2883
  expect(tb.stat()).to eq 0
2862
2884
  end
2885
+ db.endTrn()
2863
2886
  tb.close()
2864
2887
  # insert extention data
2865
2888
  tb = db.openTable('extention', Transactd::TD_OPEN_NORMAL)
2866
2889
  expect(db.stat()).to eq 0
2867
2890
  expect(tb).not_to be nil
2891
+ db.beginTrn()
2868
2892
  tb.clearBuffer()
2869
2893
  for i in 1..maxId
2870
2894
  tb.setFV(0, i)
@@ -2873,8 +2897,8 @@ def insertQT(db, maxId)
2873
2897
  tb.insert()
2874
2898
  expect(tb.stat()).to eq 0
2875
2899
  end
2876
- tb.close()
2877
2900
  db.endTrn()
2901
+ tb.close()
2878
2902
  end
2879
2903
 
2880
2904
  def testCreateQueryTest()
@@ -2931,6 +2955,8 @@ def testNewDelete()
2931
2955
  a = Transactd::Avg.new(fns)
2932
2956
  mi = Transactd::Min.new(fns)
2933
2957
  ma = Transactd::Max.new(fns)
2958
+ la = Transactd::Last.new(fns)
2959
+ fa = Transactd::First.new(fns)
2934
2960
  rs = Transactd::Recordset.new()
2935
2961
  # have to explicitly release
2936
2962
  atu.release()
@@ -3284,6 +3310,64 @@ def testServerPrepareJoin()
3284
3310
  db.close()
3285
3311
  end
3286
3312
 
3313
+ def testReadMore()
3314
+ db = Transactd::Database.new()
3315
+ db.open(URL_QT)
3316
+ expect(db.stat()).to eq 0
3317
+
3318
+ atu = Transactd::ActiveTable.new(db, 'user')
3319
+ atu.alias('名前', 'name')
3320
+ q = Transactd::Query.new()
3321
+
3322
+ #isStopAtLimit
3323
+ expect(q.isStopAtLimit()).to eq false
3324
+
3325
+ q.select('id', 'name', 'group')
3326
+ .where('name', '=', '1*')
3327
+ .reject(70).limit(8).stopAtLimit(true)
3328
+ expect(q.isStopAtLimit()).to eq true
3329
+
3330
+ stmt1 = atu.prepare(q)
3331
+ expect(stmt1).not_to eq nil
3332
+ rs = atu.index(0).keyValue(18).read(stmt1)
3333
+ expect(rs.size()).to eq 2
3334
+
3335
+ #readMore
3336
+ rs2 = atu.readMore()
3337
+ expect(rs2.size()).to eq 8
3338
+ rs.unionRecordset(rs2)
3339
+ expect(rs.size()).to eq 10
3340
+ end
3341
+
3342
+ def testFirstLastGroupFunction()
3343
+ db = Transactd::Database.new()
3344
+ db.open(URL_QT)
3345
+ expect(db.stat()).to eq 0
3346
+
3347
+ atu = Transactd::ActiveTable.new(db, 'user')
3348
+ atu.alias('名前', 'name')
3349
+ q = Transactd::Query.new()
3350
+ q.select('id', 'name', 'group')
3351
+ .where('name', '=', '1*')
3352
+ .reject(70).limit(8).stopAtLimit(true)
3353
+ stmt1 = atu.prepare(q)
3354
+ expect(stmt1).not_to eq nil
3355
+ rs = atu.index(0).keyValue(0).read(stmt1)
3356
+ expect(rs.size()).to eq 8
3357
+
3358
+ #grouping first and last
3359
+ gq = Transactd::GroupQuery.new()
3360
+ target = Transactd::FieldNames.new()
3361
+ target.addValue('name');
3362
+ last = Transactd::Last.new(target, 'last_rec_name')
3363
+ first = Transactd::First.new(target, 'first_rec_name')
3364
+ gq.addFunction(last);
3365
+ gq.addFunction(first);
3366
+ rs.groupBy(gq);
3367
+ expect(rs[0]['first_rec_name']).to eq "1 user";
3368
+ expect(rs[0]['last_rec_name']).to eq "16 user";
3369
+ end
3370
+
3287
3371
  def testWirtableRecord()
3288
3372
  db = Transactd::Database.new()
3289
3373
  db.open(URL_QT)
@@ -3474,6 +3558,12 @@ describe Transactd do
3474
3558
  it 'activetable and prepare (server)' do
3475
3559
  testServerPrepareJoin()
3476
3560
  end
3561
+ it 'activetable and readMore' do
3562
+ testReadMore()
3563
+ end
3564
+ it 'Grouping and first and last' do
3565
+ testFirstLastGroupFunction()
3566
+ end
3477
3567
  it 'write with writableRecord' do
3478
3568
  testWirtableRecord()
3479
3569
  end
data/transactd.gemspec CHANGED
@@ -44,7 +44,7 @@ spec_build = Gem::Specification.new do |s|
44
44
  raise 'Can not read versions from ' + verfile + ' (' + ver_str + ')' if ver_str.length == 0
45
45
  s.version = ver_str
46
46
 
47
- binary_file = File.join('bin', RUBY_VERSION.match(/\d+\.\d+/)[0], 'transactd.so')
47
+ binary_file = File.join('bin', RUBY_VERSION.sub(/(\d+\.\d+)\..*/, '\1'), 'transactd.so')
48
48
  binarymode = File.exist?(binary_file)
49
49
 
50
50
  if binarymode
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: transactd
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.3.0
5
5
  platform: x64-mswin64-100
6
6
  authors:
7
7
  - BizStation Corp.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-22 00:00:00.000000000 Z
11
+ date: 2015-03-31 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Transactd client for ruby gem
14
14
  email: transactd@bizstation.jp
@@ -19,9 +19,10 @@ extra_rdoc_files: []
19
19
  files:
20
20
  - bin/2.0/transactd.so
21
21
  - bin/2.1/transactd.so
22
+ - bin/2.2/transactd.so
22
23
  - build/tdclrb/bldgem/extconf.rb
23
- - bin/common/tdclcpp_vc100_64mr_2_2.dll
24
- - bin/common/tdclc_64_2_2.dll
24
+ - bin/common/tdclcpp_vc100_64mr_2_3.dll
25
+ - bin/common/tdclc_64_2_3.dll
25
26
  - build/tdclrb/gem/detect.rb
26
27
  - build/tdclrb/gem/helper.rb
27
28
  - build/tdclrb/gem/INSTALLLOG.win32
@@ -47,6 +48,8 @@ files:
47
48
  - ./README-JA
48
49
  - ./README_ORMSRCGEN
49
50
  - ./README_ORMSRCGEN-JA
51
+ - ./RELEASE_NOTE
52
+ - ./RELEASE_NOTE-JA
50
53
  - ./transactd.gemspec
51
54
  homepage: http://www.bizstation.jp/ja/transactd
52
55
  licenses:
Binary file
Binary file