DBのスキーマ変更(フィールド新設)が行なわれた場合に、それに対応してい ないクライアントによりDBへのアクセスが行なわれると不都合が生じる可能性 がある。これに対処するためにCATPを改訂し、DBスキーマの実装レベル(以下、 DB実装レベル)を表わすスキーマバージョンを導入する。
CATPを1.0から1.1へ改版する。仕様の変更点は表1の通り。
表1 CATP/1.0からCATP/1.1への変更点
項番 | 項目 | 改訂前 | 改訂後 |
1 | リクエストライン及びステータスラインのCATPバージョン | ”CATP/1.0” のみ使用可能 | ”CATP/1.0” または”CATP/1.1”を使用可能 |
2 | GETHANDLEのリクエストヘッダ | Authenticate | Authenticate および Schema-version |
各メソッドにおけるスキーマバージョン処理は表 2の通り。
表2 各メソッドにおけるスキーマバージョン処理
項番 |
メソッド名 |
リクエスト受信時 |
レスポンス返送時 |
1 |
GETHANDLE |
クライアントのスキーマバージョン取得 |
なし |
2 |
RELEASEHANDLE |
クライアントのスキーマバージョン破棄 |
なし |
3 |
RELEASEFRAME |
なし |
なし |
4 |
SEARCH |
なし |
返送フィールドチェック |
5 |
SCAN |
なし |
返送フィールドチェック |
6 |
RETRIEVE |
なし |
返送フィールドチェック |
7 |
INDEXLIST |
なし |
なし |
8 |
INSERT |
レコード登録チェック |
返送フィールドチェック |
9 |
UPDATE |
レコード登録チェック |
返送フィールドチェック |
10 |
DELETE |
レコード登録チェック |
なし |
11 |
SERVERPROCEDURECALL |
レコード登録チェック |
返送フィールドチェック |
GETHANDLE
Schema-versionリクエストヘッダによって渡されるクライアントが実装するスキーマバージョンをハンドルバンドル情報として格納する。
Schema-version リクエストヘッダの仕様は 表3 の通り。
表3 Schema-versionヘッダの仕様
項番 | 項目 | 定義 |
1 | 名前 | Schema-version |
2 | 意味 | クライアントの DB実装レベルを示す |
3 | 構文 | ALL DIGIT(整数) |
4 | 制限値 | 1以上 |
5 | デフォルト値 | 1 |
クライアントのスキーマバージョンの取得は表4に従って行なう。
表4 クライアントのDB実装レベル取得処理仕様
項番 | CATP バージョン |
Schema-versionヘッダ | 構文 チェック |
意味 チェック |
取得値 | 備考 |
1 | 1.0 | 無し | ? | ? | 1 | デフォルト値 |
2 | 有り | ? | ? | エラー | 411 Invalid Request-Header value(Schema-version) | |
3 | 1.1 | 無し | ? | ? | 1 | デフォルト値 |
4 | 有り | NG | ? | エラー | 411 Invalid Request-Header value(Schema-version) | |
5 | OK | NG | エラー | 411 Invalid Request-Header value(Schema-version) | ||
6 | OK | OK | ヘッダ値 |
以下の条件を満たす場合のみ実行を許可する。
Vc ≧ Vr
ただし、
Vc … クライアントのスキーマバージョン。ハンドルバンドル情報より取得。
Vr … 対象レコードに含まれるフィールドの実装レベルの最大値。
フィールドの実装レベルはサーバ内部に保持するフィールド定義より取得。
Vc ≧ Vf
ただし、
Vc … クライアントのDB実装レベル。ハンドルバンドル情報より取得。
Vf … フィールドの実装レベル。サーバ内部に保持するフィールド定義より取得。
ハンドルバンドル情報の破棄とともにクライアントの DB実装レベルも破棄する。
2000年1月(運用開始)時点のスキーマバージョンの定義は 表5の通り。
表5 各フィールドの実装レベル定義 ( 2000年1月現在)
項番 | DB種類 | CATPフィールド名 | スキーマ バージョン |
1 | 図書書誌 | TRVR | 2 |
2 | VTVR | 2 | |
3 | CWVR | 2 | |
4 | PTBTRVR | 2 | |
5 | AHDNGVR | 2 | |
6 | UTHDNGVR | 2 | |
7 | SHVR | 2 | |
8 | IDENT(仮称) | 2 | |
9 | 上記以外 | 1 | |
10 | 雑誌書誌 | TRVR | 2 |
11 | VTVR | 2 | |
12 | AHDNGVR | 2 | |
13 | SHVR | 2 | |
14 | IDENT(仮称) | 2 | |
15 | 上記以外 | 1 | |
16 | 著者名典拠 | HDNGVR | 2 |
17 | SFVR | 2 | |
18 | SAFVR | 2 | |
19 | 上記以外 | 1 | |
20 | 統一書名 | HDNGVR | 2 |
21 | SFVR | 2 | |
22 | SAFVR | 2 | |
23 | 上記以外 | 1 | |
24 | 上記以外 | 全フィールド | 1 |