transactd 2.2.0-x64-mswin64-100 → 2.3.0-x64-mswin64-100
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.
- checksums.yaml +4 -4
 - data/BUILD_UNIX-JA +6 -6
 - data/README +20 -18
 - data/README-JA +19 -17
 - data/RELEASE_NOTE +144 -0
 - data/RELEASE_NOTE-JA +153 -0
 - data/bin/2.0/transactd.so +0 -0
 - data/bin/2.1/transactd.so +0 -0
 - data/bin/2.2/transactd.so +0 -0
 - data/bin/common/tdclc_64_2_3.dll +0 -0
 - data/bin/common/tdclcpp_vc100_64mr_2_3.dll +0 -0
 - data/source/bzs/test/tdclrb/transactd_blob_spec.rb +26 -8
 - data/source/bzs/test/tdclrb/transactd_kanjischema_spec.rb +13 -6
 - data/source/bzs/test/tdclrb/transactd_pool_spec.rb +14 -8
 - data/source/bzs/test/tdclrb/transactd_spec.rb +117 -27
 - data/transactd.gemspec +1 -1
 - metadata +7 -4
 - data/bin/common/tdclc_64_2_2.dll +0 -0
 - data/bin/common/tdclcpp_vc100_64mr_2_2.dll +0 -0
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 2596599aadfe558a491cd8bcea56206e28ddb1f2
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: f3704841763dcfb833e9d6b5913951520372da46
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 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. 
     | 
| 
      
 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. 
     | 
| 
       79 
     | 
    
         
            -
            unzip -q transactd-source-2. 
     | 
| 
      
 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. 
     | 
| 
      
 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. 
     | 
| 
       127 
     | 
    
         
            -
            unzip -q transactd-source-2. 
     | 
| 
      
 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  
     | 
| 
      
 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. 
     | 
| 
       49 
     | 
    
         
            -
              * Linux - transactd-linux-x86_64-2. 
     | 
| 
      
 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. 
     | 
| 
      
 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. 
     | 
| 
       102 
     | 
    
         
            -
               cd transactd-linux-x86_64-2. 
     | 
| 
      
 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. 
     | 
| 
       134 
     | 
    
         
            -
              * Linux -  transactd-client-linux-x86_64_with_sdk-2. 
     | 
| 
      
 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. 
     | 
| 
      
 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. 
     | 
| 
       148 
     | 
    
         
            -
            2. Select the root folder transactd-client-[platform]-with_sdk-2. 
     | 
| 
      
 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. 
     | 
| 
       151 
     | 
    
         
            -
               This command adds "transactd-client-[platform]_with_sdk-2. 
     | 
| 
      
 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. 
     | 
| 
       182 
     | 
    
         
            -
               cd transactd-client-linux-x86_64_with_sdk-2. 
     | 
| 
      
 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. 
     | 
| 
      
 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. 
     | 
| 
      
 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. 
     | 
| 
       49 
     | 
    
         
            -
              * Linuxの場合 transactd-linux-x86_64-2. 
     | 
| 
      
 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. 
     | 
| 
      
 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. 
     | 
| 
       101 
     | 
    
         
            -
               cd transactd-linux-x86_64-2. 
     | 
| 
      
 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. 
     | 
| 
       133 
     | 
    
         
            -
              * Linuxの場合 transactd-client-linux-x86_64_with_sdk-2. 
     | 
| 
      
 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. 
     | 
| 
      
 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. 
     | 
| 
       147 
     | 
    
         
            -
            2. ルートフォルダーのtransactd-client-[platform]_with_sdk-2. 
     | 
| 
      
 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. 
     | 
| 
       150 
     | 
    
         
            -
               これによりtransactd-client-[platform]_with_sdk-2. 
     | 
| 
      
 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. 
     | 
| 
       180 
     | 
    
         
            -
               cd transactd-client-linux-x86_64_with_sdk-2. 
     | 
| 
      
 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. 
     | 
| 
      
 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. 
     | 
| 
      
 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 
     | 
| 
         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 = ' 
     | 
| 
       26 
     | 
    
         
            -
               
     | 
| 
       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 
     | 
    
         
            -
             
     | 
| 
      
 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 = ' 
     | 
| 
       28 
     | 
    
         
            -
               
     | 
| 
       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 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
      
 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 = ' 
     | 
| 
       26 
     | 
    
         
            -
               
     | 
| 
       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() 
     | 
| 
      
 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 = ' 
     | 
| 
       28 
     | 
    
         
            -
               
     | 
| 
       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( 
     | 
| 
      
 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( 
     | 
| 
      
 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( 
     | 
| 
      
 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( 
     | 
| 
      
 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( 
     | 
| 
      
 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( 
     | 
| 
      
 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( 
     | 
| 
      
 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( 
     | 
| 
      
 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( 
     | 
| 
      
 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. 
     | 
| 
      
 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( 
     | 
| 
      
 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. 
     | 
| 
      
 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( 
     | 
| 
      
 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( 
     | 
| 
      
 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( 
     | 
| 
      
 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( 
     | 
| 
      
 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. 
     | 
| 
      
 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. 
     | 
| 
      
 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- 
     | 
| 
      
 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/ 
     | 
| 
       24 
     | 
    
         
            -
            - bin/common/ 
     | 
| 
      
 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:
         
     | 
    
        data/bin/common/tdclc_64_2_2.dll
    DELETED
    
    | 
         Binary file 
     | 
| 
         Binary file 
     |