summaryrefslogtreecommitdiff
path: root/src/test/regress/expected/collate.icu.utf8.out
diff options
context:
space:
mode:
authorThomas Munro <tmunro@postgresql.org>2021-05-07 20:17:42 +1200
committerThomas Munro <tmunro@postgresql.org>2021-05-07 21:10:11 +1200
commitec48314708262d8ea6cdcb83f803fc83dd89e721 (patch)
treef5b7c82ea571ce78aaa355095dd588dce07349ff /src/test/regress/expected/collate.icu.utf8.out
parenta288d94c91e345ebeb10ac30f247270c8c8e380a (diff)
downloadpostgresql-ec48314708262d8ea6cdcb83f803fc83dd89e721.tar.gz
Revert per-index collation version tracking feature.
Design problems were discovered in the handling of composite types and record types that would cause some relevant versions not to be recorded. Misgivings were also expressed about the use of the pg_depend catalog for this purpose. We're out of time for this release so we'll revert and try again. Commits reverted: 1bf946bd: Doc: Document known problem with Windows collation versions. cf002008: Remove no-longer-relevant test case. ef387bed: Fix bogus collation-version-recording logic. 0fb0a050: Hide internal error for pg_collation_actual_version(<bad OID>). ff942057: Suppress "warning: variable 'collcollate' set but not used". d50e3b1f: Fix assertion in collation version lookup. f24b1569: Rethink extraction of collation dependencies. 257836a7: Track collation versions for indexes. cd6f479e: Add pg_depend.refobjversion. 7d1297df: Remove pg_collation.collversion. Discussion: https://postgr.es/m/CA%2BhUKGLhj5t1fcjqAu8iD9B3ixJtsTNqyCCD4V0aTO9kAKAjjA%40mail.gmail.com
Diffstat (limited to 'src/test/regress/expected/collate.icu.utf8.out')
-rw-r--r--src/test/regress/expected/collate.icu.utf8.out195
1 files changed, 3 insertions, 192 deletions
diff --git a/src/test/regress/expected/collate.icu.utf8.out b/src/test/regress/expected/collate.icu.utf8.out
index faf99f76b5..70133df804 100644
--- a/src/test/regress/expected/collate.icu.utf8.out
+++ b/src/test/regress/expected/collate.icu.utf8.out
@@ -1082,6 +1082,9 @@ SELECT collname FROM pg_collation WHERE collname LIKE 'test%';
DROP SCHEMA test_schema;
DROP ROLE regress_test_role;
+-- ALTER
+ALTER COLLATION "en-x-icu" REFRESH VERSION;
+NOTICE: version has not changed
-- dependencies
CREATE COLLATION test0 FROM "C";
CREATE TABLE collate_dep_test1 (a int, b text COLLATE test0);
@@ -1947,184 +1950,6 @@ SELECT (SELECT count(*) FROM test33_0) <> (SELECT count(*) FROM test33_1);
t
(1 row)
--- collation versioning support
-CREATE TYPE t_en_fr AS (fr text COLLATE "fr-x-icu", en text COLLATE "en-x-icu");
-CREATE DOMAIN d_en_fr AS t_en_fr;
-CREATE DOMAIN d_es AS text COLLATE "es-x-icu";
-CREATE TYPE t_en_fr_ga AS (en_fr t_en_fr, ga text COLLATE "ga-x-icu");
-CREATE DOMAIN d_en_fr_ga AS t_en_fr_ga;
-CREATE TYPE t_custom AS (meh text, meh2 text);
-CREATE DOMAIN d_custom AS t_custom;
-CREATE COLLATION custom (
- LOCALE = 'fr-x-icu', PROVIDER = 'icu'
-);
-CREATE TYPE myrange AS range (subtype = text, collation = "POSIX");
-CREATE TYPE myrange_en_fr_ga AS range(subtype = t_en_fr_ga);
-CREATE TABLE collate_test (
- id integer,
- val text COLLATE "fr-x-icu",
- t_en_fr t_en_fr,
- d_en_fr d_en_fr,
- d_es d_es,
- t_en_fr_ga t_en_fr_ga,
- d_en_fr_ga d_en_fr_ga,
- d_en_fr_ga_arr d_en_fr_ga[],
- myrange myrange,
- myrange_en_fr_ga myrange_en_fr_ga
-);
-CREATE INDEX icuidx00_val ON collate_test(val);
--- shouldn't get duplicated dependencies
-CREATE INDEX icuidx00_val_val ON collate_test(val, val);
--- shouldn't track version
-CREATE INDEX icuidx00_val_pattern ON collate_test(val text_pattern_ops);
--- should have single dependency, no version
-CREATE INDEX icuidx00_val_pattern_val_pattern ON collate_test(val text_pattern_ops, val text_pattern_ops);
--- should have single dependency, with version
-CREATE INDEX icuidx00_val_pattern_val ON collate_test(val text_pattern_ops, val);
--- should have single dependency, with version
-CREATE INDEX icuidx00_val_val_pattern ON collate_test(val, val text_pattern_ops);
--- two rows expected, only one a version, because we don't try to merge these yet
-CREATE INDEX icuidx00_val_pattern_where ON collate_test(val text_pattern_ops) WHERE val >= val;
--- two rows expected with version, because we don't try to merge these yet
-CREATE INDEX icuidx00_val_where ON collate_test(val) WHERE val >= val;
--- two rows expected with version (expression walker + attribute)
-CREATE INDEX icuidx00_val_pattern_expr ON collate_test(val varchar_pattern_ops, (val || val));
--- two rows expected, one with a version (expression walker + attribute)
-CREATE INDEX icuidx00_val_pattern_expr_pattern ON collate_test(val varchar_pattern_ops, (val || val) text_pattern_ops);
--- should have single dependency, with version tracked
-CREATE INDEX icuidx01_t_en_fr__d_es ON collate_test (t_en_fr, d_es);
-CREATE INDEX icuidx02_d_en_fr ON collate_test (d_en_fr);
-CREATE INDEX icuidx03_t_en_fr_ga ON collate_test (t_en_fr_ga);
-CREATE INDEX icuidx04_d_en_fr_ga ON collate_test (d_en_fr_ga);
-CREATE INDEX icuidx05_d_en_fr_ga_arr ON collate_test (d_en_fr_ga_arr);
-CREATE INDEX icuidx06_d_en_fr_ga ON collate_test(id) WHERE (d_en_fr_ga).en_fr.fr = 'foo';
-CREATE INDEX icuidx07_d_en_fr_ga ON collate_test(id) WHERE (d_en_fr_ga).ga = 'foo';
-CREATE INDEX icuidx08_d_en_fr_ga ON collate_test(id) WHERE (t_en_fr_ga) = ('foo', 'bar', 'baz');
-CREATE INDEX icuidx09_d_en_fr_ga ON collate_test(id) WHERE (d_en_fr_ga) = ('foo', 'bar', 'baz');
-CREATE INDEX icuidx10_d_en_fr_ga_es ON collate_test(id) WHERE (d_en_fr_ga) = ('foo', 'bar', 'baz' COLLATE "es-x-icu");
-CREATE INDEX icuidx11_d_es ON collate_test(id) WHERE (d_es) = ('foo');
-CREATE INDEX icuidx12_custom ON collate_test(id) WHERE ('foo', 'bar')::d_custom = ('foo', 'bar' COLLATE custom)::d_custom;
-CREATE INDEX icuidx13_custom ON collate_test(id) WHERE ('foo' COLLATE custom, 'bar')::d_custom = ('foo', 'bar')::d_custom;
-CREATE INDEX icuidx14_myrange ON collate_test(myrange);
-CREATE INDEX icuidx15_myrange_en_fr_ga ON collate_test USING gist (myrange_en_fr_ga);
-CREATE TABLE collate_part(id integer, val text COLLATE "en-x-icu") PARTITION BY range(id);
-CREATE TABLE collate_part_0 PARTITION OF collate_part FOR VALUES FROM (0) TO (1);
-CREATE TABLE collate_part_1 PARTITION OF collate_part FOR VALUES FROM (1) TO (1000000);
-CREATE INDEX icuidx17_part ON collate_part_1 (val);
-SELECT objid::regclass::text collate "C", refobjid::regcollation::text collate "C",
-CASE
-WHEN refobjid = 'default'::regcollation THEN 'XXX' -- depends on libc version support
-WHEN refobjversion IS NULL THEN 'version not tracked'
-WHEN refobjversion = pg_collation_actual_version(refobjid) THEN 'up to date'
-ELSE 'out of date'
-END AS version
-FROM pg_depend d
-LEFT JOIN pg_class c ON c.oid = d.objid
-WHERE refclassid = 'pg_collation'::regclass
-AND coalesce(relkind, 'i') = 'i'
-AND relname LIKE 'icuidx%'
-ORDER BY 1, 2, 3;
- objid | refobjid | version
------------------------------------+------------+---------------------
- icuidx00_val | "fr-x-icu" | up to date
- icuidx00_val_pattern | "fr-x-icu" | version not tracked
- icuidx00_val_pattern_expr | "fr-x-icu" | up to date
- icuidx00_val_pattern_expr | "fr-x-icu" | up to date
- icuidx00_val_pattern_expr_pattern | "fr-x-icu" | up to date
- icuidx00_val_pattern_expr_pattern | "fr-x-icu" | version not tracked
- icuidx00_val_pattern_val | "fr-x-icu" | up to date
- icuidx00_val_pattern_val_pattern | "fr-x-icu" | version not tracked
- icuidx00_val_pattern_where | "fr-x-icu" | up to date
- icuidx00_val_pattern_where | "fr-x-icu" | version not tracked
- icuidx00_val_val | "fr-x-icu" | up to date
- icuidx00_val_val_pattern | "fr-x-icu" | up to date
- icuidx00_val_where | "fr-x-icu" | up to date
- icuidx00_val_where | "fr-x-icu" | up to date
- icuidx01_t_en_fr__d_es | "en-x-icu" | up to date
- icuidx01_t_en_fr__d_es | "es-x-icu" | up to date
- icuidx01_t_en_fr__d_es | "fr-x-icu" | up to date
- icuidx02_d_en_fr | "en-x-icu" | up to date
- icuidx02_d_en_fr | "fr-x-icu" | up to date
- icuidx03_t_en_fr_ga | "en-x-icu" | up to date
- icuidx03_t_en_fr_ga | "fr-x-icu" | up to date
- icuidx03_t_en_fr_ga | "ga-x-icu" | up to date
- icuidx04_d_en_fr_ga | "en-x-icu" | up to date
- icuidx04_d_en_fr_ga | "fr-x-icu" | up to date
- icuidx04_d_en_fr_ga | "ga-x-icu" | up to date
- icuidx05_d_en_fr_ga_arr | "en-x-icu" | up to date
- icuidx05_d_en_fr_ga_arr | "fr-x-icu" | up to date
- icuidx05_d_en_fr_ga_arr | "ga-x-icu" | up to date
- icuidx06_d_en_fr_ga | "fr-x-icu" | up to date
- icuidx07_d_en_fr_ga | "ga-x-icu" | up to date
- icuidx10_d_en_fr_ga_es | "es-x-icu" | up to date
- icuidx11_d_es | "es-x-icu" | up to date
- icuidx12_custom | custom | up to date
- icuidx13_custom | custom | up to date
- icuidx15_myrange_en_fr_ga | "en-x-icu" | up to date
- icuidx15_myrange_en_fr_ga | "fr-x-icu" | up to date
- icuidx15_myrange_en_fr_ga | "ga-x-icu" | up to date
- icuidx17_part | "en-x-icu" | up to date
-(38 rows)
-
--- Validate that REINDEX will update the stored version.
-UPDATE pg_depend SET refobjversion = 'not a version'
-WHERE refclassid = 'pg_collation'::regclass
-AND objid::regclass::text LIKE 'icuidx%'
-AND refobjversion IS NOT NULL;
-REINDEX TABLE collate_test;
-REINDEX TABLE collate_part_0;
-REINDEX TABLE collate_part_1;
-SELECT objid::regclass FROM pg_depend WHERE refobjversion = 'not a version';
- objid
--------
-(0 rows)
-
--- Validate that REINDEX CONCURRENTLY will update the stored version.
-UPDATE pg_depend SET refobjversion = 'not a version'
-WHERE refclassid = 'pg_collation'::regclass
-AND objid::regclass::text LIKE 'icuidx%'
-AND refobjversion IS NOT NULL;
-REINDEX TABLE CONCURRENTLY collate_test;
-REINDEX TABLE CONCURRENTLY collate_part_0;
-REINDEX INDEX CONCURRENTLY icuidx17_part;
-SELECT objid::regclass FROM pg_depend WHERE refobjversion = 'not a version';
- objid
--------
-(0 rows)
-
--- Validate that VACUUM FULL will update the stored version.
-UPDATE pg_depend SET refobjversion = 'not a version'
-WHERE refclassid = 'pg_collation'::regclass
-AND objid::regclass::text LIKE 'icuidx%'
-AND refobjversion IS NOT NULL;
-VACUUM FULL collate_test;
-VACUUM FULL collate_part_0;
-VACUUM FULL collate_part_1;
-SELECT objid::regclass FROM pg_depend WHERE refobjversion = 'not a version';
- objid
--------
-(0 rows)
-
--- Test ALTER INDEX name ALTER COLLATION name REFRESH VERSION
-UPDATE pg_depend SET refobjversion = 'not a version'
-WHERE refclassid = 'pg_collation'::regclass
-AND objid::regclass::text = 'icuidx17_part'
-AND refobjversion IS NOT NULL;
-SELECT objid::regclass FROM pg_depend WHERE refobjversion = 'not a version';
- objid
----------------
- icuidx17_part
-(1 row)
-
-ALTER INDEX icuidx17_part ALTER COLLATION "en-x-icu" REFRESH VERSION;
-SELECT objid::regclass, refobjversion = 'not a version' AS ver FROM pg_depend
-WHERE refclassid = 'pg_collation'::regclass
-AND objid::regclass::text = 'icuidx17_part';
- objid | ver
----------------+-----
- icuidx17_part | f
-(1 row)
-
-- cleanup
RESET search_path;
SET client_min_messages TO warning;
@@ -2132,17 +1957,3 @@ DROP SCHEMA collate_tests CASCADE;
RESET client_min_messages;
-- leave a collation for pg_upgrade test
CREATE COLLATION coll_icu_upgrade FROM "und-x-icu";
--- Test user-visible function for inspecting versions
-SELECT pg_collation_actual_version('"en-x-icu"'::regcollation) is not null;
- ?column?
-----------
- t
-(1 row)
-
--- Invalid OIDs are silently ignored
-SELECT pg_collation_actual_version(0) is null;
- ?column?
-----------
- t
-(1 row)
-