1.0.9.2 の変更点(.NET Core)
ソース基準日: 2020年5月19日(版を示すソースコミットの日付)。1.0.9.1 からの変更です。
不具合修正
- 実行環境・DB — 全文検索のSQLをDBごとに構成し、参照するパラメータ名を揃えるよう修正した。
- 画面・表示 — PostgreSQLで期限付きテーブルの拡張項目を一括更新するとSQLエラーになる不具合を修正した。
修正の詳細
全文検索の条件をDBプロバイダーに合わせる
全文検索で使う検索語の辞書を、DBごとの CreateSearchTextWords に通してからSQLを組み立てます。PostgreSQLは検索文字列全体を1つの値として、GUIDをキーにした辞書を返し、SQL Serverは元の辞書を返します。両方に同じ検索語の分割・パラメータ構成を適用していた処理を分けています(Indexes.cs、PostgreSqlCommandText.cs、SqlServerCommandText.cs)。
WHERE句とパラメータの名前を揃える
全文検索のSQL生成へ、検索語の順番の番号ではなく、辞書のキーである paramName を渡します。パラメータを追加する処理も、キーに追加の連番を付けず、同じキーを使うように変更しています。SQLが参照する名前と、登録するパラメータ名を揃える修正です(Indexes.cs、Indexes.cs)。
| DB | レコード内容の検索条件 |
|---|---|
| PostgreSQL | FullText に対する %> の条件 |
| SQL Server | FullText に対する contains の条件 |
レコード本体と添付内容の両方について、DBプロバイダーのSQL生成処理を使います。固定した contains を文字列に埋め込んでいた分岐にも、プロバイダーを渡すようになっています(PostgreSqlCommandText.cs、SqlServerCommandText.cs、Indexes.cs)。
期限付きテーブルの一括更新で列名を引用する
一括更新の拡張項目で、列名を角括弧で囲む処理から、ダブルクォートで囲む処理へ変更しています。対象は IssueUtilities の分類・数値・日付などの値をSQLパラメータへ追加する分岐です。PostgreSQLでその列指定がSQLエラーになる条件を改めています(IssueUtilities.cs)。
たとえば分類項目 ClassA は、従来の [ClassA] ではなく "ClassA" として組み立てます。
ソース上の版番号
Web アプリの Version は 1.0.9-beta のままですが、AssemblyVersion と FileVersion は 1.0.9.2 です。この記事はアセンブリ版と対象コミットを基準にしています(Implem.Pleasanter.NetCore.csproj)。