Using extension function in a VIEW causes exception to be printed
- 主要言語
- Python
- スター
- 3.3k
- フォーク
- 95
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
With current git:
```sql
.load ./crypto -- included in popular sqlean extension for sqlite
CREATE TABLE products (
product_id INTEGER PRIMARY KEY,
product_name TEXT NOT NULL
);
INSERT INTO products (product_name) VALUES ('Wireless Mouse');
CREATE VIEW v_hashed_product_id AS
SELECT
hex(crypto_blake3(product_id))
FROM products;
```
Running this in the REPL prints out this exception:
```python
File "site-packages/litecli/completion_refresher.py", line 85, in _bg_refresh
refresher(completer, executor)
~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
File "site-packages/litecli/completion_refresher.py", line 128, in refresh_tables
table_cols = list(executor.table_columns())
File "site-packages/litecli/sqlexecute.py", line 197, in table_columns
cur.execute(self.table_columns_query)
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
sqlite3.OperationalError: no such function: crypto_blake3
```
but the view is created and works as expected.
Furthermore, existing and then opening the db in litecli also prints this exception:
```text
$ litecli ./my.db
File "site-packages/litecli/completion_refresher.py", line 85, in _bg_refresh
refresher(completer, executor)
~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
File "site-packages/litecli/completion_refresher.py", line 128, in refresh_tables
table_cols = list(executor.table_columns())
File "site-packages/litecli/sqlexecute.py", line 197, in table_columns
cur.execute(self.table_columns_query)
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
sqlite3.OperationalError: no such function: crypto_blake3
my.db>
```
Here's a link to sqlean [binaries](https://github.com/nalgeon/sqlean/releases/latest) for testing.
コントリビューションガイド
調査の方向性
まず `litecli/completion_refresher.py` と `litecli/sqlexecute.py` を調べます。特に、バックグラウンド更新と traceback に記載されている `table_columns()` クエリを確認してください。接続で利用できない拡張関数を使用する SQLite ビューを用いて再現するか、そのようなビューを含むデータベースを開いて再現します。完了条件は、補完の更新中に CLI が例外を出力しなくなり、ビューが引き続き使用できることです。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- python, sqlite
- 領域
- cli, database
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 活発
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 66/100