DBD::Fulcrumモジュール(日本語チョー訳)

by Hippo2000(1999/11/25,2001/3/4)

DBD::Fulcrumモジュールのなのです。

なおこのドキュメントではCPANで公開されているDBD::Fulcrumのドキュメントを日本語化したものです。わかりにくい部分は本物を見てください。(^^;;

原本の著作権はDavide Migliavaccaさんがお持ちです。

なお内容等が間違っていたら修正します。ご連絡ください

履歴: 2001/3/4 誤字を修正 (まこと@FESさん、ありがとうございます)


目次


名前

DBD::Fulcrum - DBIモジュールのためのFulcrum SearchServer データベースドライバ


概要

  use DBI;
  use DBD::Fulcrum;
  $ful_dbh = DBI->connect('dbi:Fulcrum:', $user, $passwd);
        # "instance"の代りに$ENV{FULSEARCH}を使います。$user と $pass は通常、空です。
  # 詳細に付いてはDBIモジュールのドキュメントをご覧下さい。

説明

DBD::FulcrumはPerlモジュール、DBIモジュールと一緒に機能し、Fulcrum SearchServerデータソースへのアクセスを提供します。


必須事項

IBM AIX 3.2.5, 4.1.5; Digital OSF/1 3.2c, Digital Unix 4.0x, Solaris 2.5.1, 2.6 Sparc, Solaris 2.4 (ユーザからの報告), Windows NT 4.0sp3, HP-UX 10.20, 11.00上での、SearchServer 2.x以降(最近では3.5でしかテストされていません)

このドライバを作成するにはSearchServer C SDKが必要となります。


環境変数

Fulcrum SearchServer SDK アプリケーションとして、このドライバは操作仕様を判断するために環境変数を使用します:FULSEARCH FULCREATE FULTEMPが一般に必要となります。NTでは、DBI_DSN環境変数が優先されます。詳細についてはFulcrumのドキュメントを調べてください、または実際に使い方についてはtest.plを参照してください。


警告および注意

このドライバは基本的な機能といくつかのドライバ特有の属性を実装しています。0.20からは、DBI::Shell が(部分的に)サポートされています。


DBD::Fulcrum::ful_maxhitsinternalcolumns (ドライバ特有の属性)

この属性は結果値のバッファのアロケーションを変更します。これはドライバによる大きさ(driver-wide)で、実際にアロケーションが行われるときにチェックされます。そこでできるだけ早く使うように、そしてアプリケーションを通して使うようにしてください。

この属性を正の整数に設定することはドライバにすべての文字ベースのカラムのために14 *fulcrum_MaximumHistInInternalColumnsバイトを追加でアロケートさせます。これによりSHOW_MATCHESに'INTERNAL_COLUMNS'が入っているとき(つまりSET SHOW_MATCHES 'TRUE'またはSET SHOW_MATCHES 'INTERNAL_COLUMNS')、内部カラムから返されるデータ長の拡張を可能にします。

これらのSHOW_MATCHES設定では、SearchServerは適合開始/終了マーカをカラム・データに挿入します。もしこの属性が設定されなければ、デフォルトは0です;その場合、カラムはそのもとの長さで切り捨てられます。そのため元のデータの一部が返されません。

データの切捨てはエラーだとはみなされません。切捨てが発生したかどうかをチェックするために、test.plでの例のように$h->stateを使うことができます。


$sth->{ful_last_row_id} (ドライバ特有の読込のみの属性)

INSERT、UPDATE やDELETEステートメントの後、$sth->{ful_last_row_id}を介して最後に影響を受けた行のROW ID(FT_CID)を取得することができます。INSERT、UPDATE やDELETEの後でなければ、この属性の値は指定なしです。Loi Dachary(謝辞のセクションをご覧下さい)がコードを寄贈してくれました。この属性の使うためには、prepareだけが$sthを返し、executeだけがその属性を初期化するので、"do"の代りにprepare/executeを使わなければならないことに注意してください。


$sth->{CursorName} (DBI標準の読込のみの属性)

このドライバはSQLGetCursorNameを介してCursorName属性をサポートしています。


お詫び

最近このドライバに多くの時間を費やすことができないことを許してい下さい。もし問題を見つけたり、さらによい方法を見つけたとき、知らせていただければ私は大喜びです。


プラットホーム特有の注意


Solaris

Solarisで入っているDBD::Fulcrumの障害についてのレポートがあります。障害は通常、秘密のld.so.1での"リロケーション・エラー"のように明白です。この障害があると、execsqlを使って問い合わせが成功しても、Perlプログラムから失敗するかもしれません。解決方法は(楽観的には)、環境変数にLD_PRELOAD=$FULCRUM_HOME/lib/libftft.soを設定することです。解決法を見つけ、知らせてくれたJuha Makinen (FI)に感謝します。


Digital Unix

Fulcrumライブラリが32ビットであるために、このプラットホームでDBD::Fulcrumが機能するためには静的なPerlをビルドする必要があります。MakeMakerに詳しくないので、この見にくいハックをやらなければなりません:1) perl Makefile.PL 2) Makefile.aperlを手で編集 3) MAP_LINKCMD を変更し、それを read $(CC) -taso プラス そこにあるものすべて に変更する 4) make C-f Makefile.aperl (まさにここのまま)(原文は1) perl Makefile.PL 2) hand-edit Makefile.aperl 3) change MAP_LINKCMD and change it to read $(CC) -taso plus whatever was there. 4) make C-f Makefile.aperl (More or less))。

