やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

SQLite3ドットコマンド(.progress)

 よくわからん。

.help

.progress N              Invoke progress handler after every N opcodes

 「N個のオペコードごとに進行状況ハンドラーを呼び出す」

 は?

公式ドキュメント

データベース接続Dのsqlite3_exec(), sqlite3_step()およびsqlite3_get_table()の長時間実行中に、コールバック関数Xを定期的に呼び出し ます。このインターフェースの使用例は大規模なクエリ中にGUIを最新の状態に保ちます。

.progress

sqlite3
.progress 1
select 1 union select 2;
select 1 union select 2;

 特に何も起こらない。

  • そもそも「進行状況ハンドラ」とか「コールバック関数」とやらを指定する方法がわからん
  • 「オペコード」も何のことだか不明

 たぶんユーザへのレスポンスを改善する機能なのだろう。DBが大量のときSQL実行中にフリーズしてしまうため、一定の仕事をしたらメインスレッドに結果を返すことで。

 でもどうやって使うかは不明。動作確認の方法もわからん。

オペコードの資料

 これかな? やっぱわからん。

対象環境

$ uname -a
Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux

前回まで