Repository: incubator-hawq Updated Branches: refs/heads/master c3d8546e7 -> c0dcb5d60
HAWQ-731. Implement Data Generator Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq/commit/c0dcb5d6 Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq/tree/c0dcb5d6 Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq/diff/c0dcb5d6 Branch: refs/heads/master Commit: c0dcb5d6049bdd621d6750127a900c0f6dd4fb9d Parents: c3d8546 Author: Lili Ma <[email protected]> Authored: Wed May 11 18:09:52 2016 +0800 Committer: Lili Ma <[email protected]> Committed: Thu May 12 08:10:42 2016 +0800 ---------------------------------------------------------------------- src/test/feature/lib/Makefile | 2 +- src/test/feature/lib/data-gen.cpp | 138 +++++++++++++++++++++++++++++ src/test/feature/lib/data-gen.h | 58 ++++++++++++ src/test/feature/lib/psql.cpp | 2 +- src/test/feature/testlib/test-lib.cpp | 12 +++ 5 files changed, 210 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/c0dcb5d6/src/test/feature/lib/Makefile ---------------------------------------------------------------------- diff --git a/src/test/feature/lib/Makefile b/src/test/feature/lib/Makefile index 8c7d74d..411613a 100644 --- a/src/test/feature/lib/Makefile +++ b/src/test/feature/lib/Makefile @@ -8,7 +8,7 @@ override CPPFLAGS := -I/usr/include -I/usr/local/include -I/usr/include/libxml2 override LIBS := $(LIBS) -lpq -lxml2 override LDFLAGS += -L/usr/local/lib -L/usr/lib -PROG = string-util.cpp psql.cpp command.cpp xml-parser.cpp hawq-config.cpp +PROG = string-util.cpp psql.cpp command.cpp xml-parser.cpp hawq-config.cpp data-gen.cpp all: g++ $(CPPFLAGS) $(CXXFLAGS) $(PROG) http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/c0dcb5d6/src/test/feature/lib/data-gen.cpp ---------------------------------------------------------------------- diff --git a/src/test/feature/lib/data-gen.cpp b/src/test/feature/lib/data-gen.cpp new file mode 100644 index 0000000..da58b32 --- /dev/null +++ b/src/test/feature/lib/data-gen.cpp @@ -0,0 +1,138 @@ +#include <iostream> +#include "data-gen.h" + +void +DataGenerator::genSimpleTable(std::string tableName, + bool appendonly, + std::string orientation, + std::string compresstype, + int compresslevel) { + std::string desc = + genTableDesc(appendonly, orientation, compresstype, compresslevel); + std::string createSql = "create table " + tableName + + "(a int, b int) " + desc; + sqlUtil.execute(createSql); + + std::string insertSql = "insert into " + tableName + + " values(51,62), (14,15), (1,3);"; + sqlUtil.execute(insertSql); +} + +void +DataGenerator::genTableWithSeries(std::string tableName, + bool appendonly, + std::string orientation, + std::string compresstype, + int compresslevel) { + std::string desc = + genTableDesc(appendonly, orientation, compresstype, compresslevel); + std::string createSql = "create table " + tableName + + "(a int, b varchar(20)) " + desc; + sqlUtil.execute(createSql); + + std::string insertSql = "insert into " + tableName + + " values(generate_series(1,10000), 'abc')"; + sqlUtil.execute(insertSql); +} + + +void +DataGenerator::genTableWithFullTypes(std::string tableName, + bool appendonly, + std::string orientation, + std::string compresstype, + int compresslevel) { + std::string desc = + genTableDesc(appendonly, orientation, compresstype, compresslevel); + std::string createSql = "create table " + tableName + "(c0 int4, c1 polygon, " + "c2 text, c3 time, c4 timetz, c5 macaddr, c6 timestamptz, c7 char(10), " + "c8 int2, c9 bool, c10 cidr, c11 circle, c12 lseg, c13 interval, " + "c14 bit, c15 money, c16 box, c17 bytea, c18 xml, c19 bit(5), " + "c20 varchar(10), c21 inet, c22 int8, c23 varbit, c24 serial, " + "c25 float4, c26 point, c27 date, c28 float8) " + desc; + sqlUtil.execute(createSql); + + std::string insertSql = "insert into " + tableName + + " values (2147483647, null, null, '00:00:00', null, 'FF:89:71:45:AE:01'," + " '2000-01-01 08:00:00+09', null, 32767, 'true', '192.168.1.255/32', " + "'<(1,2),3>', '[(0,0),(6,6)]', '-178000000 years', '0', '-21474836.48', " + "'((100,200),(200,400))', null, '<aa>bb</aa>', null, '123456789a', " + "'2001:db8:85a3:8d3:1319:8a2e:370:7344/64', null, null, 1, 0, POINT(1,2)," + " '4277-12-31 AD', 128);"; + sqlUtil.execute(insertSql); + + std::string insertSql2 = "insert into " + tableName + + " values (0, '((100,123),(5,10),(7,2),(4,5))', 'hello world', null, " + "'04:45:05.0012+08:40', null, null, 'bbccddeeff', 128, null, " + "'2001:db8:85a3:8d3:1319:8a2e:370:7344/128', '<(1,2),3>', '[(0,0),(6,6)]'," + " null, '1', '0', '((0,1),(2,3))', 'hello world', '<aa>bb</aa>', null, " + "'aaaa', '2001:db8:85a3:8d3:1319:8a2e:370:7344/64', 0, null, 2147483647, " + "'-Infinity', POINT(1,2), '4277-12-31 AD', 'Infinity');"; + sqlUtil.execute(insertSql2); + + std::string insertSql3 = "insert into " + tableName + + " values (null, null, 'abcd', '15:01:03', null, null, " + " '2000-01-01 08:00:00+09', null, null, 'true', null, " + "null, '[(0,0),(6,6)]', '-178000000 years', '0', '-21474836.48', " + "'((100,200),(200,400))', null, '<aa>bb</aa>', null, '123456789a', " + "'2001:db8:85a3:8d3:1319:8a2e:370:7344/64', null, null, 1, 0, POINT(1,2)," + " '4277-12-31 AD', 128);"; + sqlUtil.execute(insertSql3); + + std::string insertSql4 = "insert into " + tableName + + " values (0, '((100,123),(5,10),(7,2),(4,5))', 'hello world', null, " + "'04:45:05.0012+08:40', null, null, 'bbccddeeff', 128, null, " + "'2001:db8:85a3:8d3:1319:8a2e:370:7344/128', '<(1,2),3>', null," + " null, null, '0', null, 'hello world', null, null, " + "'aaaa', '2001:db8:85a3:8d3:1319:8a2e:370:7344/64', 0, null, 2147483647, " + "'-Infinity', POINT(1,2), '4277-12-31 AD', 'Infinity');"; + sqlUtil.execute(insertSql4); + + std::string insertSql5 = "insert into " + tableName + + " values (0, '((100,123),(5,10),(7,2),(4,5))', 'hello world', null, " + "'04:45:05.0012+08:40', null, null, 'bbccddeeff', 128, null, " + "'2001:db8:85a3:8d3:1319:8a2e:370:7344/128', '<(1,2),3>', null," + " null, null, '0', null, 'hello world', null, null, " + "null, null, 0, null, 2147483647, " + "'-Infinity', POINT(1,2), '4277-12-31 AD', 'Infinity');"; + sqlUtil.execute(insertSql5); + + std::string insertSql6 = "insert into " + tableName + + " values (0, '((100,123),(5,10),(7,2),(4,5))', 'hello world', null, " + "'04:45:05.0012+08:40', null, null, 'bbccddeeff', 128, null, " + "'2001:db8:85a3:8d3:1319:8a2e:370:7344/128', '<(1,2),3>', null," + " null, null, null, null, 'hello world', null, null, " + "null, null, 0, null, 34, " + "null, null, null, null);"; + sqlUtil.execute(insertSql6); +} + +void +DataGenerator::genTableWithNull(std::string tableName, + bool appendonly, + std::string orientation, + std::string compresstype, + int compresslevel) { + std::string desc = + genTableDesc(appendonly, orientation, compresstype, compresslevel); + std::string createSql = "create table " + tableName + + " (a int, b float, c varchar(20)) " + desc; + sqlUtil.execute(createSql); + + std::string insertSql = "insert into " + tableName + + " values (15, null, 'aa'), (null, null, 'WET'), (null, 51, null);"; + sqlUtil.execute(insertSql); +} + + +std::string +DataGenerator::genTableDesc(bool appendonly, + std::string orientation, std::string compresstype, + int compresslevel) { + std::string desc = + (appendonly ? "with (appendonly = true, orientation = " + : "with (appendonly = false, orientation = ") + + orientation + ", compresstype = " + compresstype + + ", compresslevel = " + std::to_string(compresslevel) + ")"; + return desc; +} http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/c0dcb5d6/src/test/feature/lib/data-gen.h ---------------------------------------------------------------------- diff --git a/src/test/feature/lib/data-gen.h b/src/test/feature/lib/data-gen.h new file mode 100644 index 0000000..38bed69 --- /dev/null +++ b/src/test/feature/lib/data-gen.h @@ -0,0 +1,58 @@ +/* + * data-gen.h + * + * Created on: May 11, 2016 + * Author: malili + */ + +#ifndef SRC_TEST_FEATURE_LIB_DATA_GEN_H_ +#define SRC_TEST_FEATURE_LIB_DATA_GEN_H_ + +#include <string> + +#include "gtest/gtest.h" +#include "sql-util.h" + +class DataGenerator { + public: + DataGenerator() {} + + ~DataGenerator() {} + + void genSimpleTable(std::string tableName, + bool appendonly = true, + std::string orientation = "row", + std::string compresstype = "none", + int compresslevel = 0); + + void genTableWithFullTypes(std::string tableName, + bool appendonly = true, + std::string orientation = "row", + std::string compresstype = "none", + int compresslevel = 0); + + void genTableWithSeries(std::string tableName, + bool appendonly = true, + std::string orientation = "row", + std::string compresstype = "none", + int compresslevel = 0); + + void genTableWithNull(std::string tableName, + bool appendonly = true, + std::string orientation = "row", + std::string compresstype = "none", + int compresslevel = 0); + + private: + std::string genTableDesc(bool appendonly, std::string orientation, + std::string compresstype, int compresslevel); + + + private: + SQLUtility sqlUtil; +}; + + + + +#endif /* SRC_TEST_FEATURE_LIB_DATA_GEN_H_ */ http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/c0dcb5d6/src/test/feature/lib/psql.cpp ---------------------------------------------------------------------- diff --git a/src/test/feature/lib/psql.cpp b/src/test/feature/lib/psql.cpp index 0b0a8a6..bb936b0 100644 --- a/src/test/feature/lib/psql.cpp +++ b/src/test/feature/lib/psql.cpp @@ -218,7 +218,7 @@ const std::string PSQL::_getPSQLBaseCommand() const const std::string PSQL::_getPSQLQueryCommand(const std::string& query) const { std::string command = this->_getPSQLBaseCommand(); - return command.append(" -c '").append(query).append("'"); + return command.append(" -c \"").append(query).append("\""); } const std::string PSQL::_getPSQLFileCommand(const std::string& file) const http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/c0dcb5d6/src/test/feature/testlib/test-lib.cpp ---------------------------------------------------------------------- diff --git a/src/test/feature/testlib/test-lib.cpp b/src/test/feature/testlib/test-lib.cpp index 68413f9..6e283ca 100644 --- a/src/test/feature/testlib/test-lib.cpp +++ b/src/test/feature/testlib/test-lib.cpp @@ -8,6 +8,7 @@ #include "lib/command.h" #include "lib/common.h" +#include "lib/data-gen.h" #include "lib/hawq-config.h" #include "lib/sql-util.h" @@ -74,3 +75,14 @@ TEST_F(TestCommonLib, TestSqlUtil) { util.execute("insert into test values(1),(2)"); util.query("select * from test", 2); } + +TEST_F(TestCommonLib, TestDataGenerator) { + DataGenerator dGen; + dGen.genSimpleTable("simpleAO"); + dGen.genSimpleTable("simpleParquet", true, "parquet"); + + dGen.genTableWithFullTypes("fullTypeAO"); + dGen.genTableWithSeries("tSeries"); + + dGen.genTableWithNull("tNull"); +}
