mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	Solve cross-version-upgrade testing problem induced by 1fb57af92.
				
					
				
			Renaming varchar_transform to varchar_support had a side effect I hadn't foreseen: the core regression tests leave around a transform object that relies on that function, so the name change breaks cross-version upgrade tests, because the name used in the older branches doesn't match. Since the dependency on varchar_transform was chosen with the aid of a dartboard anyway (it would surely not work as a language transform support function), fix by just choosing a different random builtin function with the right signature. Also add some comments explaining why this isn't horribly unsafe. I chose to make the same substitution in a couple of other copied-and-pasted test cases, for consistency, though those aren't directly contributing to the testing problem. Per buildfarm. Back-patch, else it doesn't fix the problem.
This commit is contained in:
		@@ -3922,9 +3922,9 @@ qr/^\QCREATE DEFAULT CONVERSION dump_test.test_conversion FOR 'LATIN1' TO 'UTF8'
 | 
				
			|||||||
		all_runs     => 1,
 | 
							all_runs     => 1,
 | 
				
			||||||
		create_order => 34,
 | 
							create_order => 34,
 | 
				
			||||||
		create_sql =>
 | 
							create_sql =>
 | 
				
			||||||
'CREATE TRANSFORM FOR int LANGUAGE SQL (FROM SQL WITH FUNCTION varchar_transform(internal), TO SQL WITH FUNCTION int4recv(internal));',
 | 
					'CREATE TRANSFORM FOR int LANGUAGE SQL (FROM SQL WITH FUNCTION prsd_lextype(internal), TO SQL WITH FUNCTION int4recv(internal));',
 | 
				
			||||||
		regexp =>
 | 
							regexp =>
 | 
				
			||||||
