gpt4 book ai didi

缺少 SQLite generate_series

转载 作者:行者123 更新时间:2023-12-03 17:56:35 28 4
gpt4 key购买 nike

我正在尝试使用 SQLite CLI,但无法获得 generate_series功能来工作。我可以按照文档中的建议使用递归 CTE 对其进行模拟,但我似乎无法获得该链接中的任何示例。这是我的 session 的一些输出:

sqlite> with recursive generate_series(value) as (
select 1
union all select value+1
from generate_series
where value+1<=3)
select value from generate_series;
1
2
3
sqlite> select value from generate_series;
Error: no such table: generate_series
sqlite> select value from generate_series(1,3,1);
Error: no such table: generate_series

似乎 ext/misc/series.c 扩展实际上并没有被静态链接。如果我从头开始编译,我也不知道该怎么做。我在这里做错了什么吗?

编辑直到 how to compile an extension into SQLite有一个很好的答案,我不认为我能做我想做的事。文档是错误的:默认情况下,扩展没有构建到命令行 shell 中。

最佳答案

以下构建最新的带有动态库支持的sqlite,并编译series extension .它还假定基于 debian 的 linux 发行版:

sudo apt build-dep sqlite3

mkdir sqlite-compilation
cd sqlite-compilation

wget -O sqlite.tar.gz https://www.sqlite.org/src/tarball/sqlite.tar.gz?r=release

tar xzf sqlite.tar.gz

mkdir build
cd build
../sqlite/configure
make OPTS='-DSQLITE_ENABLE_LOAD_EXTENSION'
./sqlite3 -cmd 'pragma compile_options;' <<< .exit
cd -

cd sqlite/ext/misc
gcc -g -O2 -shared -fPIC -I ../../../build -o series ./series.c
../../../build/sqlite3 <<< '
.load ./series
select value from generate_series(5,30,5);
.exit
'
cd -

结果你会得到:

build/sqlite3             # sqlite3 binary
sqlite/ext/misc/series.so # series extension

此外,如果您想更改扩展对象文件的名称 (series.so),您需要使用“通用”函数编辑其初始化函数:

sed -i 's/int sqlite3_series_init(/int sqlite3_extension_init(/' series.c
gcc -g -O2 -shared -fPIC -I ../../../build -o libSqlite3Series.so ./series.c
sqlite3 <<< '
.load ./libSqlite3Series
select value from generate_series(5,30,5);
.exit
'

关于缺少 SQLite generate_series,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52954732/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com