HAWQ-1716. enable feature-test in docker
diff --git a/src/test/feature/catalog/ans/char_linux.ans b/src/test/feature/catalog/ans/char_linux.ans
new file mode 100644
index 0000000..c812a49
--- /dev/null
+++ b/src/test/feature/catalog/ans/char_linux.ans
@@ -0,0 +1,139 @@
+-- start_ignore
+SET SEARCH_PATH=TestType_char;
+SET
+-- end_ignore
+--
+-- CHAR
+--
+-- fixed-length by value
+-- internally passed by value if <= 4 bytes in storage
+SELECT char 'c' = char 'c' AS true;
+ true
+------
+ t
+(1 row)
+
+--
+-- Build a table for testing
+--
+CREATE TABLE CHAR_TBL(f1 char);
+CREATE TABLE
+INSERT INTO CHAR_TBL (f1) VALUES ('a');
+INSERT 0 1
+INSERT INTO CHAR_TBL (f1) VALUES ('A');
+INSERT 0 1
+-- any of the following three input formats are acceptable
+INSERT INTO CHAR_TBL (f1) VALUES ('1');
+INSERT 0 1
+INSERT INTO CHAR_TBL (f1) VALUES (2);
+INSERT 0 1
+INSERT INTO CHAR_TBL (f1) VALUES ('3');
+INSERT 0 1
+-- zero-length char
+INSERT INTO CHAR_TBL (f1) VALUES ('');
+INSERT 0 1
+-- try char's of greater than 1 length
+INSERT INTO CHAR_TBL (f1) VALUES ('cd');
+psql:/tmp/TestType_char.sql:34: ERROR: value too long for type character(1)
+INSERT INTO CHAR_TBL (f1) VALUES ('c ');
+INSERT 0 1
+SELECT '' AS seven, * FROM CHAR_TBL;
+ seven | f1
+-------+----
+ | a
+ | A
+ | 1
+ | 2
+ | 3
+ |
+ | c
+(7 rows)
+
+SELECT '' AS six, c.*
+ FROM CHAR_TBL c
+ WHERE c.f1 <> 'a';
+ six | f1
+-----+----
+ | A
+ | 1
+ | 2
+ | 3
+ |
+ | c
+(6 rows)
+
+SELECT '' AS one, c.*
+ FROM CHAR_TBL c
+ WHERE c.f1 = 'a';
+ one | f1
+-----+----
+ | a
+(1 row)
+
+SELECT '' AS five, c.*
+ FROM CHAR_TBL c
+ WHERE c.f1 < 'a';
+ five | f1
+------+----
+ | 1
+ | 2
+ | 3
+ |
+(4 rows)
+
+SELECT '' AS six, c.*
+ FROM CHAR_TBL c
+ WHERE c.f1 <= 'a';
+ six | f1
+-----+----
+ | a
+ | 1
+ | 2
+ | 3
+ |
+(5 rows)
+
+SELECT '' AS one, c.*
+ FROM CHAR_TBL c
+ WHERE c.f1 > 'a';
+ one | f1
+-----+----
+ | A
+ | c
+(2 rows)
+
+SELECT '' AS two, c.*
+ FROM CHAR_TBL c
+ WHERE c.f1 >= 'a';
+ two | f1
+-----+----
+ | a
+ | A
+ | c
+(3 rows)
+
+DROP TABLE CHAR_TBL;
+DROP TABLE
+--
+-- Now test longer arrays of char
+--
+CREATE TABLE CHAR_TBL(f1 char(4));
+CREATE TABLE
+INSERT INTO CHAR_TBL (f1) VALUES ('a');
+INSERT 0 1
+INSERT INTO CHAR_TBL (f1) VALUES ('ab');
+INSERT 0 1
+INSERT INTO CHAR_TBL (f1) VALUES ('abcd');
+INSERT 0 1
+INSERT INTO CHAR_TBL (f1) VALUES ('abcde');
+psql:/tmp/TestType_char.sql:75: ERROR: value too long for type character(4)
+INSERT INTO CHAR_TBL (f1) VALUES ('abcd ');
+INSERT 0 1
+SELECT '' AS four, * FROM CHAR_TBL;
+ four | f1
+------+------
+ | a
+ | ab
+ | abcd
+ | abcd
+(4 rows)
diff --git a/src/test/feature/catalog/ans/varchar_linux.ans b/src/test/feature/catalog/ans/varchar_linux.ans
new file mode 100644
index 0000000..0e421ab
--- /dev/null
+++ b/src/test/feature/catalog/ans/varchar_linux.ans
@@ -0,0 +1,128 @@
+-- start_ignore
+SET SEARCH_PATH=TestType_varchar;
+SET
+-- end_ignore
+--
+-- VARCHAR
+--
+CREATE TABLE VARCHAR_TBL(f1 varchar(1));
+CREATE TABLE
+INSERT INTO VARCHAR_TBL (f1) VALUES ('a');
+INSERT 0 1
+INSERT INTO VARCHAR_TBL (f1) VALUES ('A');
+INSERT 0 1
+-- any of the following three input formats are acceptable
+INSERT INTO VARCHAR_TBL (f1) VALUES ('1');
+INSERT 0 1
+INSERT INTO VARCHAR_TBL (f1) VALUES (2);
+INSERT 0 1
+INSERT INTO VARCHAR_TBL (f1) VALUES ('3');
+INSERT 0 1
+-- zero-length char
+INSERT INTO VARCHAR_TBL (f1) VALUES ('');
+INSERT 0 1
+-- try varchar's of greater than 1 length
+INSERT INTO VARCHAR_TBL (f1) VALUES ('cd');
+psql:/tmp/TestType_varchar.sql:25: ERROR: value too long for type character varying(1)
+INSERT INTO VARCHAR_TBL (f1) VALUES ('c ');
+INSERT 0 1
+SELECT '' AS seven, * FROM VARCHAR_TBL;
+ seven | f1
+-------+----
+ | a
+ | A
+ | 1
+ | 2
+ | 3
+ |
+ | c
+(7 rows)
+
+SELECT '' AS six, c.*
+ FROM VARCHAR_TBL c
+ WHERE c.f1 <> 'a';
+ six | f1
+-----+----
+ | A
+ | 1
+ | 2
+ | 3
+ |
+ | c
+(6 rows)
+
+SELECT '' AS one, c.*
+ FROM VARCHAR_TBL c
+ WHERE c.f1 = 'a';
+ one | f1
+-----+----
+ | a
+(1 row)
+
+SELECT '' AS five, c.*
+ FROM VARCHAR_TBL c
+ WHERE c.f1 < 'a';
+ five | f1
+------+----
+ | 1
+ | 2
+ | 3
+ |
+(4 rows)
+
+SELECT '' AS six, c.*
+ FROM VARCHAR_TBL c
+ WHERE c.f1 <= 'a';
+ six | f1
+-----+----
+ | a
+ | 1
+ | 2
+ | 3
+ |
+(5 rows)
+
+SELECT '' AS one, c.*
+ FROM VARCHAR_TBL c
+ WHERE c.f1 > 'a';
+ one | f1
+-----+----
+ | A
+ | c
+(2 rows)
+
+SELECT '' AS two, c.*
+ FROM VARCHAR_TBL c
+ WHERE c.f1 >= 'a';
+ two | f1
+-----+----
+ | a
+ | A
+ | c
+(3 rows)
+
+DROP TABLE VARCHAR_TBL;
+DROP TABLE
+--
+-- Now test longer arrays of char
+--
+CREATE TABLE VARCHAR_TBL(f1 varchar(4));
+CREATE TABLE
+INSERT INTO VARCHAR_TBL (f1) VALUES ('a');
+INSERT 0 1
+INSERT INTO VARCHAR_TBL (f1) VALUES ('ab');
+INSERT 0 1
+INSERT INTO VARCHAR_TBL (f1) VALUES ('abcd');
+INSERT 0 1
+INSERT INTO VARCHAR_TBL (f1) VALUES ('abcde');
+psql:/tmp/TestType_varchar.sql:66: ERROR: value too long for type character varying(4)
+INSERT INTO VARCHAR_TBL (f1) VALUES ('abcd ');
+INSERT 0 1
+SELECT '' AS four, * FROM VARCHAR_TBL;
+ four | f1
+------+------
+ | a
+ | ab
+ | abcd
+ | abcd
+(4 rows)
diff --git a/src/test/feature/catalog/test_type.cpp b/src/test/feature/catalog/test_type.cpp
index 4457b08..351f889 100644
--- a/src/test/feature/catalog/test_type.cpp
+++ b/src/test/feature/catalog/test_type.cpp
@@ -44,7 +44,22 @@
TEST_F_FILE_TYPE(boolean)
-TEST_F_FILE_TYPE(char)
+TEST_F(TestType, char)
+{
+ hawq::test::SQLUtility util;
+ string SqlFile("catalog");
+ string AnsFile("catalog");
+ SqlFile += "/sql/char.sql";
+ #ifdef __linux__
+ AnsFile += "/ans/char_linux.ans";
+ util.execSQLFile(SqlFile, AnsFile);
+ #elif defined __APPLE__
+ AnsFile += "/ans/char.ans";
+ util.execSQLFile(SqlFile, AnsFile);
+ #else
+ EXPECT_TRUE(false) << "Unsupported platform";
+ #endif
+}
TEST_F_FILE_TYPE(date)
@@ -75,4 +90,19 @@
"catalog/ans/type_sanity.ans");
}
-TEST_F_FILE_TYPE(varchar)
+TEST_F(TestType, varchar)
+{
+ hawq::test::SQLUtility util;
+ string SqlFile("catalog");
+ string AnsFile("catalog");
+ SqlFile += "/sql/varchar.sql";
+ #ifdef __linux__
+ AnsFile += "/ans/varchar_linux.ans";
+ util.execSQLFile(SqlFile, AnsFile);
+ #elif defined __APPLE__
+ AnsFile += "/ans/varchar.ans";
+ util.execSQLFile(SqlFile, AnsFile);
+ #else
+ EXPECT_TRUE(false) << "Unsupported platform";
+ #endif
+}