From 094afc1043f31857880722ca8797f5896f3d7c3f Mon Sep 17 00:00:00 2001 From: Tishj Date: Mon, 29 Apr 2024 12:27:12 +0200 Subject: [PATCH] add basic tests for the supported types --- Makefile | 3 +- expected/type_support.out | 95 +++++++++++++++++++++++++++++++++++++++ sql/type_support.sql | 47 +++++++++++++++++++ 3 files changed, 144 insertions(+), 1 deletion(-) create mode 100644 expected/type_support.out create mode 100644 sql/type_support.sql diff --git a/Makefile b/Makefile index 72aee371..f881f45d 100644 --- a/Makefile +++ b/Makefile @@ -14,7 +14,8 @@ SRCS = src/quack_heap_seq_scan.cpp \ OBJS = $(subst .cpp,.o, $(SRCS)) -REGRESS = basic +REGRESS = basic \ + type_support PG_CONFIG ?= pg_config diff --git a/expected/type_support.out b/expected/type_support.out new file mode 100644 index 00000000..e95e2e58 --- /dev/null +++ b/expected/type_support.out @@ -0,0 +1,95 @@ +-- CHAR +CREATE TABLE chr(a CHAR); +INSERT INTO chr SELECT CAST(a AS CHAR) from (VALUES (-128), (0), (127)) t(a); +SELECT * FROM chr; + a +--- + - + 0 + 1 +(3 rows) + +-- SMALLINT +CREATE TABLE small(a SMALLINT); +INSERT INTO small SELECT CAST(a AS SMALLINT) from (VALUES (-32768), (0), (32767)) t(a); +SELECT * FROM small; + a +-------- + -32768 + 0 + 32767 +(3 rows) + +-- INTEGER +CREATE TABLE intgr(a INTEGER); +INSERT INTO intgr SELECT CAST(a AS INTEGER) from (VALUES (-2147483648), (0), (2147483647)) t(a); +SELECT * FROM intgr; + a +------------- + -2147483648 + 0 + 2147483647 +(3 rows) + +-- BIGINT +CREATE TABLE big(a BIGINT); +INSERT INTO big SELECT CAST(a AS BIGINT) from (VALUES (-9223372036854775808), (0), (9223372036854775807)) t(a); +SELECT * FROM big; + a +---------------------- + -9223372036854775808 + 0 + 9223372036854775807 +(3 rows) + +--- BOOL +CREATE TABLE bool_tbl(a BOOL); +INSERT INTO bool_tbl SELECT CAST(a AS BOOL) from (VALUES (False), (NULL), (True)) t(a); +SELECT * FROM bool_tbl; + a +--- + f + + t +(3 rows) + +--- VARCHAR +CREATE TABLE varchar_tbl(a VARCHAR); +INSERT INTO varchar_tbl SELECT CAST(a AS VARCHAR) from (VALUES (''), (NULL), ('test'), ('this is a long string')) t(a); +SELECT * FROM varchar_tbl; + a +----------------------- + + + test + this is a long string +(4 rows) + +-- DATE +CREATE TABLE date_tbl(a DATE); +INSERT INTO date_tbl SELECT CAST(a AS DATE) FROM (VALUES ('2022-04-29'::DATE), (NULL), ('2023-05-15'::DATE)) t(a); +SELECT * FROM date_tbl; + a +------------ + 04-29-2022 + + 05-15-2023 +(3 rows) + +-- TIMESTAMP +CREATE TABLE timestamp_tbl(a TIMESTAMP); +INSERT INTO timestamp_tbl SELECT CAST(a AS TIMESTAMP) FROM (VALUES ('2022-04-29 10:15:30'::TIMESTAMP), (NULL), ('2023-05-15 12:30:45'::TIMESTAMP)) t(a); +SELECT * FROM timestamp_tbl; + a +-------------------------- + Fri Apr 29 10:15:30 2022 + + Mon May 15 12:30:45 2023 +(3 rows) + +DROP TABLE small; +DROP TABLE intgr; +DROP TABLE big; +DROP TABLE varchar_tbl; +DROP TABLE date_tbl; +DROP TABLE timestamp_tbl; diff --git a/sql/type_support.sql b/sql/type_support.sql new file mode 100644 index 00000000..7de888c7 --- /dev/null +++ b/sql/type_support.sql @@ -0,0 +1,47 @@ + +-- CHAR +CREATE TABLE chr(a CHAR); +INSERT INTO chr SELECT CAST(a AS CHAR) from (VALUES (-128), (0), (127)) t(a); +SELECT * FROM chr; + +-- SMALLINT +CREATE TABLE small(a SMALLINT); +INSERT INTO small SELECT CAST(a AS SMALLINT) from (VALUES (-32768), (0), (32767)) t(a); +SELECT * FROM small; + +-- INTEGER +CREATE TABLE intgr(a INTEGER); +INSERT INTO intgr SELECT CAST(a AS INTEGER) from (VALUES (-2147483648), (0), (2147483647)) t(a); +SELECT * FROM intgr; + +-- BIGINT +CREATE TABLE big(a BIGINT); +INSERT INTO big SELECT CAST(a AS BIGINT) from (VALUES (-9223372036854775808), (0), (9223372036854775807)) t(a); +SELECT * FROM big; + +--- BOOL +CREATE TABLE bool_tbl(a BOOL); +INSERT INTO bool_tbl SELECT CAST(a AS BOOL) from (VALUES (False), (NULL), (True)) t(a); +SELECT * FROM bool_tbl; + +--- VARCHAR +CREATE TABLE varchar_tbl(a VARCHAR); +INSERT INTO varchar_tbl SELECT CAST(a AS VARCHAR) from (VALUES (''), (NULL), ('test'), ('this is a long string')) t(a); +SELECT * FROM varchar_tbl; + +-- DATE +CREATE TABLE date_tbl(a DATE); +INSERT INTO date_tbl SELECT CAST(a AS DATE) FROM (VALUES ('2022-04-29'::DATE), (NULL), ('2023-05-15'::DATE)) t(a); +SELECT * FROM date_tbl; + +-- TIMESTAMP +CREATE TABLE timestamp_tbl(a TIMESTAMP); +INSERT INTO timestamp_tbl SELECT CAST(a AS TIMESTAMP) FROM (VALUES ('2022-04-29 10:15:30'::TIMESTAMP), (NULL), ('2023-05-15 12:30:45'::TIMESTAMP)) t(a); +SELECT * FROM timestamp_tbl; + +DROP TABLE small; +DROP TABLE intgr; +DROP TABLE big; +DROP TABLE varchar_tbl; +DROP TABLE date_tbl; +DROP TABLE timestamp_tbl;