naoki86star

インターネットの片隅でなにかしら書いてみる

sqliteとunixepoch()関数、それにubuntu16

ubuntu16の上で、ちょっとした作業でSQLite3の unixepoch() 関数を使おうとした。公式ドキュメントにあって、なんで今までスルーしてたんだろうと思いながらSELECT unixepoch(); したら、

Error: no such function: unixepoch

…あれ?なんとかGPTならともかく、公式ドキュメントがいい加減?

ターゲット環境は Ubuntu 16.04。調べたら意外と最近(2022年)くらいの追加だったらしい
「SQLite3をローカルでいれれるかな」と最新のSQLite3をビルドしてみようとしたが、glibcが古くて無理みたい。
「glibcをビルドすればLD_LIBRARY_PATHでごまかせる?」これはbisonが古くてconfigureが通してくれないというトラップ。
「ubuntu24のとこでstaticリンクバイナリ作ってみる」ことにして、musl-gccってのを使ってみる。
ターゲット環境に持って行って動かしてみると結局ダメ、dlopen() は ld.so の機能を使うため、staticリンクしたバイナリからは使えない。

unixepoch() だけほしかった話なので、この環境というか、古いsqlite3用に拡張機能関数を書いてお茶を濁すことにしておく。
ちなみにこの程度だと、なんとかGPTの出力で事足りた。
timediff()とかもほしくなるかなぁ。