sheetreader插件只有支持DuckDB 1.2的版本。
到https://github.com/polydbms/sheetreader-duckdb下载插件源代码压缩包sheetreader-duckdb-main.zip,将其中的src目录解压到/par/sheetreader-duckdb-main/,再到https://github.com/polydbms/sheetreader-core下载核心算法源代码sheetreader-core-main.zip ,将其中的src目录解压到/par/sheetreader-duckdb-main/src/include下。
形成目录树如下
src
include
sheetreader-core
src
miniz
一开始完全采用duckdb 1.3的头文件,编译报错
sheetreader_extension.cpp:4:10: fatal error: duckdb/common/multi_file_reader.hpp: No such file or directory
#include "duckdb/common/multi_file_reader.hpp"
所以把duckdb 0.10.3的头文件目录也加入
g++ -fPIC -shared -o libtest2.so *.cpp include/miniz/miniz.cpp include/sheetreader-core/src/*.cpp -I /par/duck/src/include
-lssl -lcrypto -I include -lduckdb -L /par/duck/build/src -I /par/duckdb-0.10.3/include
root@6ae32a5ffcde:/par/sheetreader-duckdb-main/src# python3 /par/appendmetadata.py -l libtest2.so -n sheetreader -dv v1.3.0 --duckdb-platform linux_amd64 --extension-version 0.1 --abi-type ""
Creating extension binary:
- Input file: libtest2.so
- Output file: sheetreader.duckdb_extension
- Metadata:
- FIELD8 (unused) = EMPTY
- FIELD7 (unused) = EMPTY
- FIELD6 (unused) = EMPTY
- FIELD5 (abi_type) =
- FIELD4 (extension_version) = 0.1
- FIELD3 (duckdb_version) = v1.3.0
- FIELD2 (duckdb_platform) = linux_amd64
- FIELD1 (header signature) = 4 (special value to identify a duckdb extension)
root@6ae32a5ffcde:/par/sheetreader-duckdb-main/src# /par/duckdb130 -unsigned
DuckDB v1.3.0 (Ossivalis) 71c5c07cdd
Enter ".help" for usage hints.
D load '/par/sheetreader-duckdb-main/src/sheetreader.duckdb_extension';
D from sheetreader('/par/foods.xlsx') limit 2;
Segmentation fault (core dumped)
加载成功,但执行出错,同样的动态库二进制代码,加上1.2版的元数据,加载就报错,看来混合版本有问题。
root@6ae32a5ffcde:/par/sheetreader-duckdb-main/src# /par/duckdb120 -unsigned
v1.2.0 5f5512b827
Enter ".help" for usage hints.
D load '/par/sheetreader-duckdb-main/src/sheetreader.duckdb_extension';
Invalid Input Error:
Failed to load '/par/sheetreader-duckdb-main/src/sheetreader.duckdb_extension', The file was built specifically for DuckDB version 'v1.3.0' and can only be loaded with that version of DuckDB. (this version of DuckDB is 'v1.2.0') Also, the file was built for the platform 'linux_amd64', but we can only load extensions built for platform 'linux_amd64_gcc4'.
D .exit
root@6ae32a5ffcde:/par/sheetreader-duckdb-main/src# python3 /par/appendmetadata.py -l libtest2.so -n sheetreader -dv v1.2.0 --duckdb-platform linux_amd64_gcc4 --extension-ve
rsion 0.1 --abi-type ""
Creating extension binary:
- Input file: libtest2.so
- Output file: sheetreader.duckdb_extension
- Metadata:
- FIELD8 (unused) = EMPTY
- FIELD7 (unused) = EMPTY
- FIELD6 (unused) = EMPTY
- FIELD5 (abi_type) =
- FIELD4 (extension_version) = 0.1
- FIELD3 (duckdb_version) = v1.2.0
- FIELD2 (duckdb_platform) = linux_amd64_gcc4
- FIELD1 (header signature) = 4 (special value to identify a duckdb extension)
root@6ae32a5ffcde:/par/sheetreader-duckdb-main/src# /par/duckdb120 -unsigned
v1.2.0 5f5512b827
Enter ".help" for usage hints.
D load '/par/sheetreader-duckdb-main/src/sheetreader.duckdb_extension';
Segmentation fault (core dumped)


被折叠的 条评论
为什么被折叠?