もしMakeMakerでこのやり方について提案をお持ちであれば、是非教えてください!。Fulcrumライブラリの32ビット性によって、"unaligned access"コンソール警告をうけるでしょう。"uac"を使ってこの警告をでないようにしてください、(私が知っている限り)他にこれを扱う方法はありません。


Windows NT

バージョン0.12からMicrosoft(tm) Windows(tm) NT(tm)でもビルドできるようになりました。

環境変数は、ここではほとんど役に立ちません。しかし、Makefile.PLがそれに依存しているのでFULCRUM_HOMEを設定する必要があります。FULSEARCHを使う代わりに、ODBCデータソースを指定するための第1パラメータ(SearchServerに使用するディレクトリを大雑把に定義します)を使ってください。test.plは環境変数DBI_DSNをの定義を使い、読みます。

そのためビルドとテストのためには:

*ご注意* 私はT4.0、Microsoft Visual C++ 5.0, perl 5.004_57(開発版)そしてDBI 0,92でSearchServer 3.5cを構築し、テストしたことがあります。他の環境でどうなるのかは想像ができません。そしてテストする時間がほとんどありません。もしよろしければ、試してみて、あなたの構成を教えてください。それをこのファイルに追加したいと思っています。

まず最初にSearchServerをインストールし稼動させてください。どうかDBIを使おうとする前にSearchServerをテストしてください。ビルド・テストの後、使う必要がある新しいODBCデータソースを宣言してください。

それを"testdsn"という名前にしてください。FULCREATE.、FULSEARCH そして FULTEMP の値に気をつけてください。環境変数を使う代わりに、ここで定義してください。

build-dir.sh(これは残念ながら動きません)にあるのとまったく同じファイルがFULCRUM_HOME\fultextになければ、FULCREATEとFULSEARCHに指定したディレクトリ(お好きなところを指定してください、そしてそれらは同じにしてください)にコピーしてください。(つまり、もしなければftpdf.iniファイルを無視してください)

まったくfultext.ftcと*messファイル群は最低限必要です。execsqlを使い、宣言されたデータソース"test.dsn"を選択し、ここにあるtest.fteを実行してください。これはテストで使われるTESTテーブルを生成します(いくつかのテストがここで失敗しています :-)

有効なコマンドプロプトで、環境変数DBI_DSNを以下のように設定してください: set DBI_DSN=testdsn

FULCRUM_HOMEをSearchServer C SDKのインストール・ディレクトリのベースを設定するのを忘れないでください。

これでperl Makefile.PLができるようになります。すくなくとも私の場合は動きました。


付帯事項

Fulcrum SearchServer: http://www.pcdocs.com


参考資料

DBIマニュアルページ


作者

DBD::Fulcrum by Davide Migliavacca.


謝辞

DBI関連のプロジェクトで働いているすべての人に感謝します。そして特にDBIそのものを作ってくれたTim Buceに。 安定していないリリースのテストと障害(それに解決策も!)を発見してくれたRoberto Bianchettin , Juha Makinen, Peter Wyngaard に。挿入、更新、削除の後のFT_CID値の取得のサポートを追加してくれたLoic Dacharyに。CursorName属性のサポートを追加してくれたPeter Wyngaardに。DBIメーリング・リストをずっとサポートしてくれたTed Lemonに。


著作権

(原文のまま)

The DBD::Fulcrum module is Copyright (c) 1996,1997,1998 Davide Migliavacca and Inferentia, Milano ITALY

You may distribute under the terms of either the GNU General Public License or the Artistic License, as specified in the Perl README file.


ホーム Perlの小技

ご意見、ご質問はこちらの掲示板で受け付けています。
またメールは河馬屋(Nifty)にお願いします。