qr/CREATE TRANSFORM FOR integer LANGUAGE sql \(FROM SQL WITH FUNCTION pg_catalog\.varchar_transform\(internal\), TO SQL WITH FUNCTION pg_catalog\.int4recv\(internal\)\);/m,
 | 
					qr/CREATE TRANSFORM FOR integer LANGUAGE sql \(FROM SQL WITH FUNCTION pg_catalog\.prsd_lextype\(internal\), TO SQL WITH FUNCTION pg_catalog\.int4recv\(internal\)\);/m,
 | 
				
			||||||
		like => {
 | 
							like => {
 | 
				
			||||||
			binary_upgrade           => 1,
 | 
								binary_upgrade           => 1,
 | 
				
			||||||
			clean                    => 1,
 | 
								clean                    => 1,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,9 +5,11 @@
 | 
				
			|||||||
-- The function FROM SQL should have internal as single argument as well
 | 
					-- The function FROM SQL should have internal as single argument as well
 | 
				
			||||||
-- as return type. The function TO SQL should have as single argument
 | 
					-- as return type. The function TO SQL should have as single argument
 | 
				
			||||||
-- internal and as return argument the datatype of the transform done.
 | 
					-- internal and as return argument the datatype of the transform done.
 | 
				
			||||||
-- pl/plpgsql does not authorize the use of internal as data type.
 | 
					-- We choose some random built-in functions that have the right signature.
 | 
				
			||||||
 | 
					-- This won't actually be used, because the SQL function language
 | 
				
			||||||
 | 
					-- doesn't implement transforms (there would be no point).
 | 
				
			||||||
CREATE TRANSFORM FOR int LANGUAGE SQL (
 | 
					CREATE TRANSFORM FOR int LANGUAGE SQL (
 | 
				
			||||||
    FROM SQL WITH FUNCTION varchar_transform(internal),
 | 
					    FROM SQL WITH FUNCTION prsd_lextype(internal),
 | 
				
			||||||
    TO SQL WITH FUNCTION int4recv(internal));
 | 
					    TO SQL WITH FUNCTION int4recv(internal));
 | 
				
			||||||
NOTICE:  DDL test: type simple, tag CREATE TRANSFORM
 | 
					NOTICE:  DDL test: type simple, tag CREATE TRANSFORM
 | 
				
			||||||
DROP TRANSFORM FOR int LANGUAGE SQL;
 | 
					DROP TRANSFORM FOR int LANGUAGE SQL;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,9 +6,11 @@
 | 
				
			|||||||
-- The function FROM SQL should have internal as single argument as well
 | 
					-- The function FROM SQL should have internal as single argument as well
 | 
				
			||||||
-- as return type. The function TO SQL should have as single argument
 | 
					-- as return type. The function TO SQL should have as single argument
 | 
				
			||||||
-- internal and as return argument the datatype of the transform done.
 | 
					-- internal and as return argument the datatype of the transform done.
 | 
				
			||||||
-- pl/plpgsql does not authorize the use of internal as data type.
 | 
					-- We choose some random built-in functions that have the right signature.
 | 
				
			||||||
 | 
					-- This won't actually be used, because the SQL function language
 | 
				
			||||||
 | 
					-- doesn't implement transforms (there would be no point).
 | 
				
			||||||
CREATE TRANSFORM FOR int LANGUAGE SQL (
 | 
					CREATE TRANSFORM FOR int LANGUAGE SQL (
 | 
				
			||||||
    FROM SQL WITH FUNCTION varchar_transform(internal),
 | 
					    FROM SQL WITH FUNCTION prsd_lextype(internal),
 | 
				
			||||||
    TO SQL WITH FUNCTION int4recv(internal));
 | 
					    TO SQL WITH FUNCTION int4recv(internal));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DROP TRANSFORM FOR int LANGUAGE SQL;
 | 
					DROP TRANSFORM FOR int LANGUAGE SQL;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -33,8 +33,10 @@ CREATE SERVER "integer" FOREIGN DATA WRAPPER addr_fdw;
 | 
				
			|||||||
CREATE USER MAPPING FOR regress_addr_user SERVER "integer";
 | 
					CREATE USER MAPPING FOR regress_addr_user SERVER "integer";
 | 
				
			||||||
ALTER DEFAULT PRIVILEGES FOR ROLE regress_addr_user IN SCHEMA public GRANT ALL ON TABLES TO regress_addr_user;
 | 
					ALTER DEFAULT PRIVILEGES FOR ROLE regress_addr_user IN SCHEMA public GRANT ALL ON TABLES TO regress_addr_user;
 | 
				
			||||||
ALTER DEFAULT PRIVILEGES FOR ROLE regress_addr_user REVOKE DELETE ON TABLES FROM regress_addr_user;
 | 
					ALTER DEFAULT PRIVILEGES FOR ROLE regress_addr_user REVOKE DELETE ON TABLES FROM regress_addr_user;
 | 
				
			||||||
 | 
					-- this transform would be quite unsafe to leave lying around,
 | 
				
			||||||
 | 
					-- except that the SQL language pays no attention to transforms:
 | 
				
			||||||
CREATE TRANSFORM FOR int LANGUAGE SQL (
 | 
					CREATE TRANSFORM FOR int LANGUAGE SQL (
 | 
				
			||||||
	FROM SQL WITH FUNCTION varchar_transform(internal),
 | 
						FROM SQL WITH FUNCTION prsd_lextype(internal),
 | 
				
			||||||
	TO SQL WITH FUNCTION int4recv(internal));
 | 
						TO SQL WITH FUNCTION int4recv(internal));
 | 
				
			||||||
CREATE PUBLICATION addr_pub FOR TABLE addr_nsp.gentable;
 | 
					CREATE PUBLICATION addr_pub FOR TABLE addr_nsp.gentable;
 | 
				
			||||||
CREATE SUBSCRIPTION addr_sub CONNECTION '' PUBLICATION bar WITH (connect = false, slot_name = NONE);
 | 
					CREATE SUBSCRIPTION addr_sub CONNECTION '' PUBLICATION bar WITH (connect = false, slot_name = NONE);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,8 +36,10 @@ CREATE SERVER "integer" FOREIGN DATA WRAPPER addr_fdw;
 | 
				
			|||||||
CREATE USER MAPPING FOR regress_addr_user SERVER "integer";
 | 
					CREATE USER MAPPING FOR regress_addr_user SERVER "integer";
 | 
				
			||||||
ALTER DEFAULT PRIVILEGES FOR ROLE regress_addr_user IN SCHEMA public GRANT ALL ON TABLES TO regress_addr_user;
 | 
					ALTER DEFAULT PRIVILEGES FOR ROLE regress_addr_user IN SCHEMA public GRANT ALL ON TABLES TO regress_addr_user;
 | 
				
			||||||
ALTER DEFAULT PRIVILEGES FOR ROLE regress_addr_user REVOKE DELETE ON TABLES FROM regress_addr_user;
 | 
					ALTER DEFAULT PRIVILEGES FOR ROLE regress_addr_user REVOKE DELETE ON TABLES FROM regress_addr_user;
 | 
				
			||||||
 | 
					-- this transform would be quite unsafe to leave lying around,
 | 
				
			||||||
 | 
					-- except that the SQL language pays no attention to transforms:
 | 
				
			||||||
CREATE TRANSFORM FOR int LANGUAGE SQL (
 | 
					CREATE TRANSFORM FOR int LANGUAGE SQL (
 | 
				
			||||||
	FROM SQL WITH FUNCTION varchar_transform(internal),
 | 
						FROM SQL WITH FUNCTION prsd_lextype(internal),
 | 
				
			||||||
	TO SQL WITH FUNCTION int4recv(internal));
 | 
						TO SQL WITH FUNCTION int4recv(internal));
 | 
				
			||||||
CREATE PUBLICATION addr_pub FOR TABLE addr_nsp.gentable;
 | 
					CREATE PUBLICATION addr_pub FOR TABLE addr_nsp.gentable;
 | 
				
			||||||
CREATE SUBSCRIPTION addr_sub CONNECTION '' PUBLICATION bar WITH (connect = false, slot_name = NONE);
 | 
					CREATE SUBSCRIPTION addr_sub CONNECTION '' PUBLICATION bar WITH (connect = false, slot_name = NONE);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user