transactd 2.4.5 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (145) hide show
  1. checksums.yaml +4 -4
  2. data/CMakeLists.txt +1 -1
  3. data/README-JA.md +52 -529
  4. data/README.md +52 -523
  5. data/bin/common/tdclc_32_3_0.dll +0 -0
  6. data/bin/common/tdclc_64_3_0.dll +0 -0
  7. data/build/common/system.cmake +2 -1
  8. data/build/common/transactd_cl_common.cmake +3 -6
  9. data/build/swig/ruby/ruby.swg +85 -28
  10. data/build/swig/ruby/tdclrb_wrap.cpp +3195 -1578
  11. data/build/swig/tdcl.i +161 -5
  12. data/build/tdclc/CMakeLists.txt +1 -0
  13. data/build/tdclc/tdclc.cbproj +7 -1
  14. data/build/tdclc/tdclc.rc +4 -4
  15. data/build/tdclcpp/tdclcpp.rc +4 -4
  16. data/build/tdclcpp/tdclcpp_bc.cbproj +2 -5
  17. data/build/tdclrb/tdclrb.rc +4 -4
  18. data/source/bzs/db/blobStructs.h +1 -1
  19. data/source/bzs/db/engine/mysql/database.cpp +199 -74
  20. data/source/bzs/db/engine/mysql/database.h +47 -18
  21. data/source/bzs/db/engine/mysql/dbManager.cpp +1 -0
  22. data/source/bzs/db/engine/mysql/mysqlInternal.h +32 -8
  23. data/source/bzs/db/protocol/tdap/btrDate.cpp +110 -75
  24. data/source/bzs/db/protocol/tdap/btrDate.h +46 -21
  25. data/source/bzs/db/protocol/tdap/client/activeTable.cpp +18 -18
  26. data/source/bzs/db/protocol/tdap/client/activeTable.h +25 -25
  27. data/source/bzs/db/protocol/tdap/client/activeTableImple.h +10 -4
  28. data/source/bzs/db/protocol/tdap/client/client.cpp +6 -5
  29. data/source/bzs/db/protocol/tdap/client/client.h +82 -15
  30. data/source/bzs/db/protocol/tdap/client/database.cpp +531 -142
  31. data/source/bzs/db/protocol/tdap/client/database.h +19 -6
  32. data/source/bzs/db/protocol/tdap/client/dbDef.cpp +461 -408
  33. data/source/bzs/db/protocol/tdap/client/dbDef.h +11 -17
  34. data/source/bzs/db/protocol/tdap/client/dllmain.cpp +61 -13
  35. data/source/bzs/db/protocol/tdap/client/field.cpp +1592 -1398
  36. data/source/bzs/db/protocol/tdap/client/field.h +110 -121
  37. data/source/bzs/db/protocol/tdap/client/fields.h +40 -10
  38. data/source/bzs/db/protocol/tdap/client/filter.h +69 -55
  39. data/source/bzs/db/protocol/tdap/client/groupQuery.cpp +296 -164
  40. data/source/bzs/db/protocol/tdap/client/groupQuery.h +77 -25
  41. data/source/bzs/db/protocol/tdap/client/memRecord.cpp +31 -13
  42. data/source/bzs/db/protocol/tdap/client/memRecord.h +31 -21
  43. data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +1 -1
  44. data/source/bzs/db/protocol/tdap/client/nsDatabase.h +4 -1
  45. data/source/bzs/db/protocol/tdap/client/nsTable.cpp +69 -24
  46. data/source/bzs/db/protocol/tdap/client/nsTable.h +3 -1
  47. data/source/bzs/db/protocol/tdap/client/recordset.cpp +1 -0
  48. data/source/bzs/db/protocol/tdap/client/recordsetImple.h +46 -27
  49. data/source/bzs/db/protocol/tdap/client/request.h +2 -1
  50. data/source/bzs/db/protocol/tdap/client/serializer.cpp +44 -9
  51. data/source/bzs/db/protocol/tdap/client/serializer.h +1 -1
  52. data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +182 -76
  53. data/source/bzs/db/protocol/tdap/client/sqlBuilder.h +23 -12
  54. data/source/bzs/db/protocol/tdap/client/stringConverter.h +8 -10
  55. data/source/bzs/db/protocol/tdap/client/table.cpp +172 -93
  56. data/source/bzs/db/protocol/tdap/client/table.h +112 -37
  57. data/source/bzs/db/protocol/tdap/client/trdboostapi.h +17 -0
  58. data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +0 -1
  59. data/source/bzs/db/protocol/tdap/client/trdclcppautolink.h +0 -2
  60. data/source/bzs/db/protocol/tdap/client/trdormapi.h +1 -1
  61. data/source/bzs/db/protocol/tdap/fieldComp.h +698 -14
  62. data/source/bzs/db/protocol/tdap/myDateTime.cpp +723 -307
  63. data/source/bzs/db/protocol/tdap/myDateTime.h +294 -0
  64. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +164 -54
  65. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.h +6 -3
  66. data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +133 -550
  67. data/source/bzs/db/protocol/tdap/mysql/request.h +6 -5
  68. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +217 -82
  69. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +1 -1
  70. data/source/bzs/db/protocol/tdap/tdapRequest.h +4 -9
  71. data/source/bzs/db/protocol/tdap/tdapSchema.cpp +808 -17
  72. data/source/bzs/db/protocol/tdap/tdapSchema.h +656 -164
  73. data/source/bzs/db/protocol/tdap/tdapcapi.h +130 -28
  74. data/source/bzs/db/protocol/tdap/uri.h +40 -32
  75. data/source/bzs/db/transactd/connManager.cpp +1 -1
  76. data/source/bzs/db/transactd/transactd.cpp +7 -0
  77. data/source/bzs/env/compiler.h +107 -94
  78. data/source/bzs/env/crosscompile.cpp +24 -12
  79. data/source/bzs/env/crosscompile.h +75 -6
  80. data/source/bzs/env/mbcswchrLinux.cpp +2 -2
  81. data/source/bzs/env/tcharMinGW.h +4 -0
  82. data/source/bzs/example/changeSchema.cpp +22 -17
  83. data/source/bzs/example/queryData.cpp +4 -0
  84. data/source/bzs/netsvc/client/iconnection.h +3 -1
  85. data/source/bzs/netsvc/client/tcpClient.h +10 -3
  86. data/source/bzs/rtl/stringBuffers.cpp +7 -0
  87. data/source/bzs/test/tdclatl/bench_query_atl.js +6 -0
  88. data/source/bzs/test/tdclatl/bench_tdclatl.js +8 -1
  89. data/source/bzs/test/tdclatl/test_query_atl.js +22 -2
  90. data/source/bzs/test/tdclatl/test_v3.js +1017 -0
  91. data/source/bzs/test/tdclphp/transactd_Test.php +55 -21
  92. data/source/bzs/test/tdclphp/transactd_datetime_Test.php +0 -5
  93. data/source/bzs/test/tdclphp/transactd_pool_Test.php +2 -0
  94. data/source/bzs/test/tdclphp/transactd_v3_Test.php +743 -0
  95. data/source/bzs/test/tdclrb/transactd_datetime_spec.rb +0 -5
  96. data/source/bzs/test/tdclrb/transactd_pool_spec.rb +2 -0
  97. data/source/bzs/test/tdclrb/transactd_spec.rb +39 -16
  98. data/source/bzs/test/tdclrb/transactd_v3_spec.rb +748 -0
  99. data/source/bzs/test/transactdBench/transactdBench.cpp +55 -58
  100. data/source/bzs/test/transactdBench/transactdBench2.cpp +1 -3
  101. data/source/bzs/test/trdclengn/testField.h +3305 -0
  102. data/source/bzs/test/trdclengn/test_tdclcpp_v3.cpp +1050 -0
  103. data/source/bzs/test/trdclengn/test_trdclengn.cpp +112 -190
  104. data/source/bzs/test/trdclengn/testbase.h +137 -0
  105. data/source/global/ormsrcgen/srcgen.cpp +23 -12
  106. data/source/global/ormsrcgen/template/ormDataClass_template.h +2 -0
  107. data/source/global/querystmts/querystmts.cpp +2 -3
  108. data/source/global/tdclatl/Bitset.cpp +38 -0
  109. data/source/global/tdclatl/Bitset.h +63 -0
  110. data/source/global/tdclatl/Database.cpp +59 -18
  111. data/source/global/tdclatl/Database.h +7 -4
  112. data/source/global/tdclatl/DbDef.cpp +6 -6
  113. data/source/global/tdclatl/DbDef.h +2 -1
  114. data/source/global/tdclatl/Field.cpp +112 -0
  115. data/source/global/tdclatl/Field.h +19 -5
  116. data/source/global/tdclatl/FieldDef.cpp +137 -16
  117. data/source/global/tdclatl/FieldDef.h +18 -2
  118. data/source/global/tdclatl/FieldDefs.cpp +54 -1
  119. data/source/global/tdclatl/FieldDefs.h +3 -0
  120. data/source/global/tdclatl/GroupQuery.cpp +8 -8
  121. data/source/global/tdclatl/QueryBase.cpp +65 -0
  122. data/source/global/tdclatl/QueryBase.h +10 -0
  123. data/source/global/tdclatl/Record.cpp +33 -2
  124. data/source/global/tdclatl/Record.h +3 -1
  125. data/source/global/tdclatl/RecordsetQuery.cpp +42 -0
  126. data/source/global/tdclatl/RecordsetQuery.h +8 -0
  127. data/source/global/tdclatl/Table.cpp +127 -3
  128. data/source/global/tdclatl/Table.h +10 -1
  129. data/source/global/tdclatl/TableDef.cpp +41 -8
  130. data/source/global/tdclatl/TableDef.h +7 -2
  131. data/source/global/tdclatl/activeTable.cpp +40 -71
  132. data/source/global/tdclatl/resource.h +0 -0
  133. data/source/global/tdclatl/tdclatl.idl +222 -28
  134. data/source/linux/tchar.h +100 -96
  135. data/transactd.gemspec +2 -2
  136. metadata +13 -11
  137. data/BUILD_UNIX-JA.md +0 -161
  138. data/BUILD_WIN-JA.md +0 -326
  139. data/README_ORMSRCGEN-JA.md +0 -115
  140. data/README_ORMSRCGEN.md +0 -118
  141. data/RELEASE_NOTE-JA.md +0 -356
  142. data/RELEASE_NOTE.md +0 -360
  143. data/bin/common/tdclc_32_2_4.dll +0 -0
  144. data/bin/common/tdclc_64_2_4.dll +0 -0
  145. data/source/bzs/test/trdclengn/test_blob.cpp +0 -375
