> ## Documentation Index
> Fetch the complete documentation index at: https://docs.jinba.io/llms.txt
> Use this file to discover all available pages before exploring further.

# PostgreSQL

> PostgreSQLに対してクエリを実行

## 概要

PostgreSQLツールを使用すると、PostgreSQLデータベースに対してSQLクエリを実行できます。

## 主な機能

* `POSTGRES_RUN_QUERY`
  * PostgreSQLデータベースに対してSQLクエリを実行します。SELECT、INSERT、UPDATE、DELETEなどのSQL文をサポートします。
  * 入力: `connection`(PostgreSQL接続シークレット)と `query`(実行するSQL)
  * 結果を構造化されたデータ(カラムと行)として取得します。

## 認証

接続情報を含む `POSTGRES` シークレットを作成し、`connection` 入力として渡してください。

* **Host**: PostgreSQLサーバーのホスト名(必須)
* **Port**: ポート番号。省略時は `5432` が使われます。
* **Database**: 接続先のデータベース名
* **User**: 接続に使用するユーザー名
* **Password**: そのユーザーのパスワード
* **SSL**: SSLを使用するかどうか。デフォルトで有効です。無効にする場合は `false`(または `disable`)を設定してください。旧形式の `sslmode` フィールドも利用できます。

**注意**: 認証情報は機密情報として扱い、公開リポジトリにコミットしないでください。

### SSLの挙動

SSLはデフォルトで有効で、サーバー証明書の厳密な検証は行いません。SSLでの初回接続に失敗し、かつSSLが明示的に無効化されていない場合は、自動的にSSLなしで再接続を試みます(サーバーがSSL非対応の可能性があるため)。

## 使用例

### 例: PostgreSQLクエリの実行

```yaml theme={null}
- id: run_query
  input:
    - name: connection
      value: "{{secrets.MY_POSTGRES_SECRET}}"
    - name: query
      value: "SELECT id, email, created_at FROM users ORDER BY created_at DESC LIMIT 10;"
  tool: POSTGRES_RUN_QUERY
```

### 例: クエリ結果をLLMで要約

```yaml theme={null}
- id: fetch_orders
  input:
    - name: connection
      value: "{{secrets.MY_POSTGRES_SECRET}}"
    - name: query
      value: "SELECT status, COUNT(*) AS count FROM orders GROUP BY status;"
  tool: POSTGRES_RUN_QUERY

- id: summarize
  tool: OPENAI_INVOKE
  input:
    - name: prompt
      value: |
        以下の注文ステータス集計を週次レポート向けに要約してください。

        カラム: {{steps.fetch_orders.result.columns}}
        行: {{steps.fetch_orders.result.rows}}
```

## 注意事項

* **タイムアウト**: 接続は10秒、各SQL文の実行は30秒でタイムアウトします。
* **読み取り専用ではありません**: 書き込み系のSQL文(INSERT、UPDATE、DELETE、DDL)もそのまま実行されます。適切に権限を絞ったデータベースユーザーを使用してください。
* **結果のシリアライズ**: プリミティブ以外の値は文字列に変換されます。日時はISO 8601形式の文字列、バイナリ(`bytea`)は16進文字列、JSON・配列・オブジェクトはJSON文字列になります。
* **結果セットを返さないSQL文**: 結果セットを返さないクエリ(`RETURNING` なしの `INSERT` など)は、空の `columns` と `rows` を返します。
