pub fn create_pg_test_table() -> String {
[
concat!(
"DO $$ BEGIN\n",
" CREATE TYPE test_status AS ENUM ('active', 'pending', 'inactive');\n",
"EXCEPTION WHEN duplicate_object THEN NULL;\n",
"END $$",
),
concat!(
"CREATE TABLE IF NOT EXISTS db_json_type_test (\n",
" id SERIAL PRIMARY KEY,\n",
" col_smallint SMALLINT,\n",
" col_integer INTEGER,\n",
" col_bigint BIGINT,\n",
" col_real REAL,\n",
" col_double DOUBLE PRECISION,\n",
" col_numeric NUMERIC(12, 4),\n",
" col_bool BOOLEAN,\n",
" col_text TEXT,\n",
" col_varchar VARCHAR(255),\n",
" col_char CHAR(10),\n",
" col_date DATE,\n",
" col_timestamp TIMESTAMP,\n",
" col_timestamptz TIMESTAMPTZ,\n",
" col_time TIME,\n",
" col_interval INTERVAL,\n",
" col_json JSON,\n",
" col_jsonb JSONB,\n",
" col_bytea BYTEA,\n",
" col_uuid UUID,\n",
" col_int_array INTEGER[],\n",
" col_text_array TEXT[],\n",
" col_float_array FLOAT8[],\n",
" col_inet INET,\n",
" col_cidr CIDR,\n",
" col_macaddr MACADDR,\n",
" col_money MONEY,\n",
" col_xml XML,\n",
" col_enum test_status,\n",
" col_int4range INT4RANGE,\n",
" col_tsrange TSRANGE,\n",
" col_bit BIT(8),\n",
" col_varbit BIT VARYING(16),\n",
" col_vector VECTOR(3)\n",
")",
),
]
.join(";\n\n")
}
pub fn insert_pg_test_data() -> String {
concat!(
"INSERT INTO db_json_type_test (\n",
" col_smallint, col_integer, col_bigint,\n",
" col_real, col_double,\n",
" col_numeric,\n",
" col_bool,\n",
" col_text, col_varchar, col_char,\n",
" col_date, col_timestamp, col_timestamptz, col_time, col_interval,\n",
" col_json, col_jsonb,\n",
" col_bytea,\n",
" col_uuid,\n",
" col_int_array, col_text_array, col_float_array,\n",
" col_inet, col_cidr, col_macaddr,\n",
" col_money,\n",
" col_xml,\n",
" col_enum,\n",
" col_int4range, col_tsrange,\n",
" col_bit, col_varbit,\n",
" col_vector\n",
") VALUES (\n",
" 32767, 2147483647, 9223372036854775807,\n",
" 3.14159, 2.718281828459045,\n",
" 12345.6789,\n",
" true,\n",
" 'Hello dbcli!', 'VARCHAR test value', 'CHAR_PAD ',\n",
" '2025-06-15',\n",
" '2025-06-15 14:30:00',\n",
" '2025-06-15 14:30:00+08:00',\n",
" '14:30:00',\n",
" '2 hours 30 minutes',\n",
" '{\"key\": \"value\", \"number\": 42}',\n",
" '{\"tags\": [\"rust\", \"dbcli\"], \"active\": true}',\n",
" E'\\\\x48656C6C6F',\n",
" 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11',\n",
" ARRAY[1, 2, 3, 4, 5],\n",
" ARRAY['hello', 'world', 'test'],\n",
" ARRAY[1.1, 2.2, 3.3],\n",
" '192.168.1.1',\n",
" '10.0.0.0/8',\n",
" '08:00:2b:01:02:03',\n",
" '$1234.56',\n",
" '<root><item>test</item></root>',\n",
" 'active',\n",
" '[1, 100)',\n",
" '[2025-01-01 00:00:00, 2025-12-31 23:59:59)',\n",
" B'10101010',\n",
" B'1100110011',\n",
" '[0.1, 0.2, 0.3]'\n",
")",
)
.to_string()
}