PR

JDBCドライバが外出しに

 JDBCドライバがPostgreSQLのソースコードに付属しなくなった。JDBCドライバは別途http://jdbc.postgresql.orgから入手できる。これは,JDBCドライバの開発のペースとPostgreSQLの開発のペースの歩調を合わせるのが難しくなったためと思われる.JDBCドライバの開発が外出しになったことにより,よりJDBCドライバの改善がタイムリーにできるようになると期待される。

 同様の理由で,Tclインターフェイスも削除,http://gborg.postgresql.orgでサポートされるようになった。

SQL構文の拡張

  • 行構成子(row constructor)が導入され,いろいろなところで行表現が利用できるようになった。例を示す。
    SELECT ROW(1,2.5,'this is a test');
    SELECT ROW(1,2.5,'this is a test') = ROW(1, 3, 'not the same');
    SELECT ROW(1,2.5,'this is a test') IN (SELECT * FROM t1);
    
    CREATE TABLE mytable(f1 int, f2 float, f3 text);
    CREATE FUNCTION getf1(mytable) RETURNS int AS 'SELECT $1.f1' LANGUAGE SQL;
    SELECT getf1(ROW(1,2.5,'this is a test'));
    
    SELECT ROW(a, b, c) IS NOT NULL FROM table;
    

    LIKE/ILKE適用範囲の拡張

     LIKE,ILIKEを副問い合わせ,配列と共に使用できるようになった。以下は,文字列'foo'が,'a'で始まっているか,あるいは'o'で終わっているかどうかをテストするものである(どちらもTRUEを返す)。

    SELECT 'foo' LIKE ANY (SELECT 'a%' UNION SELECT '%o');
    SELECT 'foo' LIKE ANY (ARRAY['%a','%o']);
    

    CSV形式のサポート

    COPYコマンドでCSV形式のexport/importがサポートされた。

    構文エラー表示の改善

     エラー個所が分かりやすく表示されるようになった。

    test=# SELECT FROM t1;
    ERROR:  syntax error at or near "FROM" at character 8
    LINE 1: SELECT FROM t1;
                   ^
    

    ALTER TABLEの機能追加

     ALTER TABLEに以下のような機能が追加された。

  • ADD COULUMNで追加された列にデフォルト値を設定できるようになった

  • 列の型を変更できるようになった

  • ADD COLUMNでSERIAL型の列を追加できるようになった

  • ALTER TABLE ... SET WITHOUT CLUSTERの追加

    OIDを生成しないことをデフォルトにできるようになった

     postgresql.confの新しいパラメータ「default_with_oids」で,CREATE TABLE時にOID列を付与するかどうかのデフォルトの挙動を指定できるようになった。

    LOCKコマンドにNOWAITオプションの追加

     テーブルをロックする際にすでにロックが他のトランザクションに取得されていた際にロックの解放を待つのではなく,直ちにエラーを返すことができるようになった。

    REINDEXのロックがより緩やかに

     REINDEX実行中,テーブル本体を読み出してもロックされなくなった(ただし,インデックスの読み出しはロックされる)。

    pg_cancel_backend

     問い合わせをキャンセルする関数pg_cancel_backendが追加された。

    ユーザ定義関数の宣言の際に引数に名前を付けることができるようになった

     ただし,関数内で引数の名前を参照できるのはPL/pgsSQLのみ。

    PL/pgSQLに例外処理機構が追加された

    EXCEPTION構文で例外の補足と例外処理の実行ができるようになった。

    libpqのスレッド対応

     PostgreSQLのC言語インターフェイスであるlibpqをスレッド・セーフ状態で自動構築できるようになった。なお,依然としてスレッド対応でない関数もわずかに残っているので注意が必要である。

    コンパイル時設定を表示するための,読み込み専用のpostgresql.confのパラメータが追加された

    表2●コンパイル時設定を表示するためのpostgresql.confのパラメータ
    名称 意味
    block_size ブロック・サイズ(単位:バイト)
    integer_datetimes 日付の内部表現が整数かどうか(--enable-integer-datetimesがコンパイル時に指定されているかどうか)
    max_function_args 関数の引数の数の最大
    max_identifier_length 識別子の最大バイト長
    max_index_keys マルチカラム・インデックスで指定できるキー数の最大値