Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit115bf1e

Browse files
committed
Fix psql's \dC command to annotate I/O conversion casts as such.
A cast declared WITH INOUT was described as '(binary coercible)',which seems pretty inaccurate; let's print '(with inout)' instead.Per complaint from Jean-Pierre Pelletier.This definitely seems like a bug fix, but given that it's been wrongsince 8.4 and nobody complained before, I'm hesitant to back-patch abehavior change into stable branches. It doesn't seem too late forv11 though.Discussion:https://postgr.es/m/5b887023.1c69fb81.ff96e.6a1d@mx.google.com
1 parentc186ba1 commit115bf1e

File tree

1 file changed

+38
-18
lines changed

1 file changed

+38
-18
lines changed

‎src/bin/psql/describe.c

Lines changed: 38 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include<ctype.h>
1616

1717
#include"catalog/pg_attribute_d.h"
18+
#include"catalog/pg_cast_d.h"
1819
#include"catalog/pg_class_d.h"
1920
#include"catalog/pg_default_acl_d.h"
2021
#include"fe_utils/string_utils.h"
@@ -3953,37 +3954,56 @@ listCasts(const char *pattern, bool verbose)
39533954

39543955
initPQExpBuffer(&buf);
39553956

3956-
/*
3957-
* We need a left join to pg_proc for binary casts; the others are just
3958-
* paranoia. Also note that we don't attempt to localize '(binary
3959-
* coercible)', because there's too much risk of gettext translating a
3960-
* function name that happens to match some string in the PO database.
3961-
*/
39623957
printfPQExpBuffer(&buf,
39633958
"SELECT pg_catalog.format_type(castsource, NULL) AS \"%s\",\n"
3964-
" pg_catalog.format_type(casttarget, NULL) AS \"%s\",\n"
3965-
" CASE WHEN castfunc = 0 THEN '(binary coercible)'\n"
3966-
" ELSE p.proname\n"
3967-
" END as \"%s\",\n"
3968-
" CASE WHEN c.castcontext = 'e' THEN '%s'\n"
3969-
" WHEN c.castcontext = 'a' THEN '%s'\n"
3970-
" ELSE '%s'\n"
3971-
" END as \"%s\"",
3959+
" pg_catalog.format_type(casttarget, NULL) AS \"%s\",\n",
39723960
gettext_noop("Source type"),
3973-
gettext_noop("Target type"),
3974-
gettext_noop("Function"),
3961+
gettext_noop("Target type"));
3962+
3963+
/*
3964+
* We don't attempt to localize '(binary coercible)' or '(with inout)',
3965+
* because there's too much risk of gettext translating a function name
3966+
* that happens to match some string in the PO database.
3967+
*/
3968+
if (pset.sversion >=80400)
3969+
appendPQExpBuffer(&buf,
3970+
" CASE WHEN c.castmethod = '%c' THEN '(binary coercible)'\n"
3971+
" WHEN c.castmethod = '%c' THEN '(with inout)'\n"
3972+
" ELSE p.proname\n"
3973+
" END AS \"%s\",\n",
3974+
COERCION_METHOD_BINARY,
3975+
COERCION_METHOD_INOUT,
3976+
gettext_noop("Function"));
3977+
else
3978+
appendPQExpBuffer(&buf,
3979+
" CASE WHEN c.castfunc = 0 THEN '(binary coercible)'\n"
3980+
" ELSE p.proname\n"
3981+
" END AS \"%s\",\n",
3982+
gettext_noop("Function"));
3983+
3984+
appendPQExpBuffer(&buf,
3985+
" CASE WHEN c.castcontext = '%c' THEN '%s'\n"
3986+
" WHEN c.castcontext = '%c' THEN '%s'\n"
3987+
" ELSE '%s'\n"
3988+
" END AS \"%s\"",
3989+
COERCION_CODE_EXPLICIT,
39753990
gettext_noop("no"),
3991+
COERCION_CODE_ASSIGNMENT,
39763992
gettext_noop("in assignment"),
39773993
gettext_noop("yes"),
39783994
gettext_noop("Implicit?"));
39793995

39803996
if (verbose)
39813997
appendPQExpBuffer(&buf,
3982-
",\n d.description AS \"%s\"\n",
3998+
",\n d.description AS \"%s\"",
39833999
gettext_noop("Description"));
39844000

4001+
/*
4002+
* We need a left join to pg_proc for binary casts; the others are just
4003+
* paranoia.
4004+
*/
39854005
appendPQExpBufferStr(&buf,
3986-
"FROM pg_catalog.pg_cast c LEFT JOIN pg_catalog.pg_proc p\n"
4006+
"\nFROM pg_catalog.pg_cast c LEFT JOIN pg_catalog.pg_proc p\n"
39874007
" ON c.castfunc = p.oid\n"
39884008
" LEFT JOIN pg_catalog.pg_type ts\n"
39894009
" ON c.castsource = ts.oid\n"

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp