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]