ein*_*ica 1 linux benchmarking rdbms compiler-warnings
常用(?)的 DBMS 基准之一称为 SSB,星型模式基准)。要运行它,您需要生成模式,即包含数据的表。嗯,你可以在各种地方找到一个生成器程序(在 github 上):
\n\n也可能在其他地方。我不确定它们都有完全相同的代码,但我似乎遇到了同样的问题。我正在使用 Linux 64 位系统(Kubuntu 14.04,如果有帮助的话);并尝试从该包构建并运行“dbgen\”程序。
\n\n构建时,我收到与类型/大小相关的警告:
\n\nme@myhost:~/src/ssb-dbgen$ make\n... etc. etc. ...\ngcc -O -DDBNAME=\\"dss\\" -DLINUX -DDB2 -DSSBM -c -o varsub.o varsub.c\nrnd.c: In function \xd7\x92row_stop\xd7\x92:\nrnd.c:60:6: warning: format \xd7\x92%d\xd7\x92 expects argument of type \xd7\x92int\xd7\x92, but argument 4 has type \xd7\x92long int\xd7\x92 [-Wformat=]\n i, Seed[i].usage);\n ^\ndriver.c: In function \xd7\x92partial\xd7\x92:\ndriver.c:606:4: warning: format \xd7\x92%d\xd7\x92 expects argument of type \xd7\x92int\xd7\x92, but argument 4 has type \xd7\x92long int\xd7\x92 [-Wformat=]\n... etc. etc. ...\nRun Code Online (Sandbox Code Playgroud)\n\n然后,我确保所有正确的文件都已就位,尝试生成我的表,但只得到其中两个!我尝试显式生成 LINEORDER 表,但出现了奇怪的失败:
\n\neyal@vivaldi:~/src/ssb-dbgen$ ls\nbcd2.c build.c driver.c HISTORY makefile_win print.c rnd.c speed_seed.o varsub.c\nbcd2.h build.o driver.o history.html mkf.macos print.o rnd.h ssb-dbgen-master varsub.o\nbcd2.o CHANGES dss.ddl load_stub.c permute.c qgen rnd.o text.c\nbm_utils.c config.h dss.h load_stub.o permute.h qgen.c rxin-ssb-dbgen-master.zip text.o\nbm_utils.o dbgen dss.ri Makefile permute.o qgen.o shared.h tpcd.h\nBUGS dists.dss dsstypes.h makefile.suite PORTING.NOTES README speed_seed.c TPCH_README\nme@myhost:~/src/ssb-dbgen$ ./dbgen -vfF -s 1\nSSBM (Star Schema Benchmark) Population Generator (Version 1.0.0)\nCopyright Transaction Processing Performance Council 1994 - 2000\nGenerating data for suppliers table [pid: 32303]done.\nGenerating data for customers table [pid: 32303]done.\nGenerating data for (null) [pid: 32303]done.\nGenerating data for (null) [pid: 32303]done.\nGenerating data for (null) [pid: 32303]done.\nGenerating data for (null) [pid: 32303]done.\nme@myhost:~/src/ssb-dbgen$ ls *.tbl\ncustomer.tbl supplier.tbl\nme@myhost:~/src/ssb-dbgen$ ./dbgen -vfF -s 1 -T l\nSSBM (Star Schema Benchmark) Population Generator (Version 1.0.0)\nCopyright Transaction Processing Performance Council 1994 - 2000\nGenerating data for lineorder table [pid: 32305]*** buffer overflow detected ***: ./dbgen terminated\n======= Backtrace: =========\n... etc. etc. ...\n/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7fcea1b79ec5]\n./dbgen[0x401219]\n======= Memory map: ========\n... etc. etc. ...\nRun Code Online (Sandbox Code Playgroud)\n\n现在,如果我切换到 32 位 Linux 系统,我不会收到任何这些警告(尽管有两个关于指针到非指针转换的警告);但再次运行生成只产生两个表。现在,可以生成其他单独的表格 - 但我认为它们根本不相互对应......
\n\n有人遇到过类似的问题吗?难道我做错了什么?我是否使用了错误的来源?
\n\n(这几乎是SSB dbgen Linux - Segmentation Failure的一个骗局...但是当其他人可能遇到了我以外的问题时,我无法“接管”他们的问题。另外,那个问题没有答案...)
\n如果有人仍然鼓励这个问题,我在这里找到了一个解决方案: https: //github.com/electrum/ssb-dbgen/pull/1
具体来说,你必须修改这两个文件shared.h并config.h
问候。
编辑: 更改:
#ifdef SSBM
#define MAXAGG_LEN 10 /* max component length for a agg str */
Run Code Online (Sandbox Code Playgroud)
到:
#ifdef SSBM
#define MAXAGG_LEN 20 /* max component length for a agg str */
Run Code Online (Sandbox Code Playgroud)