psqlODBC 7.03.0200についての技術情報が記述されています。
このリリースには、以下の3種類のドライバが含まれています
推奨のドライバです。ODBC 3.0 APIをサポートします。
ODBC 2.5 APIをサポートするドライバです。
ODBC 3.0 APIとUnicode APIをサポートするドライバです。これのみベータ版の扱いになります。なお、ここでのUnicodeはPostgreSQL側のエンコーディング設定とは何の関係もありません。
| 設定名 | 説明 |
| 遺伝的最適化処理を無効にする | 指定すると、遺伝的最適化処理を無効にします。大量のテーブルが関係する検索能率に影響があります。 |
| 一般ログ出力をする(C:\\psqlodbc.log) | ログを出力します。出力により、パフォーマンスが低下します。 |
| KSQO (クエリーキーセット最適化オプション) | キーセット最適化を利用します。この最適化手法は、7.3以降ののPostgreSQLにはもう存在しません。 |
| ユニ−クインデックスを使う。 | ユニークインデックスをドライバで認識します。 |
| ステ−トメントの構文解析を行なう | ODBC側で必要なステートメント解析を行う。これにより実行前によりきめ細やかな情報を取得することが可能になります。ただし、同時にパフォーマンスもいくぶん低下します。 |
| Declare〜Fetchを使用する | select文を実行するとき、代わりにDECLARE CURSOR+FETCHで対応します。DBCカーソルライブラリを利用した接続で、大量のデータが入ったテーブルを取得すると非常に時間がかかるという 問題を改善するために使えますが、更新を伴う場合にしばしばハングアップする既知の問題があります |
| キャンセルにSQLFreeStmtを使用する(Exp) | キャンセル時の内部処理に実験的なコードを利用します。 |
| 詳細ログ出力をする(C:\\mylog_xxxx.log) | 詳細ログを出力します。出力はきわめて大量で、パフォーマンスが大幅に低下します。 |
| 未知のサイズ動作 - 最大をとる | サイズが不明な型は、常に最大長であることにします。安定した動作が期待できます。 |
| 未知のサイズ動作 - 特定しない | サイズが不明な型は、不明であるとします。アプリケーションが不明なサイズを扱える事が前提になります。 |
| 未知のサイズ動作 - 最長をとる | サイズが不明な型は、結果の中で一番サイズが大きい物を返します。 |
| textを長文字列として扱う | text型の扱いを指定します。指定しない場合にはvarchar,した場合にはlongvarcharとします。 |
| 不明を長文字列として扱う | ODBCで扱えない型の扱いを指定します。指定方法はtextの場合と同じです。 |
| CharとしてBoolsを扱う | bool型の扱いを指定します。offにすると、Accessでの取り扱いに問題が発生します。 |
| キャッシュサイズ | Declare〜Fetchを利用する場合のキャッシュサイズを指定します。 |
| 最大Varchar | VARCHAR型の最大長を指定します。 |
| 最大LongVarChar | LONGVARCHAR型の最大長を指定します |
| システムテーブルプレフィクス | 'pg_'以外に、システムテーブルと見なしたいテーブルの接頭語を指定します。 |
| 設定名 | 説明 |
| リ−ドオンリィ | insert,update,delete文をドライバで拒絶します。しかし、select文と関数を使った更新などを通してしまいます。 |
| バ−ジョン列表示 | xminシステムカラムを強制的に表示し、その列のバージョンとして利用できるようにします。浮動小数点を利用したテーブルなどでODBCカーソルライブラリが誤った更新を検出することがあり、それを防ぐするために使います。 |
| システムテ−ブルを表示 | 'pg_'及び、システムテーブルプレフィクスで指定した接頭語を持つテーブルを一覧で取得出来ないようにします。 |
| Prepare情報取得に先行実行しない | SQLPrepare()を実行したときに、情報を取得するための先行実行を取りやめ、別の方法を用います。SQLPrepare()したあとSQLExecute()しないアプリケーションとの互換性をとるために使います。 |
| LF <-> CR/LF 変換を行う | サーバー側LF <-> クライアント側 CR/LFの変換を行います。 |
| -1 を真値(True)とする | bool型のtrueを、定義通りの1ではなく-1として扱います。AccessのYES/NO型との互換性をとるために利用しますが、指定する事で通常のアプリケーションとの互換性が失われます。 |
| 更新可能カーソル | ドライバで更新可能カーソルを利用可能にします。 |
| サーバー側 Prepare(7.3以後) | PREPARE/EXECUTE文を利用するようになります。これによりパフォーマンス改善が見込めますが、この機能は未だ実験的で様々な問題をはらんでいます。 |
| Int8 の代替定義 - default | INT8を、ODBC2.5ならvarchar,ODBC3.0ならbigintと認識します。 |
| Int8 の代替定義 - bigint | INT8を、(ODBC2.5には無い)bigintと認識します。 |
| Int8 の代替定義 - numeric | INT8を、numericと認識します。 |
| Int8 の代替定義 - varchar | INT8を、varcharと認識します。 |
| Int8 の代替定義 - double | INT8を、doubleと認識します。 |
| Int8 の代替定義 - int4 | INT8を、int4と認識します。 |
| プロトコルバ−ジョン | 6.2/6.3/6.4以降のいずれかを指定します |
| カラム列表示 | OIDカラムを強制表示します。指定すると、OIDの無いテーブルを見られなくなる事に注意してください。 |
| インデックスを装う | OIDカラムにインデックスが存在するように見せかけます。プライマリーキーのないテーブルで、プライマリーキーと見なされるようになります。 |
| 接続時 設定 | 接続時に自動的に実行するSQL文を記述します |
| 一般ログ(&L) (C:\\psqlodbc_xxxx.log - コミュニケ−ションログ | 接続文字列確定前に一般ログを出力します。 |
| 専用ログ (C:\\mylog_xxxx.log - 詳細デバッグ出力ログ) | 接続文字列確定前に専用ログを出力します。 |
| 型名 | ODBC型名 | 備考 |
| CHAR | SQL_CHAR | 254文字まで |
| VARCHAR | SQL_VARCHAR | 254文字まで |
| NUMERIC | SQL_NUMERIC | |
| DECIMAL | SQL_NUMERIC | |
| int2 | SQL_SMALLINT | |
| int4 | SQL_INTEGER | |
| int8 | SQL_VARCHAR | ODBC2.5。ただしオプションで変更可能 |
| int8 | SQL_BIGINT | ODBC3.0。ただしオプションで変更可能 |
| float | SQL_REAL | |
| double | SQL_FLOAT | |
| text | SQL_LONGVARCHAR | text as longvarchar指定時。8190文字まで |
| text | SQL_VARCHAR | text as longvarchar指定なし。254文字まで |
| date | SQL_(TYPE_)DATE | |
| time | SQL_(TYPE_)TIME | |
| timestamp(0) | SQL_TIMESTAMP | timestampではないので注意 |
| bytea | SQL_VARBINARY | 標準 |
| bytea | SQL_LONGVARBINARY | byteaをloに指定した場合 |
| lo | SQL_LONGVARBINARY | contrib/lo、あるいはリネームされたoidの両方とも |
| bool | SQL_CHAR | boolをchar型として扱う。'1'あるいは'0' |
| bool | SQL_BOOL | boolをchar型として扱う指定なし。1か0 |
| bool | SQL_BOOL | さらにTrueを-1に指定。-1か0 |
| 文字列 | 説明 |
| Description | 説明 |
| Servername | サーバー名 |
| Port | ポート番号 |
| Database | データベース名 |
| Username | ユーザー名 |
| Password | パスワード |
| Debug | デバッグ専用オプション |
| Fetch | キャッシュ |
| ReadOnly | リードオンリィ |
| CommLog | psqlodbc.logの保存 |
| Protocol | プロトコルバージョン |
| Optimizer | GEQOを無効にする |
| Ksqo | KSQO |
| ConnSettings | コネクション成功時に実行するSQL文 |
| UniqueIndex | ユニークインデックス |
| UnknownSizes | 不明の最大値 |
| CancelAsFreeStmt | CancelをSQLFreeStmt |
| UseDeclareFetch> | Declare/Fetchをつかう |
| TextAsLongVarchar | Textを長文字型 |
| UnknownsAsLongVarchar | 不明を長文字型 |
| BoolsAsChar | CharとしてBoolを扱う |
| MaxVarcharSize | Varcharの最大長 |
| MaxLongVarcharSize | 長文字型の最大長 |
| FakeOidIndex | OIDオプション - 偽のインデックス |
| ShowOidColumn< | OIDオプション - 表示 |
| RowVersioning | 列のバージョン |
| ShowSystemTables | システムテーブル表示 |
| Parse | ステートメントの構文解析 |
| ExtraSysTablePrefixes | システムテーブルのプレフィクス |
| DisallowPremature | Prepareで先行実行しない |
| UpdatableCursors | 更新可能カーソル |
| LFConversion | CR-CRLFの相互変換 |
| TrueIsMinus1 | 真値を-1として扱う |
| BI | INT8の設定 |
| ByteaAsLongVarBinary | Byteaをloに |
| UseServerSidePrepare | サーバ側Prepare |
| Debug | 詳細ログ出力 |
| Lie | 実装してない物も含めて、あらゆるAPIをサポートするように振る舞います。これはダイアログから設定できません。 |
| Socket | ネットワークの内部的なバッファサイズを指定します。これはダイアログから指定できません。 |
| 短縮文字列 | 対応するオプション |
| A6 | 接続文字列 |
| A7 | キャッシュサイズ |
| A8 | ソケットのバッファサイズ |
| B0 | Varchar最大長 |
| B1 | 長文字列型の最大長 |
| BI | INT8の設定 |
| C2 | システムテーブルのプレフィクス |
| CX | フラグ。最初の2バイトが後に続く設定ビット数(27)、その後がオプションをビットで示し、それを16進数化した物 |
フラグで指定するビットの詳細については、以下の通りです。
| ビット番号 | 対応するオプション |
| 1 | CRLF-LF変換 |
| 2 | 更新可能カーソル |
| 3 | Prepareで先行実行しない |
| 4 | ユニークインデックス |
| 5 | 6.3プロトコルである |
| 6 | 6.4プロトコルである |
| 7 | 不明なサイズは不明 |
| 8 | 不明なサイズは最大値 |
| 9 | GEQOを無効 |
| 10 | KSQO |
| 11 | psqlorbcの出力 |
| 12 | デバッグ |
| 13 | ステートメントの構文解析 |
| 14 | CancelにSQLFreeStmtを使う |
| 15 | Declare/Fetchを使う |
| 16 | リードオンリィ |
| 17 | textを長文字型 |
| 18 | 不明を長文字型 |
| 19 | Charとしてboolを扱う |
| 20 | 列のバージョン |
| 21 | システムテーブルの表示 |
| 22 | OIDカラム表示 |
| 23 | OIDカラムに偽のインデックス |
| 24 | 真値を-1として扱う |
| 25 | byteaをlo |
| 26 | サーバ側Prepare |
| 27 | 予約 |
| API名 | 実装されている部分 |
| SQLSetConnectOption<(ODBC2.5) | AUTOCOMMIT関連 |
| SQLSetConnectAttr(ODBC3.0) | AUTOCOMMIT関連 |
| SQLSetDiagField | 最低限 |
| SQLGetDiagField | 最低限 |
ラージオブジェクトを利用するためには、以下のような3種類の方法があります。