HTTP SQL API
説明
StarRocks v3.2.0 は、ユーザーが HTTP を使用してさまざまなタイプのクエリを実行できる HTTP SQL API を導入しました。現在、この API は SELECT、SHOW、EXPLAIN、および KILL ステートメントをサポートしています。
curl コマンドを使用した構文:
curl -X POST 'http://<fe_ip>:<fe_http_port>/api/v1/catalogs/<catalog_name>/databases/<database_name>/sql' \
-u '<username>:<password>' -d '{"query": "<sql_query>;", "sessionVariables":{"<var_name>":<var_value>}}' \
--header "Content-Type: application/json"
リクエストメッセージ
リクエストライン
POST 'http://<fe_ip>:<fe_http_port>/api/v1/catalogs/<catalog_name>/databases/<database_name>/sql'
| フィールド | 説明 |
|---|---|
| fe_ip | FE ノードの IP アドレス。 |
| fe_http_port | FE HTTP ポート。 |
| catalog_name | catalog 名。v3.2.0 では、この API を使用して StarRocks 内部テーブルのみをクエリできます。つまり、<catalog_name> は default_catalog にのみ設定できます。v3.2.1 以降、この API を使用して external catalogs のテーブルをクエリできます。 |
| database_name | データベース名。リクエストラインでデータベース名が指定されておらず、SQL クエリでテーブル名が使用されている場合、テーブル名の前にそのデータベース名を付ける必要があります。例: database_name.table_name。 |
-
指定された catalog 内のデータベースを跨いでデータをクエリします。SQL クエリでテーブルが使用されている場合、テーブル名の前にそのデータベース名を付ける必要があります。
POST /api/v1/catalogs/<catalog_name>/sql -
指定された catalog およびデータベースからデータをクエリします。
POST /api/v1/catalogs/<catalog_name>/databases/<database_name>/sql
認証方法
Authorization: Basic <credentials>
基本認証が使用されます。つまり、credentials に対してユーザー名とパスワードを入力します(-u '<username>:<password>')。ユーザー名にパスワードが設定されていない場合、<username>: のみを渡し、パスワードを空のままにすることができます。たとえば、root アカウントを使用する場合、-u 'root:' と入力できます。
リクエストボディ
-d '{"query": "<sql_query>;", "sessionVariables":{"<var_name>":<var_value>}}'
| フィールド | 説明 |
|---|---|
| query | SQL クエリ、STRING 形式。SELECT、SHOW、EXPLAIN、および KILL ステートメントのみがサポートされています。HTTP リクエストに対して実行できる SQL クエリは 1 つだけです。 |
| sessionVariables | クエリに対して設定したい セッション変数、JSON 形式。このフィールドはオプションです。デフォルトは空です。設定したセッション変数は同じ接続に対して有効であり、接続が閉じられると無効になります。 |
リクエストヘッダー
--header "Content-Type: application/json"
このヘッダーは、リクエストボディが JSON 文字列であることを示します。
レスポンスメッセージ
ステータスコード
- 200: HTTP リクエストが成功し、データがクラ イアントに送信される前にサーバーが正常です。
- 4xx: HTTP リクエストエラー、クライアントエラーを示します。
500 Internal Server Error: HTTP リクエストが成功しましたが、データがクライアントに送信される前にサーバーがエラーに遭遇しました。- 503: HTTP リクエストが成功しましたが、FE がサービスを提供できません。
レスポンスヘッダー
content-type はレスポンスボディの形式を示します。改行区切りの JSON が使用され、レスポンスボディは \n で区切られた複数の JSON オブジェクトで構成されます。
| 説明 | |
|---|---|
| content-type | 形式は改行区切りの JSON で、デフォルトは "application/x-ndjson charset=UTF-8" です。 |
| X-StarRocks-Query-Id | クエリ ID。 |