前日30時頃,新知番実装の換装作業が XPO/Pg に差し掛かってから爆発的に出場周りの改良案が生まれ,また30時頃までその整理に追われた。
求頼雛形
この日最大の収穫。
DGDBI により,Cμ 交度上の出場情報は集約されたが,SQL 譜類として管理している諸定義中の情報は別に管理せざるをえない,という問題が残っていた。特に知番関連の記述が煩わしく,現在の知番実装最大の課題となっていた。
ふと,これらを定義するための外充て函数を用意し,それを通して定義すれば良いのではないかと思いついた。
仮に,tpl() で雛形変数を処理した求頼文を返し,qy_tpl() でそれを絡包するということを考えた。ドル引用符を利用すれば,これまでと変わらない感覚で記述出来るだろう。
雛形変数の記法は使い慣れている SyML に合わせることにした。例えば, [? clm_pk_kt ?] として Cμ 上の the_clm_pk_kt を参照出来るようにする。
これにより,知番実装の取り扱いに関する問題は完全に解消しそうだ。
PostgreSQL 9 の標準採用
そもそも最初は,主に名前付き仮引数のために PostgreSQL 9 を標準的な環境として採用することを決めた程度のところから始まった。求頼を知番交換規約に完全準拠させたい,という動機からだった。
現状,取得系の求頼はほぼ外充て函数化しているが,作成・更新系の求頼は INSERT 文や UPDATE 文を相振りから直に送信するという形を取っていた。
これは,kn の外充て函数を検討し始めた当時は PostgreSQL 9.0 が出て十分な時間が経っておらず,開発環境でも VPS でも導入しにくいことや,SQL 標準との兼ね合いなどから総合的に名前付き仮引数の使用を見送っていたことが背景にある。保守性の観点から,仕様の不安定な時期に引数の順序に依存した函数を使うべきではなかった。
すでに9.0の離立から9年経っており,開発環境でも捌き手でも自然に使える状況にあり,最近前縁でも ES 2015 や HTML5,CSS3 といった最新仕様への追随を決めたところでもあり,そろそろ世代更新してもいい頃だろうと判断した。
これにより,相振り・出場間で知番のやりとりが簡約化され一貫したものになる。
頭譜の整理
現状,XPO/Pg の実装に必要な交度は src/ 以下にまとめて置いてある。もともと備立名を tst.so にしていたくらい手定めから始まっているので,手早く備立・手定めを繰り返せるようにしていた。
もうそれなりに熟れているので,正式に xtd.DB に取り入れることにした。
頭譜名は xtd.DB/RDB/Pg/be(be.h)にし,現在 SPI:: としている名称空間も be:: に統一することにした。
be という表現は libpq-fe.h から瀕答を得た。
また,これまで libxtd では PgSQL と表現してきたが,略称として中途半端であるため Pg に統一することにした。〈page〉 の pg と紛らわしい気もしたが,RDB:: と組み合せて使えば問題ないだろう。
外充て函数定義の簡略化
DEF_FN(),RET_ROW(),GET_ROW() といったマクロ群の考案により,外充て函数の定義が大幅に簡略化された。
出場関連その他
その他,マクロ,出与え型の取り扱いや名前の整合性について検討し,細々とした理腑を進めた。
外充て函数では,PostgreSQL 側の用語に合わせ,row を tup などとしていたが,これは直感性を重視し前縁側で統一し,可能であれば類型なども統合することにした。
付加頭譜
出場関連ではないが,魔法引括の通称化のために考案した *+.h 形式の譜類を,本体頭譜の見通しを保つため,付加的な要素をまとめておく頭譜として位置付け直し,これを「付加頭譜」(plus header)と呼ぶことにした。