PSQL v13 R2 の新機能
 
このページをシェアする                  
PSQL v13 R2 の新機能
新機能および変更された機能の概要
以下のトピックでは、PSQL v13 R2(v13.30)の一般リリースにおける新機能と旧バージョンからの変更点を説明しています。
新しいファイル形式
データ バッファーの拡大
BTRVEX
AES-192 暗号化
"UPSERT"
Reporting Engine のリモート クライアント
SQL BIGIDENTITY による 8 バイト AUTOINCREMENT のサポート
ADO.NET Standard ドライバー
このドキュメントは、リリース後にも更新される可能性があります。最新バージョンは、弊社 Web サイトからダウンロードできます。
新しいファイル形式
PSQL v13 R2 エンジンは新しいファイル形式をサポートします。このファイル形式ではファイル サイズの制限が 64 TB まで拡張され、レコード数の増加も 40 億個を超えます。新しいファイル形式のバージョンは 13.0 と呼ばれます。
9.5 形式ファイルで許容されるファイル サイズとレコード数から拡張された 13.0 形式ファイルにフル アクセスするには、アプリケーションで、Btrieve の新しいエントリ ポイントの組み合わせ BTRVEX と BTRVEXID を使用し、8 バイト レコード アドレスを扱えるようにしておく必要があります。
既存の BTRV または BTRCALL エントリ ポイントを使用するアプリケーションは、引き続き 4 バイト レコード アドレスを使用し、9.5 および 13.0 形式ファイルはいずれも 9.5 形式における上限を使用できます。未変更の BTRV アプリケーションは、オペレーションが明示的なレコード アドレスを要求しない限り、9.5 形式の制限よりも大きい 13.0 形式ファイルにアクセスすることもできます。
PSQL v13 R2 エンジンのデフォルトのファイル形式の設定は 9.5 のままです。
13.0 形式のファイルは 2 GB のセグメント化をサポートしません。
クライアント - サーバーの互換性
PSQL の異なるバージョンが混在している環境では、以下の事項が当てはまります。
13.0 形式ファイルが 9.5 以前の形式の 256 GB サイズ制限以下である場合は、PSQL v13 SP2 またはそれ以前のクライアントは、PSQL v13 R2 エンジン上でその 13.0 形式ファイルにアクセスできる。
PSQL v13 SP2 以前のキャッシュ エンジンまたはクライアント レポート エンジンは、ファイル サイズにかかわらず 13.0 形式のファイルを開くことはできない。
PSQL v13 R2 キャッシュ エンジンまたはクライアント レポート エンジンは、PSQL v13 SP2 以前のエンジン上のファイルを開くことはできない。
データ バッファーの拡大
新しい BTRVEX エントリ ポイントは最大 252 KB のデータ バッファをサポートします。古い BTRV および BTRVCALL エントリー ポイントは、64 KB 未満のデータ バッファに制限されています。バッファー サイズが大きくなったことは、特に Extended Get オペレーションや Insert オペレーションで有用です。これらのオペレーションはレコード アドレスを伴うので、それらを BTRVEX に変換する場合はデータ バッファーのレイアウト変更を考慮しなければいけません。
Get Direct Chunk のディスクリプターは 64 KB に制限されていますが、1 個の大きなデータ バッファーに複数の 64 KB チャンクを要求することができます。
BTRVEX
13.0 形式のファイルのサイズが大きくなる可能性がある場合、およびより大きなデータ バッファーを使用する場合、以前の Btrieve インターフェイスが提供していたものより大きなランタイム値が必要となります。PSQL 13 R2 では BTRVEX と BTRVEXID という 2 つの新しいエントリ ポイントを導入しています。これらは BTRCALL および BTRCALLID とよく似ていますが、いくつかの関数の引数のデータ型の幅が広くなっている点と、いくつかのデータ バッファーのレイアウトが異なっている点が違います。宣言は btrvexid.h 内にあり、実装は BTRCALL と同じファイル内にあります。新しいエントリ ポイントの使用に関する詳細は、最新の SDK と 『Btrieve API Guide』を参照してください。
BTRVEX エントリ ポイントを使用する Btrieve オペレーションの場合、データ バッファーで渡される一部の値は、8 バイトのレコード アドレスやレコード カウントのように幅が広くなっています。8 バイト動作は BTRVEX エントリ ポイントに起因するものであり、アクセスするファイルのファイル形式によって決まることでないことに留意してください。次のオペレーションは、データ バッファーのレイアウトの変更を必要とします。
Create (14)、Create Index (31)
Stat (15)
Get Position (22)
Get Direct (23)
Get Next Extended (36)、Get Previous Extended (37)
Step Next Extended (38)、Step Previous Extended (39)
Insert Extended (40)
Find Percentage (45)
Stat Extended (65) サブファンクション 3 および 8
Unlock (27)
エントリ ポイントの選択は、レコード データには影響しません。
上述のとおり、データ バッファー サイズの引数は BTRCALL が 16 ビット整数を使用する箇所が BTRVEX では 32 ビット整数へのポインターになっています。このため、データ バッファーを 64 KB より大きくすることができます。
新しいファイル形式へ移行する場合、ポジション ブロックとクライアント ID の値は BTRCALL と BTRVEX の両方で使用できるため、すべてのコードを一度に BTRVEX に変換する必要はないことを覚えておいてください。
BTRVEX のキー番号の引数は 32 ビット整数であるのに対し、BTRCALL は 8 ビットの符号付き整数を使用します。既存のコードを BTRVEX へ簡単に変換するためには、BTRVEX エントリ ポイントはキー値 128 ~ 255 を -128 ~ -1 に再マップします。これは、符号付きバイト(例:-2)としてでなく符号なしバイト(例:0xFE)として指定された定数に対応します。
クライアント - サーバーの互換性
BTRVEX を使用する PSQL v13 R2 クライアント アプリケーションは、PSQL v13 SP2 以前のエンジンにアクセスできます。ただし、明示的なレコード アドレスまたは拡張したデータ構造を伴うオペレーションはステータス コード 137 API 不一致エラーで失敗します。
AES-192 暗号化
13.0 ファイル形式では長いオーナーネームの暗号化に AES-192 を使用します。
"UPSERT"
INSERT ステートメントは ON DUPLICATE KEY UPDATE 句で拡張されています。これは一般に “upsert” として知られている動作を実装します。挿入された行が、既にテーブル内にある一意のキーと一致する場合、その行に対して ON DUPLICATE KEY 句が実行されます。UPDATE 句は古い値と新しい値の両方にアクセスできます。
たとえば、以下のクエリは新しいキーを持つ行を挿入し、既存のキーを持つ行の値とマージします。
INSERT INTO inventory (id, amount) (SELECT id, amount FROM new_stock)
ON DUPLICATE KEY UPDATE inventory.amount = inventory.amount + VALUES(amount)
挿入が更新に変更された場合、更新を行う前に挿入トリガーがすべてロール バックされます。
Reporting Engine のリモート クライアント
PSQL v13 R2 Reporting Engine はリモート SQL クライアントをサポートし、それらクライアントのライセンスをストレージ エンジン上で管理できるようになりました。
SQL BIGIDENTITY による 8 バイト AUTOINCREMENT のサポート
PSQL v13 SP2 で導入された Btrieve 型 8 バイト AUTOINCREMENT は、SQL 列の型 BIGIDENTITY としてもサポートされるようになりました。
さらに、PSQL v13 R2 は新しいグローバル変数としてBIGINT データ型の @@BIGIDENTITY を提供します。
ADO.NET Standard ドライバー
新しい ADO.NET SDK には、.NET Core など .NET Standard 2.0 システムで動作する ADO.NET プロバイダーが含まれています。
現時点で、現行のリリースは EF Core プロバイダーを提供していません。