Repository: incubator-hawq Updated Branches: refs/heads/master 9c9d26241 -> eab1908b4
HAWQ-1139. Fix TestCreateTableInherits bug in the feature test Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq/commit/eab1908b Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq/tree/eab1908b Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq/diff/eab1908b Branch: refs/heads/master Commit: eab1908b4866ce9feedbeb04f802f55b2552c0b7 Parents: 9c9d262 Author: ivan <[email protected]> Authored: Wed Nov 2 15:15:09 2016 +0800 Committer: ivan <[email protected]> Committed: Thu Nov 3 10:04:42 2016 +0800 ---------------------------------------------------------------------- src/test/feature/catalog/test_create_table.cpp | 82 +++++++++++++-------- src/test/feature/lib/sql_util.cpp | 4 + src/test/feature/lib/sql_util.h | 6 +- 3 files changed, 59 insertions(+), 33 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/eab1908b/src/test/feature/catalog/test_create_table.cpp ---------------------------------------------------------------------- diff --git a/src/test/feature/catalog/test_create_table.cpp b/src/test/feature/catalog/test_create_table.cpp index fe12703..bac1ec4 100644 --- a/src/test/feature/catalog/test_create_table.cpp +++ b/src/test/feature/catalog/test_create_table.cpp @@ -7,6 +7,7 @@ #include <errno.h> #include <iostream> #include <string> +#include <algorithm> #include "lib/sql_util.h" @@ -16,8 +17,17 @@ class TestCreateTable : public ::testing::Test { public: TestCreateTable() {} ~TestCreateTable() {} + std::string getNsOid(hawq::test::SQLUtility &util); }; +std::string TestCreateTable::getNsOid(hawq::test::SQLUtility &util) { + std::string schema = util.getSchemaName(); + std::transform(schema.begin(), schema.end(), schema.begin(), ::tolower); + const hawq::test::PSQLQueryResult& result = util.executeQuery("SELECT oid FROM pg_namespace WHERE nspname='"+schema+"'"); + EXPECT_EQ(result.rowCount(), 1); + std::string nsOid = result.getRows()[0][0]; + return nsOid; +} TEST_F(TestCreateTable, TestCreateTable1) { hawq::test::SQLUtility util; @@ -188,18 +198,20 @@ TEST_F(TestCreateTable, TestCreateTableInherits) { "CREATE TABLE t1_1_6(c2 int) INHERITS (t1) WITH (bucketnum = 7) DISTRIBUTED RANDOMLY", "ERROR: distribution policy for \"t1_1_6\" must be the same as that for \"t1\""); + std::string nsOid = getNsOid(util); + util.execute("CREATE TABLE t1_1_w(c2 int) INHERITS(t1) WITH (bucketnum=6)"); util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1' AND relnamespace="+nsOid+")", "6||\n"); util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1_1')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1_1' AND relnamespace="+nsOid+")", "6||\n"); util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1_1_w')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1_1_w' AND relnamespace="+nsOid+")", "6||\n"); util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1_1_3')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1_1_3' AND relnamespace="+nsOid+")", "6||\n"); util.execute("DROP TABLE t1_1_3, t1_1_w, t1_1, t1"); @@ -221,23 +233,25 @@ TEST_F(TestCreateTable, TestCreateTableDistribution1) { util.execute("CREATE TABLE t1_2_3(LIKE t1) WITH (bucketnum = 4) DISTRIBUTED BY (c1)"); util.execute("CREATE TABLE t1_2_4(LIKE t1) WITH (bucketnum = 4) DISTRIBUTED RANDOMLY"); + std::string nsOid = getNsOid(util); + util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1_2')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1_2' AND relnamespace="+nsOid+")", "6||\n"); util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1_2_w')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1_2_w' AND relnamespace="+nsOid+")", "4||\n"); util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1_2_1')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1_2_1' AND relnamespace="+nsOid+")", "6|{1}|\n"); util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1_2_2')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1_2_2' AND relnamespace="+nsOid+")", "6||\n"); util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1_2_3')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1_2_3' AND relnamespace="+nsOid+")", "4|{1}|\n"); util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1_2_4')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1_2_4' AND relnamespace="+nsOid+")", "4||\n"); util.execute("CREATE TABLE t1_3 AS (SELECT * FROM t1)"); @@ -248,22 +262,22 @@ TEST_F(TestCreateTable, TestCreateTableDistribution1) { util.execute("CREATE TABLE t1_3_4 WITH (bucketnum = 7) AS (SELECT * FROM t1) DISTRIBUTED RANDOMLY"); util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1_2')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1_2' AND relnamespace="+nsOid+")", "6||\n"); util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1_3_w')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1_3_w' AND relnamespace="+nsOid+")", "4||\n"); util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1_3_1')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1_3_1' AND relnamespace="+nsOid+")", "6|{1}|\n"); util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1_3_2')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1_3_2' AND relnamespace="+nsOid+")", "6||\n"); util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1_3_3')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1_3_3' AND relnamespace="+nsOid+")", "6|{1}|\n"); util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1_3_4')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname='t1_3_4' AND relnamespace="+nsOid+")", "7||\n"); // cleanup @@ -303,8 +317,10 @@ TEST_F(TestCreateTable, TestCreateTableDistribution2) { "CREATE TABLE t2_1_6(c2 int) INHERITS (t2) WITH (bucketnum = 7) DISTRIBUTED RANDOMLY", "ERROR: distribution policy for \"t2_1_6\" must be the same as that for \"t2\""); + std::string nsOid = getNsOid(util); + util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't2_1_1')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't2_1_1' AND relnamespace="+nsOid+")", "6|{1}|\n"); util.execute("CREATE TABLE t2_2(LIKE t2)"); @@ -315,22 +331,22 @@ TEST_F(TestCreateTable, TestCreateTableDistribution2) { util.execute("CREATE TABLE t2_2_4(LIKE t2) WITH (bucketnum = 6) DISTRIBUTED RANDOMLY"); util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't2_2')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't2_2' AND relnamespace="+nsOid+")", "6|{1}|\n"); util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't2_2_w')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't2_2_w' AND relnamespace="+nsOid+")", "4|{1}|\n"); util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't2_2_1')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't2_2_1' AND relnamespace="+nsOid+")", "6|{1}|\n"); util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't2_2_2')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't2_2_2' AND relnamespace="+nsOid+")", "6||\n"); util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't2_2_3')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't2_2_3' AND relnamespace="+nsOid+")", "5|{1}|\n"); util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't2_2_4')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't2_2_4' AND relnamespace="+nsOid+")", "6||\n"); util.execute("CREATE TABLE t2_3 AS (SELECT * FROM t2)"); @@ -341,22 +357,22 @@ TEST_F(TestCreateTable, TestCreateTableDistribution2) { util.execute("CREATE TABLE t2_3_4 WITH (bucketnum = 6) AS (SELECT * FROM t2) DISTRIBUTED RANDOMLY"); util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't2_3')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't2_3' AND relnamespace="+nsOid+")", "6||\n"); util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't2_3_w')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't2_3_w' AND relnamespace="+nsOid+")", "4||\n"); util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't2_3_1')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't2_3_1' AND relnamespace="+nsOid+")", "6|{1}|\n"); util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't2_3_2')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't2_3_2' AND relnamespace="+nsOid+")", "6||\n"); util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't2_3_3')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't2_3_3' AND relnamespace="+nsOid+")", "5|{1}|\n"); util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't2_3_4')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't2_3_4' AND relnamespace="+nsOid+")", "6||\n"); // cleanup @@ -375,14 +391,16 @@ TEST_F(TestCreateTable, TestCreateTableDistribution3) { util.execute("CREATE TABLE t3_1 (c1 int) WITH (bucketnum = 5) DISTRIBUTED BY(c1)"); util.execute("CREATE TABLE t3_2 (c1 int) WITH (bucketnum = 6) DISTRIBUTED RANDOMLY"); + std::string nsOid = getNsOid(util); + util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't3')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't3' AND relnamespace="+nsOid+")", "4||\n"); util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't3_1')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't3_1' AND relnamespace="+nsOid+")", "5|{1}|\n"); util.query("SELECT bucketnum, attrnums FROM gp_distribution_policy " - "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't3_2')", + "WHERE localoid = (SELECT oid FROM pg_class WHERE relname = 't3_2' AND relnamespace="+nsOid+")", "6||\n"); // cleanup http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/eab1908b/src/test/feature/lib/sql_util.cpp ---------------------------------------------------------------------- diff --git a/src/test/feature/lib/sql_util.cpp b/src/test/feature/lib/sql_util.cpp index 6eb34eb..a5188ca 100644 --- a/src/test/feature/lib/sql_util.cpp +++ b/src/test/feature/lib/sql_util.cpp @@ -67,6 +67,10 @@ std::string SQLUtility::getDbName() { return databaseName; } +std::string SQLUtility::getSchemaName() { + return schemaName; +} + void SQLUtility::exec(const string &sql) { EXPECT_EQ(0, (conn->runSQLCommand(sql)).getLastStatus()) << conn->getLastResult(); http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/eab1908b/src/test/feature/lib/sql_util.h ---------------------------------------------------------------------- diff --git a/src/test/feature/lib/sql_util.h b/src/test/feature/lib/sql_util.h index e6d4768..a49a912 100644 --- a/src/test/feature/lib/sql_util.h +++ b/src/test/feature/lib/sql_util.h @@ -38,6 +38,10 @@ class SQLUtility { // @return string of the test database name std::string getDbName(); + // Get the test schema name + // @return string of the test schema name + std::string getSchemaName(); + // Execute sql command // @param sql The given sql command // @param check true(default) if expected correctly executing, false otherwise @@ -99,11 +103,11 @@ class SQLUtility { // @return void void executeExpectErrorMsgStartWith(const std::string &sql, const std::string &errmsg); + const hawq::test::PSQLQueryResult &executeQuery(const std::string &sql); private: std::unique_ptr<hawq::test::PSQL> getConnection(); const std::string generateSQLFile(const std::string &sqlFile); - const hawq::test::PSQLQueryResult &executeQuery(const std::string &sql); FilePath splitFilePath(const std::string &filePath) const; void exec(const std::string &sql);
