48ファイル。
情報源
拡張関数のソースコードは以下ファイルを解凍した後./ext/misc/
配下にもある。
非公式ソースコードは以下。
一覧をつくる
wget https://www.sqlite.org/2019/sqlite-src-3290000.zip unzip sqlite-src-3290000.zip cd ./sqlite-src-3290000/ext/misc
49ファイルある。
ls -1 | sort | wc -l
49
一覧を出す。
ls -1 | sort
一覧
README.md
amatch.c
anycollseq.c
appendvfs.c
blobio.c
btreeinfo.c
carray.c
closure.c
completion.c
compress.c
csv.c
dbdata.c
dbdump.c
eval.c
explain.c
fileio.c
fossildelta.c
fuzzer.c
ieee754.c
json1.c
memstat.c
memtrace.c
memvfs.c
mmapwarm.c
nextchar.c
normalize.c
percentile.c
prefixes.c
regexp.c
remember.c
rot13.c
scrub.c
series.c
sha1.c
shathree.c
showauth.c
spellfix.c
sqlar.c
stmt.c
templatevtab.c
totype.c
unionvtab.c
vfslog.c
vfsstat.c
vtablog.c
vtshim.c
wholenumber.c
zipfile.c
zorder.c
以下は拡張関数ではない。
- README.md
たぶんすでに導入されているものがいくつかある。
- compress.c
- explain.c
- fileio.c
- json1.c
- regexp.c
- sqlar.c
- zipfile.c
もしかしたら他にもあるかも?
これで41ファイルに減った。
ソース|概要
------|----
amatch.c
|FTS曖昧一致。create virtual table T using approximate_match(v,w,l,e);
anycollseq.c|実装例。照合シーケンス。偽物。BINARY照合シーケンスのように動く。
appendvfs.c|VFSシム。ファイル末尾に追加する。
blobio.c|デバッグ用。blobの一部を読書する。
btreeinfo.c|sqlite_btreeinfo
仮想テーブル。読取専用。
carray.c|C言語の配列からテーブル値関数を作成する。
closure.c|仮想テーブルtransitive_closure
。推移閉包。木構造で使える。指定した要素をもつ親を得る。
completion.c|単語補完。completion($prefix,$wholeline)
compress.c|zlib圧縮関数を呼び出す。
csv.c|仮想テーブルcsv
。
dbdata.c|仮想テーブルsqlite_dbdata
,sqlite_dbptr
,sqlite_dbpage
。Bツリーから直接データを抽出する。ページの親子関係。
dbdump.c|コンテンツを変換するC言語のサブルーチン。sqlite3_db_dump
eval.c|eval()
SQL関数を実装する。第1引数にSQL文を渡すとその結果を返す。
explain.c|explain()
SQL関数を実装する。第1引数にSQL文を渡すとそのクエリプランを返す。
fileio.c|readfile()
,writefile()
,fsdir()
SQL関数を実装する。
fossildelta.c|RBUで使うSQL関数を実装する。delta_apply
,delta_create
,delta_output_size
,delta_parse
fuzzer.c|仮想テーブルfuzzer
。バリエーションを生成するデモ用。読取専用。スペル修正などに役立つ。
ieee754.c|SQL関数を実装する。正確な表示のための。IEEE754 Binary64浮動小数点数。ieee754
,(X)
,(Y,Z)
。X
==Y*pow(2,Z)
memstat.c|仮想テーブルsqlite3_status64
,sqlite3_db_status
。使用例SELECT * FROM memstat;
。
memtrace.c|SQLITE_CONFIG_MALLOC
を使用する拡張機能を実装する。
memvfs.c|インメモリVFS実装。
mmapwarm.c|sqlite3_mmap_warm
C言語関数は、メモリのマッピングの各ページに触れるために使用される。
nextchar.c|SQL関数next_char(A,T,F,W,C)
を実装する。
normalize.c|C言語関数sqlite3_normalize()
を実装する。SQL文字列を正規化して返す。
percentile.c|SQL関数percentile(Y,P)
を実装する。統計学。パーセンタイルとは、データを小さい順に並べたとき、初めから数えて全体の%に位置する値のこと。最小値から数えて10%に位置するなら10パーセンタイル。
prefixes.c|テーブル値関数prefixes('abcdefg')
。prefix_length('abcdxxx', 'abcyy')
regexp.c|正規表現(POSIXレギュラー拡張)
remember.c|デモ用。パススルーであるSQL関数を作成する方法。
rot13.c|rot13()
関数とrot13
照合シーケンスを実装する。ASCIIアルファベット文字を13文字分回転させる。
scrub.c|PRAGMA secure_delete
。sqlite3_scrub_backup()
series.c|テーブル値関数generate_series(開始,終了,step)
sha1.c|SQL関数sha1(X)
,sha1_query(Y)
を実装する。
shathree.c|SQL関数sha3(X,SIZE)
,sha3_query(Y,SIZE)
を実装する。
showauth.c|C言語関数authorizer
コールバック。。デバッグ用。
spellfix.c|仮想テーブルspellfix1
。大規模語彙検索。スペルミス提案&検索。
sqlar.c|SQL関数sqlar_compress(X)
,sqlar_uncompress(X,SZ)
。
stmt.c|仮想テーブルstmt
。ステートメントの情報を返す。使用例SELECT * FROM stmt;
**データベース接続用に準備されたすべてのステートメントについて。
templatevtab.c|C言語実装用テンプレート。開発者はこのファイルのコピーをベースとして作成できる。
totype.c|SQL関数tointeger(X)
,toreal(X)
それぞれ整数,実数に変換する。
unionvtab.c|仮想テーブルunionvtab
,swarmvtab
。
vfslog.c|ログの原因となるラッパーVFSのコードが含まれる。
vfsstat.c|VFSシム。I/Oを追跡する。SELECT * FROM vfsstat;
vtablog.c|仮想テーブルvtablog
。診断情報を出力する。仮想テーブルインターフェイスのインタラクティブな分析とデバッグ。
vtshim.c|SQLite仮想テーブルインターフェイスとガベージコレクターベースのメモリ管理を備えたランタイム。
wholenumber.c|仮想テーブルwholenumber
。整数を返す(1〜4294967295)。CREATE VIRTUAL TABLE nums USING wholenumber;
SELECT value FROM nums WHERE value<10;
zipfile.c|仮想テーブルzipfile
。ZIPアーカイブを読書する
zorder.c|zオーダー(モートンコード)変換用のSQL関数。zorder(X0,X0,..,xN)
:N + 1次元モートンコードを生成。unzorder(Z,N,I)
:N次元からI番目の次元を抽出。
非公式で使いそうなのは1つだけ。
すでにやったもの
どれを使うか?
以下だけ気になる。次回やってみる。
それ以外は使わなそう。以下の理由で。
他に気になるのは以下だが、少しマニアック。RDBMSでやる仕事なのか疑問。ビジネスロジックごとプログラミング言語で実装したほうが使い勝手がいいのでは?
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13
- bash 4.4.12(1)-release
- SQLite 3.29.0
- MeCab 0.996ユーザ辞書
$ uname -a Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux
前回まで
- SQLite3学習 俯瞰まとめ
- SQLite3学習 環境構築まとめ
- SQLite3学習 インタフェースまとめ(C言語、CLI、対話モード、Tcl...)
- SQLite3学習 ドットコマンドまとめ
- SQLite3学習 JSON拡張まとめ
- SQLite3学習 FTSまとめ(ICU, MeCab)
- SQLite3学習 再帰クエリ(WITH RECURSIVE)
- SQLite3学習 R-Treeモジュール
- SQLite3学習 Geopoly(2次元ベクタ画像の生成)
- SQLite3学習 拡張関数(generate_series)
- SQLite3学習 拡張ライブラリ数学関数(extension-functions.c)
- SQLite3学習 謎と名前
- SQLite3学習 構文まとめ
- SQLite3関数の一覧と分類
- SQLite3コア関数まとめ
- SQLite3窓関数まとめ
- SQLite3非組込関数一覧
- SQLite3非組込関数(未分類)
- SQLite3ビルド失敗(拡張関数の静的リンク)