forked from anarazel/postgres
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Remove dynamic translation of regression test scripts, step 1.
pg_regress has long had provisions for dynamically substituting path names into regression test scripts and result files, but use of that feature has always been a serious pain in the neck, mainly because updating the result files requires tedious manual editing. Let's get rid of that in favor of passing down the paths in environment variables. In addition to being easier to maintain, this way is capable of dealing with path names that require escaping at runtime, for example paths containing single-quote marks. (There are other stumbling blocks in the way of actually building in a path that looks like that, but removing this one seems like a good thing to do.) The key coding rule that makes that possible is to concatenate pieces of a dynamically-variable string using psql's \set command, and then use the :'variable' notation to quote and escape the string for the next level of interpretation. In hopes of making this change more transparent to "git blame", I've split it into two steps. This commit adds the necessary pg_regress.c support and changes all the *.source files in-place so that they no longer require any dynamic translation. The next commit will just "git mv" them into the regular sql/ and expected/ directories. Discussion: https://postgr.es/m/[email protected]
- Loading branch information
Showing
24 changed files
with
477 additions
and
263 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,14 +1,23 @@ | ||
-- Initialization that requires path substitution. | ||
|
||
-- directory paths and dlsuffix are passed to us in environment variables | ||
\getenv abs_srcdir PG_ABS_SRCDIR | ||
\getenv libdir PG_LIBDIR | ||
\getenv dlsuffix PG_DLSUFFIX | ||
|
||
\set regresslib :libdir '/regress' :dlsuffix | ||
|
||
CREATE FUNCTION setenv(text, text) | ||
RETURNS void | ||
AS '@libdir@/regress@DLSUFFIX@', 'regress_setenv' | ||
AS :'regresslib', 'regress_setenv' | ||
LANGUAGE C STRICT; | ||
|
||
CREATE FUNCTION wait_pid(int) | ||
RETURNS void | ||
AS '@libdir@/regress@DLSUFFIX@' | ||
AS :'regresslib' | ||
LANGUAGE C STRICT; | ||
|
||
\set path :abs_srcdir '/' | ||
\set fnbody 'SELECT setenv(''PGSERVICEFILE'', ' :'path' ' || $1)' | ||
CREATE FUNCTION set_pgservicefile(text) RETURNS void LANGUAGE SQL | ||
AS $$SELECT setenv('PGSERVICEFILE', '@abs_srcdir@/' || $1)$$; | ||
AS :'fnbody'; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,18 @@ | ||
-- Initialization that requires path substitution. | ||
-- directory paths and dlsuffix are passed to us in environment variables | ||
\getenv abs_srcdir PG_ABS_SRCDIR | ||
\getenv libdir PG_LIBDIR | ||
\getenv dlsuffix PG_DLSUFFIX | ||
\set regresslib :libdir '/regress' :dlsuffix | ||
CREATE FUNCTION setenv(text, text) | ||
RETURNS void | ||
AS '@libdir@/regress@DLSUFFIX@', 'regress_setenv' | ||
AS :'regresslib', 'regress_setenv' | ||
LANGUAGE C STRICT; | ||
CREATE FUNCTION wait_pid(int) | ||
RETURNS void | ||
AS '@libdir@/regress@DLSUFFIX@' | ||
AS :'regresslib' | ||
LANGUAGE C STRICT; | ||
\set path :abs_srcdir '/' | ||
\set fnbody 'SELECT setenv(''PGSERVICEFILE'', ' :'path' ' || $1)' | ||
CREATE FUNCTION set_pgservicefile(text) RETURNS void LANGUAGE SQL | ||
AS $$SELECT setenv('PGSERVICEFILE', '@abs_srcdir@/' || $1)$$; | ||
AS :'fnbody'; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.