Один из обычно (?) Используемых тестов СУБД называется SSB, Star-Schema Benchmark. Чтобы запустить его, вам нужно сгенерировать вашу схему, то есть ваши таблицы с данными в них. Ну, есть программа-генератор, которую вы можете найти в самых разных местах (на github):
- https://github.com/rxin/ssb-dbgen
- https://code.google.com/p/gpudb/source/checkout (тогда под tests / ssb / dbgen или что-то в этом роде)
- https://github.com/electrum/ssb-dbgen/
и, возможно, в другом месте. Я не уверен, что все они имеют один и тот же код, но, похоже, у меня с ними одна и та же проблема. Я использую 64-битную систему Linux (Kubuntu 14.04, если это помогает); и я пытаюсь собрать и запустить программу dbgen из этого пакета.
При сборке я получаю предупреждения, связанные с типом / размером:
me@myhost:~/src/ssb-dbgen$ make
... etc. etc. ...
gcc -O -DDBNAME=\"dss\" -DLINUX -DDB2 -DSSBM -c -o varsub.o varsub.c
rnd.c: In function גrow_stopג:
rnd.c:60:6: warning: format ג%dג expects argument of type גintג, but argument 4 has type גlong intג [-Wformat=]
i, Seed[i].usage);
^
driver.c: In function גpartialג:
driver.c:606:4: warning: format ג%dג expects argument of type גintג, but argument 4 has type גlong intג [-Wformat=]
... etc. etc. ...
Затем я убеждаюсь, что все нужные файлы на месте, пытаюсь сгенерировать свои таблицы и получаю только два из них! Я пытаюсь явно сгенерировать таблицу LINEORDER и получаю странный сбой:
eyal@vivaldi:~/src/ssb-dbgen$ ls
bcd2.c build.c driver.c HISTORY makefile_win print.c rnd.c speed_seed.o varsub.c
bcd2.h build.o driver.o history.html mkf.macos print.o rnd.h ssb-dbgen-master varsub.o
bcd2.o CHANGES dss.ddl load_stub.c permute.c qgen rnd.o text.c
bm_utils.c config.h dss.h load_stub.o permute.h qgen.c rxin-ssb-dbgen-master.zip text.o
bm_utils.o dbgen dss.ri Makefile permute.o qgen.o shared.h tpcd.h
BUGS dists.dss dsstypes.h makefile.suite PORTING.NOTES README speed_seed.c TPCH_README
me@myhost:~/src/ssb-dbgen$ ./dbgen -vfF -s 1
SSBM (Star Schema Benchmark) Population Generator (Version 1.0.0)
Copyright Transaction Processing Performance Council 1994 - 2000
Generating data for suppliers table [pid: 32303]done.
Generating data for customers table [pid: 32303]done.
Generating data for (null) [pid: 32303]done.
Generating data for (null) [pid: 32303]done.
Generating data for (null) [pid: 32303]done.
Generating data for (null) [pid: 32303]done.
me@myhost:~/src/ssb-dbgen$ ls *.tbl
customer.tbl supplier.tbl
me@myhost:~/src/ssb-dbgen$ ./dbgen -vfF -s 1 -T l
SSBM (Star Schema Benchmark) Population Generator (Version 1.0.0)
Copyright Transaction Processing Performance Council 1994 - 2000
Generating data for lineorder table [pid: 32305]*** buffer overflow detected ***: ./dbgen terminated
======= Backtrace: =========
... etc. etc. ...
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7fcea1b79ec5]
./dbgen[0x401219]
======= Memory map: ========
... etc. etc. ...
Теперь, если я переключусь на 32-разрядную систему Linux, я не получу ни одного из этих предупреждений (хотя есть два предупреждения о преобразовании указателя в не указатель); но повторный запуск генерации дает только две таблицы. Теперь можно создавать и другие отдельные таблицы - но я бы подумал, что они совсем не соответствуют друг другу ...
Кто-нибудь сталкивался с подобной проблемой? Я делаю что-то неправильно? Я как-то использую неправильные источники?
(Это почти обман SSB dbgen Linux - Ошибка сегментации .. . но я не могу "взять на себя" чей-то вопрос, когда они могли столкнуться с другими проблемами, кроме моей. Кроме того, у этого вопроса нет ответов ...)