Skip to content

[add] --no-fetch-dataオプションを追加 - #51

Merged
denzow merged 8 commits into
mainfrom
feature/no-fetch-data-mode
Mar 4, 2026
Merged

[add] --no-fetch-dataオプションを追加#51
denzow merged 8 commits into
mainfrom
feature/no-fetch-data-mode

Conversation

@denzow

@denzow denzow commented Mar 4, 2026

Copy link
Copy Markdown
Owner

Summary

クエリを実行するがデータを取得しないモードと、単体クエリ実行モードを実装しました。

追加機能

  1. --no-fetch-data オプション: クエリの構文チェックやDMLクエリの実行時にデータ転送のオーバーヘッドを削減
  2. -c オプション: REPLに入らずに単体のクエリを実行して終了(psql風)

変更内容

  • redasql/dto.py: CommandArgsno_fetch_datacommand フィールドを追加
  • redasql/command.py: CLI引数パーサーに --no-fetch-data-c/--command オプションを追加
  • redasql/command.py: execute_query_handler() で no-fetch-data モード時の簡潔な出力を実装
  • redasql/command.py: main() で -c オプション使用時の単体クエリ実行を実装
  • redasql/command.py: -c オプション使用時にセミコロンを自動追加(psqlと同様)
  • redasql/api_client.py: ApiClientno_fetch_data パラメータを追加(将来の拡張用)
  • pyproject.toml: poetry の deprecation warning を解消

動作

--no-fetch-data オプション

通常モード:

> SELECT * FROM users LIMIT 10;
+----+-------+
| id | name  |
+----+-------+
...
+----+-------+
10 rows returned.

no-fetch-dataモード:

> SELECT * FROM users LIMIT 10;
Query OK, 10 rows (0.0234s)

-c オプション

REPLモード(従来):

$ redasql -k <API_KEY> -s <SERVER> -d <DATASOURCE>
> SELECT COUNT(*) FROM users;
...
> \q

単体クエリ実行モード(新機能):

# セミコロンなしでもOK(psqlと同様)
$ redasql -c "SELECT COUNT(*) FROM users" -k <API_KEY> -s <SERVER> -d <DATASOURCE>
Query OK, 1 row (0.0234s)

# セミコロンありでもOK
$ redasql -c "SELECT COUNT(*) FROM users;" -k <API_KEY> -s <SERVER> -d <DATASOURCE>
Query OK, 1 row (0.0234s)

使用例

# 構文チェック(REPLモード)
redasql --no-fetch-data -k <API_KEY> -s <SERVER> -d <DATASOURCE>
> SELECT * FROM invalid_syntax;
[ERROR] ...

# DMLクエリの実行(REPLモード)
redasql --no-fetch-data -k <API_KEY> -s <SERVER> -d <DATASOURCE>
> UPDATE users SET status = 'active' WHERE id = 123;
Query OK, 1 row (0.0156s)

# 単体クエリ実行(スクリプト向け)
redasql -c "SELECT COUNT(*) FROM users" -d mydb -k <API_KEY> -s <SERVER>

# 単体クエリ + データ取得なし(最速・最小出力)
redasql -c "UPDATE users SET status='active' WHERE id=123" -d mydb --no-fetch-data
Query OK, 1 row (0.0156s)

# スクリプトでの使用例
for id in 1 2 3; do
  redasql -c "UPDATE users SET processed=true WHERE id=$id" -d mydb --no-fetch-data
done

Test plan

  • CLI引数パーサーが --no-fetch-data オプションを正しく認識する
  • CLI引数パーサーが -c オプションを正しく認識する
  • CommandArgsno_fetch_datacommand フィールドを保持する
  • モジュールのインポートが成功する
  • セミコロンなしのクエリが自動的にセミコロン付きで実行される
  • poetry の deprecation warning が表示されない
  • 実際のRedashサーバーで --no-fetch-data オプションが正しく動作することを確認
  • 実際のRedashサーバーで -c オプションが正しく動作することを確認
  • -c--no-fetch-data の組み合わせが正しく動作することを確認
  • エラー時の動作が正常であることを確認

🤖 Generated with Claude Code

クエリを実行するがデータを取得しないモードを実装
- CommandArgsにno_fetch_dataフィールドを追加
- CLIに--no-fetch-dataオプションを追加
- 実行時に行数と実行時間のみを表示(例: Query OK, 10 rows (0.0234s))
- 構文チェックやDMLクエリの実行に最適

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@denzow denzow self-assigned this Mar 4, 2026
denzow and others added 7 commits March 4, 2026 15:42
psql風の-cオプションを実装
- -c/--commandオプションでクエリを指定し、REPLに入らずに実行して終了
- スクリプトや自動化に便利
- --no-fetch-dataと組み合わせて使用可能
- データソース(-d)の指定が必須

使用例:
  redasql -c "SELECT COUNT(*) FROM users" -d mydb
  redasql -c "UPDATE users SET status='active'" -d mydb --no-fetch-data

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
tool.poetry.dev-dependencies を tool.poetry.group.dev.dependencies に変更
- Poetry の新しい依存関係グループ形式に対応
- 実行時のwarningが表示されなくなる

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
-cオプション使用時にクエリが`;`で終わっていない場合は自動追加
- psqlと同様の動作を実現
- `redasql -c "SELECT 1" -d mydb` が動作するように
- 既に`;`がある場合は重複しないように処理

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
actions/cache, actions/checkout, actions/setup-pythonを最新版に更新
- actions/cache@v2 -> v4 (v2は廃止されてエラーになる)
- actions/checkout@v2 -> v4
- actions/setup-python@v1 -> v5

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Poetry 2.3.2 のインストールに失敗する問題を回避
- snok/install-poetry@v1 で version: 1.8.3 を明示的に指定
- 安定版を使用することでCIの信頼性を向上

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
pyproject.toml変更に伴うlockファイルの更新
- tool.poetry.dev-dependencies -> tool.poetry.group.dev.dependencies への変更を反映

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Ubuntu 24.04ではdocker-composeコマンドが廃止され、docker composeに統合
- ハイフンなしの`docker compose`コマンドを使用

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@denzow
denzow merged commit 97933b4 into main Mar 4, 2026
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant