やってみる

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

SQLite3ビルド失敗(SQLITE_ENABLE_UPDATE_DELETE_LIMIT)

 delete,updateのときにlimit/offset/order byを使えるようにする。

手順

 ダウンロード&展開。

wget https://www.sqlite.org/2019/sqlite-autoconf-3290000.tar.gz
tar xf "sqlite-autoconf-3290000.tar.gz"
cd sqlite-autoconf-3290000

 オプション付与。

./configure \
--enable-readline \
--enable-session \
LIBS="-lz" \
LDFLAGS="`icu-config --ldflags`" \
CFLAGS="`icu-config --cppflags` -DSQLITE_ALLOW_URI_AUTHORITY=1 -DSQLITE_ENABLE_COLUMN_METADATA=1 -DSQLITE_ENABLE_DBSTAT_VTAB=1 -DSQLITE_ENABLE_DESERIALIZE=1 -DSQLITE_ENABLE_GEOPOLY=1 -DSQLITE_ENABLE_ICU=1 -DSQLITE_ENABLE_PREUPDATE_HOOK=1 -DSQLITE_ENABLE_STAT4=1 -DSQLITE_INTROSPECTION_PRAGMAS=1 -DSQLITE_ENABLE_UNLOCK_NOTIFY=1 -DSQLITE_HAVE_ZLIB=1 -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1"

 ビルド。

make

 コンパイルオプションの確認。

./sqlite3 :memory: "pragma compile_options;"
ALLOW_URI_AUTHORITY
COMPILER=gcc-6.3.0 20170516
ENABLE_COLUMN_METADATA
ENABLE_DBSTAT_VTAB
ENABLE_FTS4
ENABLE_FTS5
ENABLE_GEOPOLY
ENABLE_ICU
ENABLE_JSON1
ENABLE_PREUPDATE_HOOK
ENABLE_RTREE
ENABLE_SESSION
ENABLE_STAT4
ENABLE_STMTVTAB
ENABLE_UNLOCK_NOTIFY
ENABLE_UPDATE_DELETE_LIMIT
THREADSAFE=1

 ENABLE_UPDATE_DELETE_LIMITがあった。OK。

試してみるも失敗

 前回と同じエラー……。なぜだ。

delete from order by

3_0.sql

create table T(A integer);
insert into T values(0);
insert into T values(1);
delete from T where A > 1 order by asc;
select * from T;
Error: near line 4: near "order": syntax error

delete from limit

3_1.sql

create table T(A integer);
insert into T values(0);
insert into T values(1);
delete from T where A > 1 limit 5;
select * from T;
Error: near line 4: near "limit": syntax error

delete from limit offset

3_2.sql

create table T(A integer);
insert into T values(0);
insert into T values(1);
delete from T where A > 1 limit 5 offset 1;
select * from T;
Error: near line 4: near "limit": syntax error

対象環境

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

前回まで