mirror of https://github.com/citusdata/citus.git
Add tests with xmltext() and random(min, max) (#7824)
xmltext() converts text into xml text nodes. Test with columnar and citus tables. Relevant PG17 commit: https://github.com/postgres/postgres/commit/526fe0d79 random(min, max) generates random numbers in a specified range Add tests like the ones for random() in aggregate_support.sql References: https://github.com/citusdata/citus/blob/main/src/test/regress/sql/aggregate_support.sql#L493-L532 https://github.com/citusdata/citus/pull/7183 Relevant PG17 commit: https://github.com/postgres/postgres/commit/e6341323apull/7922/head
parent
8940665d17
commit
8f436e4a48
|
@ -1519,6 +1519,93 @@ SELECT sample, sample::jsonpath FROM samples ORDER BY id;
|
||||||
(13 rows)
|
(13 rows)
|
||||||
|
|
||||||
-- End of testing jsonpath methods
|
-- End of testing jsonpath methods
|
||||||
|
-- xmltext() function added in PG17, test with columnar and distributed table
|
||||||
|
-- Relevant PG17 commit: https://github.com/postgres/postgres/commit/526fe0d79
|
||||||
|
CREATE TABLE test_xml (id int, a xml) USING columnar;
|
||||||
|
-- expected to insert x<P>73</P>0.42truej
|
||||||
|
INSERT INTO test_xml VALUES (1, xmltext('x'|| '<P>73</P>'::xml || .42 || true || 'j'::char));
|
||||||
|
SELECT * FROM test_xml ORDER BY 1;
|
||||||
|
id | a
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
1 | x<P>73</P>0.42truej
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT create_distributed_table('test_xml', 'id');
|
||||||
|
NOTICE: Copying data from local table...
|
||||||
|
NOTICE: copying the data has completed
|
||||||
|
DETAIL: The local data in the table is no longer visible, but is still on disk.
|
||||||
|
HINT: To remove the local data, run: SELECT truncate_local_data_after_distributing_table($$pg17.test_xml$$)
|
||||||
|
create_distributed_table
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
-- expected to insert foo & <"bar">
|
||||||
|
INSERT INTO test_xml VALUES (2, xmltext('foo & <"bar">'));
|
||||||
|
SELECT * FROM test_xml ORDER BY 1;
|
||||||
|
id | a
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
1 | x<P>73</P>0.42truej
|
||||||
|
2 | foo & <"bar">
|
||||||
|
(2 rows)
|
||||||
|
|
||||||
|
-- end of xmltest() testing with Citus
|
||||||
|
--
|
||||||
|
-- random(min, max) to generate random numbers in a specified range
|
||||||
|
-- adding here the same tests as the ones with random() in aggregate_support.sql
|
||||||
|
-- Relevant PG commit: https://github.com/postgres/postgres/commit/e6341323a
|
||||||
|
--
|
||||||
|
CREATE TABLE dist_table (dist_col int, agg_col numeric);
|
||||||
|
SELECT create_distributed_table('dist_table', 'dist_col');
|
||||||
|
create_distributed_table
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
CREATE TABLE ref_table (int_col int);
|
||||||
|
SELECT create_reference_table('ref_table');
|
||||||
|
create_reference_table
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
-- Test the cases where the worker agg exec. returns no tuples.
|
||||||
|
SELECT PERCENTILE_DISC(.25) WITHIN GROUP (ORDER BY agg_col)
|
||||||
|
FROM (SELECT *, random(0, 1) FROM dist_table) a;
|
||||||
|
percentile_disc
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT PERCENTILE_DISC((2 > random(0, 1))::int::numeric / 10)
|
||||||
|
WITHIN GROUP (ORDER BY agg_col)
|
||||||
|
FROM dist_table
|
||||||
|
LEFT JOIN ref_table ON TRUE;
|
||||||
|
percentile_disc
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
-- run the same queries after loading some data
|
||||||
|
INSERT INTO dist_table VALUES (2, 11.2), (3, NULL), (6, 3.22), (3, 4.23), (5, 5.25),
|
||||||
|
(4, 63.4), (75, NULL), (80, NULL), (96, NULL), (8, 1078), (0, 1.19);
|
||||||
|
SELECT PERCENTILE_DISC(.25) WITHIN GROUP (ORDER BY agg_col)
|
||||||
|
FROM (SELECT *, random(0, 1) FROM dist_table) a;
|
||||||
|
percentile_disc
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
3.22
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT PERCENTILE_DISC((2 > random_normal(0, 1))::int::numeric / 10)
|
||||||
|
WITHIN GROUP (ORDER BY agg_col)
|
||||||
|
FROM dist_table
|
||||||
|
LEFT JOIN ref_table ON TRUE;
|
||||||
|
percentile_disc
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
1.19
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
-- End of random(min, max) testing with Citus
|
||||||
\set VERBOSITY terse
|
\set VERBOSITY terse
|
||||||
SET client_min_messages TO WARNING;
|
SET client_min_messages TO WARNING;
|
||||||
DROP SCHEMA pg17 CASCADE;
|
DROP SCHEMA pg17 CASCADE;
|
||||||
|
|
|
@ -844,6 +844,57 @@ SELECT sample, sample::jsonpath FROM samples ORDER BY id;
|
||||||
|
|
||||||
-- End of testing jsonpath methods
|
-- End of testing jsonpath methods
|
||||||
|
|
||||||
|
-- xmltext() function added in PG17, test with columnar and distributed table
|
||||||
|
-- Relevant PG17 commit: https://github.com/postgres/postgres/commit/526fe0d79
|
||||||
|
CREATE TABLE test_xml (id int, a xml) USING columnar;
|
||||||
|
-- expected to insert x<P>73</P>0.42truej
|
||||||
|
INSERT INTO test_xml VALUES (1, xmltext('x'|| '<P>73</P>'::xml || .42 || true || 'j'::char));
|
||||||
|
SELECT * FROM test_xml ORDER BY 1;
|
||||||
|
|
||||||
|
SELECT create_distributed_table('test_xml', 'id');
|
||||||
|
-- expected to insert foo & <"bar">
|
||||||
|
INSERT INTO test_xml VALUES (2, xmltext('foo & <"bar">'));
|
||||||
|
SELECT * FROM test_xml ORDER BY 1;
|
||||||
|
|
||||||
|
-- end of xmltest() testing with Citus
|
||||||
|
|
||||||
|
--
|
||||||
|
-- random(min, max) to generate random numbers in a specified range
|
||||||
|
-- adding here the same tests as the ones with random() in aggregate_support.sql
|
||||||
|
-- Relevant PG commit: https://github.com/postgres/postgres/commit/e6341323a
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE dist_table (dist_col int, agg_col numeric);
|
||||||
|
SELECT create_distributed_table('dist_table', 'dist_col');
|
||||||
|
|
||||||
|
CREATE TABLE ref_table (int_col int);
|
||||||
|
SELECT create_reference_table('ref_table');
|
||||||
|
|
||||||
|
-- Test the cases where the worker agg exec. returns no tuples.
|
||||||
|
|
||||||
|
SELECT PERCENTILE_DISC(.25) WITHIN GROUP (ORDER BY agg_col)
|
||||||
|
FROM (SELECT *, random(0, 1) FROM dist_table) a;
|
||||||
|
|
||||||
|
SELECT PERCENTILE_DISC((2 > random(0, 1))::int::numeric / 10)
|
||||||
|
WITHIN GROUP (ORDER BY agg_col)
|
||||||
|
FROM dist_table
|
||||||
|
LEFT JOIN ref_table ON TRUE;
|
||||||
|
|
||||||
|
-- run the same queries after loading some data
|
||||||
|
|
||||||
|
INSERT INTO dist_table VALUES (2, 11.2), (3, NULL), (6, 3.22), (3, 4.23), (5, 5.25),
|
||||||
|
(4, 63.4), (75, NULL), (80, NULL), (96, NULL), (8, 1078), (0, 1.19);
|
||||||
|
|
||||||
|
SELECT PERCENTILE_DISC(.25) WITHIN GROUP (ORDER BY agg_col)
|
||||||
|
FROM (SELECT *, random(0, 1) FROM dist_table) a;
|
||||||
|
|
||||||
|
SELECT PERCENTILE_DISC((2 > random_normal(0, 1))::int::numeric / 10)
|
||||||
|
WITHIN GROUP (ORDER BY agg_col)
|
||||||
|
FROM dist_table
|
||||||
|
LEFT JOIN ref_table ON TRUE;
|
||||||
|
|
||||||
|
-- End of random(min, max) testing with Citus
|
||||||
|
|
||||||
\set VERBOSITY terse
|
\set VERBOSITY terse
|
||||||
SET client_min_messages TO WARNING;
|
SET client_min_messages TO WARNING;
|
||||||
DROP SCHEMA pg17 CASCADE;
|
DROP SCHEMA pg17 CASCADE;
|
||||||
|
|
Loading…
Reference in New Issue