@@ -1,115 +0,0 @@
1
- ormsrcgen C++ O/Rマッピングソースコードジェネレータ
2
- ===============================================================================
3
- ormsrcgen(32|64) はC++ O/Rマッピングのためのソースコードジェネレータです。
4
-
5
- C++では動的にクラスを定義することはできないため、ソースコードジェネレータで
6
- モデルクラスを生成しコンパイルする形式を採ります。
7
- これを使うとC++で簡単に高速なO/Rマッピングを行うことができます。
8
-
9
-
10
-
11
- はじめに
12
- -------------------------------------------------------------------------------
13
- ジェネレータの関連ファイルは source/global/ormsrcgen/templateに格納されています。
14
- それぞれのファイルの役割を説明します。
15
-
16
- * ormDataClass_template.cpp : C++ モデルクラスのテンプレート
17
- * ormDataClass_template.h : C++ モデルクラスのテンプレート
18
- * ormMapClass_template.cpp : C++ マップクラスのテンプレート
19
- * ormMapClass_template.h : C++ マップクラスのテンプレート
20
- * template.cnf : 設定ファイルのひな形
21
- * fieldNameList_sample.txt : フィールド名変換ファイルのサンプル
22
-
23
- このうち、template.cnfとfieldNameList_sample.txtを必要に応じて編集します。
24
-
25
-
26
-
27
- コマンドラインオプション
28
- -------------------------------------------------------------------------------
29
- コマンドラインオプションは以下の通りです。
30
-
31
- ```
32
- command line options:
33
- -d [ --database_uri ] database uri ex:tdap://hostname/dbname?dbfile=trnasctd_schema
34
- -t [ --table_name ] table name
35
- -c [ --class_name ] class name
36
- -f [ --conf_name ] configuration filename
37
-
38
- -d :データベースを指定します。
39
- -t :生成するモデルのテーブルを指定します。生成はテーブルごとに行います。
40
- -c :-tで指定したテーブルに対応するモデルのクラス名を指定します。
41
- -f :その他の設定項目を記述したテキストファイル(configuration file)です。
42
- ```
43
-
44
- configuration fileは、多くの場合、テーブルが異なっても共通の内容です。ひな形が
45
- `source/global/ormsrcgen/template/template.cnf`として用意されています。
46
- これをコピーして内容を編集します。
47
-
48
-
49
-
50
- configuration fileの書式
51
- -------------------------------------------------------------------------------
52
- * `lang = (language)`
53
-
54
- 生成するコードの言語を指定します。現在のバージョンでは`C++`のみサポートされます。
55
-
56
- * `files = (number of file)`
57
-
58
- 1つのモデルのために必要なテンプレートファイルの数を指定します。C++の場合は`2`です。
59
-
60
- * `file1 = (file path) file2 = (file path) ... fileN = (file path)`
61
-
62
- `files =`で指定した数のテンプレートファイルのパスを指定します。
63
- デフォルトでは`file1 = ormDataClass_template` `file2 = ormMapClass_template`
64
- となっていますが、実際に使用する際は絶対パスで指定してください。
65
-
66
- * `saveDir = (output dir)`
67
-
68
- 生成したソースコードを保存するフォルダを指定します。
69
-
70
- * `setPrefix = (setter prefix)`
71
-
72
- クラスのメンバ変数に値をセットするアクセスメソッド名のプレフィックスを指定します。
73
- 例えば、`setPrefix = set`とした場合、`name`というフィールドの値をセットする
74
- メンバ関数は以下のようになります。
75
-
76
- ```
77
- setName(const char* v)
78
- ```
79
-
80
- * `getPrefix = (getter prefix)`
81
-
82
- setPrefixと同様に値の取得メソッドにつけられるプレフィックスを指定します。
83
-
84
- * `externWord = (extern keyword)`
85
-
86
- 出力されたクラスをDLLやSOなどのライブラリに含めて共有する場合は、class 宣言の後ろに
87
- エクスポートのためのキーワードを付加できます。
88
-
89
- ```
90
- class $externWord someModel
91
- {
92
- ...
93
- };
94
- ```
95
-
96
- * `fieldRenameList = (alias list file)`
97
-
98
- 通常はテーブルに含まれるフィールド名がそのままクラスのメンバ変数名になります。
99
- 異なる名前に変更したい場合は、このfieldRenameListで変換リストの書かれたテキスト
100
- ファイルを指定できます。変換リストは以下のように、変換前=変換後の形式で指定します。
101
-
102
- ```
103
- customer_id=id
104
- customer_name=name
105
- ```
106
-
107
- * `name_space = (namespace of model class)`
108
-
109
- モデルクラスの名前空間を指定します。
110
-
111
- * `name_space_map = (namespace of map class)`
112
-
113
- C++の場合、モデルクラスとともに、テーブルとクラスの復元と保存をマッピングする
114
- mapクラスも同時に生成されます。
115
- name_space_mapはそのマップクラスの名前空間を指定します。
data/README_ORMSRCGEN.md DELETED
@@ -1,118 +0,0 @@
1
- ormsrcgen C ++ O/R mapping source code generator
2
- ===============================================================================
3
- ormsrcgen (32|64) is a source code generator for C++ O/R mapping.
4
-
5
- C++ does not allow to define classes dynamically. So we need to generate model
6
- classes with the source code generator. You can use O/R mapping fast and easy
7
- in C++ with it.
8
-
9
-
10
-
11
- Introduction
12
- -------------------------------------------------------------------------------
13
- Related files of the generator is in `source/global/ormsrcgen/template`.
14
- The descriptions of each files are:
15
-
16
- * ormDataClass_template.cpp : Template of C ++ model class.
17
- * ormDataClass_template.h : Template of C ++ model class.
18
- * ormMapClass_template.cpp : Template of C ++ map class.
19
- * ormMapClass_template.h : Template of C ++ map class.
20
- * template.cnf : Template of the configuration file
21
- * fieldNameList_sample.txt : Sample file of field name alias.
22
-
23
- Edit `fieldNameList_sample.txt` and `template.cnf` as needed.
24
-
25
-
26
-
27
- Command-line options
28
- -------------------------------------------------------------------------------
29
- Command line options are:
30
-
31
- ```
32
- command line option:
33
- -d [ --database_uri ] database uri ex:tdap://hostname/dbname?dbfile=trnasctd_schema
34
- -t [ --table_name ] table name.
35
- -c [ --class_name ] class name.
36
- -f [ --conf_name ] configuration file.
37
-
38
- -d :Specify the database URI.
39
- -t :Specify the table name to generate the model class.
40
- The class is generated for each table.
41
- -c :Specify the name of the model class.
42
- -f :Specify the path of configuration file.
43
- ```
44
-
45
- In many cases, you can use same configuration file even if tables are different.
46
- Template of configuration file is `source/global/ormsrcgen/template/template.cnf`.
47
- You can copy and edit it.
48
-
49
-
50
-
51
- Descriptions of the configuration file
52
- -------------------------------------------------------------------------------
53
- * `lang = (language)`
54
-
55
- Specify the language of the code to be generated. Only `C++` is supported in
56
- current version.
57
-
58
- * `files = (number of file)`
59
-
60
- Specify the number of template files required for a model. In the case of
61
- C++, the number is `2`.
62
-
63
- * `file1 = (file path) file2 = (file path) ... fileN = (file path)`
64
-
65
- Specify the path of the template file, with the number that was specified in
66
- `files=`.
67
- Default values are `file1 = ormDataClass_template` `file2 = ormMapClass_template`,
68
- but please specify the absolute path in actually.
69
-
70
- * `saveDir = (output dir)`
71
-
72
- Specify the output directory to save generated source code files.
73
-
74
- * `setPrefix = (setter prefix)`
75
-
76
- Specify the prefix of the setter method of member variables in the class.
77
- If `setPrefix = set`is specified, the setter function for `name` field is:
78
-
79
- ```
80
- setName(const char* v)
81
- ```
82
-
83
- * `getPrefix = (getter prefix)`
84
-
85
- Specify the prefix of the getter method as well as setPrefix.
86
-
87
- * `externWord = (extern keyword)`
88
-
89
- Add export keyword in class declaration when make shared libraries
90
- such as `.SO` or `.DLL`.
91
-
92
- ```
93
- class $externWord someModel
94
- {
95
- ...
96
- };
97
- ```
98
-
99
- * `fieldRenameList = (alias list file)`
100
-
101
- Normally, the member variable name of the class is same as the name of
102
- field in the table. If you want to change the name, specify fieldRenameList
103
- which contains alias list.
104
- The fieldRenameList format is:
105
-
106
- ```
107
- originalName1=alias1
108
- originalName2=alias2
109
- ```
110
-
111
- * `name_space = (namespace of model class)`
112
-
113
- Specify the namespace of the model class.
114
-
115
- * `name_space_map = (namespace of map class)`
116
-
117
- Specify the namespace of the map class.
118
- The map class maps the members of the model class and the fields in the table.
data/RELEASE_NOTE-JA.md DELETED
@@ -1,356 +0,0 @@
1
- リリースノート
2
-
3
- ================================================================================
4
- Version 2.4.4 2015/09/08
5
- ================================================================================
6
- 修正と変更点
7
- --------------------------------------------------------------------------------
8
- * pooledDbManagerのWindowsにおいて、プロセス終了時にtdclc_xxx.dll内でデッドロック
9
- するが発生することがある不具合を修正しました。
10
-
11
- * nstable、nsdatabase、dbdefの3つのクラスにstatMsgメソッドを追加しました。この
12
- メソッドは、既にあるtdapErrメソッドと引数と戻り値の違い以外は同じ機能です。
13
- * nsdatabase::readDatabaseDirectoryが正しく動作しない不具合を修正しました。
14
-
15
- * PHPとRubyインターフェースでtdapErrメソッドが正しく動作しない不具合を修正しまし
16
- た。この2つのインターフェースでは、tdapErrメソッドは、statMsgに変更されました。
17
- また、C++とCOMインターフェースにstatMsgを追加しました。
18
-
19
- * COMインターフェースでIErrorInfoをサポートしました。またIRecordset, IRecord,
20
- IKeyDef, IFlags, IFieldDefs, ISortFields, IFieldNames でデフォルトプロパティー
21
- を設定しました。
22
-
23
-
24
- ================================================================================
25
- Version 2.4.3 2015/08/31
26
- ================================================================================
27
- 修正と変更点 (Client only)
28
- --------------------------------------------------------------------------------
29
- * ユニオンされたレコードセットのJoinが正しく動作しない不具合を修正しました。
30
-
31
- ================================================================================
32
- Version 2.4.2 2015/08/31
33
- ================================================================================
34
- 新機能
35
- --------------------------------------------------------------------------------
36
- * queryBase と recordsetQueryの演算子にビットAND演算子を追加しました。
37
- 従来からある6つの演算子 ( =, >, < , >= ,<= ,<> )に加えて '&' と '!&'が使用でき
38
- ます。
39
- '&'演算子はフィールドの値とビット演算を行い指定した値と同じであればマッチします。
40
- '!&'演算子はフィールドの値とビット演算を行い指定した値でなければマッチします。
41
- 例 : flags & 8 and flags !& 16
42
-
43
-
44
- その他の修正と変更点
45
- --------------------------------------------------------------------------------
46
- * メソッドの変更
47
- field::addAllFileds(tabledef* def)をprotectedからpublicに変更
48
-
49
- * メソッドパラメータの追加
50
- writableRecord::delとwritableRecord::updateにbool noSeek=false
51
- オプションを追加しました。noSeekをtrueにすると、削除や更新の際にカレントレコード
52
- は確立済として、読み取りオペレーションを省略します。
53
-
54
- * メソッドの追加
55
- void queryStatements::move(int from, int to)
56
-
57
- * Windowsでの接続タイムアウトが設定どおりに働かない不具合を修正しました。
58
-
59
- * HasManyJoinにおいてJoinするレコードがなかった場合、正しく処理されないことがある
60
- 不具合を修正しました。
61
-
62
- * Joinにおいて、結合キーが文字列の場合正しく検索できないことがある不具合を修正しま
63
- した。
64
-
65
- ================================================================================
66
- Version 2.4.0 2015/06/03
67
- ================================================================================
68
- バージョンアップ上の注意点
69
- --------------------------------------------------------------------------------
70
- * サーバー クライアントのバージョン互換性
71
-
72
- Version 2.3系からのバージョンアップは特に注意する点はありません。サーバー、クラ
73
- イアントともに、2.4系との相互運用が可能です。(但し、2.4の新機能を除く)
74
-
75
- Version 2.3より前のバージョンからのアップグレードは以前のリリースノートを確認
76
- してください。
77
-
78
- 新機能
79
- --------------------------------------------------------------------------------
80
- * Transactd studio
81
-
82
- Transactdに、使用中のコネクション、データベース、テーブル情報を表示するための
83
- APIが実装されました。テーブル情報では、テーブルをオープンしてからの読み取り、更
84
- 新、追加、削除したレコード数などを得ることができます。
85
-
86
- * activeTableでbookmarkからのrecordsetの取得を可能にしました。
87
-
88
- queryBase::addSeekBookmarkを使って複数のbookmarkをセットできます。
89
-
90
- tableオブジェクトにqueryをセットしてからtable::recordCount()を呼び出すと、条件
91
- にマッチしたレコードを数えるのと同時に、table::bookmarks()でそれらのbookmarkを
92
- 取得できます。
93
-
94
- * C++APIにおいて以下のメソッドを、フリースレッド対応しました。複数のスレッドから
95
- 同時アクセス可能です。
96
- * table::insertBookmarks
97
- * table::moveBookmarks
98
- * table::bookmarksCount
99
- * table::bookmarks
100
-
101
- その他の修正と変更点
102
- --------------------------------------------------------------------------------
103
- * P.SQL互換のヌルキーアクセスにおいて、ヌルキーかどうかの判定ミスすることがある不
104
- 具合を修正しました。
105
-
106
- * 既存のテーブルの自動スキーマ生成がうまくいかない場合がある不具合を修正しました。
107
-
108
- * サーバー統計情報を取得するためのロック制御を改善しました。モニタリング時の同時実
109
- 効性を向上させました。
110
-
111
- * nsdatabase::isReconnected()メソッドを追加しました。
112
- サーバーへの再接続を行ったかどうかを示します。
113
-
114
- * 1つの接続で複数データベースを使用した場合の reconnectをサポートしました。
115
-
116
- * テーブルの作成時にヌルキーがあった場合、不要な内部用ヌルフィールドを追加してしま
117
- うことがある不具合を修正しました。
118
-
119
- * 無効なプリペアードクエリハンドル受取ったときに、無効なポインタ操作してしまうバグ
120
- を修正しました。
121
-
122
- * SQLアクセスによるロックと共存できないことがある不具合を修正しました。
123
-
124
- * メソッドの追加
125
- * short dbdef::validateTableDef(short TableIndex)
126
- * ushort_td nstable::bookmarkLen() const
127
- * bookmark_td tabale::bookmarks(unsigned int index) const
128
- * recordCountFn Call back function
129
- * table::setOnRecordCount
130
- * table::onRecordCount
131
- * bool queryBase::isSeekByBookmarks() const
132
- * void queryBase::addSeekBookmark(bookmark_td& bm, ushort_td len, bool reset=false)
133
- * bool writableRecord::read(bookmark_td& bm)
134
-
135
- * メソッド名の変更
136
- * table::setBookMarks --> table::insertBookmarks
137
- * table::moveBookmarksId --> table::moveBookmarks
138
- * table::bookMarksCount --> table::bookmarksCount
139
-
140
- * メソッドパラメータの追加
141
- * void database::close(bool withDropDefaultSchema = false)
142
- * activeTable::activeTable(database* db, short tableIndex,
143
- short mode = TD_OPEN_NORMAL)
144
- * static activeTable* create(database* db, short tableIndex,
145
- short mode = TD_OPEN_NORMAL);
146
-
147
- * bookmark_td型の変更 unsigned int から
148
-
149
- ```
150
- struct BOOKMARK
151
- {
152
- uchar_td val[MAX_BOOKMARK_SIZE];
153
- bool empty;
154
- BOOKMARK():empty(true){ }
155
- bool isEmpty(){ return empty; }
156
- void set(uchar_td* p, int len)
157
- {
158
- memcpy(val, p, len);
159
- empty = false;
160
- }
161
- };
162
- ```
163
-
164
- * bookmark_td型を引数に取る関数で、bookmark_td型を参照に変更しました。
165
-
166
- * コンビニエンスAPIのopenTableの引数をフル引数対応しました。
167
-
168
- * コンビニエンスAPIに以下の関数を追加しました。
169
- * void deleteTable(dbdef* def, short id)
170
- * void renumberTable(dbdef* def, short id, short newid)
171
- * void deleteField(dbdef* def, short tableid, short fieldNum)
172
- * void deleteKey(dbdef* def, short tableid, short keynum)
173
- * void validateTableDef(dbdef* def, short tableid)
174
-
175
- * Transactd Client with SDK のWindows版に、Embarcadero C++Builder用バイナリは
176
- 含まれなくなりました。Embarcadero C++Builderで使用する場合は、ソースからビルド
177
- することで引き続き利用可能です。
178
-
179
- http://www.bizstation.jp/ja/transactd/documents/BUILD_WIN.html
180
-
181
-
182
-
183
- ================================================================================
184
- Version 2.3.0 2015/03/20
185
- ================================================================================
186
-
187
- バージョンアップ上の注意点
188
- --------------------------------------------------------------------------------
189
- * サーバー クライアントのバージョン互換性
190
-
191
- バージョンアップはサーバーとクライアントともに行う必要があります。
192
-
193
- database::reconnect()の実装のために、クラインアント サーバー間の通信プロトコ
194
- ルが変更されました。このため、このバージョンのプラグインとクライアントは過去
195
- のバージョンと互換性がありません。
196
-
197
- 新しいクライアントでバージョン2.2以前のサーバーにアクセスすると、
198
- SERVER_CLIENT_NOT_COMPATIBLE (3003) エラーが返ります。
199
-
200
- * メソッドの移動
201
-
202
- table::usePadChar()とtable::trimPadChar()関数はfielddef構造体に移動しました。
203
-
204
- また、値の設定は、それぞれ別にあった関数が、
205
- setPadCharSettings(bool set, bool trim)にまとめられました。これによって、これ
206
- らの値をスキーマに保存できるようになりました。
207
-
208
- この変更は、フィールド型がft_string ft_wstring ft_mychar ft_mywcharにのみ影響
209
- があります。それ以外の型には影響ありません。
210
-
211
- table::usePadChar()とtrimPadChar()の返す値はどちらもデフォルトでtrueでしたが
212
- この設定をコードで変更していなければ動作に変更はありません。
213
- 変更していた場合は、そのテーブルの上記フィールド型を持つフィールドに対して設定
214
- を行うようコードの修正が必要です。
215
-
216
- たとえば、tb->setUsePadChar(false)としていた場合、
217
- ```
218
- for (int i = 0 ; i < tb->tableDef()->fieldCount ; ++i)
219
- {
220
- fielddef* fd = const_cast<fielddef*>(&tb->tableDef()->fieldDefs[i]);
221
- fd->setPadCharSettings(false/*set*/, true/*trim*/);
222
- }
223
- ```
224
- とします。
225
-
226
- ただし、このコードは、揮発性でスキーマには保存されていません。必要に応じて保存する
227
- コードを追加してください。
228
-
229
- * トランザクション中のテーブルオープン
230
-
231
- バイナリーログが有効で、トランザクション中にテーブルをオープンすると
232
- STATUS_ALREADY_INTRANSACTIONエラーを返すようになりました。
233
-
234
- 従来よりバイナリーログはサポートされていましたが、トランザクション中にテーブル
235
- をオープンすると、そのテーブルに対するbinlogマップが生成されず、正しくレプリケ
236
- ーションできない問題がありました。そのため、バイナリーログが有効な場合、トラン
237
- ザクション中のテーブルオープンはエラーになるようにしました。
238
- バイナリーログが無効な場合は、動作に変更はありません。
239
-
240
- 新機能
241
- --------------------------------------------------------------------------------
242
- * MULTILOCK_READ_COMMITEDのトランザクション中のseek step系の読み取りオペレーショ
243
- ンのbiasパラメータにROW_LOCK_Sを指定可能にしました。
244
-
245
- これにより、MULTILOCK_READ_COMMITEDでも、よりロック競合の少ない共有ロックを使用
246
- した細かなロック制御が可能です。
247
-
248
- * queryBaseクラスを使ったテーブルクエリーで、limitで設定した値で検索を終了する設
249
- 定を可能にしました。
250
-
251
- 従来、limitの値は一回のオペレーションで取得するレコードの最大値を示し、クライア
252
- ント側でlimit以外の終了条件を満たすまで自動で繰り返し取得オペレーションが行われ
253
- ていました。事実上limitは受信データバッファを節約するためだけのものでした。
254
-
255
- 新しく加えた、queryBase::stopAtLimit()関数にtrueをセットすることで、マッチした
256
- レコードがlimitに達するとそこで検索を終了できます。
257
- デフォルトのfalseの場合の動作は従来と同様です。
258
-
259
- * table::find(eFindType type)で使用されるeFindTypeにfindContinueが追加されました。
260
-
261
- 直前のfind系オペレーションが、フィルター条件のmaxRecordまたはrejectCount
262
- によって終了した場合、findContinueを指定すると、その続きから同じ条件で検索を続
263
- けることができます。また、直前のfind系オペレーションがそのような条件で終了した
264
- かどうかを調べるために、より詳しいステータスを示すtable::statReasonOfFind()と
265
- table::lastFindDirection()メソッドが追加されました。
266
-
267
- * ActiveTableにreadMore()メソッドが追加されました。これは上記、findContinueの
268
- ActiveTable実装です。
269
-
270
- * recordsetのグルーピング関数に、firstとlast関数が追加されました。これらは、各グ
271
- ループの最初または最後のレコードのフィールド値をそのまま返します。
272
- 値は、数値と文字列の双方をサポートします。
273
-
274
- これを使用すると非正規化されたフィールドの値を用いてidなどに対する説明のフィー
275
- ルドの値をそのまま利用し、JOINを不要にしたりすることができます。
276
-
277
- * フィルターとクエリーの比較演算子に、大文字/小文字を区別しない
278
- (case-insensitive)比較の指定ができるようになりました。
279
-
280
- 文字列において大文字/小文字の区別なしに比較するには、従来の6種類の演算子
281
- の後ろにi(アイ)を付加します。
282
-
283
- ```
284
- Case-sensitive: =, >, < , >=, <=, <>
285
- Case-insensitive: =i, >i, <i, >=i, <=i, <>i
286
- ```
287
-
288
- テーブルのフィルターにおいて、比較対象フィールドが、使用するインデックスのフィ
289
- ールドの時は、大文字/小文字区別の指定をテーブル作成時のフィールド定義と同じに
290
- するとパフォーマンスが良くなります。異なるとインデックスによる読み取り範囲の最
291
- 適化が行えずフルスキャンを行う必要が出てきます。
292
-
293
- * ネットワーク接続の再接続コマンド、database::reconnect()が追加されました。不意
294
- にサーバープロセスが再起動された場合でも、このメソッドによって 再接続が可能に
295
- なりました。再接続は、開いていたテーブルの再オープン、カーソル位置の復元、レ
296
- コードロックの復元が行われます。ネットワーク接続の切断時に実行中だったトランザ
297
- クションは復元されません。再度実行する必要があります。
298
-
299
- 現在のところ、再接続先の変更は行えません。将来的にはtdclcライブラリ内で接続先の
300
- 変更がサポートされる予定です。
301
-
302
- * fielddef::lenByCharnum()メソッドは従来、ft_mychar ft_myvarcharのみのサポートで
303
- したが、加えてft_wstring ft_wzstring ft_myvarbinary ft_mywvarbinaryもサポート
304
- されました。これらのフィールド型の場合も文字数で長さを指定できます。
305
-
306
- * クライアントの設定ファイル(transactd.iniまたはtransactd.cnf)で、connectTimeout
307
- とnetTimeoutが追加されました。何も設定しない場合のデフォルト値はそれぞれ以下の
308
- 通りです。
309
-
310
- ```
311
- connectTimeout = 20
312
- netTimeout = 180
313
- ```
314
-
315
- connectTimeoutは接続時のタイムアウト(秒)です。netTimeoutは、オペレーション実行
316
- 時に、サーバーから応答が返るまでのタイムアウト(秒)です。
317
-
318
- * tdclc内のTCP read writeの実装がboostからOS nativeに変更されました。これによりパ
319
- フォーマンスとタイムアウトの設定を可能にしました。
320
-
321
- その他の修正と変更点
322
- --------------------------------------------------------------------------------
323
- * 固定長文字列型フィールドのフィルタリングが正しく行われない場合がある不具合を修
324
- 正しました。
325
-
326
- * PHPとRubyインタフェースにsortFields sortFieldクラスが欠落していた不具合を修正
327
- しました。
328
-
329
- * Active XインターフェースにRecordset::UnionRecordset()メソッドが欠落していた不
330
- 具合を修正しました。
331
-
332
- * table::find系オペレーション時に不正なキー番号をセットすると、サーバーがクラッ
333
- シュする不具合を修正しました。
334
-
335
- * テーブルがSQLコマンドLOCK TABLESでロックされた状態で、書き込みトランザクション
336
- が失敗したあと、再トライ時にunlock rowでエラーが発生する不具合を修正しました。
337
-
338
- * ActiveXインターフェースのdatabaseオブジェクトの解放で、テーブルの解放順との順序
339
- 関係によって、access violationが発生することがある不具合を修正しました。
340
-
341
- * DNSが使用できないクライアントにおいて、接続先の指定にlocalhostが使用できない問
342
- 題を修正しました。
343
-
344
- * ft_float型のフィールドでi64()による読み取りが常にゼロを返す不具合を修正しました。
345
-
346
- * ft_string型とft_wstring型のフィールドでfield::getFVbin()とtable::getFVbin()に
347
- よる値の読み取りができない不具合を修正しました。
348
-
349
- * Windowsのパイプ接続時の共有メモリサイズのデフォルト値が、サーバーとクライアント
350
- で異なる不具合を修正しました。
351
-
352
- * activeTableクエリーによるft_textとft_blobフィールドの読み取りで、フィールドの
353
- 絞り込みが無い場合、不正なポインターを返す不具合を修正しました。
354
-
355
- * Transactdプラグインのソースコードを MySQL 5.7.6対応にしました。cmakeは現在未対応
356
- です。ビルドにはcmakeの修正が必要です。