pgdog.git / summary / log / commit / refs

commit    a716fa33c96de19ad5eb34ecd0de00a10688d698
Author:   Justin George <jaggederest@users.noreply.github.com>
Commit:   GitHub <noreply@github.com>
Date:     Sat Sep 27 02:34:28 2025 +0000

    Add SQL cases for basic data types (#510)


integration/pgdog.toml | 27 ++++++++++++++++++++++ integration/sql/README.md | 12 ++++++++++ .../sql/cases/900_boolean_roundtrip_case.sql | 5 ++++ .../sql/cases/900_boolean_roundtrip_setup.sql | 8 +++++++ .../sql/cases/900_boolean_roundtrip_teardown.sql | 1 + .../sql/cases/901_smallint_roundtrip_case.sql | 5 ++++ .../sql/cases/901_smallint_roundtrip_setup.sql | 9 ++++++++ .../sql/cases/901_smallint_roundtrip_teardown.sql | 1 + .../sql/cases/902_integer_roundtrip_case.sql | 5 ++++ .../sql/cases/902_integer_roundtrip_setup.sql | 9 ++++++++ .../sql/cases/902_integer_roundtrip_teardown.sql | 1 + .../sql/cases/903_bigint_roundtrip_case.sql | 5 ++++ .../sql/cases/903_bigint_roundtrip_setup.sql | 9 ++++++++ .../sql/cases/903_bigint_roundtrip_teardown.sql | 1 + .../sql/cases/904_numeric_roundtrip_case.sql | 5 ++++ .../sql/cases/904_numeric_roundtrip_setup.sql | 9 ++++++++ .../sql/cases/904_numeric_roundtrip_teardown.sql | 1 + integration/sql/cases/905_real_roundtrip_case.sql | 5 ++++ integration/sql/cases/905_real_roundtrip_setup.sql | 10 ++++++++ .../sql/cases/905_real_roundtrip_teardown.sql | 1 + .../cases/906_double_precision_roundtrip_case.sql | 5 ++++ .../cases/906_double_precision_roundtrip_setup.sql | 11 +++++++++ .../906_double_precision_roundtrip_teardown.sql | 1 + .../sql/cases/907_string_types_roundtrip_case.sql | 5 ++++ .../sql/cases/907_string_types_roundtrip_setup.sql | 17 ++++++++++++++ .../cases/907_string_types_roundtrip_teardown.sql | 1 + integration/sql/cases/908_bytea_roundtrip_case.sql | 5 ++++ .../sql/cases/908_bytea_roundtrip_setup.sql | 10 ++++++++ .../sql/cases/908_bytea_roundtrip_teardown.sql | 1 + integration/sql/cases/909_uuid_roundtrip_case.sql | 5 ++++ integration/sql/cases/909_uuid_roundtrip_setup.sql | 9 ++++++++ .../sql/cases/909_uuid_roundtrip_teardown.sql | 1 + integration/sql/cases/910_date_roundtrip_case.sql | 5 ++++ integration/sql/cases/910_date_roundtrip_setup.sql | 9 ++++++++ .../sql/cases/910_date_roundtrip_teardown.sql | 1 + integration/sql/cases/911_time_roundtrip_case.sql | 5 ++++ integration/sql/cases/911_time_roundtrip_setup.sql | 9 ++++++++ .../sql/cases/911_time_roundtrip_teardown.sql | 1 + .../sql/cases/912_timetz_roundtrip_case.sql | 5 ++++ .../sql/cases/912_timetz_roundtrip_setup.sql | 9 ++++++++ .../sql/cases/912_timetz_roundtrip_teardown.sql | 1 + .../sql/cases/913_timestamp_roundtrip_case.sql | 5 ++++ .../sql/cases/913_timestamp_roundtrip_setup.sql | 9 ++++++++ .../sql/cases/913_timestamp_roundtrip_teardown.sql | 1 + .../sql/cases/914_timestamptz_roundtrip_case.sql | 5 ++++ .../sql/cases/914_timestamptz_roundtrip_setup.sql | 9 ++++++++ .../cases/914_timestamptz_roundtrip_teardown.sql | 1 + .../sql/cases/915_interval_roundtrip_case.sql | 5 ++++ .../sql/cases/915_interval_roundtrip_setup.sql | 10 ++++++++ .../sql/cases/915_interval_roundtrip_teardown.sql | 1 + integration/sql/cases/916_json_roundtrip_case.sql | 5 ++++ integration/sql/cases/916_json_roundtrip_setup.sql | 10 ++++++++ .../sql/cases/916_json_roundtrip_teardown.sql | 1 + integration/sql/cases/917_jsonb_roundtrip_case.sql | 5 ++++ .../sql/cases/917_jsonb_roundtrip_setup.sql | 10 ++++++++ .../sql/cases/917_jsonb_roundtrip_teardown.sql | 1 + .../sql/cases/918_network_types_roundtrip_case.sql | 5 ++++ .../cases/918_network_types_roundtrip_setup.sql | 14 +++++++++++ .../cases/918_network_types_roundtrip_teardown.sql | 1 + .../sql/cases/919_macaddr_roundtrip_case.sql | 6 +++++ .../sql/cases/919_macaddr_roundtrip_setup.sql | 12 ++++++++++ .../sql/cases/919_macaddr_roundtrip_teardown.sql | 1 + .../cases/920_macaddr_roundtrip_binary_case.sql | 6 +++++ .../cases/920_macaddr_roundtrip_binary_setup.sql | 12 ++++++++++ .../920_macaddr_roundtrip_binary_teardown.sql | 1 + 65 files changed, 381 insertions(+) diff --git a/integration/pgdog.toml b/integration/pgdog.toml index 12b54835..25a15093 100644 --- a/integration/pgdog.toml +++ b/integration/pgdog.toml @@ -245,6 +245,33 @@ start = 100 end = 200 shard = 1 +# ------------------------------------------------------------------------------ +# ----- SQL Regression Samples ------------------------------------------------- + +[[sharded_tables]] +database = "pgdog_sharded" +name = "sql_regression_samples" +column = "id" +data_type = "bigint" + +[[sharded_mappings]] +database = "pgdog_sharded" +table = "sql_regression_samples" +column = "id" +kind = "range" +start = 0 +end = 100 +shard = 0 + +[[sharded_mappings]] +database = "pgdog_sharded" +table = "sql_regression_samples" +column = "id" +kind = "range" +start = 100 +end = 200 +shard = 1 + # ------------------------------------------------------------------------------ # ----- Range Sharded :: BIGINT ------------------------------------------------ diff --git a/integration/sql/README.md b/integration/sql/README.md index 74ae4d95..d8210558 100644 --- a/integration/sql/README.md +++ b/integration/sql/README.md @@ -39,3 +39,15 @@ Metadata lives in SQL comments at the top of the `*_case.sql` file: ``` Tags are informative only. Use `skip-targets` to drop one or more target names, or `only-targets` to pin a case to a specific subset (order-sensitive). Set `transactional: false` when the statements must commit. +Leverage `skip-targets` when a type lacks a stable binary representation in PgDog yet (for example, some network and MAC formats still return raw byte buffers in binary mode). + +## Setup & Teardown Conventions + +PgDog’s sharding layer relies on deterministic routing, so the SQL fixtures follow a couple of important rules: + +- Reuse the canonical `sql_regression_samples` table name. Every setup script should `DROP TABLE IF EXISTS sql_regression_samples;` and recreate it with the columns needed for that case, and the teardown should drop it again. +- Keep the routing key consistent: declare `id BIGINT PRIMARY KEY` as the leading column so PgDog can hash rows to a single shard. +- Issue one-row `INSERT` statements and always spell out the full column list. PgDog only routes single-row inserts where the target columns are explicit, so avoid `INSERT ... VALUES (...), (...);` or omitting the column list. +- When multiple value types are needed, keep using standalone `INSERT` statements per row; PgDog fan-out happens per statement and this keeps behaviour consistent across sharded and non-sharded targets. + +Following these conventions keeps the harness sharding-friendly and ensures new cases behave the same through PgDog as they do against PostgreSQL directly. diff --git a/integration/sql/cases/900_boolean_roundtrip_case.sql b/integration/sql/cases/900_boolean_roundtrip_case.sql new file mode 100644 index 00000000..5e2400c9 --- /dev/null +++ b/integration/sql/cases/900_boolean_roundtrip_case.sql @@ -0,0 +1,5 @@ +-- description: Boolean values round-trip through PgDog +-- tags: standard +-- transactional: true + +SELECT id, sample_boolean FROM sql_regression_samples ORDER BY id; diff --git a/integration/sql/cases/900_boolean_roundtrip_setup.sql b/integration/sql/cases/900_boolean_roundtrip_setup.sql new file mode 100644 index 00000000..7f593927 --- /dev/null +++ b/integration/sql/cases/900_boolean_roundtrip_setup.sql @@ -0,0 +1,8 @@ +DROP TABLE IF EXISTS sql_regression_samples; +CREATE TABLE sql_regression_samples ( + id BIGINT PRIMARY KEY, + sample_boolean BOOLEAN +); +INSERT INTO sql_regression_samples (id, sample_boolean) VALUES (1, TRUE); +INSERT INTO sql_regression_samples (id, sample_boolean) VALUES (2, FALSE); +INSERT INTO sql_regression_samples (id, sample_boolean) VALUES (3, NULL); diff --git a/integration/sql/cases/900_boolean_roundtrip_teardown.sql b/integration/sql/cases/900_boolean_roundtrip_teardown.sql new file mode 100644 index 00000000..f14a9af4 --- /dev/null +++ b/integration/sql/cases/900_boolean_roundtrip_teardown.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS sql_regression_samples; diff --git a/integration/sql/cases/901_smallint_roundtrip_case.sql b/integration/sql/cases/901_smallint_roundtrip_case.sql new file mode 100644 index 00000000..d5d6deff --- /dev/null +++ b/integration/sql/cases/901_smallint_roundtrip_case.sql @@ -0,0 +1,5 @@ +-- description: SMALLINT values round-trip, including boundaries and NULL +-- tags: standard +-- transactional: true + +SELECT id, sample_smallint FROM sql_regression_samples ORDER BY id; diff --git a/integration/sql/cases/901_smallint_roundtrip_setup.sql b/integration/sql/cases/901_smallint_roundtrip_setup.sql new file mode 100644 index 00000000..8aa2a25c --- /dev/null +++ b/integration/sql/cases/901_smallint_roundtrip_setup.sql @@ -0,0 +1,9 @@ +DROP TABLE IF EXISTS sql_regression_samples; +CREATE TABLE sql_regression_samples ( + id BIGINT PRIMARY KEY, + sample_smallint SMALLINT +); +INSERT INTO sql_regression_samples (id, sample_smallint) VALUES (1, (-32768)::SMALLINT); +INSERT INTO sql_regression_samples (id, sample_smallint) VALUES (2, 0::SMALLINT); +INSERT INTO sql_regression_samples (id, sample_smallint) VALUES (3, 32767::SMALLINT); +INSERT INTO sql_regression_samples (id, sample_smallint) VALUES (4, NULL); diff --git a/integration/sql/cases/901_smallint_roundtrip_teardown.sql b/integration/sql/cases/901_smallint_roundtrip_teardown.sql new file mode 100644 index 00000000..f14a9af4 --- /dev/null +++ b/integration/sql/cases/901_smallint_roundtrip_teardown.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS sql_regression_samples; diff --git a/integration/sql/cases/902_integer_roundtrip_case.sql b/integration/sql/cases/902_integer_roundtrip_case.sql new file mode 100644 index 00000000..a01ff3dd --- /dev/null +++ b/integration/sql/cases/902_integer_roundtrip_case.sql @@ -0,0 +1,5 @@ +-- description: INTEGER values round-trip, including signed extremes +-- tags: standard +-- transactional: true + +SELECT id, sample_integer FROM sql_regression_samples ORDER BY id; diff --git a/integration/sql/cases/902_integer_roundtrip_setup.sql b/integration/sql/cases/902_integer_roundtrip_setup.sql new file mode 100644 index 00000000..c88a5d3e --- /dev/null +++ b/integration/sql/cases/902_integer_roundtrip_setup.sql @@ -0,0 +1,9 @@ +DROP TABLE IF EXISTS sql_regression_samples; +CREATE TABLE sql_regression_samples ( + id BIGINT PRIMARY KEY, + sample_integer INTEGER +); +INSERT INTO sql_regression_samples (id, sample_integer) VALUES (1, (-2147483648)::INTEGER); +INSERT INTO sql_regression_samples (id, sample_integer) VALUES (2, 0::INTEGER); +INSERT INTO sql_regression_samples (id, sample_integer) VALUES (3, 2147483647::INTEGER); +INSERT INTO sql_regression_samples (id, sample_integer) VALUES (4, NULL); diff --git a/integration/sql/cases/902_integer_roundtrip_teardown.sql b/integration/sql/cases/902_integer_roundtrip_teardown.sql new file mode 100644 index 00000000..f14a9af4 --- /dev/null +++ b/integration/sql/cases/902_integer_roundtrip_teardown.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS sql_regression_samples; diff --git a/integration/sql/cases/903_bigint_roundtrip_case.sql b/integration/sql/cases/903_bigint_roundtrip_case.sql new file mode 100644 index 00000000..718ffbd9 --- /dev/null +++ b/integration/sql/cases/903_bigint_roundtrip_case.sql @@ -0,0 +1,5 @@ +-- description: BIGINT values round-trip, ensuring max/min 64-bit support +-- tags: standard +-- transactional: true + +SELECT id, sample_bigint FROM sql_regression_samples ORDER BY id; diff --git a/integration/sql/cases/903_bigint_roundtrip_setup.sql b/integration/sql/cases/903_bigint_roundtrip_setup.sql new file mode 100644 index 00000000..8b1a7e3d --- /dev/null +++ b/integration/sql/cases/903_bigint_roundtrip_setup.sql @@ -0,0 +1,9 @@ +DROP TABLE IF EXISTS sql_regression_samples; +CREATE TABLE sql_regression_samples ( + id BIGINT PRIMARY KEY, + sample_bigint BIGINT +); +INSERT INTO sql_regression_samples (id, sample_bigint) VALUES (1, (-9223372036854775808)::BIGINT); +INSERT INTO sql_regression_samples (id, sample_bigint) VALUES (2, 0::BIGINT); +INSERT INTO sql_regression_samples (id, sample_bigint) VALUES (3, 9223372036854775807::BIGINT); +INSERT INTO sql_regression_samples (id, sample_bigint) VALUES (4, NULL); diff --git a/integration/sql/cases/903_bigint_roundtrip_teardown.sql b/integration/sql/cases/903_bigint_roundtrip_teardown.sql new file mode 100644 index 00000000..f14a9af4 --- /dev/null +++ b/integration/sql/cases/903_bigint_roundtrip_teardown.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS sql_regression_samples; diff --git a/integration/sql/cases/904_numeric_roundtrip_case.sql b/integration/sql/cases/904_numeric_roundtrip_case.sql new file mode 100644 index 00000000..3539c6da --- /dev/null +++ b/integration/sql/cases/904_numeric_roundtrip_case.sql @@ -0,0 +1,5 @@ +-- description: NUMERIC values round-trip across sign and scale variations +-- tags: standard +-- transactional: true + +SELECT id, sample_numeric FROM sql_regression_samples ORDER BY id; diff --git a/integration/sql/cases/904_numeric_roundtrip_setup.sql b/integration/sql/cases/904_numeric_roundtrip_setup.sql new file mode 100644 index 00000000..eb90c645 --- /dev/null +++ b/integration/sql/cases/904_numeric_roundtrip_setup.sql @@ -0,0 +1,9 @@ +DROP TABLE IF EXISTS sql_regression_samples; +CREATE TABLE sql_regression_samples ( + id BIGINT PRIMARY KEY, + sample_numeric NUMERIC(30,10) +); +INSERT INTO sql_regression_samples (id, sample_numeric) VALUES (1, 123456789.987654321::NUMERIC); +INSERT INTO sql_regression_samples (id, sample_numeric) VALUES (2, -987654321.123456789::NUMERIC); +INSERT INTO sql_regression_samples (id, sample_numeric) VALUES (3, 0.0000001234::NUMERIC); +INSERT INTO sql_regression_samples (id, sample_numeric) VALUES (4, NULL); diff --git a/integration/sql/cases/904_numeric_roundtrip_teardown.sql b/integration/sql/cases/904_numeric_roundtrip_teardown.sql new file mode 100644 index 00000000..f14a9af4 --- /dev/null +++ b/integration/sql/cases/904_numeric_roundtrip_teardown.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS sql_regression_samples; diff --git a/integration/sql/cases/905_real_roundtrip_case.sql b/integration/sql/cases/905_real_roundtrip_case.sql new file mode 100644 index 00000000..af76ae4f --- /dev/null +++ b/integration/sql/cases/905_real_roundtrip_case.sql @@ -0,0 +1,5 @@ +-- description: REAL (float4) values round-trip including infinities and NULL +-- tags: standard +-- transactional: true + +SELECT id, sample_real FROM sql_regression_samples ORDER BY id; diff --git a/integration/sql/cases/905_real_roundtrip_setup.sql b/integration/sql/cases/905_real_roundtrip_setup.sql new file mode 100644 index 00000000..8e86eb31 --- /dev/null +++ b/integration/sql/cases/905_real_roundtrip_setup.sql @@ -0,0 +1,10 @@ +DROP TABLE IF EXISTS sql_regression_samples; +CREATE TABLE sql_regression_samples ( + id BIGINT PRIMARY KEY, + sample_real REAL +); +INSERT INTO sql_regression_samples (id, sample_real) VALUES (1, 1.5::REAL); +INSERT INTO sql_regression_samples (id, sample_real) VALUES (2, -2.25::REAL); +INSERT INTO sql_regression_samples (id, sample_real) VALUES (3, 'Infinity'::REAL); +INSERT INTO sql_regression_samples (id, sample_real) VALUES (4, '-Infinity'::REAL); +INSERT INTO sql_regression_samples (id, sample_real) VALUES (5, NULL); diff --git a/integration/sql/cases/905_real_roundtrip_teardown.sql b/integration/sql/cases/905_real_roundtrip_teardown.sql new file mode 100644 index 00000000..f14a9af4 --- /dev/null +++ b/integration/sql/cases/905_real_roundtrip_teardown.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS sql_regression_samples; diff --git a/integration/sql/cases/906_double_precision_roundtrip_case.sql b/integration/sql/cases/906_double_precision_roundtrip_case.sql new file mode 100644 index 00000000..0e8e93af --- /dev/null +++ b/integration/sql/cases/906_double_precision_roundtrip_case.sql @@ -0,0 +1,5 @@ +-- description: DOUBLE PRECISION values round-trip including denormal and infinities +-- tags: standard +-- transactional: true + +SELECT id, sample_double FROM sql_regression_samples ORDER BY id; diff --git a/integration/sql/cases/906_double_precision_roundtrip_setup.sql b/integration/sql/cases/906_double_precision_roundtrip_setup.sql new file mode 100644 index 00000000..a71cfec5 --- /dev/null +++ b/integration/sql/cases/906_double_precision_roundtrip_setup.sql @@ -0,0 +1,11 @@ +DROP TABLE IF EXISTS sql_regression_samples; +CREATE TABLE sql_regression_samples ( + id BIGINT PRIMARY KEY, + sample_double DOUBLE PRECISION +); +INSERT INTO sql_regression_samples (id, sample_double) VALUES (1, 1.5::DOUBLE PRECISION); +INSERT INTO sql_regression_samples (id, sample_double) VALUES (2, -1234567890.9876543::DOUBLE PRECISION); +INSERT INTO sql_regression_samples (id, sample_double) VALUES (3, 'Infinity'::DOUBLE PRECISION); +INSERT INTO sql_regression_samples (id, sample_double) VALUES (4, '-Infinity'::DOUBLE PRECISION); +INSERT INTO sql_regression_samples (id, sample_double) VALUES (5, 2.2250738585072014e-308::DOUBLE PRECISION); +INSERT INTO sql_regression_samples (id, sample_double) VALUES (6, NULL); diff --git a/integration/sql/cases/906_double_precision_roundtrip_teardown.sql b/integration/sql/cases/906_double_precision_roundtrip_teardown.sql new file mode 100644 index 00000000..f14a9af4 --- /dev/null +++ b/integration/sql/cases/906_double_precision_roundtrip_teardown.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS sql_regression_samples; diff --git a/integration/sql/cases/907_string_types_roundtrip_case.sql b/integration/sql/cases/907_string_types_roundtrip_case.sql new file mode 100644 index 00000000..d2c373c9 --- /dev/null +++ b/integration/sql/cases/907_string_types_roundtrip_case.sql @@ -0,0 +1,5 @@ +-- description: TEXT, VARCHAR, and CHAR string types round-trip across PgDog +-- tags: standard +-- transactional: true + +SELECT id, sample_text, sample_varchar, sample_char FROM sql_regression_samples ORDER BY id; diff --git a/integration/sql/cases/907_string_types_roundtrip_setup.sql b/integration/sql/cases/907_string_types_roundtrip_setup.sql new file mode 100644 index 00000000..22bd397f --- /dev/null +++ b/integration/sql/cases/907_string_types_roundtrip_setup.sql @@ -0,0 +1,17 @@ +DROP TABLE IF EXISTS sql_regression_samples; +CREATE TABLE sql_regression_samples ( + id BIGINT PRIMARY KEY, + sample_text TEXT, + sample_varchar VARCHAR(20), + sample_char CHAR(5) +); +INSERT INTO sql_regression_samples (id, sample_text, sample_varchar, sample_char) + VALUES (1, 'alpha', 'alpha', 'a'); +INSERT INTO sql_regression_samples (id, sample_text, sample_varchar, sample_char) + VALUES (2, 'beta with spaces', 'beta-with-hyphen', 'beta '); +INSERT INTO sql_regression_samples (id, sample_text, sample_varchar, sample_char) + VALUES (3, 'line\nbreak', 'trimmed', 'xyz'); +INSERT INTO sql_regression_samples (id, sample_text, sample_varchar, sample_char) + VALUES (4, '', '', ''); +INSERT INTO sql_regression_samples (id, sample_text, sample_varchar, sample_char) + VALUES (5, NULL, NULL, NULL); diff --git a/integration/sql/cases/907_string_types_roundtrip_teardown.sql b/integration/sql/cases/907_string_types_roundtrip_teardown.sql new file mode 100644 index 00000000..f14a9af4 --- /dev/null +++ b/integration/sql/cases/907_string_types_roundtrip_teardown.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS sql_regression_samples; diff --git a/integration/sql/cases/908_bytea_roundtrip_case.sql b/integration/sql/cases/908_bytea_roundtrip_case.sql new file mode 100644 index 00000000..5f3be0f1 --- /dev/null +++ b/integration/sql/cases/908_bytea_roundtrip_case.sql @@ -0,0 +1,5 @@ +-- description: BYTEA values round-trip including binary, zero-length, and NULL payloads +-- tags: standard +-- transactional: true + +SELECT id, sample_bytea FROM sql_regression_samples ORDER BY id; diff --git a/integration/sql/cases/908_bytea_roundtrip_setup.sql b/integration/sql/cases/908_bytea_roundtrip_setup.sql new file mode 100644 index 00000000..0c12e7e6 --- /dev/null +++ b/integration/sql/cases/908_bytea_roundtrip_setup.sql @@ -0,0 +1,10 @@ +DROP TABLE IF EXISTS sql_regression_samples; +CREATE TABLE sql_regression_samples ( + id BIGINT PRIMARY KEY, + sample_bytea BYTEA +); +INSERT INTO sql_regression_samples (id, sample_bytea) VALUES (1, decode('00ff10', 'hex')); +INSERT INTO sql_regression_samples (id, sample_bytea) VALUES (2, decode('deadbeefcafebabe', 'hex')); +INSERT INTO sql_regression_samples (id, sample_bytea) VALUES (3, decode('', 'hex')); +INSERT INTO sql_regression_samples (id, sample_bytea) VALUES (4, decode('5c78', 'hex')); +INSERT INTO sql_regression_samples (id, sample_bytea) VALUES (5, NULL); diff --git a/integration/sql/cases/908_bytea_roundtrip_teardown.sql b/integration/sql/cases/908_bytea_roundtrip_teardown.sql new file mode 100644 index 00000000..f14a9af4 --- /dev/null +++ b/integration/sql/cases/908_bytea_roundtrip_teardown.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS sql_regression_samples; diff --git a/integration/sql/cases/909_uuid_roundtrip_case.sql b/integration/sql/cases/909_uuid_roundtrip_case.sql new file mode 100644 index 00000000..afc1574d --- /dev/null +++ b/integration/sql/cases/909_uuid_roundtrip_case.sql @@ -0,0 +1,5 @@ +-- description: UUID values round-trip including all-zero and all-ones patterns +-- tags: standard +-- transactional: true + +SELECT id, sample_uuid FROM sql_regression_samples ORDER BY id; diff --git a/integration/sql/cases/909_uuid_roundtrip_setup.sql b/integration/sql/cases/909_uuid_roundtrip_setup.sql new file mode 100644 index 00000000..fc033e44 --- /dev/null +++ b/integration/sql/cases/909_uuid_roundtrip_setup.sql @@ -0,0 +1,9 @@ +DROP TABLE IF EXISTS sql_regression_samples; +CREATE TABLE sql_regression_samples ( + id BIGINT PRIMARY KEY, + sample_uuid UUID +); +INSERT INTO sql_regression_samples (id, sample_uuid) VALUES (1, '00000000-0000-0000-0000-000000000000'::UUID); +INSERT INTO sql_regression_samples (id, sample_uuid) VALUES (2, '123e4567-e89b-12d3-a456-426614174000'::UUID); +INSERT INTO sql_regression_samples (id, sample_uuid) VALUES (3, 'ffffffff-ffff-ffff-ffff-ffffffffffff'::UUID); +INSERT INTO sql_regression_samples (id, sample_uuid) VALUES (4, NULL); diff --git a/integration/sql/cases/909_uuid_roundtrip_teardown.sql b/integration/sql/cases/909_uuid_roundtrip_teardown.sql new file mode 100644 index 00000000..f14a9af4 --- /dev/null +++ b/integration/sql/cases/909_uuid_roundtrip_teardown.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS sql_regression_samples; diff --git a/integration/sql/cases/910_date_roundtrip_case.sql b/integration/sql/cases/910_date_roundtrip_case.sql new file mode 100644 index 00000000..c73c9988 --- /dev/null +++ b/integration/sql/cases/910_date_roundtrip_case.sql @@ -0,0 +1,5 @@ +-- description: DATE values round-trip across historical and modern ranges +-- tags: standard +-- transactional: true + +SELECT id, sample_date FROM sql_regression_samples ORDER BY id; diff --git a/integration/sql/cases/910_date_roundtrip_setup.sql b/integration/sql/cases/910_date_roundtrip_setup.sql new file mode 100644 index 00000000..2fa5ff7d --- /dev/null +++ b/integration/sql/cases/910_date_roundtrip_setup.sql @@ -0,0 +1,9 @@ +DROP TABLE IF EXISTS sql_regression_samples; +CREATE TABLE sql_regression_samples ( + id BIGINT PRIMARY KEY, + sample_date DATE +); +INSERT INTO sql_regression_samples (id, sample_date) VALUES (1, DATE '0001-01-01'); +INSERT INTO sql_regression_samples (id, sample_date) VALUES (2, DATE '1970-01-01'); +INSERT INTO sql_regression_samples (id, sample_date) VALUES (3, DATE '2020-02-29'); +INSERT INTO sql_regression_samples (id, sample_date) VALUES (4, NULL); diff --git a/integration/sql/cases/910_date_roundtrip_teardown.sql b/integration/sql/cases/910_date_roundtrip_teardown.sql new file mode 100644 index 00000000..f14a9af4 --- /dev/null +++ b/integration/sql/cases/910_date_roundtrip_teardown.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS sql_regression_samples; diff --git a/integration/sql/cases/911_time_roundtrip_case.sql b/integration/sql/cases/911_time_roundtrip_case.sql new file mode 100644 index 00000000..532a8be3 --- /dev/null +++ b/integration/sql/cases/911_time_roundtrip_case.sql @@ -0,0 +1,5 @@ +-- description: TIME WITHOUT TIME ZONE values round-trip at varied precision +-- tags: standard +-- transactional: true + +SELECT id, sample_time FROM sql_regression_samples ORDER BY id; diff --git a/integration/sql/cases/911_time_roundtrip_setup.sql b/integration/sql/cases/911_time_roundtrip_setup.sql new file mode 100644 index 00000000..5a9bdcfd --- /dev/null +++ b/integration/sql/cases/911_time_roundtrip_setup.sql @@ -0,0 +1,9 @@ +DROP TABLE IF EXISTS sql_regression_samples; +CREATE TABLE sql_regression_samples ( + id BIGINT PRIMARY KEY, + sample_time TIME WITHOUT TIME ZONE +); +INSERT INTO sql_regression_samples (id, sample_time) VALUES (1, TIME '00:00:00'); +INSERT INTO sql_regression_samples (id, sample_time) VALUES (2, TIME '12:34:56.789'); +INSERT INTO sql_regression_samples (id, sample_time) VALUES (3, TIME '23:59:59.999999'); +INSERT INTO sql_regression_samples (id, sample_time) VALUES (4, NULL); diff --git a/integration/sql/cases/911_time_roundtrip_teardown.sql b/integration/sql/cases/911_time_roundtrip_teardown.sql new file mode 100644 index 00000000..f14a9af4 --- /dev/null +++ b/integration/sql/cases/911_time_roundtrip_teardown.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS sql_regression_samples; diff --git a/integration/sql/cases/912_timetz_roundtrip_case.sql b/integration/sql/cases/912_timetz_roundtrip_case.sql new file mode 100644 index 00000000..61b7b3e5 --- /dev/null +++ b/integration/sql/cases/912_timetz_roundtrip_case.sql @@ -0,0 +1,5 @@ +-- description: TIME WITH TIME ZONE values round-trip across offsets +-- tags: standard +-- transactional: true + +SELECT id, sample_timetz FROM sql_regression_samples ORDER BY id; diff --git a/integration/sql/cases/912_timetz_roundtrip_setup.sql b/integration/sql/cases/912_timetz_roundtrip_setup.sql new file mode 100644 index 00000000..56f0a706 --- /dev/null +++ b/integration/sql/cases/912_timetz_roundtrip_setup.sql @@ -0,0 +1,9 @@ +DROP TABLE IF EXISTS sql_regression_samples; +CREATE TABLE sql_regression_samples ( + id BIGINT PRIMARY KEY, + sample_timetz TIME WITH TIME ZONE +); +INSERT INTO sql_regression_samples (id, sample_timetz) VALUES (1, TIME WITH TIME ZONE '00:00:00+00'); +INSERT INTO sql_regression_samples (id, sample_timetz) VALUES (2, TIME WITH TIME ZONE '08:15:30-07'); +INSERT INTO sql_regression_samples (id, sample_timetz) VALUES (3, TIME WITH TIME ZONE '23:59:59.999999+13'); +INSERT INTO sql_regression_samples (id, sample_timetz) VALUES (4, NULL); diff --git a/integration/sql/cases/912_timetz_roundtrip_teardown.sql b/integration/sql/cases/912_timetz_roundtrip_teardown.sql new file mode 100644 index 00000000..f14a9af4 --- /dev/null +++ b/integration/sql/cases/912_timetz_roundtrip_teardown.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS sql_regression_samples; diff --git a/integration/sql/cases/913_timestamp_roundtrip_case.sql b/integration/sql/cases/913_timestamp_roundtrip_case.sql new file mode 100644 index 00000000..bd51814c --- /dev/null +++ b/integration/sql/cases/913_timestamp_roundtrip_case.sql @@ -0,0 +1,5 @@ +-- description: TIMESTAMP WITHOUT TIME ZONE values round-trip across precision levels +-- tags: standard +-- transactional: true + +SELECT id, sample_timestamp FROM sql_regression_samples ORDER BY id; diff --git a/integration/sql/cases/913_timestamp_roundtrip_setup.sql b/integration/sql/cases/913_timestamp_roundtrip_setup.sql new file mode 100644 index 00000000..2327bb23 --- /dev/null +++ b/integration/sql/cases/913_timestamp_roundtrip_setup.sql @@ -0,0 +1,9 @@ +DROP TABLE IF EXISTS sql_regression_samples; +CREATE TABLE sql_regression_samples ( + id BIGINT PRIMARY KEY, + sample_timestamp TIMESTAMP WITHOUT TIME ZONE +); +INSERT INTO sql_regression_samples (id, sample_timestamp) VALUES (1, TIMESTAMP '1970-01-01 00:00:00'); +INSERT INTO sql_regression_samples (id, sample_timestamp) VALUES (2, TIMESTAMP '1999-12-31 23:59:59.123456'); +INSERT INTO sql_regression_samples (id, sample_timestamp) VALUES (3, TIMESTAMP '2020-02-29 12:00:00'); +INSERT INTO sql_regression_samples (id, sample_timestamp) VALUES (4, NULL); diff --git a/integration/sql/cases/913_timestamp_roundtrip_teardown.sql b/integration/sql/cases/913_timestamp_roundtrip_teardown.sql new file mode 100644 index 00000000..f14a9af4 --- /dev/null +++ b/integration/sql/cases/913_timestamp_roundtrip_teardown.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS sql_regression_samples; diff --git a/integration/sql/cases/914_timestamptz_roundtrip_case.sql b/integration/sql/cases/914_timestamptz_roundtrip_case.sql new file mode 100644 index 00000000..e722355f --- /dev/null +++ b/integration/sql/cases/914_timestamptz_roundtrip_case.sql @@ -0,0 +1,5 @@ +-- description: TIMESTAMPTZ values round-trip across time zones and precision +-- tags: standard +-- transactional: true + +SELECT id, sample_timestamptz FROM sql_regression_samples ORDER BY id; diff --git a/integration/sql/cases/914_timestamptz_roundtrip_setup.sql b/integration/sql/cases/914_timestamptz_roundtrip_setup.sql new file mode 100644 index 00000000..74472a99 --- /dev/null +++ b/integration/sql/cases/914_timestamptz_roundtrip_setup.sql @@ -0,0 +1,9 @@ +DROP TABLE IF EXISTS sql_regression_samples; +CREATE TABLE sql_regression_samples ( + id BIGINT PRIMARY KEY, + sample_timestamptz TIMESTAMPTZ +); +INSERT INTO sql_regression_samples (id, sample_timestamptz) VALUES (1, TIMESTAMPTZ '1970-01-01 00:00:00+00'); +INSERT INTO sql_regression_samples (id, sample_timestamptz) VALUES (2, TIMESTAMPTZ '1999-12-31 23:59:59.123456+05:30'); +INSERT INTO sql_regression_samples (id, sample_timestamptz) VALUES (3, TIMESTAMPTZ '2020-02-29 12:00:00-07'); +INSERT INTO sql_regression_samples (id, sample_timestamptz) VALUES (4, NULL); diff --git a/integration/sql/cases/914_timestamptz_roundtrip_teardown.sql b/integration/sql/cases/914_timestamptz_roundtrip_teardown.sql new file mode 100644 index 00000000..f14a9af4 --- /dev/null +++ b/integration/sql/cases/914_timestamptz_roundtrip_teardown.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS sql_regression_samples; diff --git a/integration/sql/cases/915_interval_roundtrip_case.sql b/integration/sql/cases/915_interval_roundtrip_case.sql new file mode 100644 index 00000000..38f7281c --- /dev/null +++ b/integration/sql/cases/915_interval_roundtrip_case.sql @@ -0,0 +1,5 @@ +-- description: INTERVAL values round-trip with varied components +-- tags: standard +-- transactional: true + +SELECT id, sample_interval FROM sql_regression_samples ORDER BY id; diff --git a/integration/sql/cases/915_interval_roundtrip_setup.sql b/integration/sql/cases/915_interval_roundtrip_setup.sql new file mode 100644 index 00000000..c7c79088 --- /dev/null +++ b/integration/sql/cases/915_interval_roundtrip_setup.sql @@ -0,0 +1,10 @@ +DROP TABLE IF EXISTS sql_regression_samples; +CREATE TABLE sql_regression_samples ( + id BIGINT PRIMARY KEY, + sample_interval INTERVAL +); +INSERT INTO sql_regression_samples (id, sample_interval) VALUES (1, INTERVAL '1 year 2 months 3 days 04:05:06'); +INSERT INTO sql_regression_samples (id, sample_interval) VALUES (2, INTERVAL '-3 days'); +INSERT INTO sql_regression_samples (id, sample_interval) VALUES (3, INTERVAL '15 minutes 30 seconds'); +INSERT INTO sql_regression_samples (id, sample_interval) VALUES (4, INTERVAL '0'); +INSERT INTO sql_regression_samples (id, sample_interval) VALUES (5, NULL); diff --git a/integration/sql/cases/915_interval_roundtrip_teardown.sql b/integration/sql/cases/915_interval_roundtrip_teardown.sql new file mode 100644 index 00000000..f14a9af4 --- /dev/null +++ b/integration/sql/cases/915_interval_roundtrip_teardown.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS sql_regression_samples; diff --git a/integration/sql/cases/916_json_roundtrip_case.sql b/integration/sql/cases/916_json_roundtrip_case.sql new file mode 100644 index 00000000..a890875e --- /dev/null +++ b/integration/sql/cases/916_json_roundtrip_case.sql @@ -0,0 +1,5 @@ +-- description: JSON values round-trip including objects, arrays, and scalars +-- tags: standard +-- transactional: true + +SELECT id, sample_json FROM sql_regression_samples ORDER BY id; diff --git a/integration/sql/cases/916_json_roundtrip_setup.sql b/integration/sql/cases/916_json_roundtrip_setup.sql new file mode 100644 index 00000000..604f97f8 --- /dev/null +++ b/integration/sql/cases/916_json_roundtrip_setup.sql @@ -0,0 +1,10 @@ +DROP TABLE IF EXISTS sql_regression_samples; +CREATE TABLE sql_regression_samples ( + id BIGINT PRIMARY KEY, + sample_json JSON +); +INSERT INTO sql_regression_samples (id, sample_json) VALUES (1, '{"simple":"value"}'::JSON); +INSERT INTO sql_regression_samples (id, sample_json) VALUES (2, '{"nested":{"a":1,"b":[true,false]},"c":null}'::JSON); +INSERT INTO sql_regression_samples (id, sample_json) VALUES (3, '[1,2,3,4]'::JSON); +INSERT INTO sql_regression_samples (id, sample_json) VALUES (4, '"scalar"'::JSON); +INSERT INTO sql_regression_samples (id, sample_json) VALUES (5, NULL); diff --git a/integration/sql/cases/916_json_roundtrip_teardown.sql b/integration/sql/cases/916_json_roundtrip_teardown.sql new file mode 100644 index 00000000..f14a9af4 --- /dev/null +++ b/integration/sql/cases/916_json_roundtrip_teardown.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS sql_regression_samples; diff --git a/integration/sql/cases/917_jsonb_roundtrip_case.sql b/integration/sql/cases/917_jsonb_roundtrip_case.sql new file mode 100644 index 00000000..4d7631b4 --- /dev/null +++ b/integration/sql/cases/917_jsonb_roundtrip_case.sql @@ -0,0 +1,5 @@ +-- description: JSONB values round-trip including objects, arrays, and scalars +-- tags: standard +-- transactional: true + +SELECT id, sample_jsonb FROM sql_regression_samples ORDER BY id; diff --git a/integration/sql/cases/917_jsonb_roundtrip_setup.sql b/integration/sql/cases/917_jsonb_roundtrip_setup.sql new file mode 100644 index 00000000..e0786756 --- /dev/null +++ b/integration/sql/cases/917_jsonb_roundtrip_setup.sql @@ -0,0 +1,10 @@ +DROP TABLE IF EXISTS sql_regression_samples; +CREATE TABLE sql_regression_samples ( + id BIGINT PRIMARY KEY, + sample_jsonb JSONB +); +INSERT INTO sql_regression_samples (id, sample_jsonb) VALUES (1, '{"simple":"value"}'::JSONB); +INSERT INTO sql_regression_samples (id, sample_jsonb) VALUES (2, '{"nested":{"a":1,"b":[true,false]},"c":null}'::JSONB); +INSERT INTO sql_regression_samples (id, sample_jsonb) VALUES (3, '[1,2,3,4]'::JSONB); +INSERT INTO sql_regression_samples (id, sample_jsonb) VALUES (4, '"scalar"'::JSONB); +INSERT INTO sql_regression_samples (id, sample_jsonb) VALUES (5, NULL); diff --git a/integration/sql/cases/917_jsonb_roundtrip_teardown.sql b/integration/sql/cases/917_jsonb_roundtrip_teardown.sql new file mode 100644 index 00000000..f14a9af4 --- /dev/null +++ b/integration/sql/cases/917_jsonb_roundtrip_teardown.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS sql_regression_samples; diff --git a/integration/sql/cases/918_network_types_roundtrip_case.sql b/integration/sql/cases/918_network_types_roundtrip_case.sql new file mode 100644 index 00000000..872f7b94 --- /dev/null +++ b/integration/sql/cases/918_network_types_roundtrip_case.sql @@ -0,0 +1,5 @@ +-- description: INET and CIDR address types round-trip across IPv4, IPv6, and masked forms +-- tags: standard +-- transactional: true + +SELECT id, sample_inet, sample_cidr FROM sql_regression_samples ORDER BY id; diff --git a/integration/sql/cases/918_network_types_roundtrip_setup.sql b/integration/sql/cases/918_network_types_roundtrip_setup.sql new file mode 100644 index 00000000..c72d159c --- /dev/null +++ b/integration/sql/cases/918_network_types_roundtrip_setup.sql @@ -0,0 +1,14 @@ +DROP TABLE IF EXISTS sql_regression_samples; +CREATE TABLE sql_regression_samples ( + id BIGINT PRIMARY KEY, + sample_inet INET, + sample_cidr CIDR +); +INSERT INTO sql_regression_samples (id, sample_inet, sample_cidr) + VALUES (1, '127.0.0.1'::INET, '10.0.0.0/8'::CIDR); +INSERT INTO sql_regression_samples (id, sample_inet, sample_cidr) + VALUES (2, '2001:db8::1'::INET, '2001:db8::/48'::CIDR); +INSERT INTO sql_regression_samples (id, sample_inet, sample_cidr) + VALUES (3, '192.168.1.5/24'::INET, '192.168.1.0/24'::CIDR); +INSERT INTO sql_regression_samples (id, sample_inet, sample_cidr) + VALUES (4, NULL, NULL); diff --git a/integration/sql/cases/918_network_types_roundtrip_teardown.sql b/integration/sql/cases/918_network_types_roundtrip_teardown.sql new file mode 100644 index 00000000..f14a9af4 --- /dev/null +++ b/integration/sql/cases/918_network_types_roundtrip_teardown.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS sql_regression_samples; diff --git a/integration/sql/cases/919_macaddr_roundtrip_case.sql b/integration/sql/cases/919_macaddr_roundtrip_case.sql new file mode 100644 index 00000000..6142ca8e --- /dev/null +++ b/integration/sql/cases/919_macaddr_roundtrip_case.sql @@ -0,0 +1,6 @@ +-- description: MACADDR and MACADDR8 values round-trip in text format +-- tags: standard +-- transactional: true +-- skip-targets: postgres_standard_binary pgdog_standard_binary pgdog_sharded_binary + +SELECT id, sample_macaddr, sample_macaddr8 FROM sql_regression_samples ORDER BY id; diff --git a/integration/sql/cases/919_macaddr_roundtrip_setup.sql b/integration/sql/cases/919_macaddr_roundtrip_setup.sql new file mode 100644 index 00000000..54e984a5 --- /dev/null +++ b/integration/sql/cases/919_macaddr_roundtrip_setup.sql @@ -0,0 +1,12 @@ +DROP TABLE IF EXISTS sql_regression_samples; +CREATE TABLE sql_regression_samples ( + id BIGINT PRIMARY KEY, + sample_macaddr MACADDR, + sample_macaddr8 MACADDR8 +); +INSERT INTO sql_regression_samples (id, sample_macaddr, sample_macaddr8) + VALUES (1, '08:00:2b:01:02:03'::MACADDR, '08:00:2b:ff:fe:01:02:03'::MACADDR8); +INSERT INTO sql_regression_samples (id, sample_macaddr, sample_macaddr8) + VALUES (2, 'AA-BB-CC-DD-EE-FF'::MACADDR, 'aa:bb:cc:dd:ee:ff:00:11'::MACADDR8); +INSERT INTO sql_regression_samples (id, sample_macaddr, sample_macaddr8) + VALUES (3, NULL, NULL); diff --git a/integration/sql/cases/919_macaddr_roundtrip_teardown.sql b/integration/sql/cases/919_macaddr_roundtrip_teardown.sql new file mode 100644 index 00000000..f14a9af4 --- /dev/null +++ b/integration/sql/cases/919_macaddr_roundtrip_teardown.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS sql_regression_samples; diff --git a/integration/sql/cases/920_macaddr_roundtrip_binary_case.sql b/integration/sql/cases/920_macaddr_roundtrip_binary_case.sql new file mode 100644 index 00000000..e5c7c6f3 --- /dev/null +++ b/integration/sql/cases/920_macaddr_roundtrip_binary_case.sql @@ -0,0 +1,6 @@ +-- description: MACADDR and MACADDR8 values round-trip in binary format +-- tags: standard +-- transactional: true +-- only-targets: postgres_standard_binary pgdog_standard_binary pgdog_sharded_binary + +SELECT id, sample_macaddr, sample_macaddr8 FROM sql_regression_samples ORDER BY id; diff --git a/integration/sql/cases/920_macaddr_roundtrip_binary_setup.sql b/integration/sql/cases/920_macaddr_roundtrip_binary_setup.sql new file mode 100644 index 00000000..54e984a5 --- /dev/null +++ b/integration/sql/cases/920_macaddr_roundtrip_binary_setup.sql @@ -0,0 +1,12 @@ +DROP TABLE IF EXISTS sql_regression_samples; +CREATE TABLE sql_regression_samples ( + id BIGINT PRIMARY KEY, + sample_macaddr MACADDR, + sample_macaddr8 MACADDR8 +); +INSERT INTO sql_regression_samples (id, sample_macaddr, sample_macaddr8) + VALUES (1, '08:00:2b:01:02:03'::MACADDR, '08:00:2b:ff:fe:01:02:03'::MACADDR8); +INSERT INTO sql_regression_samples (id, sample_macaddr, sample_macaddr8) + VALUES (2, 'AA-BB-CC-DD-EE-FF'::MACADDR, 'aa:bb:cc:dd:ee:ff:00:11'::MACADDR8); +INSERT INTO sql_regression_samples (id, sample_macaddr, sample_macaddr8) + VALUES (3, NULL, NULL); diff --git a/integration/sql/cases/920_macaddr_roundtrip_binary_teardown.sql b/integration/sql/cases/920_macaddr_roundtrip_binary_teardown.sql new file mode 100644 index 00000000..f14a9af4 --- /dev/null +++ b/integration/sql/cases/920_macaddr_roundtrip_binary_teardown.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS sql_regression_samples; [parent: 65522ddcad50]