Pg 1.4.5 - en to ja translation catalogue (88 entries)

note: type: Plain text
en: home :: https://github.com/ged/ruby-pg docs :: http://deveiate.org/code/pg clog :: link:/History.md
ja: home :: https://github.com/ged/ruby-pg
    docs :: http://deveiate.org/code/pg
    clog :: link:/History.md

note: type: Plain text
en: [![Join the chat at https://gitter.im/ged/ruby-pg](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ged/ruby-pg?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
ja: [![https://gitter.im/ged/ruby-pg でチャットに参加](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ged/ruby-pg?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

note: type: Title ##
en: Description
ja: 説明

note: type: Plain text
en: Pg is the Ruby interface to the [PostgreSQL RDBMS](http://www.postgresql.org/).  It works with [PostgreSQL 9.3 and later](http://www.postgresql.org/support/versioning/).
ja: Pgは[PostgreSQL RDBMS](http://www.postgresql.org/)へのRubyのインターフェースです。[PostgreSQL 9.3以降](http://www.postgresql.org/support/versioning/)で動作します。

note: type: Plain text
en: A small example usage:
ja: 簡単な使用例は次の通りです。

note: type: Fenced code block (ruby)
en:   #!/usr/bin/env ruby
    
      require 'pg'
    
      # Output a table of current connections to the DB
      conn = PG.connect( dbname: 'sales' )
      conn.exec( "SELECT * FROM pg_stat_activity" ) do |result|
        puts "     PID | User             | Query"
        result.each do |row|
          puts " %7d | %-16s | %s " %
            row.values_at('pid', 'usename', 'query')
        end
      end
ja:   #!/usr/bin/env ruby
    
      require 'pg'
    
      # データベースへの現在の接続を表に出力します
      conn = PG.connect( dbname: 'sales' )
      conn.exec( "SELECT * FROM pg_stat_activity" ) do |result|
        puts "     PID | User             | Query"
        result.each do |row|
          puts " %7d | %-16s | %s " %
            row.values_at('pid', 'usename', 'query')
        end
      end

note: type: Title ##
en: Build Status
ja: ビルド状況

note: type: Plain text
en: [![Build Status Github Actions](https://github.com/ged/ruby-pg/actions/workflows/source-gem.yml/badge.svg?branch=master)](https://github.com/ged/ruby-pg/actions/workflows/source-gem.yml)  [![Binary gems](https://github.com/ged/ruby-pg/actions/workflows/binary-gems.yml/badge.svg?branch=master)](https://github.com/ged/ruby-pg/actions/workflows/binary-gems.yml)  [![Build Status Appveyor](https://ci.appveyor.com/api/projects/status/gjx5axouf3b1wicp?svg=true)](https://ci.appveyor.com/project/ged/ruby-pg-9j8l3)
ja: [![Github Actionsのビルド状況](https://github.com/ged/ruby-pg/actions/workflows/source-gem.yml/badge.svg?branch=master)](https://github.com/ged/ruby-pg/actions/workflows/source-gem.yml)  [![バイナリgem](https://github.com/ged/ruby-pg/actions/workflows/binary-gems.yml/badge.svg?branch=master)](https://github.com/ged/ruby-pg/actions/workflows/binary-gems.yml)  [![Appveyorのビルド状況](https://ci.appveyor.com/api/projects/status/gjx5axouf3b1wicp?svg=true)](https://ci.appveyor.com/project/ged/ruby-pg-9j8l3)

note: type: Title ##
en: Requirements
ja: 要件

note: type: Bullet: '* '
en: Ruby 2.4 or newer
ja: Ruby 2.4かそれより新しいバージョン

note: type: Bullet: '* '
en: PostgreSQL 9.3.x or later (with headers, -dev packages, etc).
ja: PostgreSQL 9.3.xかそれ以降のバージョン（ヘッダー付属のもの、例えば-devの名前のパッケージ）。

note: type: Plain text
en: It usually works with earlier versions of Ruby/PostgreSQL as well, but those are not regularly tested.
ja: それより前のバージョンのRubyやPostgreSQLでも通常は同様に動作しますが、定期的なテストはされていません。

note: type: Title ##
en: Versioning
ja: バージョン管理

note: type: Plain text
en: We tag and release gems according to the [Semantic Versioning](http://semver.org/) principle.
ja: [セマンティックバージョニング](http://semver.org/)の原則にしたがってgemをタグ付けしてリリースしています。

note: type: Plain text
en: As a result of this policy, you can (and should) specify a dependency on this gem using the [Pessimistic Version Constraint](http://guides.rubygems.org/patterns/#pessimistic-version-constraint) with two digits of precision.
ja: この方針の結果として、2つの数字を指定する[悲観的バージョン制約](http://guides.rubygems.org/patterns/#pessimistic-version-constraint)を使ってこのgemへの依存関係を指定することができます（またそうすべきです）。

note: type: Plain text
en: For example:
ja: 例えば次の通りです。

note: type: Title ##
en: How To Install
ja: インストール方法

note: type: Plain text
en: Install via RubyGems:
ja: RubyGemsを経由してインストールするには以下とします。

note: type: Plain text
en: You may need to specify the path to the 'pg_config' program installed with Postgres:
ja: Postgresと一緒にインストールされた'pg_config'プログラムへのパスを指定する必要があるかもしれません。

note: type: Plain text
en: If you're installing via Bundler, you can provide compile hints like so:
ja: Bundlerを介してインストールした場合は次のようにコンパイルのためのヒントを与えられます。

note: type: Plain text
en: See README-OS_X.rdoc for more information about installing under MacOS X, and README-Windows.rdoc for Windows build/installation instructions.
ja: MacOS Xへインストールする詳しい情報については README-OS_X.rdoc を、Windows用のビルドやインストールの説明については README-Windows.rdoc を参照してください。

note: type: Plain text
en: There's also [a Google+ group](http://goo.gl/TFy1U) and a [mailing list](http://groups.google.com/group/ruby-pg) if you get stuck, or just want to chat about something.
ja: 詰まったときやただ何か喋りたいときのために[Google+グループ](http://goo.gl/TFy1U)と[メーリングリスト](http://groups.google.com/group/ruby-pg)もあります。

note: type: Plain text
en: If you want to install as a signed gem, the public certs of the gem signers can be found in [the `certs` directory](https://github.com/ged/ruby-pg/tree/master/certs)  of the repository.
ja: 署名されたgemとしてインストールしたい場合は、リポジトリの[`certs`ディレクトリ](https://github.com/ged/ruby-pg/tree/master/certs)にgemの署名をする公開証明書があります。

note: type: Title ##
en: Type Casts
ja: 型変換

note: type: Plain text
en: Pg can optionally type cast result values and query parameters in Ruby or native C code. This can speed up data transfers to and from the database, because String allocations are reduced and conversions in (slower) Ruby code can be omitted.
ja: PgにはおまけとしてRubyとネイティブCコードにある結果の値やクエリ引数の型変換ができます。
    こうすることでデータベースとのデータの往来を加速させられますが、それは文字列のアロケーションが減り、（より遅い）Rubyのコードでの変換部分が除かれるからです。

note: type: Plain text
en: Very basic type casting can be enabled by:
ja: とても基本的な型変換は次のようにできます。

note: type: Fenced code block (ruby)
en:     conn.type_map_for_results = PG::BasicTypeMapForResults.new conn
        # ... this works for result value mapping:
        conn.exec("select 1, now(), '{2,3}'::int[]").values
            # => [[1, 2014-09-21 20:51:56 +0200, [2, 3]]]
    
        conn.type_map_for_queries = PG::BasicTypeMapForQueries.new conn
        # ... and this for param value mapping:
        conn.exec_params("SELECT $1::text, $2::text, $3::text", [1, 1.23, [2,3]]).values
            # => [["1", "1.2300000000000000E+00", "{2,3}"]]
ja:     conn.type_map_for_results = PG::BasicTypeMapForResults.new conn
        # ……これは結果の値の対応付けに作用します。
        conn.exec("select 1, now(), '{2,3}'::int[]").values
            # => [[1, 2014-09-21 20:51:56 +0200, [2, 3]]]
    
        conn.type_map_for_queries = PG::BasicTypeMapForQueries.new conn
        # ……そしてこれは引数値の対応付けのためのものです。
        conn.exec_params("SELECT $1::text, $2::text, $3::text", [1, 1.23, [2,3]]).values
            # => [["1", "1.2300000000000000E+00", "{2,3}"]]

note: type: Plain text
en: But Pg's type casting is highly customizable. That's why it's divided into 2 layers:
ja: しかしPgの型変換はかなり調整が効きます。2層に分かれているのがその理由です。

note: type: Title ###
en: Encoders / Decoders (ext/pg_*coder.c, lib/pg/*coder.rb)
ja: エンコーダーとデコーダー (ext/pg_*coder.c, lib/pg/*coder.rb)

note: type: Plain text
en: This is the lower layer, containing encoding classes that convert Ruby objects for transmission to the DBMS and decoding classes to convert received data back to Ruby objects. The classes are namespaced according to their format and direction in PG::TextEncoder, PG::TextDecoder, PG::BinaryEncoder and PG::BinaryDecoder.
ja: こちらはより低層で、DBMSへ転送するためにRubyのオブジェクトを変換するエンコーディングクラスと取得してきたデータをRubyのオブジェクトに変換し戻すデコーディングクラスが含まれています。クラスはそれぞれの形式によって名前空間PG::TextEncoder、PG::TextDecoder、PG::BinaryEncoder、そしてPG::BinaryDecoderに分かれています。

note: type: Plain text
en: It is possible to assign a type OID, format code (text or binary) and optionally a name to an encoder or decoder object. It's also possible to build composite types by assigning an element encoder/decoder.  PG::Coder objects can be used to set up a PG::TypeMap or alternatively to convert single values to/from their string representation.
ja: エンコーダーないしデコーダーオブジェクトにOIDデータ型や形式コード（テキストないしバイナリ）や任意で名前を割り当てることができます。要素のエンコーダーないしデコーダーを割り当てることによって複合型を構築することもできます。PG::CoderオブジェクトはPG::TypeMapをセットアップしたりその代わりに単一の値と文字列表現とを相互に変換したりするのに使えます。

note: type: Plain text
en: The following PostgreSQL column types are supported by ruby-pg (TE = Text Encoder, TD = Text Decoder, BE = Binary Encoder, BD = Binary Decoder):
ja: ruby-pgでは以下のPostgreSQLカラム型に対応しています（TE = Text Encoder、TD = Text Decoder、BE = Binary Encoder、BD = Binary Decoder）。

note: type: Bullet: '* '
en: Integer: [TE](rdoc-ref:PG::TextEncoder::Integer), [TD](rdoc-ref:PG::TextDecoder::Integer), [BD](rdoc-ref:PG::BinaryDecoder::Integer) 💡 No links? Switch to [here](https://deveiate.org/code/pg/README_md.html#label-Type+Casts) 💡
ja: Integer: [TE](rdoc-ref:PG::TextEncoder::Integer)、[TD](rdoc-ref:PG::TextDecoder::Integer)、[BD](rdoc-ref:PG::BinaryDecoder::Integer) 💡 リンクがないでしょうか。[こちら](https://deveiate.org/code/pg/README_rdoc.html#label-Type+Casts)を代わりに見てください 💡

note: type: Bullet: '  * '
en: BE: [Int2](rdoc-ref:PG::BinaryEncoder::Int2), [Int4](rdoc-ref:PG::BinaryEncoder::Int4), [Int8](rdoc-ref:PG::BinaryEncoder::Int8)
ja: BE: [Int2](rdoc-ref:PG::BinaryEncoder::Int2)、[Int4](rdoc-ref:PG::BinaryEncoder::Int4)、[Int8](rdoc-ref:PG::BinaryEncoder::Int8)

note: type: Bullet: '* '
en: Float: [TE](rdoc-ref:PG::TextEncoder::Float), [TD](rdoc-ref:PG::TextDecoder::Float), [BD](rdoc-ref:PG::BinaryDecoder::Float)
ja: Float: [TE](rdoc-ref:PG::TextEncoder::Float)、[TD](rdoc-ref:PG::TextDecoder::Float)、[BD](rdoc-ref:PG::BinaryDecoder::Float)

note: type: Bullet: '* '
en: Numeric: [TE](rdoc-ref:PG::TextEncoder::Numeric), [TD](rdoc-ref:PG::TextDecoder::Numeric)
ja: Numeric: [TE](rdoc-ref:PG::TextEncoder::Numeric)、[TD](rdoc-ref:PG::TextDecoder::Numeric)

note: type: Bullet: '* '
en: Boolean: [TE](rdoc-ref:PG::TextEncoder::Boolean), [TD](rdoc-ref:PG::TextDecoder::Boolean), [BE](rdoc-ref:PG::BinaryEncoder::Boolean), [BD](rdoc-ref:PG::BinaryDecoder::Boolean)
ja: Boolean: [TE](rdoc-ref:PG::TextEncoder::Boolean)、[TD](rdoc-ref:PG::TextDecoder::Boolean)、[BE](rdoc-ref:PG::BinaryEncoder::Boolean)、[BD](rdoc-ref:PG::BinaryDecoder::Boolean)

note: type: Bullet: '* '
en: String: [TE](rdoc-ref:PG::TextEncoder::String), [TD](rdoc-ref:PG::TextDecoder::String), [BE](rdoc-ref:PG::BinaryEncoder::String), [BD](rdoc-ref:PG::BinaryDecoder::String)
ja: String: [TE](rdoc-ref:PG::TextEncoder::String)、[TD](rdoc-ref:PG::TextDecoder::String)、[BE](rdoc-ref:PG::BinaryEncoder::String)、[BD](rdoc-ref:PG::BinaryDecoder::String)

note: type: Bullet: '* '
en: Bytea: [TE](rdoc-ref:PG::TextEncoder::Bytea), [TD](rdoc-ref:PG::TextDecoder::Bytea), [BE](rdoc-ref:PG::BinaryEncoder::Bytea), [BD](rdoc-ref:PG::BinaryDecoder::Bytea)
ja: Bytea: [TE](rdoc-ref:PG::TextEncoder::Bytea)、[TD](rdoc-ref:PG::TextDecoder::Bytea)、[BE](rdoc-ref:PG::BinaryEncoder::Bytea)、[BD](rdoc-ref:PG::BinaryDecoder::Bytea)

note: type: Bullet: '* '
en: Base64: [TE](rdoc-ref:PG::TextEncoder::ToBase64), [TD](rdoc-ref:PG::TextDecoder::FromBase64), [BE](rdoc-ref:PG::BinaryEncoder::FromBase64), [BD](rdoc-ref:PG::BinaryDecoder::ToBase64)
ja: Base64: [TE](rdoc-ref:PG::TextEncoder::ToBase64)、[TD](rdoc-ref:PG::TextDecoder::FromBase64)、[BE](rdoc-ref:PG::BinaryEncoder::FromBase64)、[BD](rdoc-ref:PG::BinaryDecoder::ToBase64)

note: type: Bullet: '  * '
en: TE: [local](rdoc-ref:PG::TextEncoder::TimestampWithoutTimeZone), [UTC](rdoc-ref:PG::TextEncoder::TimestampUtc), [with-TZ](rdoc-ref:PG::TextEncoder::TimestampWithTimeZone)
ja: TE: [現地時間](rdoc-ref:PG::TextEncoder::TimestampWithoutTimeZone)、[UTC](rdoc-ref:PG::TextEncoder::TimestampUtc)、[タイムゾーン付き](rdoc-ref:PG::TextEncoder::TimestampWithTimeZone)

note: type: Bullet: '  * '
en: TD: [local](rdoc-ref:PG::TextDecoder::TimestampLocal), [UTC](rdoc-ref:PG::TextDecoder::TimestampUtc), [UTC-to-local](rdoc-ref:PG::TextDecoder::TimestampUtcToLocal)
ja: TD: [現地時間](rdoc-ref:PG::TextDecoder::TimestampLocal)、[UTC](rdoc-ref:PG::TextDecoder::TimestampUtc)、[UTCから現地時間へ](rdoc-ref:PG::TextDecoder::TimestampUtcToLocal)

note: type: Bullet: '  * '
en: BD: [local](rdoc-ref:PG::BinaryDecoder::TimestampLocal), [UTC](rdoc-ref:PG::BinaryDecoder::TimestampUtc), [UTC-to-local](rdoc-ref:PG::BinaryDecoder::TimestampUtcToLocal)
ja: BD: [現地時間](rdoc-ref:PG::BinaryDecoder::TimestampLocal)、[UTC](rdoc-ref:PG::BinaryDecoder::TimestampUtc)、[UTCから現地時間へ](rdoc-ref:PG::BinaryDecoder::TimestampUtcToLocal)

note: type: Bullet: '* '
en: Date: [TE](rdoc-ref:PG::TextEncoder::Date), [TD](rdoc-ref:PG::TextDecoder::Date)
ja: Date: [TE](rdoc-ref:PG::TextEncoder::Date)、[TD](rdoc-ref:PG::TextDecoder::Date)

note: type: Bullet: '* '
en: JSON and JSONB: [TE](rdoc-ref:PG::TextEncoder::JSON), [TD](rdoc-ref:PG::TextDecoder::JSON)
ja: JSONとJSONB: [TE](rdoc-ref:PG::TextEncoder::JSON)、[TD](rdoc-ref:PG::TextDecoder::JSON)

note: type: Bullet: '* '
en: Inet: [TE](rdoc-ref:PG::TextEncoder::Inet), [TD](rdoc-ref:PG::TextDecoder::Inet)
ja: Inet: [TE](rdoc-ref:PG::TextEncoder::Inet)、[TD](rdoc-ref:PG::TextDecoder::Inet)

note: type: Bullet: '* '
en: Array: [TE](rdoc-ref:PG::TextEncoder::Array), [TD](rdoc-ref:PG::TextDecoder::Array)
ja: Array: [TE](rdoc-ref:PG::TextEncoder::Array)、[TD](rdoc-ref:PG::TextDecoder::Array)

note: type: Bullet: '* '
en: Composite Type (also called "Row" or "Record"): [TE](rdoc-ref:PG::TextEncoder::Record), [TD](rdoc-ref:PG::TextDecoder::Record)
ja: 複合型（「行」や「レコード」などとも言います）：[TE](rdoc-ref:PG::TextEncoder::Record)、[TD](rdoc-ref:PG::TextDecoder::Record)

note: type: Plain text
en: The following text formats can also be encoded although they are not used as column type:
ja: カラム型として使われていませんが以下のテキスト形式もエンコードできます。

note: type: Bullet: '* '
en: COPY input and output data: [TE](rdoc-ref:PG::TextEncoder::CopyRow), [TD](rdoc-ref:PG::TextDecoder::CopyRow)
ja: COPYの入出力データ：[TE](rdoc-ref:PG::TextEncoder::CopyRow)、[TD](rdoc-ref:PG::TextDecoder::CopyRow)

note: type: Bullet: '* '
en: Literal for insertion into SQL string: [TE](rdoc-ref:PG::TextEncoder::QuotedLiteral)
ja: SQL文字列に挿入するリテラル：[TE](rdoc-ref:PG::TextEncoder::QuotedLiteral)

note: type: Bullet: '* '
en: SQL-Identifier: [TE](rdoc-ref:PG::TextEncoder::Identifier), [TD](rdoc-ref:PG::TextDecoder::Identifier)
ja: SQLの識別子: [TE](rdoc-ref:PG::TextEncoder::Identifier)、[TD](rdoc-ref:PG::TextDecoder::Identifier)

note: type: Title ###
en: PG::TypeMap and derivations (ext/pg_type_map*.c, lib/pg/type_map*.rb)
ja: PG::TypeMapとその派生 (ext/pg_type_map*.c, lib/pg/type_map*.rb)

note: type: Plain text
en: A TypeMap defines which value will be converted by which encoder/decoder.  There are different type map strategies, implemented by several derivations of this class. They can be chosen and configured according to the particular needs for type casting. The default type map is PG::TypeMapAllStrings.
ja: TypeMapはエンコーダーまたはデコーダーのどちらによってどの値を変換するかを定義します。様々な型の対応付け戦略があるので、このクラスにはいくつかの派生が実装されています。型変換の特有の需要に合わせてそれらの派生から選んで調整を加えることができます。既定の型の対応付けはPG::TypeMapAllStringsです。

note: type: Plain text
en: A type map can be assigned per connection or per query respectively per result set. Type maps can also be used for COPY in and out data streaming.  See PG::Connection#copy_data .
ja: 型の対応付けは、結果の集合それぞれに対し、接続毎ないしクエリ毎に割り当てることができます。型の対応付けはCOPYの入出力データストリーミングでも使うことができます。PG::Connection#copy_dataを参照してください。

note: type: Plain text
en: The following base type maps are available:
ja: 以下の基底となる型の対応付けが使えます。

note: type: Bullet: '* '
en: PG::TypeMapAllStrings - encodes and decodes all values to and from strings (default)
ja: PG::TypeMapAllStrings - 全ての値と文字列について相互にエンコードとデコードを行います（既定）

note: type: Bullet: '* '
en: PG::TypeMapByClass - selects encoder based on the class of the value to be sent
ja: PG::TypeMapByClass - 送信する値のクラスに基づいてエンコーダーを選択します

note: type: Bullet: '* '
en: PG::TypeMapByColumn - selects encoder and decoder by column order
ja: PG::TypeMapByColumn - カラムの順番によってエンコーダーとデコーダーを選択します

note: type: Bullet: '* '
en: PG::TypeMapByOid - selects decoder by PostgreSQL type OID
ja: PG::TypeMapByOid - PostgreSQLのOIDデータ型によってデコーダーを選択します

note: type: Bullet: '* '
en: PG::TypeMapInRuby - define a custom type map in ruby
ja: PG::TypeMapInRuby - Rubyで独自の型の対応付けを定義します

note: type: Plain text
en: The following type maps are prefilled with type mappings from the PG::BasicTypeRegistry :
ja: 以下の型の対応付けはPG::BasicTypeRegistry由来の型の対応付けが入った状態になっています。

note: type: Bullet: '* '
en: PG::BasicTypeMapForResults - a PG::TypeMapByOid prefilled with decoders for common PostgreSQL column types
ja: PG::BasicTypeMapForResults - PG::TypeMapByOidによくあるPostgreSQLカラム型用にデコーダーが入った状態になっています

note: type: Bullet: '* '
en: PG::BasicTypeMapBasedOnResult - a PG::TypeMapByOid prefilled with encoders for common PostgreSQL column types
ja: PG::BasicTypeMapBasedOnResult - PG::TypeMapByOidによくあるPostgreSQLカラム型用のエンコーダーが入った状態になっています

note: type: Bullet: '* '
en: PG::BasicTypeMapForQueries - a PG::TypeMapByClass prefilled with encoders for common Ruby value classes
ja: PG::BasicTypeMapForQueries - PG::TypeMapByClassによくあるRubyの値クラス用にエンコーダーが入った状態になっています

note: type: Title ##
en: Thread support
ja: スレッド対応

note: type: Plain text
en: PG is thread safe in such a way that different threads can use different PG::Connection objects concurrently.  However it is not safe to access any Pg objects simultaneously from more than one thread.  So make sure to open a new database server connection for every new thread or use a wrapper library like ActiveRecord that manages connections in a thread safe way.
ja: PGには個々のスレッドが別々のPG::Connectionオブジェクトを同時に使えるという点でスレッド安全性があります。しかし1つ以上のスレッドから同時にPgのオブジェクトにアクセスすると安全ではありません。そのため必ず、毎回新しいスレッドを作るときに新しいデータベースサーバー接続を開くか、スレッド安全性のある方法で接続を管理するActiveRecordのようなラッパーライブラリを使うようにしてください。

note: type: Plain text
en: If messages like the following are printed to stderr, you're probably using one connection from several threads:
ja: 以下のようなメッセージが標準エラー出力に表示された場合、恐らく複数のスレッドが1つの接続を使っています。

note: type: Title ##
en: Fiber IO scheduler support
ja: Fiber IOスケジューラー対応

note: type: Plain text
en: Pg is fully compatible with `Fiber.scheduler` introduced in Ruby-3.0.  On Windows support for `Fiber.scheduler` is available on Ruby-3.1 or newer.  All possibly blocking IO operations are routed through the `Fiber.scheduler` if one is registered for the running thread.  That is why pg internally uses the asynchronous libpq interface even for synchronous/blocking method calls.  It also uses Ruby's DNS resolution instead of libpq's builtin functions.
ja: PgはRuby-3.0で導入された`Fiber.scheduler`に完全に対応しています。`Fiber.scheduler`のWindows対応についてはRuby-3.1以降で使えます。`Fiber.scheduler`が走らせているスレッドに登録されている場合、起こりうる全てのブロッキングIO操作はそのスケジューラーを経由します。同期的であったりブロックしたりするメソッド呼び出しについてもpgが内部的に非同期のlibpqインターフェースを使っているのはそれが理由です。またlibpqの組み込み関数に代えてRubyのDNS解決を使っています。

note: type: Plain text
en: Internally Pg always uses the nonblocking connection mode of libpq.  It then behaves like running in blocking mode but ensures, that all blocking IO is handled in Ruby through a possibly registered `Fiber.scheduler`.  When `PG::Connection.setnonblocking(true)` is called then the nonblocking state stays enabled, but the additional handling of blocking states is disabled, so that the calling program has to handle blocking states on its own.
ja: 内部的にPgは常にlibpqのノンブロッキング接続モードを使います。それからブロッキングモードで走っているように振舞いますが、もし`Fiber.scheduler`が登録されていれば全てのブロッキングIOはそのスケジューラーを通じてRubyで制御されます。`PG::Connection.setnonblocking(true)`が呼ばれたらノンブロッキング状態が有効になったままになりますが、それ以降のブロッキング状態の制御が無効になるので、呼び出しているプログラムはブロッキング状態を自力で制御しなければなりません。

note: type: Plain text
en: An exception to this rule are the methods for large objects like `PG::Connection#lo_create` and authentication methods using external libraries (like GSSAPI authentication).  They are not compatible with `Fiber.scheduler`, so that blocking states are not passed to the registered IO scheduler.  That means the operation will work properly, but IO waiting states can not be used to switch to another Fiber doing IO.
ja: この規則の1つの例外には、`PG::Connection#lo_create`や外部ライブラリを使う認証メソッド（GSSAPI認証など）のような、大きめのオブジェクト用のメソッドがあります。これらは`Fiber.scheduler`と互換性がないため、ブロッキング状態は登録されたIOスケジューラに渡されません。つまり操作は適切に実行されますが、IO待ち状態に別のIOを扱うFiberから使用を切り替えてくることができなくなります。

note: type: Title ##
en: Contributing
ja: 貢献

note: type: Plain text
en: To report bugs, suggest features, or check out the source with Git, [check out the project page](https://github.com/ged/ruby-pg).
ja: バグを報告したり機能を提案したりGitでソースをチェックアウトしたりするには[プロジェクトページをご確認ください](https://github.com/ged/ruby-pg)。

note: type: Plain text
en: After checking out the source, install all dependencies:
ja: ソースをチェックアウトしたあとは全ての依存関係をインストールします。

note: type: Plain text
en: Cleanup extension files, packaging files, test databases:
ja: 拡張ファイル、パッケージファイル、テストデータベースを一掃するには次のようにします。

note: type: Plain text
en: Compile extension:
ja: 拡張をコンパイルするには次のようにします。

note: type: Plain text
en: Run tests/specs with PostgreSQL tools like `initdb` in the path:
ja: パスにある`initdb`といったPostgreSQLのツールを使ってテストやスペックを走らせるには次のようにします。

note: type: Plain text
en: Or run a specific test with the line number:
ja: あるいは行番号を使って特定のテストを走らせるには次のようにします。

note: type: Plain text
en: Generate the API documentation:
ja: APIドキュメントを生成するには次のようにします。

note: type: Plain text
en: Make sure, that all bugs and new features are verified by tests.
ja: 必ず全てのバグと新機能についてテストを使って検証してください。

note: type: Plain text
en: The current maintainers are Michael Granger <ged@FaerieMUD.org> and Lars Kanis <lars@greiz-reinsdorf.de>.
ja: 現在のメンテナはMichael Granger <ged@FaerieMUD.org>とLars Kanis <lars@greiz-reinsdorf.de>です。

note: type: Title ##
en: Copying
ja: 著作権

note: type: Plain text
en: You may redistribute this software under the same terms as Ruby itself; see https://www.ruby-lang.org/en/about/license.txt or the BSDL file in the source for details.
ja: You may redistribute this software under the same terms as Ruby itself; see https://www.ruby-lang.org/en/about/license.txt or the BSDL file in the source for details.
    （参考訳：このソフトウェアはRuby自体と同じ条件の元で再配布することができます。詳細については https://www.ruby-lang.org/en/about/license.txt やソース中のBSDLファイルを参照してください）

note: type: Plain text
en: Portions of the code are from the PostgreSQL project, and are distributed under the terms of the PostgreSQL license, included in the file POSTGRES.
ja: Portions of the code are from the PostgreSQL project, and are distributed "
    "under the terms of the PostgreSQL license, included in the file POSTGRES.
    （参考訳：コードの一部はPostgreSQLプロジェクトから来ており、PostgreSQLの使用許諾の条件の元で配布されます。ファイルPOSTGRESに含まれています）

note: type: Title ##
en: Acknowledgments
ja: 謝辞

note: type: Plain text
en: See Contributors.rdoc for the many additional fine people that have contributed to this library over the years.
ja: 長年にわたって貢献してくださった方々についてはContributors.rdocを参照してください。

note: type: Plain text
en: We are thankful to the people at the ruby-list and ruby-dev mailing lists.  And to the people who developed PostgreSQL.
ja: ruby-listとruby-devメーリングリストの方々に感謝します。またPostgreSQLを開発された方々へも謝意を表します。
