xml_fdwふたたび

もしかすると次回のJPUG勉強会で進捗を聞かれるかもしれないので、そろそろ準備をしておかないとまずいか。

TODO再整理

とりあえずTODOを再整理しておこう。

  • ソースの公開
    • githubとかでいいのかな?こういうのやったことないから・・・
  • XPathがヒットしないときにNULL値を設定する処理。
  • 属性対応。
    • NodeType判定+αの処理を追加。
  • 名前空間への対応
    • xpathとセットでnamespace(prefix, url)リストを渡す?
    • 複数対応が必要。
  • カラム取得用XPathで複数ヒットしたときの扱い。とりあえず3案?
    • 複数ヒットしたときはエラー
    • 先頭1個のみを取得
    • 全て連結したテキスト
    • 配列で返却するというオプションがあってもいいのかも?
  • XML文書のデータソース指定の柔軟化。
    • URL指定、XMLデータベースへの拡張など。
    • libxml2のDOMパーサがURL受け付けてくれると早いのだが。
  • カラム取得用XPath生成に使う情報の定義
    • 現状は、CREATE FOREIGN TABLEのOPTIONでXPath式を直接指定。
    • カラム名・型定義情報から本当は取得したいところ。
    • 面倒なのでたぶんやらない。
  • XPathコンテキストのキャッシュ(生成コスト削減)
  • WHERE句のXPath-pushdown。
    • かなり限定された範囲ならpushdown可能?
  • XML文書に対するコスト計算・EXPLAIN仕様の検討
    • これはすぐには無理。というか熱意がない。
  • XQuery対応
    • libxml2では対応していないから、別のC/C++ XMLプロセッサでの書き換えがたぶん必要。
  • XSLT対応
    • XQuery対応よりは難易度低い?(libxml2ベースで開発できそう)

利用イメージ

何か利用イメージを考えると改造する意欲が湧いてくるかも。

  • RSSPostgreSQLで読み込む
    • 既にRSS-FDWはあるっぽいけど。
    • 名前空間対応、URL指定対応が出来ればOKのはず。
    • 最悪、curlRSSをダウンロードして読み込むか・・・?
  • XHTMLページをPostgreSQLで読み込む?