変更内容
長さが異なる文字列型、または各国語文字列型のデータを以下に示すように比較を行います(P番号PG82373により修正されており、これを含む緊急修正を適用していない場合に該当します)。
短い文字列の長さで文字列が一致しない場合は、文字コード系に基づいて表現した時の数値で大小関係を判定します。
短い文字列の長さで文字列が一致し、長い文字列の短い文字列の長さより後続の文字がすべて空白の場合は、長い文字列と短い文字列は等しいと判断します。
短い文字列の長さで文字列が一致し、長い文字列の短い文字列の長さより後続の文字に空白以外がある場合は、長い文字列は短い文字列よりも大きいと判断します。
長さが異なる文字列型、または各国語文字列型のデータを以下に示すように比較を行います。
短い文字列の長さで文字列が一致しない場合は、文字コード系に基づいて表現した時の数値で大小関係を判定します。
短い文字列の長さで文字列が一致し、長い文字列の短い文字列の長さより後続の文字がすべて空白の場合は、長い文字列と短い文字列は等しいと判断します。
短い文字列の長さで文字列が一致し、長い文字列の短い文字列の長さより後続の文字に空白以外がある場合は、短い文字列に空白を補い文字コード系に基づいて表現した時の数値で大小関係を判定します。
非互換
以下の条件の場合、制約系アクセスモデルのアクセスプランの違いにより、返却されるレコード数が異なる場合があります。
V10.1.x以前のVLを使用していた。かつ、
1.のSymfoware Serverで、PG82373を吸収した緊急修正を適用していない。かつ、
V11.0.0以降にバージョンアップした場合。
V10.1.x以前では、PG82373の障害により、インデックスは、変更内容のV11.0.0以降の論理でインデックスキーを管理し、表レコードに対する探索条件は、変更内容のV10.1.x以前の論理で判定しています。そのため、V11.0.0以降では、制約系アクセスモデルのインデックスを使用するアクセスプランとインデックスを使用しないアクセスプランの違いにより、返却されるレコード数が異なる結果を返却する場合があります。V11.0.0以降では、アクセスプランの違いに関わらず同じ結果を返却するため、表レコードに対する探索条件の判定を変更内容に示す修正を行っています。これによって、制約系アクセスモデルのインデックスを使用しないアクセスプランのアプリケーションでは、以前使用していたVLと異なる件数が返却される可能性があります。
対処方法
V10.1.x以前と同様の動作としたい場合、システム用の動作環境ファイルにPAD_COMPARE_COMPATIBLE=YESを指定してください。
PAD_COMPARE_COMPATIBLE = ({YES | NO})
PAD_COMPARE_COMPATIBLE = NO
長さが異なる文字列型、または各国語文字列型のデータを比較する方法を指定します。
長さが異なる文字列型、または各国語文字列型のデータを以下に示すように比較を行います。
短い文字列の長さで文字列が一致しない場合は、文字コード系に基づいて表現した時の数値で大小関係を判定します。
短い文字列の長さで文字列が一致し、長い文字列の短い文字列の長さより後続の文字がすべて空白の場合は、長い文字列と短い文字列は等しいと判断します。
短い文字列の長さで文字列が一致し、長い文字列の短い文字列の長さより後続の文字に空白以外がある場合は、長い文字列は短い文字列よりも大きいと判断します。
長さが異なる文字列型、または各国語文字列型のデータを以下に示すように比較を行います。
短い文字列の長さで文字列が一致しない場合は、文字コード系に基づいて表現した時の数値で大小関係を判定します。
短い文字列の長さで文字列が一致し、長い文字列の短い文字列の長さより後続の文字がすべて空白の場合は、長い文字列と短い文字列は等しいと判断します。
短い文字列の長さで文字列が一致し、長い文字列の短い文字列の長さより後続の文字に空白以外がある場合は、短い文字列に空白を補い文字コード系に基づいて表現した時の数値で大小関係を判定します。
注意
システム用の動作環境ファイルにPAD_COMPARE_COMPATIBLE=YESを指定した場合、インデックスを使用する制約系アクセスモデルとインデックスを使用しない制約系アクセスモデルの違いにより、返却されるレコード数が異なる場合があります。アプリケーションで実行するSQLの制約系アクセスモデルが、インデックスを使用する制約系アクセスモデルとインデックスを使用しない制約系アクセスモデルが混在していないことを確認した上で、指定してください。